Day 6・外とつながる — Web・API
クライアントとサーバー(客と厨房)
「頼む人」と「作る人」が別々にいる、という基本の役割分担を知る。
登場人物はふたり:頼む側と作る側
アプリが「外とつながる」とき、そこには必ずふたりの登場人物がいます。ひとつは頼む側、もうひとつは作って返す側です。頼む側を [[clienclienrequest クライアント、作って返す側を [[serveserverequest サーバー と呼びます。名前は難しそうですが、正体はとてもシンプルです。
たとえるなら
レストランを想像してください。あなた(お客さん)は席に座ってメニューを見て注文します。厨房のシェフは注文を受けて料理を作り、運んできます。あなたが「クライアント」、厨房が「サーバー」です。お客さんは料理の作り方を知らなくてもいいし、シェフはお客さんが誰かを知らなくても料理を作れます。
大事なのは、この二人が「別の場所にいる別の担当」だということです。あなたのスマホやパソコンで動いているアプリ(=お客さん側)と、どこか遠くのコンピューターで動いているプログラム(=厨房側)は、別々に存在しています。だからこそ、間で「注文」と「提供」のやり取りが必要になるのです。
ありがちな誤解
アプリの中に全部が入っていて、ひとりで全部やっている、と思ってしまう。
実際のイメージ
手元のアプリ(客)は見た目と操作を担当し、遠くのサーバー(厨房)がデータや処理を担当する。役割が分かれている。
なぜ分けるの?
- 厨房(サーバー)に材料やレシピをまとめて置ける=データを一箇所で管理できる。
- お客さん(クライアント)が何人来ても、同じ厨房が対応できる=みんなが同じ最新の情報を見られる。
- お客さんのスマホが非力でも、重い調理は厨房がやってくれる=手元の負担が軽い。
なぜ基礎を知ると強いのか
この「客と厨房」の分担がわかっていると、不具合が起きたとき「これは注文の出し方(手元)の問題か、厨房(サーバー)の問題か」と切り分けて考えられます。丸投げでも、この一言があるかないかでAIへの相談の質が変わります。
スマホのアプリ(クライアント)
│ 「今日の天気を教えて」と頼む
▼
遠くのコンピューター(サーバー)
│ 調べて答えを用意する
▼
スマホに答えが返ってくる(画面に表示)AIにはこう頼む
「この機能はクライアント側(手元の画面)とサーバー側(データを持つ方)のどちらで動く処理ですか?役割を分けて説明して」と頼むと、全体像を教えてくれます。
つまずきポイント
「サーバー」という言葉は、機械そのものを指すこともあれば、その上で動くプログラムを指すこともあります。細かい区別は今は不要です。まずは「頼まれて作って返す役」と覚えれば十分です。
読んでも腑に落ちない所は、AIに噛み砕いてもらいましょう。
理解度チェック
答えられれば、面接で説明できる状態に一歩近づきます。
レストランのたとえで「クライアント」にあたるのはどれ?
クライアントとサーバーを分ける利点を、身近なたとえで一つ説明してください。
記述式です。まず自分の言葉で答えを考えてから、模範解答を開いて自己採点してください。