スキーマ駆動開発 : 現代のシステム開発を加速させるパラダイムシフト

はじめに

現代のビジネス環境は、かつてないほどのスピードで変化しており、企業はデジタルトランスフォーメーション(DX)を推進し、迅速かつ柔軟にシステムを開発・運用することが求められています。

この潮流の中で注目を集めているのが「スキーマ駆動開発」です。本コラムでは、スキーマ駆動開発の概要、メリット・デメリット、現代のビジネスにおける重要性を解説します。オブジェクト指向開発やアジャイル開発に精通した弊社が、いかにスキーマ駆動開発を強力に推進し、お客様のビジネスを加速させることができるのかを説明します。

また、近年話題のDXや大規模言語モデル(LLM)との親和性についても触れ、この開発手法が将来のシステム開発にどのような可能性をもたらすのかを探ります。

スキーマ駆動開発とは?

スキーマ駆動開発とは、API 仕様を記述するスキーマ(契約)を最初に定義し、それを中心にシステム開発を進めるアプローチです。「APIファースト開発」とも呼ばれ、近年のシステム開発において重要なパラダイムシフトをもたらしています。

従来の開発手法では、バックエンドシステムを開発後にAPIを構築することが一般的で、バックエンドの変更がAPIに影響しやすく、手戻りや複雑化を招くリスクがありました。

一方、スキーマ駆動開発では、最初にAPIのインターフェース仕様をOpenAPI等などの構造化された文書形式で厳密に定義します。このスキーマは、システム間のデータ交換の形式やルールを明確に規定するものであり、開発プロセス全体における信頼できる唯一の情報源(Single Source of Truth)として機能します。

スキーマ駆動開発のプロセス

スキーマ駆動開発は、以下のプロセスで進められます。

  1. スキーマの定義:
    • システムのAPIインターフェースを詳細に定義します。OpenAPI Specification(OAS)や GraphQL などの形式が用いられます。
    • リソース、エンドポイント、リクエスト・レスポンスのデータ構造などを厳密に定義します。
  2. サーバーサイドインターフェースの生成:
    • スキーマからサーバーサイドのインターフェースや実装スケルトンを自動生成します。
    • サーバーサイドの実装が仕様に連動し、品質と開発効率が向上します。
  3. クライアント SDK の生成:
    • スキーマからクライアントSDKを自動生成します。
    • クライアントアプリケーションはAPIを容易に利用できるようになり、開発効率が向上します。
    • フロントエンドで利用する検証ライブラリもスキーマから自動生成することで、フロントエンドの品質と開発効率を向上させることができます。
  4. モックサーバーの生成:
    • 定義したスキーマをもとに、モックサーバーを自動生成します。
    • 実際のバックエンドシステムが完成していなくても、APIの動作をシミュレートできるため、フロントエンドとバックエンドの開発を並行して進められます。
  5. 実装とテスト:
    • スキーマに基づいて、バックエンドシステムとフロントエンドアプリケーションをそれぞれ実装します。
    • スキーマに基づいたテストケースを自動生成し、効率的かつ網羅的なテストを実施します。
  6. ドキュメントの生成:
    • スキーマからAPIドキュメントを自動生成します。
    • 常に最新の仕様に基づいたドキュメントが生成されるため、開発者間のコミュニケーションミスを減らし、メンテナンス性を向上させます。

このプロセスは一度きりではなく、繰り返し実施することで仕様変更にも柔軟に対応できます。スキーマは開発チーム間の共通言語として機能し、開発効率の向上と品質の確保に貢献します。

「一緒に」「カスタマイズしつつ」お客様自身がアジャイル開発を推進できるDXSIテンプレート
詳細資料ダウンロード

7898_1
DXSIテンプレートの特徴

● サービスの柔軟な変更

● 省力化、属人化の解消

● 高品質

どんな資料なのか内容を確認する

スキーマ駆動開発のメリット

コミュニケーションの共通言語の確立

APIスキーマは、開発中のシステムがどのように外部と情報をやり取りするのか、そのデータ構造はどうなっているのかを定義した、システムの仕様そのものです。顧客と開発者の間で、システムが実現することを形式的に定義した仕様書となります。

