Jim Barton
Roman Martin
コントラクトファースト開発とは、チームメンバーや外部のチーム、サードパーティのシステムとの間に自身が開発するものの意図を明確にしておくことを指します。OpenAPI (同期的インタラクション用) や AsyncAPI (非同期的インタラクション用) を使うことで、自分達が開発するAPIを最初に定義しておくことができます。また変更の必要が発生した時も、実際にコードで実装する前に「契約 (コントラクト)」を事前にアップデートします。この進め方には以下のメリットがあります:
一緒に動作するアプリケーション同士が適切に動く状態を担保し、それらを同時並行で生産的に開発することができます。UI開発では一般的に動作するバックエンドサービスが開発され立ち上がるのを待つため開発が待ち状態になることがありますが、コントラクトファースト開発ではUI開発者とバックエンドサービス開発者が同時並行で開発することができます。またAPIのインターフェース開発時や更新時にコントラクトを最初に定義しておくことで、明確な「Doneの定義」や「受け入れ条件」を定義することができます。
HTTPを使ったRESTエンドポイントに代表される同期的インタラクションの場合、OpenAPIが多くのリファレンスを用意しています:
イベントドリブンアーキテクチャの場合やメッセージングシステムを活用するための非同期的インタラクションの場合、AsyncAPIがリファレンスを用意しています:
コントラクトファースト開発 をチームや顧客、ステークホルダーと実施するにあたりより詳細にお知りになりたい場合は、以下のリンクを参照してください。