【入門編】 OpenAPI Specification(OAS)の構造と主要コンポーネント – Web APIアーキテクチャ・データ連携実践ガイド

こんにちは!ネットワークの深淵を愛してやまない、インフラアーキテクトの筆者です。

普段はルーターのパケットキャプチャとにらめっこして、「なぜこの通信はここで断絶したのか?」なんて自問自答している私ですが、今日は少し視点を変えて、Webアプリケーションの「顔」であるAPI、その設計図にあたる「OpenAPI Specification(OAS)」について紐解いていこうと思います。

「APIって難しそう…」と思っていませんか?大丈夫です。一歩ずつ、私たちの身近なものに例えて理解していきましょう。

—

APIは「郵便局の窓口」、OASは「業務マニュアル」

Web APIというのは、簡単に言えば「サーバーというお店」と「クライアント(スマホアプリなど)というお客さん」がやり取りをするための窓口です。

お客さんが「これください!」と言ったとき、店員さんが「それは今ないんです」「書き方が違います」とイチイチ揉めていたら、お店は回りませんよね。そこで登場するのが OpenAPI Specification (OAS) です。これは、「このお店で何が注文できて、どんな用紙(データ形式)で申請すればいいのか」を記した、完璧な業務マニュアルのようなものです。

このマニュアルさえあれば、人間だけでなくプログラムも自動的に内容を理解して、「じゃあ、こういう手順で注文を受け付けますね!」とシステムを自動構築できてしまう。これがOASの魔法です。

—

OASの主要コンポーネントを読み解く

OASのファイル(通常は openapi.yaml という名前です)を開くと、いくつかの大きなパーツに分かれています。代表的な4つの「役職」を紹介しますね。

1. paths:どこの窓口に行けばいい?

郵便でいうところの「宛先住所」です。GET /users なら「ユーザー一覧をください」、POST /orders なら「注文を申請します」といった具合に、URLという住所と、HTTPメソッドという「配達の種類」を定義します。

2. components:使い回しできる「共通パーツ」

何度も同じような記述を書くのは面倒ですよね。例えば「ユーザー情報の項目(名前、年齢、メールアドレスなど)」は、色んな場所で使われます。これを components/schemas という場所に一箇所にまとめておくと、まるで「スタンプ」のようにペタペタと呼び出せるようになります。

3. schemas:荷物の中身のチェックリスト

「荷物は必ず段ボール箱に入れて、重さは〇〇kg以下にしてください」というルールです。データがどんな型(数字なのか、文字なのか)なのか、必須項目は何かを定義します。

4. securitySchemes:セキュリティゲート

郵便局でいう「身分証の提示」です。APIキーやパスワードを使って、「あなた、本当に本人ですか?」という確認の手順を定義します。

—

実践!OASを書いてみよう

では、実際に簡単な「注文受付」の仕様書をイメージしてみましょう。

openapi: 3.0.0
info:
  title: 注文受付API
  version: 1.0.0

# ここが「宛先」の定義
paths:
  /orders:
    post:
      summary: 新規注文を作成する
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Order' # 共通定義を呼び出し!

# ここが「共通パーツ」の保管庫
components:
  schemas:
    Order:
      type: object
      required:
        - item_id
        - quantity
      properties:
        item_id:
          type: string # 商品IDは文字ですよ
          description: 商品の識別番号
        quantity:
          type: integer # 数量は数字ですよ
          minimum: 1    # 最低1個は頼んでね
  
  # ここが「身分証」の定義
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: X-API-KEY # HTTPヘッダーで鍵を渡してね

—

なぜこの設計が「美しい」のか?

私のようなインフラエンジニアの視点で見ると、この設計の素晴らしさは「疎結合(お互いに依存しすぎない状態)」にあります。

もしあなたがAPIを作る側なら、このマニュアルを先に書くことで、フロントエンドエンジニアやスマホアプリの開発者と「ここ、どういう仕様にする?」という無駄な打ち合わせを劇的に減らすことができます。マニュアルが動く仕様書になっているので、コードを一行も書く前から、すでに完成品に近いイメージを共有できるのです。

さらに、Swagger UI や Redoc といったツールを使えば、このファイルから自動的にカッコいいドキュメントサイトが生成されます。「ドキュメント更新し忘れてた!」という現場あるあるも、これなら回避できますね。

最後に:ネットワークの先にある「対話」を大切に

ネットワーク技術者は、パケットという「0と1の塊」をどう効率よく運ぶかに心を砕きます。しかし、その中身が何であるかを定義するAPI設計は、「人間同士のコミュニケーション」を円滑にするための架け橋です。

今回ご紹介したOASの構造を意識するだけで、あなたの作るAPIはグッとプロフェッショナルなものに変わります。まずは難しく考えず、openapi.yaml をエディタで開いて、身近なサービスのAPIを想像しながら書いてみてください。

「このAPIは、どんな荷物を運ぼうとしているのかな?」

そんな想像力を働かせることこそが、優れたエンジニアへの第一歩です。それでは、また次回の深淵でお会いしましょう!

コメント

タイトルとURLをコピーしました