Skip to content
This page has been auto-translated and may contain errors.View in English

フレームワークの種類

docs.scrimba.com

フレームワークとは何かでは、その基本概念を説明しました。つまり、構造と解決済みの配管工事に加えて、フレームワークがあなたのコードを呼び出すというものです。このチャプターは、実際に存在するものの地図です。これらすべてを知っている人はいないという安心感が組み込まれたツアーです。働いているデベロッパーは1つまたは2つのファミリーをよく知り、残りを認識しています。ここでもそれが目標です。名前よりもファミリーが重要です。1つのメンバーをよく学べば、その兄弟姉妹はすぐに習得できます。

ウェブ:フロントエンドとバックエンド

ウェブフレームワークは、ウェブ自体が分割される線に沿って分割されます。フロントエンドフレームワークはブラウザで実行され、ユーザーが見るものを管理します。バックエンドフレームワークはサーバー上で実行され、データ、アカウント、および舞台裏のすべてを管理します。ウェブ開発に進む場合、双方から1つずつが日々のツールになる可能性が高く、どちらを選ぶかは通常、あなたが参加するチームまたはプロジェクトによって決まります。

あなたが出会うフロントエンド名:

  • React:圧倒的に最も使用されており、最大のエコシステムと求人市場を持っています。技術的には完全なフレームワークではなくUIライブラリですが、この区別には下で扱う有用なコアがあります。
  • Vue:緩いオンランプと実際に楽しまれるドキュメントで知られています。完全で、整理された中道です。
  • Angular:Googleのバッテリー内蔵フレームワークで、すべてについて独断的です。各項目に対して1つの承認されたやり方を望む大規模組織で最も活躍します。
  • Svelte:ビルド時にその作業を行い、ブラウザに送信するコードが少なくなります。小さなコミュニティですが、その中にいる人々によく賞賛されています。

そしてバックエンド名。ここでフレームワークは通常言語に関連しています:

  • Django(Python):データベースから管理インターフェースまで、バッテリー内蔵。既に知っているPythonの頻繁なパートナーです。
  • Rails(Ruby):設定より慣例を普及させたフレームワーク。その考え方はほとんどの現代ウェブフレームワークに広がっていますが、Laravelも含まれています。
  • Laravel(PHP):PHPの世界の現代標準で、ウェブの非常に大きなシェアをまだ実行しています。
  • Express(JavaScript):意図的に最小限で、完全なフレームワークよりもツールキットに近いです。残りを自分で組み立てます。
  • Spring(Java):エンタープライズの労働馬で、広大で、深く確立されており、大企業の至る所にあります。

ロゴを超えて見ることができれば、同じ考え方がこれらのすべてで繰り返されます。フロントエンドフレームワークはすべてコンポーネントに収束しました。小さで再利用可能なインターフェースのピースで、その外観と動作を所有しています。バックエンドフレームワークはすべてルーティング(どのURLがどのコードを実行するか)を提供し、データベースと通信する何らかの方法(多くの場合、データベース行を通常のオブジェクトとして操作できるORM)と、ビジネスロジックのためのスロットを提供します。これらの考え方が何のためにあるのかを1つのフレームワークで学べば、次のフレームワークはほぼ既に習得済みです。それらの間を移動することは、ほとんど同じ概念の上の新しい構文と新しいフォルダ名を意味します。

現在のフロントエンドにはもう1つのレイヤーがあります。React、Vue、およびSvelteはインターフェースを処理しますが、ルーティング、データロード、およびサーバーレンダリングはあなたに任せるため、それぞれが**メタフレームワーク**を成長させました。欠落している部分を供給する、ライブラリの上に構築されたフレームワークです。Next.jsはReactに、NuxtはVueに、SvelteKitはSvelteにその役割を果たし、実際には、ほとんどの新しい本番番アプリはベアライブラリではなくメタフレームワークに手を伸ばします。これはまた、古い「Reactはフレームワークかライブラリか」という議論を有用な方法で解決します。React自体はUIのみをレンダリングし、コンポーネント以外の何もの上での制御を反転させません。これは最後のチャプターの定義によってそれをライブラリにします。Next.jsでラップするとペアはちょうどフレームワークのように振る舞います。ラベルは、どのレイヤーがどの決定を所有しているかを知るよりも重要性が低いです。なぜなら、それは何か誤動作した時にあなたが見るところだからです。

