koudenpaのブログ

趣味のブログです。株式会社はてなでWebアプリケーションエンジニアをやっています。職業柄IT関連の記事が多いと思います。

APIドキュメントの書き具合

これは雑多なメモです*1

Webサービスを作るぞ、となったときにサーバサイドアプリケーションはGraphQLなりRESTなりのAPIを提供し、クライアントサイドアプリケーション(Webフロントエンドアプリだったりスマホアプリだったり)はそのAPIを呼ぶ。という責務分担をすることが多い気がしている。

そうなった際の責務分担の境界は「GraphQLなりRESTなりのAPI」であることに間違いはない気がしている。

それらのAPIドキュメントが完璧に書かれていれば、理屈の上ではサーバサイドとクライアントサイドのアプリケーションは相互に独立して開発を進められる。

完璧なドキュメントなんて存在しないし、理屈通りにはいかないけれど、それを志向はしたいと常々思っている。

そういう志向においては「APIドキュメントの書き具合」はどのくらいにするのがいいのだろうか。

仕事で開発しているWebサービスについての思案なので以下のようなものになる。

  • 自分はサーバサイドのチーム
  • APIとそのドキュメントのオーナーはサーバサイド
  • Webフロントエンドアプリはサーバサイドのチームが開発・運用
  • スマホアプリは隣のチームが開発・運用

理想はエンドユーザーに提供するAPIのドキュメントのような全てが網羅されている状態だろう。無限の工数があればそうしたいですね。

そんな手間暇をかけるのは現実的ではないので、外から見た振る舞い、外部仕様を丁寧に書く、程度のポリシーで暮らしている。自分はAPIを提供する側だけれど、呼ぶ側としてこのドキュメントをみて迷わずに呼び出せるか? イラつきはしないか? を考える。

丁寧に書いていると、自分が実装するときに参考になるのもよい。

外部仕様書として見ると、サーバサイドクライアントサイドとの境界だけでなく、要件との境界、突合せもできて便利。

なので、現実的な落としどころは「外部仕様」を書くように心がける辺りじゃないかな、って思っている。

永遠のTODO ここに例が書かれる

そんな感じ!

*1:普段社内のナレッジベースに書いてるような内容だけれど、別に社外秘ないしブログに書いてしまってもいいだろう