コントラクトファースト開発

再利用可能なサービスを作る時に先に合意を取り付けておく
Contributed by

Jim Barton

Roman Martin

Published June 20, 2019
Collection
3

概要

コントラクトファースト開発とは、チームメンバーや外部のチーム、サードパーティのシステムとの間に自身が開発するものの意図を明確にしておくことを指します。OpenAPI (同期的インタラクション用) や AsyncAPI (非同期的インタラクション用) を使うことで、自分達が開発するAPIを最初に定義しておくことができます。また変更の必要が発生した時も、実際にコードで実装する前に「契約 (コントラクト)」を事前にアップデートします。この進め方には以下のメリットがあります:

  • クライアント側とサーバー側の両方で実装を同時に進めることができます
  • テストの自動化や検証ツールの使用をすることができます
  • 開発中でもサービスをモックで利用することができます
  • 関連ドキュメントを最新に保つことができます

メリット

一緒に動作するアプリケーション同士が適切に動く状態を担保し、それらを同時並行で生産的に開発することができます。UI開発では一般的に動作するバックエンドサービスが開発され立ち上がるのを待つため開発が待ち状態になることがありますが、コントラクトファースト開発ではUI開発者とバックエンドサービス開発者が同時並行で開発することができます。またAPIのインターフェース開発時や更新時にコントラクトを最初に定義しておくことで、明確な「Doneの定義」や「受け入れ条件」を定義することができます。

実施方法

HTTPを使ったRESTエンドポイントに代表される同期的インタラクションの場合、OpenAPIが多くのリファレンスを用意しています:

イベントドリブンアーキテクチャの場合やメッセージングシステムを活用するための非同期的インタラクションの場合、AsyncAPIがリファレンスを用意しています:

実施例

参考

コントラクトファースト開発 をチームや顧客、ステークホルダーと実施するにあたりより詳細にお知りになりたい場合は、以下のリンクを参照してください。


Except where noted, content on this site is licensed under a Creative Commons Attribution 4.0 International license. This site is graciously hosted by Netlify