Junoウェブフレームワーク ReactとVueのようなフロントエンドフレームワークはブラウザで実行され、ユーザーが見るものを処理します。DjangoとRailsのようなバックエンドフレームワークはサーバー上で実行され、データとアカウントを処理します。今日完璧なものを選ぶ必要はありませんし、確実にそれらすべてが必要なわけではありません。ほとんどの人は、最初のチームが使用しているものを学習し、それはうまくいきます!
Junoウェブフレームワーク ウェブの名前は異なりますが、考え方は繰り返されます。フロントエンドのコンポーネント。バックエンドのルーティング、ORM、およびビジネスロジックスロット。1つのフレームワークを通じて考え方を学べば、次のものはほぼ新しい構文の上の読み慣れた形です。その転送が「最初に間違ったものを選ぶ」ことが人々が恐れるよりも費用がかからない理由です。
Junoウェブフレームワーク 現代的なフロントエンドの作業は通常、メタフレームワークを意味します。ReactよりもNext.js、VueよりもNuxt、SvelteよりもSvelteKit。ベースライブラリが残しているルーティングとサーバーレンダリングを提供します。どのレイヤーがどの決定を所有しているかを直線で保つことが重要です。これはデバッグが始まる場所だからです。そしてReactは本当に私たちの定義によってライブラリです。Next.jsはペアをフレームワークにするものです。

アプリとゲーム

モバイル開発には独自のフレームワークストーリーがあり、1つの質問を中心に展開します。iPhoneとAndroid用に個別に構築するか、両方に1回構築するか?2つのフレームワークが「1回で構築」という答えを支配しています。Flutter(Dartプログラミング言語を使用するGoogleから)はそのインターフェースをピクセル単位で描画するため、アプリはどこでも同じに見えます。**React Native**はReactのコンポーネントモデルをモバイルにもたらし、各プラットフォームのネイティブインターフェースピースを駆動します。これはReactを既に知っていれば、自然な継続です。

