フロントエンドとバックエンドの違い:何が違うのか?
フロントエンドは、アプリのうちブラウザ上で動く部分です。利用者が見てクリックするページ、ボタン、フォーム、アニメーションがこれにあたります。バックエンドは、利用者には見えないサーバー上で動く部分です。データを保存して取り出し、ビジネスルールを適用し、誰が何をできるかを確認し、決済やメールなどの外部サービスと連携します。両者はAPIを通じてやり取りし、データベースと合わせて「フルスタック」のアプリを構成します。
AIで作るときに重要な理由
AIビルダーにアプリを説明するとき、意識しているかどうかにかかわらず、実は両方の部分を同時に説明しています。「お客様が枠を予約できる」と伝えれば、予約フォーム(フロントエンド)、どの枠が空いているかのルール(バックエンド)、予約を保存する場所(データベース)が必要になります。
この役割分担を知っておくと、実務で次の3つに役立ちます。
- セキュリティ。 フロントエンドの内容は、利用者が見ても書き換えても止められません。ルールや秘密情報はバックエンドに置く必要があります。
- デバッグ。 「ボタンが反応しない」と「ボタンは反応するが何も保存されない」では原因の場所が違います。どちらの症状かを伝えれば、AIが原因をより早く見つけられます。
- ホスティングとコスト。 フロントエンドだけのサイトは安価で簡単に公開できます。バックエンドは稼働させる場所が必要で、料金や、利用がないときのアプリの動作に影響します。
日常の例えで考える
レストランで考えてみましょう。
フロントエンドはダイニングルームです。メニュー、テーブル、内装、注文を取る店員がこれにあたります。客向けに作られていて、客はそのすべてを見て触れられます。
バックエンドは厨房と事務所です。料理をする料理人、在庫置き場、レジ、割引の決まりを管理する店長がこれにあたります。客が中に入ることはなく、入れるべきでもありません。
APIは両者をつなぐ受け渡し口です。決まった形式で注文を出し、料理を受け取るカウンターにあたります。データベースは在庫の保管場所であり、注文台帳です。
客は注文票を書き換えることができます(フロントエンドは客の管理下にあります)。しかし、厨房が何を作り、いくら請求するかは厨房が決めます。だからこそ、重要なチェックは奥側に置くべきなのです。
各側の役割
| フロントエンド | バックエンド | |
|---|---|---|
| 動く場所 | 利用者の端末、ブラウザ内 | あなた(またはホスティング事業者)が管理するサーバー |
| 主な役割 | 表示、入力の受け付け、クリックへの反応 | データの保存、ルールの適用、権限の管理、外部サービスの呼び出し |
| 利用者がコードを見たり変更したりできるか? | はい。ブラウザにダウンロードされます | いいえ |
| 秘密のAPIキーを置けるか? | いいえ | はい。環境変数に保存します |
| よく使われる技術 | HTML、CSS、JavaScript/TypeScript、React、Vue、Svelte、Tailwind | Node.js、Python(FastAPI、Django)、C#、Java、Go、Ruby |
| よくある問題 | モバイルでレイアウトが崩れる、ボタンが動かない、ページが遅い | データが保存されない、誤ったデータが表示される、エラー、セキュリティ上の穴 |
フレームワークによっては、この境界があいまいになります。たとえばNext.jsでは、1つのプロジェクトにブラウザ用のコードとサーバー用のコードを同時に含められます。それでも考え方は変わりません。常に「この部分はどこで動くのか?」を問えばよいのです。
具体例:クラスの予約
ヨガクラスを予約するときに何が起こるかを、手順ごとに見てみましょう。
| 手順 | 場所 | 何が起こるか |
|---|---|---|
| 1 | フロントエンド | スケジュールページが読み込まれ、今週のクラスをバックエンドに問い合わせます。 |
| 2 | バックエンド | データベースからクラスと予約を読み取り、空き枠を計算して、リストをJSONで返します。 |
| 3 | フロントエンド | 各クラスを時間、講師、空き枠の数とともに表示します。 |
| 4 | フロントエンド | 利用者がクラスを選び、名前とメールアドレスを入力します。フォームはメールアドレスの形式を確認します(あくまで親切のためのチェックで、保証ではありません)。 |
| 5 | フロントエンド → バックエンド | APIを通じて POST /api/bookings リクエストを送信します。 |
| 6 | バックエンド | 入力内容を改めて検証し、クラスが満員でないかを確認し、予約を保存して、秘密のキーを使って確認メールの送信をメールサービスに依頼します。 |
| 7 | バックエンド → フロントエンド | 「予約完了」または「申し訳ありません、満員です」を返します。 |
| 8 | フロントエンド | 確認画面を表示します。 |
手順4と6に注目してください。入力内容は2回チェックされています。フロントエンドでのチェックは即座のフィードバックのためのもので、実際に効力を持つのはバックエンドでのチェックです。悪意のある利用者はフロントエンドを完全に迂回できるからです。
よく使われる用語の説明
| 用語 | 意味 |
|---|---|
| クライアント / サーバー | クライアントはリクエストを送るブラウザ(またはアプリ)、サーバーはそれに応答する側です。 |
| UI | ユーザーインターフェース。画面と操作部品のことです。 |
| API | フロントエンドがバックエンドにデータや操作を求めるための、取り決められた方法です。 |
| エンドポイント | APIの中の1つの具体的なURLで、例えば /api/bookings です。 |
| フルスタック | フロントエンド、バックエンド、データベースをまとめたものです。フルスタックアプリとはを参照してください。 |
| 静的サイト | 独自のバックエンドを持たないフロントエンドです。誰にでも同じファイルが配信されます。 |
| SPA | シングルページアプリケーション。新しいページを読み込む代わりに、ブラウザ内でページを更新するフロントエンドです。 |
| サーバーサイドレンダリング(SSR) | 送信前にサーバーがページのHTMLを組み立てる方式です。表示速度やSEOに役立つことがあります。 |
| 環境変数 | 実行時にバックエンドに与える設定や秘密情報で、コードの外に置かれます。 |
アプリにバックエンドは必要ですか?
| あなたのアプリは… | バックエンドが必要か |
|---|---|
| 誰にとっても同じ情報を表示する | いいえ |
| メールを送るだけの問い合わせフォームがある | 通常は小規模なものか、フォームサービスで十分 |
| 他の人が見るデータを保存する | はい |
| ログイン機能と非公開のデータがある | はい |
| 決済を受け付ける | はい。少なくとも決済の作成と決済通知(webhook)の受信のために必要 |
| 秘密のキーを使う有料のAIやその他のAPIを使う | はい。キーをブラウザに渡さないために必要 |
よくある間違いと誤解
- 秘密のキーをフロントエンドに置くこと。 ブラウザの開発者ツールを開けば誰でも見えてしまいます。AIで作られたアプリで最も多く、深刻な間違いです。
- ルールをフロントエンドだけで強制すること。 管理者以外には「削除」ボタンを隠しても保護にはなりません。バックエンドが要求を拒否する必要があります。
- バックエンドは「データベースだけ」だと思うこと。 データベースはデータを保存するだけです。誰が読み書きできるか、そしてどのように扱うかを決めるのがバックエンドです。
- JavaScriptはフロントエンドのものだと思うこと。 JavaScriptとTypeScriptは、Node.jsを使えばサーバー上でも動きます。
- 間違った側を疑うこと。 ページの見た目は正しいのにデータがおかしい場合、問題の多くはバックエンドかデータベースにあり、デザインではありません。
- 作りすぎること。 ポートフォリオにカスタムのバックエンドは不要です。追加すればコストと動く部品が増えるだけです。
AIビルダーに頼むとよいこと
- 「このアプリのどの部分がブラウザで動き、どの部分がサーバーで動くのか?」
- 「APIキーはすべてバックエンドに移し、環境変数から読み込むようにしてください。」
- 「フォームの入力は、ブラウザだけでなくサーバー側でも検証してください。」
- 「予約を削除できるのは管理者だけになるよう、バックエンドで強制してください。」
- 「ページの表示は正常ですがデータが保存されません。バックエンドのログでリクエストを確認してください。」
- 「これは単純なマーケティングサイトなので、必要になるまでバックエンドは作らずフロントエンドだけにしてください。」
Mythexにおけるフロントエンドとバックエンド
新しいMythexのプロジェクトは、Vite、React、TypeScript、Tailwindで作られたフロントエンドから始まります。アプリにバックエンドが必要になると、エージェントがそれを追加します。また、同じプロジェクト内でNode、Python(FastAPI)、C#、Javaで書かれた独立したAPIを、フロントエンドと並べて動かすよう頼むこともできます。プレビューでは、Webサイトと APIサーバーを切り替えて確認でき、公開するとその両方がデプロイされます。必要に応じて、データベースとファイルストレージも追加されます。両方の部分が公開後どこで動くかについては、Webホスティングのガイドで説明しています。また、マルチサービスアプリについてはドキュメントをご覧ください。フルスタックの例を手早く見たい場合は、アプリテンプレートが役立ちます。
よくある質問
フロントエンドとバックエンドの違いは何ですか?
フロントエンドは、アプリのうちブラウザ上で動く部分で、利用者が目にするページ、ボタン、フォームなどです。バックエンドは利用者には見えないサーバー上で動き、データの保存、ビジネスルールの適用、権限の確認、他のサービスとの連携を担当します。
すべてのアプリにバックエンドは必要ですか?
いいえ。マーケティングサイト、ポートフォリオ、シンプルなランディングページはフロントエンドだけで作れます。共有データの保存、ログイン、決済、秘密のAPIキーの利用が必要になった時点で、何らかのバックエンドが必要になります。
HTMLはフロントエンドですか、バックエンドですか?
ブラウザで動くHTML、CSS、JavaScriptはフロントエンドです。ただし、JavaScriptはNode.jsを使えばサーバー上でも動き、その場合はバックエンドのコードになります。言語ではなく、コードがどこで動くかで決まります。
フルスタックとはどういう意味ですか?
フルスタックとは、フロントエンドとバックエンド(通常はデータベースも含む)の両方を扱うことを指します。3つの要素をすべて備えたアプリがフルスタックアプリで、フルスタック開発者はそのすべてに携わります。