SoutoIkedaの気まぐれブログ

書籍の感想を気まぐれにアウトプットするブログ

【5/31アウトプット②】ITエンジニアリングの基本〜ライブラリとフレームワーク〜

本日は2回目の投稿になります。今回の内容は、ライブラリとフレームワークについてです。機械学習エンジニアとかゲームエンジニアとか専門的な職種を採用する時に大事になってくる「ライブラリ」の概念と、その重要性は言うまでもない「フレームワーク」について話していきます。用いるのは、以下の記事です!

 

www.freecodecamp.org

 

1)「ライブラリ」の概念

ライブラリとは、誰かが作ったプログラムを他の開発者にも使えるように汎用化したものを指します。上記の記事では、家をメタファーとして用い、ライブラリを概念化しています。

Ikea allows you to pick and choose different things to go in your home.

 

家の空間を設計(=開発)する時、座れる空間を作るためにどのソファを選ぶか、やそのソファをどこに置くかも決めることができる。つまり、細かいチューニングができるものということですね。

 

2)一方で「フレームワークは?」

フレームワークの細かい説明は不要かと思いますので、さらっといきたいと思います。記事の中では、

A framework, on the other hand, is like building a model home.You have a set of blueprints and a few limited choices when it comes to architecture and design.

フレームワークは、モデルホームを建てるようだ。すでに設計図があるから、フレームワークを選んだら、間取りとか家具の配置とか細かい微調整ができないみたいな解釈ですね。

 

3)技術的な違い

もう少し読み進めていくと、技術的な言及もしています。

The technical difference

The technical difference betwen a framework and library lies in a term called inversion of control.

ライブラリとフレームワークの違いは、「制御の反転」にあると。ほう、難しい言葉だ。

When you use a library, you are in charge of the flow of the application.You are choosing when and where to call the library.

主語がyouつまり人間になっているところに着目したい。あくまでこの再利用可能な部品をコントロールするのは人間(開発者)であるということです。一方でフレームワークは、

When you use a framework, the framework is in charge of the flow.It provides some places for you to plug in your code.

ライブラリとは逆で、今度はフレームワークが主語です。ソフトウェア全体の制御を決めるのはフレームワークで、ここでの「開発者」はフレームワークに動かされる側になるとのことです。

 

繰り返しになりますが(笑)、機械学習エンジニアなど専門的な職種を採用する時に頻出する「ライブラリ」という言葉の意味と概念、それから「フレームワーク」との技術的な違いの観点からそれを理解することは大切なのではないかなと思います。

 

本日はこの辺で!ありがとうございました。