スタッフブログ

STAFF BLOG

アプリ開発日誌

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のもとで利用しています。

BACK

お問合せ

イーディーエーに興味をお持ちいただいて
ありがとうございます!
スマホアプリに関するご相談、
お見積りや弊社へのご質問など、
お気軽にお問い合わせください。
担当者より折り返しご連絡させていただきます。

    お名前必須
    会社名
    メールアドレス必須
    電話番号必須
    お問合わせ種別必須
    お問合わせ内容必須

    アンケートにご協力ください。
    弊社サイトへはどのようにしてアクセスされましたか?

    個人情報のお取扱いに関する同意事項

    1.事業者の氏名又は名称

    株式会社イーディーエー

    2.個人情報保護管理者の氏名又は職名、所属及び連絡先

    個人情報保護管理者 小宮 保人
    Mail:[email protected]

    3.取得した個人情報の利用目的

    当フォームで取得した個人情報は、お問い合わせに関する回答のために利用し、目的外利用はいたしません。

    4.弊社が取得した個人情報の第三者への委託、提供について

    弊社は、ご本人に関する情報をご本人の同意なしに第三者に委託または提供することはありません。

    5.個人情報保護のための安全管理

    弊社は、ご本人の個人情報を保護するための規程類を定め、従業者全員に周知・徹底と啓発・教育を図るとともに、その遵守状況の監査を定期的に実施いたします。
    また、ご本人の個人情報を保護するために必要な安全管理措置の維持・向上に努めてまいります。

    6.個人情報の開示・訂正・利用停止等の手続

    ご本人が、弊社が保有するご自身の個人情報の、利用目的の通知、開示、内容の訂正、追加又は削除、利用の停止、消去及び第三者への提供の停止を求める場合には、下記に連絡を頂くことで、対応致します。

    株式会社イーディーエー 個人情報お問合せ窓口
    〒106-0032 東京都港区六本木7丁目14番23 ラウンドクロス六本木4F
    TEL:03-5422-7524 FAX:03-5422-7534
    Mail:[email protected]

    7.ご提供いただく情報の任意性

    個人情報のご提供は任意ですが、同意を頂けない場合には、第3項にあります利用目的が達成できない事をご了承いただくこととなります。

    8.弊社Webサイトの運営について

    弊社サイトでは、ご本人が弊社Webサイトを再度訪問されたときなどに、より便利に閲覧して頂けるよう「クッキー(Cookie)」という技術を使用することがあります。これは、ご本人のコンピュータが弊社Webサイトのどのページに訪れたかを記録しますが、ご本人が弊社Webサイトにおいてご自身の個人情報を入力されない限りご本人ご自身を特定、識別することはできません。
    クッキーの使用を希望されない場合は、ご本人のブラウザの設定を変更することにより、クッキーの使用を拒否することができます。その場合、一部または全部のサービスがご利用できなくなることがあります。