SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

Developers CAREER Boost セッションレポート(AD)

あなたの仕事を楽にする「スキーマ駆動開発」とは?──自動化ツールも導入してさらに楽に

【A-3】Schema As Codeで実現する最速のスキーマ駆動開発

  • このエントリーをはてなブックマークに追加

 システムを開発する際には、事前に決めておかなければならないことがかなりある。データベース・テーブルの設計やAPIの名称や引数と戻り値などを事前に決めて、開発プロジェクトのメンバー全員から同意を取っておく必要がある。開発メンバー全員で共用するものなので、メンバー間で理解にずれがあってもいけない。システム開発にかかる時間の大部分にこの作業を充ててしまっているプロジェクトもあるかもしれない。株式会社プレイドの土田雄輝氏は、このような作業にあまり時間と労力を使うべきではないと語る。そのための手法が「スキーマ駆動開発」だ。事前に決めておかなければならないことを簡単にまとめることができ、開発メンバー間での理解のずれもなくしてくれる。その結果、クライアント側とサーバー側を非同期で開発できるようになる。

  • このエントリーをはてなブックマークに追加

APIの仕様をまとめて、全員の合意を取ってから開発を始める

 コンピューター・システムの開発で問題が発生するとき、その原因はメンバー同士のコミュニケーション不足、あるいはコミュニケーションの失敗にあることが多い。例えば、クライアントとサーバーの通信に使うAPIについて、その名称や使い方など詳細な情報をメンバー全員にしっかり伝えることができていないと、コードとして実装するときに担当者がどのように実装すれば良いか分からなくなることが考えられる。

 周囲のメンバーにちょっと確認して、すぐに問題が解消すれば良いが、解決しないときはほかのチームに確認することになる。システムのクライアント側のメンバーが十分に理解していないときに、サーバー側のメンバーに詳細について確認することにもなるかもしれない。最悪の場合は、サーバー側とクライアント側が仕様の確認のために自由に動けなくなり、歩調を合わせて開発を進めざるを得なくなる。

 仕様の確認を繰り返すと、開発に使う時間をコミュニケーションのために浪費することになってしまう。こうなってしまうと開発のペースは落ちて、スケジュール通りには進まなくなる。かなり遅れてシステムが完成したとしても、バグがいくつも潜んでいることになりかねない。

 このような事態を防ぐのに役立つ手法として土田氏が紹介するのが、「スキーマ駆動開発」という開発手法だ。この手法は簡単に言えば「API仕様(スキーマ)を先に決めてからクライアントとサーバーの開発を進める手法」(土田氏)ということになる。APIのインターフェースや仕様の詳細を先にキッチリと決めて、メンバー間でしっかりと合意を取ってからクライアント側とサーバー側のアプリケーションを実装していく手法だ。

APIの仕様を先に決めてから開発を進めるのがスキーマ駆動開発
APIの仕様を先に決めてから開発を進めるのがスキーマ駆動開発

 では、APIのインターフェースや仕様の詳細をどのような形式で記述すれば良いのだろうか。そこで登場するのが業界標準のフォーマットである「OpenAPI」だ。土田氏はOpenAPIの利点について、「エコシステムが充実していて、オープンソースのライブラリやツールが多く存在する」と語る。

 OpenAPIでは「YAML(YAML Ain't a Markup Language)」か「JSON(JavaScript Object Notation)」のどちらかの形式でAPI仕様を記述する。どちらも開発者なら触れる機会がある形式だ。OpenAPIを利用すると、最初にデータベースのテーブルを作成し、システムで使用するAPIのすべてについて名称や機能などを決め、決めたことをOpenAPIのファイルにまとめ、まとめたファイルをメンバー全員でレビューして、APIの定義(スキーマ)についてしっかりとした合意を得てから開発を始めることができる。

次のページ
クライアント側とサーバー側が非同期で開発を進めることができる

関連リンク

この記事は参考になりましたか?

  • このエントリーをはてなブックマークに追加
Developers CAREER Boost セッションレポート連載記事一覧

もっと読む

この記事の著者

笹田 仁(ササダ ヒトシ)

 フリーランスのライター、編集者。IT、特にソフトウェア開発の話が好きです。 趣味はドラムを叩くこと。コロナ騒ぎでリハーサルスタジオに入りにくくなり、ちょこちょこと楽器を買うことでストレスを解消していたら、いつの間にか置き場所に困るほどになってしまいました。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

CodeZine編集部(コードジンヘンシュウブ)

CodeZineは、株式会社翔泳社が運営するソフトウェア開発者向けのWebメディアです。「デベロッパーの成長と課題解決に貢献するメディア」をコンセプトに、現場で役立つ最新情報を日々お届けします。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

【AD】本記事の内容は記事掲載開始時点のものです 企画・制作 株式会社翔泳社

この記事は参考になりましたか?

この記事をシェア

  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/17115 2023/01/23 12:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング