APIの仕様をまとめて、全員の合意を取ってから開発を始める
コンピューター・システムの開発で問題が発生するとき、その原因はメンバー同士のコミュニケーション不足、あるいはコミュニケーションの失敗にあることが多い。例えば、クライアントとサーバーの通信に使うAPIについて、その名称や使い方など詳細な情報をメンバー全員にしっかり伝えることができていないと、コードとして実装するときに担当者がどのように実装すれば良いか分からなくなることが考えられる。
周囲のメンバーにちょっと確認して、すぐに問題が解消すれば良いが、解決しないときはほかのチームに確認することになる。システムのクライアント側のメンバーが十分に理解していないときに、サーバー側のメンバーに詳細について確認することにもなるかもしれない。最悪の場合は、サーバー側とクライアント側が仕様の確認のために自由に動けなくなり、歩調を合わせて開発を進めざるを得なくなる。
仕様の確認を繰り返すと、開発に使う時間をコミュニケーションのために浪費することになってしまう。こうなってしまうと開発のペースは落ちて、スケジュール通りには進まなくなる。かなり遅れてシステムが完成したとしても、バグがいくつも潜んでいることになりかねない。
このような事態を防ぐのに役立つ手法として土田氏が紹介するのが、「スキーマ駆動開発」という開発手法だ。この手法は簡単に言えば「API仕様(スキーマ)を先に決めてからクライアントとサーバーの開発を進める手法」(土田氏)ということになる。APIのインターフェースや仕様の詳細を先にキッチリと決めて、メンバー間でしっかりと合意を取ってからクライアント側とサーバー側のアプリケーションを実装していく手法だ。
では、APIのインターフェースや仕様の詳細をどのような形式で記述すれば良いのだろうか。そこで登場するのが業界標準のフォーマットである「OpenAPI」だ。土田氏はOpenAPIの利点について、「エコシステムが充実していて、オープンソースのライブラリやツールが多く存在する」と語る。
OpenAPIでは「YAML(YAML Ain't a Markup Language)」か「JSON(JavaScript Object Notation)」のどちらかの形式でAPI仕様を記述する。どちらも開発者なら触れる機会がある形式だ。OpenAPIを利用すると、最初にデータベースのテーブルを作成し、システムで使用するAPIのすべてについて名称や機能などを決め、決めたことをOpenAPIのファイルにまとめ、まとめたファイルをメンバー全員でレビューして、APIの定義(スキーマ)についてしっかりとした合意を得てから開発を始めることができる。