フレームワークとは?


小さなウェブアプリを構築していると想像してください。アカウント、フィード、設定ページなどです。あなたの独自のアイデアが画面に現れる前に、URLをページに変換するコード、データベースと通信するコード、パスワードを安全に保つコード、何かが変わったときに画面を再描画するコードが必要です。これらはすべてあなたのアプリの独自のアイデアではありません。すべてのアプリがこれらを必要とし、ほとんどはプロジェクトからプロジェクトへと同じです。
これらのすべての配管を自分で書くこともできます。実際、人々は長年の間そうしていました。それは遅く、微妙なバグが潜む場所であり、すべてのチームは同じ機械の少しずつ異なる、少しずつ壊れたバージョンで終わりました。フレームワークは蓄積された答えです。共有された配管で、一度書かれ、何千ものプロジェクトによって強化され、あなた自身のコードがどこに行くかを示す構造とともにパッケージされたものです。あなたのプロジェクトをあなたのものにする部分を構築し、フレームワークはすべてのプロジェクトが繰り返す部分を処理します。
フレームワークはウェブの話ではありません。プログラムが構築されるあらゆる場所に存在し、この章はあらゆる言語とあらゆる分野での考え方についてのものです。
フレームワークとは何か(そしてライブラリとは何か)
言葉は緩く使用されるため、実際に重要な区別をコードで示します。
// ライブラリ:あなたのコードが管理者で、必要に応じてライブラリを呼び出します。
const label = dateLibrary.format(order.createdAt, "MMM D");
// フレームワーク:フレームワークが管理者で、あなたが接続したコードを呼び出します。
export default function OrdersPage() {
return listOfOrders();
}最初の行はあなたが操舵しています。あなたのプログラムが実行され、1つのジョブのためにツールを借ります。2番目は種類が異なります。OrdersPageを自分で呼び出すことはありません。それを書いて、フレームワークが期待する場所に置き、フレームワークは適切な瞬間にそれを呼び出します。ここでは、訪問者が注文ページを開いたときです。
このフリップには名前があります。**制御の反転**です。ライブラリでは、あなたのコードはプログラムのフローを制御し、ヘルパーを借ります。フレームワークでは、フレームワークがフローを制御し、あなたのコードがそれが残した空白を埋めます。便利な略語:ライブラリを呼び出し、フレームワークがあなたを呼び出します。
同じ形状はプログラミングのあらゆる隅に現れます。Djangoはウェブリクエストを受け取り、あなたのビュー関数を呼び出します。Flutterはアプリを実行し、何を描画するかについてあなたのウィジェットに尋ねます。Unityはゲームループを実行し、毎フレームあなたのスクリプトを呼び出します。pytestはあなたのテスト関数を見つけて実行します。異なる分野、1つのアイデア:フレームワークはエンジンを所有し、あなたはそれが保持するために構築されたパーツを供給します。
画像が役に立つなら:ライブラリはあなたが構築している間、あなたの横に座っているツールボックスで、ツールが有用なときはいつでも手を伸ばします。フレームワークは建物のフレームに近く、あなたが到着するとすでに立っています。壁、配線、配管にはその場所があり、あなたの仕事は建物をあなたのものにする部屋に入ります。両方ともあなたの労力を節約します。違いは、構築の形状を誰が決めるかです。
フレームワークがもたらすもの、そしてそれが要するもの
フレームワークの場合は具体的です。あなたが数週間かかるであろう問題は既に解決されて到着し、難しい端のケースに最初に当たった人によって解決されます。パスワード処理、フォーム検証、ルーティング、レンダリング。あなたのプロジェクトは、新しいチームメイトが数分で認識できる構造を得ます。それはそのフレームワークで構築されたすべての他のプロジェクトと同じ構造だからです。そしてあなたはエコシステムを継承します。プラグイン、チュートリアル、回答された質問、そしてすでに自分たちの道を知っている人の採用プール。
コストは同じくらい具体的で、同じ直線的な見方を受ける価値があります。フレームワークは、あなたが制御しない大きな依存関係であり、独自のバグ、独自のペース、独自の意見を持っています。最初のページがレンダリングされる前には学習曲線があり、あなたが学ぶもののいくつかはプログラミングについてではなくフレームワークについての知識です。あなたのコードはその形にかがみます。これはあなたが長く滞在するほど去ることを難しくします。そしてフレームワークは動きます。主要なバージョンが到着し、パターンが再考され、追いつくことは、プレーンコードでは持たなかった継続的な作業です。
どちらのリストもそれ自体で勝利しません。バランスは完全にプロジェクトに依存するため、どのフレームワークについても尋ねる質問は「このフレームワークはこのプロジェクトをよりシンプルにするか」です。フレームワークはあなたのプロジェクトをよりシンプルにすることでその場所を獲得します。そうするとき、それを喜んで使用してください。そうでないとき、次の2つの章はそれを早期に認識することについてです。
ここからどこへ行くか
アイデアが整ったので、次の自然な質問は、そこに実際に何があるかです:フレームワークの種類ではウェブからゲームテストまで主要ファミリーをツアーし、各ファミリーで最も人気のあるオプションを使用します。その後、フレームワークの選択と学習は、フレームワークを選択し、1つを学習し、すべてを必要としないときを知ることについて実用的になります。そして上記のJavaScriptの例が不慣れに感じた場合、JavaScriptトラックは言語そのものをカバーし、それはそれで構築されたフレームワークの前に最初のステップです。

