[面接の質問] フレームワークとライブラリ(Feat. ChatGPT)
フレームワークとライブラリに関する面接の質問まとめ
はじめに
今回、面接で初めてこの質問に直面したのだが、正直なところ知っていると思っていた内容だったにもかかわらず、明確に答えられず、もごもごとしてしまい、結局は質問の意図とずれた回答をしてしまった……。そこで、次に同じ質問をされた時にはそうならないようにと、もう少ししっかりと理解しておこうと思い、内容をまとめてみた!
ライブラリ
開発時に共通して使用できる機能をモジュール化したもので、特定の機能を実行するように作成されたプログラム
フレームワーク
様々な機能を持つクラスやライブラリが、特定の結果物を実装するために組み合わされた形態
ChatGPTの回答
上記の定義は、いくつかの記事を読んで、個人的に正解に近いと考えた結果である。 しかし、どこか物足りない感じがして、より詳細に定義された回答が聞きたくなり、ChatGPTを活用してみることにした!
-
Libraryの定義
이미지를 불러올 수 없습니다. -
Frameworkの定義
이미지를 불러올 수 없습니다.
では、何が違うのか?
上記の回答を通じて、改めてFrameworkとLibraryを整理してみると
- Library
再利用可能なコードとリソースの集合 関数、クラス、メソッド、データ型などで構成
- Framework
ソフトウェア開発のための構造的な枠組み、あるいはプラットフォーム あらかじめ定義されたコードとライブラリで構成
この内容を見ると、疑問が湧いてくるのは当然だ。フレームワークはライブラリを含めることができるが、ライブラリはフレームワークを含めることができないのだろうか?
이미지를 불러올 수 없습니다.
予想通り、フレームワークはライブラリを含めることができるが、その逆は不可能であるという点が確認できた。 また、この内容を通じて、フレームワークとライブラリの重要な違いを確認できるのだが……
それはまさにコードフローの制御権である。ライブラリの場合は開発者がライブラリの機能を呼び出して使用する形態だが、フレームワークの場合はフレームワークによって開発者のメソッドが呼び出される形態であるという点に大きな違いがあると言える。
フレームワークで見られるこの形態をIoC(Inversion of Control)、制御の逆転と呼ぶ。Dependency Injectionに関連する内容なので、別途書く機会があるだろうと考え、ここでは詳しく触れないことにする。
結論
-
ライブラリは再利用可能なコードとリソースの集合であり、フレームワークは開発のための構造的な枠組み、あるいはプラットフォームである。一般的に機能的な側面では同様に動作するため、あえて違いを挙げるとすれば、その使用方法にある。
-
フレームワークはライブラリを含むことができるが、ライブラリはフレームワークを含むことはできない。 コードフローの制御権については、フレームワークの場合はフレームワークが、ライブラリの場合は開発者が持つ。したがって、フレームワークの場合、開発者がフレームワークを修正することは一般的に不可能だが、ライブラリの場合は必要に応じて開発者がカスタマイズすることが可能である。
参考
[カレーユさんのブログ](https://curryyou.tistory.com/363
) ChatGPT 3.5
댓글 작성
게시글에 대한 의견을 남겨 주세요.