✅ そもそもWebって何?
● ざっくり言うと
Webとは「パソコンやスマホ(クライアント)」と「情報を持っているサーバー」がやり取りする仕組みです。
● 実際の流れ(例:YouTubeを開くとき)
- Chrome(クライアント)が「YouTube見せて」とサーバーにお願い
- YouTubeのサーバーが「はいよ、これHTMLと動画データね!」と返す
- Chromeがそれを受け取り、ページを表示してくれる
🛠 Webを支える技術
技術 | なにしてる? | 具体例 |
---|---|---|
HTTP | 情報のやり取りルール(言語) | Webページを取得する仕組み |
HTML/CSS/JS | ページの構造・見た目・動きを作る | ブログ、ショッピングサイトなど |
URL | Web上の住所 | https://example.com |
Webサーバー | 情報を提供する側 | Apache、Nginxなど |
ブラウザ | Webページを表示する側 | Chrome, Safari など |
🌍 WebサイトとWebサービスの違い
種類 | 内容 | 例 |
---|---|---|
Webサイト | 読むだけ。情報提供が目的 | Wikipedia、ブログなど |
Webサービス | 操作する・使う。課題解決が目的 | Amazon、YouTube、Gmailなど |
🔗 APIとは?WebAPIとは?
● APIとは
アプリやサービス同士が「情報ちょうだい!」「これやって!」と話すための仕組みです。
- API = Application Programming Interface
- Interface:つなぐ仕組み(人ではなく機械同士の会話)
● WebAPIとは
- Web(インターネット)を通じて使うAPI
- 人ではなくプログラムが使うWeb
- HTMLではなくJSONでやり取りされる
📌 たとえば…
- Google Maps APIを使えば、アプリに地図を表示できる
- Twitter APIを使えば、アプリからツイート一覧を取得できる
🚀 WebAPIのメリット
- 他の人(開発者)が自分のサービスを拡張してくれる
- → 「APIエコノミー(APIを使った成長)」
実例:Twitter
- WebAPIを公開
- サードパーティ製アプリがどんどん便利に
- 利用者もどんどん増加!
⚠ WebAPI公開のリスクと対策
リスク | 内容 | 対策・実例 |
---|---|---|
収益の損失 | 非公式アプリにユーザーが流れる | TweetbotなどにAPI制限 |
サーバー負荷 | アクセス集中 | GitHub APIにレート制限導入 |
不正利用 | 偽物アプリで誤情報・ブランド低下 | APIキー+不正遮断+利用規約整備 |
📡 HTTP通信の中身
● リクエスト(クライアント → サーバー)
リクエストライン:HTTPメソッド、URI、HTTPバージョンを記載しサーバーへの指示を送る
POST /users HTTP/1.1
ヘッダー:サーバーに対する追加情報(メタ情報)を送信
Host: api.example.com
Content-Type: application/json
Authorization: Bearer xyz
ボディ:サーバーに送りたい「実データ」
{
"name": "Taro",
"age": 20
}
- POST: データ登録
- GET: データ取得
- PUT: データ更新
- DELETE: データ削除
● レスポンス(サーバー → クライアント)
ステータスリンク:リクエストの処理結果を示す
HTTP/1.1 200 OK
ヘッダー:メタ情報(データの形式や長さなど)
Content-Type: application/json
Content-Length: 48
Date: Mon, 27 May 2025
ボディ:リクエストに返す実際のデータ(HTML, JSONなど)
{ "id": 1, "title": "映画タイトル" }
🛡 RESTの原則
RESTとは「Webの仕組みに沿った設計スタイル」で、以下の6つの原則を守ることが重要です。
1. クライアント/サーバー
- 役割を分離(UIとデータ処理を分ける)
- クライアントは表示と操作、サーバーは処理と返答
2. ステートレス(状態を保持しない)
- サーバーは「前回のリクエストの状態」を記憶しない
- すべてのリクエストは自己完結している必要がある
✅ メリット
メリット | 内容 |
---|---|
スケーラビリティ | サーバーを追加しやすい |
シンプルな実装 | 状態を覚える必要がない |
障害に強い | 状態に依存しないので復元しやすい |
✅ 実装方法
実践内容 | 説明 |
---|---|
認証情報を毎回送る | JWTトークンやAPIキーを利用 |
セッションを持たない | クライアント側で状態を管理 |
必要なデータを毎回含める | 前の処理に依存させない |
3. キャッシュ制御
- サーバーがデータの再利用を許可すれば、クライアントが保存して再表示できる
- ヘッダー:
Cache-Control
,ETag
,Last-Modified
などで管理
4. 統一インターフェース
「どのリソースも同じ操作ルールに従う」こと。
サブ原則
原則 | 内容 |
---|---|
リソースの識別 | URIで一意に識別する(例:/users/123) |
リソースの操作 | HTTPメソッドで行う(GET/POST/PUT/DELETE) |
自己記述的メッセージ | ヘッダーに必要な情報を含める(例:Content-Type) |
HATEOAS | レスポンスに次のリンクを含めて状態遷移を促す |
5. 階層化システム
- クライアントは中間サーバー(キャッシュ、ゲートウェイ)を意識しない
- ロードバランサーや認証層を挟むことでセキュリティとスケーラビリティ向上
6. コードオンデマンド(任意の原則)
- 必要に応じてサーバーからコードを配信し、クライアントがそれを実行
- 例:バリデーションロジックをJavaScriptで配信
最後に
今回の記事では、REST APIとは何かについてイメージをつかむことを目的に、概要を中心に解説しました。
ステータスコードなど、REST APIには他にも多くの重要な要素がありますが、まずは全体像を把握することが理解の第一歩になります。
REST APIの基本的な考え方をつかんでおくことで、今後学ぶ詳細な内容もスムーズに頭に入ってくるはずです。
ぜひ、参考として一読いただければ嬉しく思います。