また、明確に定義されたAPI仕様は、開発チーム内での認識の齟齬を減らし、コミュニケーションを円滑にします。従来の曖昧なドキュメントによるコミュニケーションで発生しがちな問題を、厳密なスキーマが「信頼できる唯一の情報源」となることで防ぎ、エラーの発生を減らし、品質の高いシステムを構築できます。

開発の並行化と効率化

スキーマを最初に定義することで、フロントエンドとバックエンドの開発を独立して進めることができます。モックサーバーを利用すれば、バックエンドの実装を待たずにフロントエンドの開発を進められ、全体の開発期間を大幅に短縮できます。

また、スキーマからサーバーサイドスケルトン、クライアントSDKやテストケースを自動生成することで、開発者のコーディング負荷が軽減され、開発効率が向上します。これにより、開発者はより重要なビジネスロジックの実装に集中できます。

品質と保守性の向上

サーバーサイドインターフェースやクライアントSDKは自動生成されているため、常に仕様に忠実な状態を保てます。APIドキュメントも最新の状態に保たれるため、開発者は常に正確な情報を参照できます。

スキーマに基づく自動テストにより、バグの早期発見と修正が容易になります。さらに、厳密なインターフェース定義は、システムの変更が他の部分に与える影響を最小限に抑え、システムの保守性を向上させます。変更が必要な場合でも、まずスキーマを変更し、それに関連するコードやドキュメントを自動的に更新して適切に追従することができます。(手動で変更しなければならない齟齬があればコンパイルエラーという形で明確に視覚化されます)

早期のフィードバックとリスクの軽減

モックサーバーを利用して、早い段階でAPIの動作を確認できるため、開発の初期段階で問題点を発見し、修正が可能です。

ステークホルダーからの早期のフィードバックを得られることも大きなメリットです。APIの動作を早期に確認できるため、要件の誤解や仕様の不備を早期に発見し、手戻りを最小限に抑え、開発リスクを大幅に軽減できます。

再利用性と拡張性の向上

明確に定義されたAPI仕様は、他のシステムやアプリケーションから容易に利用できるため、システム間の連携を促進します。

また、スキーマに基づくモジュール化された設計は、システムの拡張性を向上させます。新しい機能を追加する際にも、既存のスキーマを拡張することで、システム全体への影響を最小限に抑えながら、柔軟に機能を追加できます。

標準化による相互運用性の向上

例えばOpenAPIは、Microsoft、Google、IBMなどが設立した OpenAPI Initiative によって標準化されたRESTful APIのスキーマ記述言語です。

このような標準に基づくスキーマ定義は、特定の言語やツールだけに依存しません。システムの利用箇所に応じて最適なツールを選択できます。

また、標準も関連ツールは多くの企業やコミュニティに支えられ進化し続けるため、互換性を保ちながらエコシステム全体で継続的な改善が期待できます。

スキーマ駆動開発のデメリット

初期コストの増加

最初に詳細なAPIスキーマを定義する必要があるため、時間と労力がかかり、従来の開発手法と比べて初期コストが増加する可能性があります。特に、APIの仕様が複雑な場合や、プロジェクトの初期段階で要件が頻繁に変更される場合には、スキーマの作成とメンテナンスに多くの時間が必要となることがあります。

モデリングスキルへの依存

前述のとおりスキーマは開発プロセス全体における「信頼できる唯一の情報源」であり、すべてのコンポーネント(サーバーインターフェース、クライアントSDK、モックサーバー、テストケース、ドキュメントなど)に影響します。
スキーマ定義には開発チームに高度なスキルと経験が必要です。特に、複雑なビジネス要件を適切にモデリングするためには、オブジェクト指向やデータモデリングの知識が必要となります。モデリングスキルが不足している場合、スキーマの品質が低下し、開発全体に悪影響を及ぼす可能性があります。

ツールへの依存

スキーマ駆動開発は、さまざまなツールに依存しています。これらのツールを効果的に活用するためには、開発チームがツールの使い方を習得する必要があります。
また、特定のツールに依存することで、以下のリスクも考慮しなければなりません。

  • ツールの制約によって、設計や実装の選択肢が制限される可能性がある。
  • ツールに不具合があった場合、開発プロセス全体が影響を受ける可能性がある。
  • ツールのサポートが終了した場合、代替ツールへの移行が必要になる可能性がある。

