フレームワーク
言語の上で「決まった作り方」を提供するライブラリのまとまり
自分で書くコードの土台。動かす場所・データベース・認証は自分で用意する。
いつこの種別を選ぶか
言語を決めたあと、「画面を作る」「API を作る」「データを集計する」のどれかで選ぶ。同じ目的に複数あるときは、学習資料の量と、動かせる場所の広さで決める
他の種別との関係
| 種別 | どういう関係か |
|---|---|
| 言語 | 必ずどれかの言語に属する。React は TypeScript、FastAPI と pandas は Python |
| ツール | フレームワークで書いたものを、ツール(データベース、コンテナ)と組み合わせて動かす |
| マネージドサービス | フレームワークで書いたコードを載せる場所として、マネージドサービスを借りる。逆に、フレームワークで自分で書く代わりに、同じ役割のサービスを借りる選択もある |
| 言語 (から見ると) | フレームワークは言語の上に載る。言語を決めると、使えるフレームワークの範囲が決まる |
| 実行環境 (から見ると) | フレームワークは特定の実行環境を前提にしていることが多い。Next.js は Node.js、Hono は複数の実行環境で動く |
| ツール (から見ると) | フレームワークで書いたコードと組み合わせて動かす。データベース、コンテナ、バージョン管理 |
| マネージドサービス (から見ると) | フレームワークで書いたコードを載せる場所になる。または、フレームワークで自分で書く代わりに丸ごと借りる(BaaS) |
この種別を理解する
「決まった作り方」があると速い。 画面の部品をどう組むか、API の窓口をどう書くか。毎回ゼロから決めるのではなく、フレームワークが用意した型に沿って書く。学ぶ量は増えるが、書く量は減り、他人のコードも読めるようになる。
ライブラリとフレームワークの違い。 ライブラリは「呼び出して使う道具」(pandas で集計する)、フレームワークは「その中に自分のコードを置く枠組み」(React の部品として画面を書く)。境界は曖昧なので、このサイトではまとめて「フレームワーク」の種別にしている。
動かす場所は付いてこない。 フレームワークはコードの書き方を決めるだけで、それを動かすサーバー、データを置くデータベース、ログインの仕組みは別に用意する。ここが「マネージドサービス」との最大の違いで、Supabase のようなサービスはそれらをまとめて貸してくれる代わりに、自由度とプランの上限が付く。
次に読む種別。 組み合わせて使う「ツール」、載せる場所や代替になる「マネージドサービス」。
この種別のツール(8件)
分野ごとに並べている。「主要制約」は各ツールで最も先に当たる限界。
画面・フロントエンド 利用者が見て、触る画面をつくる。ブラウザの中で動く部分
| ツール | 学習 | 料金 | 成熟 | 主要制約 | 検証 |
|---|---|---|---|---|---|
| Astro 既定でJavaScriptを出さない静的サイト生成器。必要な部分だけ島として動かす | 低 | 無料 | 安定 | 島(Island)の間の状態共有: 部分ハイドレーションされた島の間では React Context 等のコンテキストラッパーが使えない。共有には Nano Stores(1 KB 未満、依存なし)のような外部ストアが推奨される | |
| React コンポーネントと状態でUIを組む、ブラウザ画面向けのJavaScriptライブラリ | 中 | 無料 | 安定 | フック呼び出しの制約(Rules of Hooks): フックは関数コンポーネントかカスタムフックの最上位でのみ呼べる。条件分岐・ループ・早期 return の後・イベントハンドラ・try/catch・useMemo や useEffect に渡す関数の中・クラスコンポーネントでは呼べない | |
| SvelteKit Svelteでルーティング・サーバー処理・静的出力までを完結させるフレームワーク | 中 | 無料 | 安定 | デプロイ先ごとのアダプタ選定: ビルド出力をデプロイ環境向けに変換する「アダプタ」の指定がsvelte.config.jsで必須。公式にNode・Cloudflare・Netlify・Vercel・静的サイト(adapter-static)向けがある | |
| Next.js Reactにルーティング・サーバー描画・APIを足した、Web アプリのフレームワーク | 高 | 無料 | 安定 | 静的エクスポートで使えない機能: output を export にすると Cookie、Rewrites・Redirects・Headers、Proxy、ISR、既定ローダーの画像最適化、Draft Mode、Server Actions、Intercepting Routes、generateStaticParams のない動的ルートが使えない。Route Handler は GET のみ、force-static の明示が必要 |
サーバー・API 画面の裏側で、頼まれた処理をしてデータを返す係
| ツール | 学習 | 料金 | 成熟 | 主要制約 | 検証 |
|---|---|---|---|---|---|
| FastAPI 型ヒントからAPI仕様と検証を自動生成する、Pythonの非同期Webフレームワーク | 低 | 無料 | 安定 | 対応 Python バージョン: Python 3.10 以上(3.10〜3.14 を公式サポート) | |
| Hono Web標準APIのみで書かれ、エッジからNode.jsまで同一コードで動く軽量フレームワーク | 低 | 無料 | 成長中 | 対応ランタイムと Node.js の要件: Node.js は 18.x なら 18.14.1 以上、19.x なら 19.7.0 以上、20.x 以上で、@hono/node-server アダプタ経由で動く。Bun・Deno は Fetch ハンドラをネイティブに実行 |
開発基盤・CI/CD コードの変更を、壊さずに本番へ届ける仕組み
| ツール | 学習 | 料金 | 成熟 | 主要制約 | 検証 |
|---|---|---|---|---|---|
| Playwright Chromium/Firefox/WebKitを1つのAPIで自動操作するE2Eテストフレームワーク | 中 | 無料 | 安定 | 対応Node.jsバージョン: 最新の 22.x, 24.x, 26.x 系のいずれか |
データ処理・分析 溜まったデータを集計・変換・可視化する
| ツール | 学習 | 料金 | 成熟 | 主要制約 | 検証 |
|---|---|---|---|---|---|
| pandas Python で表形式データをメモリ上で整形・集計・可視化する標準ライブラリ | 中 | 無料 | 安定 | メモリ内処理の前提: データセットは1台のメモリに収まる必要がある。メモリのかなりの割合を占めるデータでも、操作が中間コピーを作るため扱いにくくなる |