今日学んだこと#
Webアプリケーションフレームワークの基本概念と、ライブラリとの本質的な違いを学習。
学習内容#
Webアプリケーションフレームワークとは#
Webアプリ開発にあたり、共通部分を構造化した基盤。フレームワークは「枠組み」「構造」「骨組み」という意味を持つ。
Webアプリケーションフレームワークは、ライブラリやパッケージの集合体ともいえる。Djangoなどが代表例。
フレームワークとライブラリの違い#
最も重要な違いは**「制御の反転(Inversion of Control / IoC)」**、つまり誰がコードを呼び出すかという点。
| 観点 | ライブラリ | フレームワーク |
|---|---|---|
| 呼び出し関係 | 自分がライブラリを呼び出す | フレームワークが自分のコードを呼び出す |
| 制御権 | 開発者が持つ | フレームワークが持つ |
| 例え | 工具箱から道具を選んで使う | レールの上を走る電車 |
フレームワークのメリット#
- 車輪の再発明を防ぐ: 認証、ルーティング、DB接続など共通機能が用意済み
- 設計の一貫性: チーム開発でコードの書き方が統一される
- セキュリティ: SQLインジェクション、XSS対策などが組み込み済み
- コミュニティ: ドキュメント、プラグイン、質問サイトが充実
フレームワークのデメリット#
- 学習コスト: フレームワーク独自のルールを覚える必要がある
- 柔軟性の制限: 「フレームワークの流儀」に従う必要がある
- オーバーヘッド: 小規模アプリには機能過多になることも
- バージョン依存: フレームワークのアップデートで動かなくなるリスク
代表的なフレームワーク#
バックエンドとフロントエンドで別々のフレームワークを利用することが多い。
バックエンド#
| 言語 | フレームワーク | 特徴 |
|---|---|---|
| Python | Django | フルスタック、管理画面自動生成 |
| Python | Flask | 軽量、マイクロフレームワーク |
| Ruby | Ruby on Rails | 「設定より規約」の思想 |
| PHP | Laravel | モダンPHP、Eloquent ORM |
| JavaScript | Express.js | Node.js用、軽量 |
フロントエンド#
| フレームワーク | 特徴 |
|---|---|
| Vue.js | 学習しやすい、日本で人気 |
| Angular | フルスタック、Google製 |
まとめ#
- フレームワークはWebアプリ開発の「骨組み」を提供する
- ライブラリとの違いは「制御の反転(IoC)」(誰がコードを呼び出すか)
- メリット: 開発効率化、設計統一、セキュリティ、コミュニティ
- デメリット: 学習コスト、柔軟性制限、バージョン依存
- バックエンドとフロントエンドで別々のフレームワークを使うことが多い