アプリ開発日誌
2025.08.04
Excelで作られたAPI設計書からコードを自動生成する

はじめに
モバイルアプリやWebアプリの開発では、サーバーサイドから提供されたWeb APIの仕様書をもとにクライアントサイドを実装するという進め方が一般的です。
しかし、これを手作業でおこなうとどうしても時間がかかりますし、ミスも発生します。ドキュメントに書かれたAPI仕様が正確であるならば、ツールを用いてドキュメントを直接ソースコードに変換するのが最良のやり方でしょう。
そのようなツールの代表例がOpenAPI Generatorです。これはOpenAPI Specificationという特別なYAML形式で書かれた仕様書から、さまざまな言語のソースコードを自動生成するツールで、サーバーサイド、クライアントサイドを問わず、広く用いられています。
これは非常に便利なツールなのですが、前提としてOpenAPI形式で書かれた仕様書が必要となります。しかし、サーバーサイドから提供された仕様書がそのような形式になっているとは限りません。多くの現場では、Excelを使ったドキュメントが今でも使われています。
この記事では、Excelで作られたAPI設計書を生成AIによって変換し、モバイルアプリ用のコードを自動生成することを目的とし、どこまで実現できるか試していきたいと思います。
1. 生成AIを用いて、Excelで作られたAPI設計書をOpenAPI形式の仕様書に変換する
今回は実験のため、架空のAPI設計書を用意しました。

このドキュメントはいわゆる「Excel方眼紙」のスタイルで作られています。縦横に細かいセルが並んでおり、セル結合を使って表のような外見にしているタイプです。
このような設計書は書式の統一などもされていないケースが多く、従来のプログラミングを使った自動化の手法では、活用するのが非常に困難でした。
(実際、このサンプルもよく見ると項目名をミスっていたりします……)
まず最初に、このファイルを生成AIにも読めるよう、CSVファイルに変換します。ここでは複雑な作業は必要なく、単純にファイルの保存形式を変更するだけです。

このようなCSVファイルになりました。もとがExcel方眼紙なので、データが綺麗に並んでおらず、ぐちゃぐちゃの状態です。これを生成AIに読み込ませて、どうなるか見てみましょう。
生成AIを使ったエージェントとして、今回はCursorを利用します。上記のCSVファイルを渡したうえで、以下のような指示を与えました。
API設計書をOpenAPIで作成する。
CSVファイルの中身を見て、YAML形式の仕様書を作成せよ。
ただし、このCSVファイルのもとになった設計書は、いわゆる「Excel方眼紙」スタイルだったことに注意すること。
その結果、出力されたopenapi.yaml
ファイルの中身がこちらです。

もとのExcelファイルで記されたAPIの仕様が正しく反映されており、構文的にも誤りはありません。OpenAPIに対応したビューワー(ここではVS Code用のプラグインを使用)でも問題なく読み込め、内容を確認することができました。

YAMLファイルをよく見ると、ライセンスやステージング環境などが勝手に設定されていますが、これらはプロンプトを改良するなり、手作業で修正するなりして、簡単に対処できる範囲です。むしろ、元データにあった過剰なカンマなど、不要なデータが適切に取り除かれているところに感心しました。
2. OpenAPI Generatorを使ってコードを自動生成する
無事にOpenAPI形式の仕様書が用意できたので、いよいよOpenAPI Generatorを使ってクライアントサイドのコードを自動生成してみます。
今回はFlutter製のモバイルアプリに組み込むことを想定し、Dartで書かれたコードを生成してみましょう。OpenAPI Generatorはさまざまな形で配布されていますが、公式で配布されているDockerイメージを使うのが手軽でおすすめです。
Dockerの環境構築については、この記事では触れません。準備ができたら、以下の内容でdocker-compose.yaml
を作成し、openapi.yaml
と同じディレクトリに配置します。
version: '3.8'
services:
openapi-generator:
image: openapitools/openapi-generator-cli:latest
volumes:
- ./openapi.yaml:/openapi.yaml:ro
- ./generated:/generated
command: >
generate
-i /openapi.yaml
-g dart
-o /generated
その後、ターミナル等で以下のコマンドを実行します。
docker compose up
うまくいけば、同じ階層にgenerated
という名前のディレクトリが作成されているはずです。中身はDartのプロジェクトになっており、API仕様書に書かれた内容をもとにして、Web API通信をおこなうためのクライアントコードが生成されています。各項目名や説明文、null許容かどうかという部分まで、最初のAPI設計書を完全に反映した仕様になっています。


というわけで、見事Excelで作られた設計書をもとにコードを自動生成することができました。
もし手作業でコードを書いたとすれば結構な時間がかかっていたはずです。しかし今回の作業は、ファイルをCSV形式で保存してから実際のコードが生成されるまで、ほんの数分で完了しています。
おわりに
これまで、理想的ではあるものの現実には難易度の高かった「ドキュメントからコードを自動生成する」ワークフローですが、中間に生成AIを取り入れることで、意外と簡単に実現できてしまいました。
ポイントは、Excel方眼紙に代表される「自由なフォーマットで書かれたドキュメント」を、OpenAPI形式のような「厳密にフォーマットが指定されたドキュメント」に変換したことです。これにより、生成AIを使わないツールでも解析や加工がしやすくなり、さまざま応用につなげることができます。
ただし、今回は実験のために作った簡単な仕様書をもとにしているため、実際の開発現場で取り入れる場合には、もう少し工夫や調整が必要かもしれません。複数のシートに分かれていたり、体裁が崩れていたり、あいまいな記述が残っていた場合に、生成AIが正しく解釈できるかどうかは未知数です。
いずれにせよ、今回のように、古いタイプのドキュメントを使いやすい形にブラッシュアップして変換するというタスクは、生成AIの活用パターンの代表例として注目していきたいと思います。
※本記事のサムネイルに引用したOpenAPIのロゴ画像は、Apache License 2.0のもとで利用しています。