OpenAPIで書けてもRESTとは限らない、図面と設計思想の正しい関係

OpenAPIで書かれた立派な仕様書を見せられ、うちはRESTで設計しています、と説明されることがあります。けれども、図面がきれいに描けていることは、その建物が耐震設計であることの証明にはなりません。OpenAPIは、RESTでないHTTPのAPIも同じ書式で描けるからです。この記事では、REST APIとOpenAPIの関係を、設計思想と図面というよく知られたたとえで整理したうえで、たとえが言い落としている点と、GPTsのアクションで実際に効くのはどちらなのかを考えます。

RESTは設計の考え方、OpenAPIはそれを書き表す書式です

REST APIは、扱う対象をリソースという単位でとらえ、URIで住所を決め、GET、POST、PUT、DELETEといったHTTPメソッドで操作を表す、Webサービスの設計の考え方です。考え方だけでは相手に伝わらないので、どの住所で、どんな操作を受け付け、何を返すのかを、決まった書き方で書く必要があります。

OpenAPIは、その書き方の規格です。JSONまたはYAMLで、エンドポイント、パラメータ、レスポンスなど、APIの窓口の形を記述します。ユーザー情報を取得するAPIなら、OpenAPI 3.0.0の形式で次のように書けます。

openapi: 3.0.0
info:
  title: ユーザー情報取得API
  version: '1.0'
paths:
  /users:
    get:
      responses:
        '200':
          description: ユーザー情報
          content:
            application/json:
              schema:
                type: object
                properties:
                  id: {type: integer}
                  name: {type: string}

ここから、エンドポイントが /users、メソッドがGET、パラメータはなし、成功すると200のコードとJSONのユーザー情報が返る、と読み取れます。図面があれば、作る人、使う人、確かめる人が同じものを見て話せ、Swagger EditorやPostmanのようなツールでドキュメントの生成、テスト、クライアント用のライブラリの生成もできます。

REST APIとOpenAPI

この図面は、RESTでない建物も描けます

REST APIが設計思想で、OpenAPIが図面。このたとえは正しいのですが、一つ言い落としています。OpenAPIで描けるのはRESTの建物だけではありません。どの操作もPOSTで一つの住所に送り、本文の中で処理の名前を指定する、手続きを呼ぶ形のAPIも、OpenAPIで書けます。前のやり取りを覚えている前提で動くAPIも書けます。

OpenAPIが確かめるのは、書式が規格どおりかどうかです。設計がRESTの考え方に沿っているかは確かめません。書式が整った仕様書ほど、中身の設計まで確かめた気になりやすいのは、見た目の整い方と中身の正しさを、人がつい同じものとして扱うからです。仕様書を受け取ったら、リソース単位で住所が切られているか、リクエストがそれだけで完結しているか、と設計のほうを別に問う必要があります。

もっとも、社内の一つのチームだけで使うAPIなら、RESTかどうかの区別はあまり問題になりません。区別が効くのは、外部の相手と、RESTという言葉だけで期待をそろえようとするときです。

GPTsが読むのは、思想ではなく図面です

ChatGPTを自分用にカスタマイズするGPTsには、外部のAPIを呼び出すアクションという機能があります。登録するのは、OpenAPIの形式で書いたスキーマです。GPTはそれを読んで、どのエンドポイントに、どのメソッドで、何を送ればよいかを判断します。

GPTsは、相手のAPIがRESTの考え方に忠実かどうかを気にしません。読むのは図面に書かれた住所と説明だけです。RESTらしさの議論には熱が入るのに、各操作の説明欄は一行で済ませる、という配分は、力の入れどころが逆さまです。GPTが呼ぶ場面を判断する手がかりは、その一行しかないからです。RESTの考え方のうちGPTsで効いてくるのは、ステートレスです。GPTの送るリクエストが毎回それだけで意味が通るなら、会話の流れに関係なく、同じように呼べます。

ただし、説明欄をどう書けばGPTがどう判断するのかは、外からは正確には分かりません。どこまでがRESTかという線にも、広く合意されたものはありません。図面と思想のどちらも、使ってみた結果から推し量るしかない部分が残ります。

あなたが受け取った、あるいは書いたAPIの仕様書で、書式は整っているのに、設計の考え方を誰も確かめていない部分はどこでしょうか。そのAPIをGPTに渡したとき、GPTが頼れる手がかりは、説明欄の何行でしょうか。

この記事の背景にある考え方は、拙著『ChatGPT 誰でも1時間でできる! はじめてのGPTsのつくり方』の3章3節「GPTsにおける要件定義の意味と必要性」に書きました。GPTsでは使う人と作る人が同じになっても、作る人の頭の中とAIの理解の間には隔たりが残り、要件を曖昧さなく書くことでしか埋まらない、という節で、その隔たりを「それはあなたとAIとのギャップです。」と書きました。画面や機能は2024年時点の記述ですが、この節を読むと、整った仕様書の中で、GPTに届いているのは何行で、届いていないのはどの意図かを点検できるようになります。

自分の仕事に効くAIは、誰が作るべきか。

ChatGPT 誰でも1時間でできる! はじめてのGPTsのつくり方 表紙

『ChatGPT 誰でも1時間でできる! はじめてのGPTsのつくり方』

要件を日本語で書き出せば、それがそのままAIを動かす。現場の知識を持つ人が自分で作り、育てる、内製化のための本です。

読み終えたとき、手元に残るもの

  • 目的、役割、入力、出力をそろえる要件定義の型
  • 評価基準と判断基準を持たせる考えるGPTの作り方
  • テスト用のダミーデータで直していく手順
  • 複数のGPTを分業と協業でつなぐ設計

画面や機能の記述は2024年時点のものです。仕事を分解し、基準を言葉にする考え方は今も変わりません。

Amazonで見る

出典

著者プロフィール・お問い合わせ