ゲームエンジンは、最も完全なフレームワークです。1秒間に60回実行されるループを所有し、あなたのコードは各オブジェクトが内部で何をするかを埋めます。Unity(C#)はインディーおよび中規模ゲーム、およびモバイルゲームの多くのデフォルトです。Unreal(C++)は、ビジュアル忠実度が重要な場所、大予算のゲームから映画制作まで主導しています。**Godot**は無料のオープンソースエンジンで、そのコミュニティは急速に成長しており、始めるのに親切な場所です。

クロスプラットフォームの取引は、その価格タグを声に出して読む価値があります。1つのコードベースは、半分の作業と1つのチームを意味します。これはビジネスがそれを愛する理由です。費用は、あなたとプラットフォームの間のレイヤーです。新しいiPhone機能がリリースされるとき、フレームワークはあなたがそれを快適に使用できるようになる前にそれをサポートする必要があります。完全にネイティブな感覚を絞り出すには、追加の注意が必要です。すべてのネイティブ詳細が必要なチームは、各プラットフォーム独自のキットで個別に構築します。小さなクルーで両方に発送する必要があるチームはFlutterまたはReact Nativeを選び、めったに後悔しません。

ゲームエンジンは、逆転制御を可能な限り押し進め、それを澄んだ極端なケースにします。エンジンは時間自体を所有しています。毎フレーム、あなたのスクリプトを呼び出し、あなたのコールバック間で物理を実行し、あなたのオブジェクトが存在する時期を決定します。また、あなたは主にエンジン「の中」でコードを書きません。エディタの内側で作業し、スクリプトはシーン、マテリアル、およびプリファブの中の1つのアセットです。その完全な所有は、エンジンが存在する理由はまったくです。レンダリング、物理、およびアセットパイプラインは、ゲームチームが再構築したくない専門家の年月です。同じロジックはスケールダウンします。配管が製品を上回るたびに、フレームワークは利便性から唯一の合理的なパスになります。

Junoアプリとゲーム FlutterとReact Nativeは、1つのコードベースがiPhoneとAndroidアプリの両方になることを可能にします。多くのチームがそれらを使用するのはそのためです。ゲームは、Unity、Unreal、およびGodotなどのエンジンを持っており、グラフィックスと物理を処理しながら、あなたのコードは各オブジェクトが何をするかを言います。ウェブと同じフレームワークの考え方で、異なる服を着ています。
Junoアプリとゲーム クロスプラットフォームモバイルは、ネイティブポーランドを少し取引して、半分の作業、ほとんどのチームは幸せに実行する取引です。一方、完全にネイティブなキットは、プラットフォームフィールがすべてのとき、答えのままです。ゲームエンジンは、フレームワークの考え方は完全な強度です。1秒間に60回ショーを実行し、あなたのスクリプトは振る舞いを埋めます。
Junoアプリとゲーム エンジンは、ルールを説明する極端です。配管(レンダリング、物理、アセットパイプライン)が数年の作業であり、実際のゲームを上回る場合、制御を手放すことは唯一の合理的な取引です。その比率をあなたの頭の中に保つ、配管対製品、およびほぼすべての分野のほぼすべてのフレームワークの決定がより簡単になります。

静かなもの:テストとデータ

すべてのフレームワークが製品を構築することについてではありません。その周りの仕事を整理するものもあります。テストフレームワークが最も明確なケースであり、最後のチャプターの定義の最も純粋な例です。pytest(Python)、Jest(JavaScript)、および**JUnit**(Java)は各々、あなたのテスト関数を検出し、実行し、報告し、あなたが独自のテストを呼び出すプログラムを書くことはありません。ほぼすべての職業的なコードベースで、通常はプロジェクトの言語と一致するものを、あなたは出会うでしょう。

データと機械学習にもフレームワークがあります。**PyTorchは研究と、ますます本番番を支配しています。TensorFlow**は、Googleの深い本番番ツール付きエコシステムです。両者とも、あなたのコードが計算ではなくモデルを記述できるように、モデルのトレーニングの数学的機械を処理します。AIの仕組みトラックが興味を持った場合、これは世界が構築するツールです。

テストランナーは逆転制御の縮図で、その理由を1分間理由にする価値があります。test_somethingという関数を書き、フレームワークは名前で発見し、新鮮な設定で各関数を実行し、残りを停止せずに障害をキャッチし、概要を出力します。誰も、そのプロジェクトオーケストレーションをプロジェクトごとに書いていません。これはフレームワーク値の命題の最小および最も物議を醸さない例です。製品フレームワークの原則を回避するデベロッパーでさえ、幸せにテストフレームワークを使用しています。

ML対は、ライブラリ対フレームワークの線が有用に曖昧になるところです。PyTorchでカスタムトレーニングループを書くと、ライブラリの使用のような感じがします。あなたのコードは操舵し、それは高速な数学を提供します。より高いレベルのレイヤー、トレーナー、およびコールバックを使用すると、それをフレームワークの形に戻すと、あなたのコードは、ツールが所有するループにスロットします。国境は、どのツールのレイヤーを駆動するかによって異なります。そのフレーミングはML以外でもよく移動します。多くのビッグツールは、1つの高度ではライブラリであり、別の高度ではフレームワークです。どの高度を飛行しているかを知ることで、制御フローが今誰を所有しているかを示します。

Junoテストとデータフレームワーク pytestとJestなどのテストフレームワークはテスト関数を検出し、あなたのために実行します。フレームワークがあなたのコードを呼び出すことの小さな日常的な例です。機械学習では、PyTorchとTensorFlowはモデルのトレーニングの重い数学を処理します。フレームワークは、アプリを構築することをはるかに超えて、あらゆる種類のプログラミング作業を整理します。
Junoテストとデータフレームワーク テストランナーは、最も議論の余地のないフレームワークの考え方です。発見、分離、および報告は、プロジェクトごとに誰も再構築すべきではありません。フレームワークに懐疑的なデベロッパーでさえ、苦情のないテストフレームワークを使用することに気づきます。取引は小さく、ペイオフは絶え間ありません。その非対称性は、任意のフレームワークを判断するための良いレンズです。
Junoテストとデータフレームワーク PyTorchはあなたがトレーニングループを書く時のライブラリであり、そのトレーナーがあなたを実行する時のフレームワークです。そしてそれは一般的な教訓です。ビッグツールは、駆動するレイヤーに依存してカテゴリを変更します。その高度を聞いて、制御フローが所有しているを確認してください。ライブラリまたはフレームワークの質問は自分で答えます。

これがどこへ進むか

それが地図です。ウェブは両側のワイヤー、モバイル、ゲーム、テスト、データで、すべて異なるユニフォームを着ている同じ考え方です。残りの質問は実践的なもので、2つの半分があります。どれか、そしてそれすべてかどうか。フレームワークの選択と学習は両方を正面から取ります。ここでの定義が不安定に感じた場合、フレームワークとは何かは短い読み戻しです。