frontend、backend、データベース、ホスティング
例を使ってもう一段深く見ていきましょう。ユーザーが**「プロフィールを保存」**をクリックします。
frontend。 目に見えるアプリで、Webブラウザの中、あるいはモバイルアプリとして動きます。フォームを描画し、クリックに気づき、ユーザーが入力した内容を集めます。設計上、これは信頼されていません。誰でも開いて、中身を覗き、書き換えることができます。ですからその役割は、見た目を良くして反応を軽快にすることであって、重要なことを守らせることではありません。
backend。 ボタンがクリックされると、frontendはデータをbackend——サーバー上で動くコード——に送ります。backendはユーザーがログインしているかを確認し、データを検証し(「これは本当にメールアドレスかな?」)、ビジネスルールを適用し、そのうえで初めて保存します。ここに信頼が宿るのは、ユーザーが手出しできないからです。
データベース。 backendはデータをデータベースに渡して保管します。魔法の箱ではありません。瞬時に検索でき、決して忘れない、とても厳格な表計算(テーブルと呼ばれます)のようなものだと考えてください。明日、backendはそのプロフィールをふたたび読み出して表示します。
ホスティング。 prod(本番)では、これらは一切あなたのノートパソコンの上では動きません。Cloudflare、Vercel、あるいはクラウドプラットフォームのようなホスティングプロバイダーから借りたコンピューターの上で動きます。ホスティングこそが、あなたのアプリを自分のマシンの中だけでなく、本物のWebアドレスでアクセスできるようにしてくれるものです。
役に立つ勘どころがあります。何かが壊れたら、どの層かを問うことです。「ボタンを押しても何も起きない」はfrontend。「間違ったものが保存される」はたいていbackend。「データを忘れてしまった」はデータベースを指しています。層に名前をつけることが、バグを直す作業の半分です——そしてAIが動けるプロンプトを書く作業の半分でもあります。