「一緒に」「カスタマイズしつつ」お客様自身がアジャイル開発を推進できるDXSIテンプレート
詳細資料ダウンロード

7898_1
DXSIテンプレートの特徴

● サービスの柔軟な変更

● 省力化、属人化の解消

● 高品質

どんな資料なのか内容を確認する

なぜ今、スキーマ駆動開発なのか?

デジタルトランスフォーメーション(DX)の加速

企業は、デジタル技術を活用してビジネスプロセスを変革し、新たな価値を創造することが求められています。スキーマ駆動開発は、APIを中心としたシステム設計により、異なるシステム間の連携を容易にし、データの活用を促進します。
また、迅速な開発と柔軟な変更対応を可能にすることで、ビジネスの変化に素早く対応できるシステムを構築でき、DXを推進する上で強力な武器となります。

台湾のデジタル担当大臣として活躍したオードリー・タン氏は、DXの推進におけるAPIの重要性について、次のように述べています。

私が台湾でデジタル担当大臣として推進しているミッションの1つに「オープンガバメント(開かれた政府)」があり、その中で行った施策のうち、最もDXの基礎に直結するのが、「Open API で政府をオープンにすること」だと言ってよいでしょう。
https://www.sbbit.jp/article/cont1/82585(外部サイト)

これは政府のオープン化に限らず企業や組織においても同様であり、スキーマ駆動開発は、DXを実現するための重要な要素であると言えるでしょう。

マイクロサービスアーキテクチャの普及

近年、システムを独立した小さなサービスの集合体として構築するマイクロサービスアーキテクチャを採用する企業が増えています。各サービスは、それぞれ独立して開発、デプロイ、スケーリングできるため、システムの柔軟性と拡張性が向上します。スキーマ駆動開発は、各マイクロサービス間の契約を明確にし、独立した開発を促進するため、マイクロサービスアーキテクチャと非常に相性がよい開発手法です。

クラウドネイティブアプリケーションの開発

クラウドネイティブアプリケーションは、クラウド環境での実行を前提として設計され、コンテナ、マイクロサービス、DevOpsなどの技術を活用して、スケーラビリティ、可用性、回復性を実現します。スキーマ駆動開発は、APIを中心とした設計により、コンテナ化されたマイクロサービスの連携を容易にし、DevOpsによるCI/CDを促進するため、クラウドネイティブアプリケーションの開発にも適しています。

アジャイル開発との親和性

スキーマ駆動開発は、変化に迅速に対応するための開発手法として広く採用されているアジャイル開発の原則とよく調和します。スキーマを最初に定義することで、開発チームは早い段階でフィードバックを得ることができ、要件の変更にも柔軟に対応できます。
また、モックサーバーを利用した並行開発は、イテレーションごとの開発サイクルを短縮し、アジャイル開発のスピードをさらに加速させます。

大規模言語モデル(LLM)やAIエージェントとの親和性

近年の技術トレンドとして、大規模言語モデル(LLM)の台頭も見逃せません。スキーマ駆動開発において、OpenAPI等で記述されたAPI仕様は、以下の点でLLMと非常に親和性があります。

  • 機械可読性: LLMは構造化データを理解し、処理することに長けています。OpenAPI等のスキーマ定義言語は適切に構造化されているため、LLMはAPIの仕様を正確に把握できます。
  • 明確な定義: APIの振る舞いは厳密に定義されているので、LLMは曖昧さを排除し、APIの利用方法や期待される結果を正確に理解・予測できます。

