[システム 05] API駆動開発

なぜ、重要か。

ネットワーク経由のAPIを基準にシステムを開発することで、他のシステムと連携しやすくなります。

またシステムがレガシー化した際に交換したり、改善したりといった手が打ちやすいものになります。

人が使う見た目の作りだけでなく、エンジニアにとっての作りが質を生み出します。

チェックリスト

メトリクスの計測

  • 社内外のAPIの利用者にとってのユーザビリティについてヒアリング/アンケートを行い継続的な改善が行われているか。

学習と改善

  • 各APIについて、動作するインタラクティブなドキュメントや管理サービスを持っているか。

プラクティスと習慣

  • プロダクトに対して外部あるいは内部の別のシステムと連携するためのネットワーク経由APIが提供されているか。
  • APIは何らかのSchema定義言語によって規定され、そこから自動的にクライアントの生成やバリデータの生成が行われているか。
  • APIに関わる要件は、SDD(スキーマ駆動開発)で開発され、直ちにモックアップサーバーが提供できるか。

アンチパターン

  • ViewやControllerの層に処理が集中しており、機能をAPIに切り出すことが困難な設計になっている。
  • 各APIに対して、ネットワークを経由したE2E(ステージング・本番どちらに対するE2Eテストかは問わない)のテストが存在しておらず、死活監視ができていない。
  • APIがバージョン管理されておらず、破壊的な変更が利用者から検知できない。