スキーマ駆動開発とLLM・AIエージェントを組み合わせることによって以下のようなシステムを構築可能です。

  • 開発者向け
    • システム仕様に対する拡張検索: システム仕様について開発者が自然言語で質問し、LLMがOpenAPIスキーマ等をもとに回答する「会話できる仕様書」を構築可能です。単なるキーワード検索を超えた文脈を理解した質疑応答が可能です。
    • コードやドキュメントの自動生成: API仕様をもとにした画面の自動生成や、利用シーンを想定した複雑なテストケースの自動生成など、従来のツールによる自動生成を超えた自動生成ができる可能性があります。
  • ユーザー向け
    • 自然言語によるシステム指示: ユーザーが自然言語でシステムに指示できます。LLMが発言とAPI仕様を解釈してAPIリクエストを生成することにより、システムは適切なAPIを呼出してタスクを実行できます。
    • マルチモーダルなシステム利用: 自然言語だけではなく、手書きの文書などさまざまな入力方法を組み合わせてシステムを利用できます。
    • 自律的なAPI操作: API仕様を理解したAIエージェントは、複数のAPIを組み合わせたタスクを自律的に実行できます。例えば、「今日の東京の天気を調べて、雨が降るなら傘を持っていくようにリマインドする」といったタスクを、天気APIとリマインダーAPIを連携させて実行できます。

LLMやAIエージェントの能力向上に伴い、将来的には、スキーマ仕様をもとに、ソフトウェア設計、コード生成、テスト、デプロイまで、開発プロセス全体を自動化できるかもしれません。またスキーマの設計自体もAIエージェントによる支援や一部自動化が可能になるでしょう。

オージス総研の強み : オブジェクト指向とアジャイルの専門知識を活かしたスキーマ駆動開発

弊社は、長年にわたりオブジェクト指向開発とアジャイル開発に携わってきました。これらの経験と専門知識は、スキーマ駆動開発を推進する上で大きな強みとなります。

オブジェクト指向に基づくモデリングスキル

長年のオブジェクト指向開発の経験を通じて、複雑なビジネス要件を明確なオブジェクトモデルに落とし込むスキルを磨いてきました。このスキルを活かして、ビジネスニーズに合致した、分かりやすく、再利用性の高いAPIスキーマを設計できます。

アジャイル開発プロセスへの習熟

スクラム、カンバンなどのアジャイル開発の手法に精通しており、スキーマ駆動開発においても、アジャイルのプラクティスを適用することで、変化に柔軟に対応し、迅速に価値を提供できます。例えば、スキーマの定義においても、反復的なプロセスを採用し、ステークホルダーからのフィードバックを早期に取り入れながら、段階的に詳細化していくことができます。

スキーマ駆動開発の専門チーム

OpenAPI等のスキーマ定義言語や関連するツールに精通し、スキーマ駆動開発のあらゆる側面をサポートできる専門チームを立ち上げました。
またスキーマ駆動開発を効率的に進めるための、経験に基づいて開発されたベストプラクティスが組み込まれたテンプレートやツールを提供しています。開発チームはスキーマ駆動開発を迅速に導入し、開発プロセスを効率化できます。

顧客のビジネスに合わせたコンサルティング

単にスキーマ駆動開発の技術を提供するだけでなく、お客様のビジネス目標、開発プロセス、技術スタックなどを深く理解した上で、最適なスキーマ駆動開発の導入方法を提案します。スキーマ駆動開発の導入後も、継続的なサポートを提供します。

まとめ : スキーマ駆動開発でビジネスの未来を切り拓く

スキーマ駆動開発は、現代のシステム開発における重要なパラダイムシフトであり、DXの推進、マイクロサービスアーキテクチャの採用、クラウドネイティブアプリケーションの開発、アジャイル開発との親和性など、多くのメリットをもたらします。

弊社は、オブジェクト指向開発とアジャイル開発の豊富な経験と専門知識、そしてスキーマ駆動開発の専門チームにより、お客様のビジネスに合わせたコンサルティングとともにスキーマ駆動開発を強力に推進し、お客様のビジネス加速化に貢献いたします。

弊社と一緒に、スキーマ駆動開発で未来のシステム開発を始めませんか?ぜひ、お気軽にご相談ください。

「一緒に」「カスタマイズしつつ」お客様自身がアジャイル開発を推進できるDXSIテンプレート
詳細資料ダウンロード

7898_1
DXSIテンプレートの特徴

● サービスの柔軟な変更

● 省力化、属人化の解消

● 高品質

どんな資料なのか内容を確認する

2025年3月19日公開

※この記事に掲載されている内容、および製品仕様、所属情報(会社名・部署名)は公開当時のものです。予告なく変更される場合がありますので、あらかじめご了承ください。