GEAR.indigoで1人日で経費精算アプリを開発する方法

本記事では GEAR.indigoを活用して、1人日で経費精算アプリを開発する具体的な方法を詳しく解説します。
また、開発効率を向上させるAIコードエディタのCursorも併せてご紹介します。

# 成果物
領収書を撮影すると
![経費精算Post_9_1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/240240/ba13af22-6c0f-6cc7-5ec6-f5e3f637d362.png)

自動的に内容を読み取ります。
![経費精算Post_9_2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/240240/21fdfd56-e8a9-0c2f-c1f8-efa6529d7893.png)

ログイン機能も実装
![経費精算Post_1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/240240/587a5c32-c348-70c2-e275-9403a20cf08f.png)

検索やCSV出力も完備しています。
![経費精算Post_2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/240240/156ea41b-d154-d5bb-7012-1d532ec2f5e8.png)

動画はこちら
https://x.com/masa_oka108/status/1863714008165195920

# GEAR.indigoとは

GEAR.indigoは、生成AIを活用してプロンプトから要件定義書、システム設計書、そしてコードまでを自動生成する革新的なツールです。
これにより、従来は時間がかかっていた初期段階のドキュメント作成や基本的なコードの実装を一気に進めることができます。

https://gearindigo.app/
![経費アプリ_1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/240240/d5e73909-9189-e313-5f8a-2b6da7fe104a.png)


# Cursorとは

Cursorは、AIを搭載した最新のコードエディタで、開発者の生産性を飛躍的に向上させます。
・AIコード補完：次に書くべきコードや最適な構文をリアルタイムで提案。
・エラーチェック：シンタックスエラーや論理的な不整合を即座に検出。
・リファクタリング支援：コードの最適化や整理をサポート。
・ドキュメント参照：使用中のライブラリやフレームワークのドキュメントを即時に確認可能。

https://www.cursor.com/
![経費アプリ_2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/240240/1bc32b79-3c14-8b88-d025-77a48fc55f1d.png)



# 経費精算アプリの開発手順

### 1. 要件定義の作成

まず、ChatGPTを活用してGEAR.indigoに読み込ませる要件定義を作成します。

プロンプト例
```
以下のような「領収書読み取りアプリ」を作成したい。生成AIツールで開発したいので、解釈しやすい要件定義を作成して。

- 出力フォーマットの選択
  - 初期段階ではFreeeの書式を使用
    - 必要項目: 収支区分、管理番号、発生日、決済期日、取引先、取引先コード、勘定科目、税区分、金額、税計算区分、税額、備考、品目、部門、メモタグ、決済日、決済口座、決済金額、セグメント1～3
- 領収書やレシートの画像を撮影して情報を読み取る
- 画像から情報を読み取り、指定フォーマットでCSV出力
  - ユーザーが設定する必要があるのは「発生日」「取引先」「決済金額」のみ
```

生成された要件定義(※一部、手動で修正済み)
```
レシート・領収書 経費精算アプリ 要件定義

機能概要

	•	ユーザーが領収書やレシートの画像を撮影すると、指定されたフォーマットでCSVファイルを出力するアプリケーション。
	•	当面フォーマットはFreeeのフォーマット1つとする

Freee出力フォーマットは以下の通り

収支区分	
管理番号	
発生日	
決済期日	
取引先	
取引先コード	
勘定科目	
税区分	
金額	
税計算区分	
税額	
備考	
品目	
部門	
メモタグ（複数指定可、カンマ区切り）	
決済日	
決済口座	
決済金額	
セグメント1	
セグメント2	
セグメント3



ユーザーインターフェース

	•	領収書撮影機能
	・フォーマット選択
	•	ユーザーが領収書やレシートの画像をアップロードできる。

画像解析とデータ抽出

	•	OCR処理
	•	アップロードされた画像からテキスト情報を抽出する。
	•	データマッピング
	•	抽出したデータをFreeeの書式フィールドに対応付ける。対応付けるのは以下の項目のみとする。
		•	発生日
　　•	取引先
　　•	決済金額
　　•	税額
　•	その他のフィールドはデフォルト値または空欄とする。


CSV出力

	•	ファイル生成
	•	指定されたフォーマットに従い、CSVファイルを生成する。
	•	ダウンロード機能
	•	ユーザーが生成されたCSVファイルをダウンロードできる。

技術要件

	•	プログラミング言語
	•	ライブラリ・ツール
	•	OCR処理には適切なライブラリ（例：Tesseract OCR）を使用する。
	•	データ処理
	•	データの正確性を確保するためのエラーチェックとバリデーションを実装する。

非機能要件

	•	セキュリティ
	•	ユーザーのアップロードした画像やデータは安全に取り扱い、不要になったら適切に削除する。
	•	ユーザビリティ
	•	直感的で使いやすいインターフェースを提供する。
	•	拡張性
	•	将来的に他のフォーマットにも対応できるように設計する。

開発範囲と制限

	•	出力フォーマットはFreeeの書式のみをサポート。
```

# 2. GEAR.indigoによる自動生成

### ステップ1：要件定義書を作成

まず、プロジェクトを作成します。「Product Creation」を選択。
![経費アプリ_3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/240240/d926f4f5-7fcb-a2e9-2b91-a2015f1eb6d5.png)

要件定義に生成したプロンプトをコピペします。
![経費アプリ_4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/240240/a950a51b-4aa7-7089-7990-907bfe008599.png)

これだけで要件定義書を作成してくれます。

プロジェクト概要
![経費アプリ_6.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/240240/ba217b84-7ff9-e787-9e3c-ed575243e7a0.png)

業務要件一覧
![経費アプリ_7.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/240240/41e3c114-436a-b36f-44ea-145c90db4e5e.png)

システム化業務フロー
![経費アプリ_8.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/240240/e7b38a87-622d-6860-4976-f1374cf2f0cd.png)

想定と違う部分があれば修正して次ステップへ進みます。

### ステップ2：システム設計書
特に何も指定せずとも前段で作った要件定義書を参照してくれるのでボタンをクリックするだけでも進めることが可能です。
生成→手作業で修正を繰り返します。

基本設計書
![経費アプリ_9.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/240240/d7a49fd4-23b0-6930-8d21-96de98a20ae7.png)

詳細設計書
![経費アプリ_10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/240240/a28fc5f7-8201-556e-0855-88ef9fefcc2c.png)

ER図や画面UIまで（！）生成してくれます。
![経費アプリ_12.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/240240/9a1bca0f-5e50-9d5e-1ee5-d05ee7ac5ad0.png)

![経費アプリ_13.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/240240/bb48ee89-e70b-26ae-f64b-b6389f02479c.png)


### ステップ3：コード生成
コード生成
![経費アプリ_11.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/240240/248f77eb-ee08-a7d1-6a81-d0618ea21e90.png)

GitHubと連携するとレポジトリにPushしてくれます。
![経費アプリ_14.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/240240/7efbe8e5-ed2f-6d06-1d97-8e2c731595b6.png)

# 3. コードの検証と修正
ローカルでCloneしてCursorを使って検証・修正します。

![経費アプリ_15.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/240240/5daddfaf-74ac-bb9f-635c-ea1ee2e26634.png)

READMEの通りにやっても動かなかったのでCursorのComposerのagentに色々聞いて無事アプリが起動。
その後は動かない部分や想定と違う部分をAgentに修正してもらいました。
一番大きかったのは画像の読み取りを当初OCRでやろうとしていたのですが精度が悪く使い物にならなかったのでLLMを使う仕様に変更したことです。

ロゴの作成はCanvaのロゴ生成AIを使いました。
subpabaseの繋ぎ込みやその他の細々した修正を積み重ね完成しました。


# まとめ

GEAR.indigoとCursorを組み合わせることで、1人日という短期間でMVPを開発することができてしまい感動しました。
セキュリティ面やコードのクオリティなどの面はもう少し精査する必要があるとは思いますがAI開発ツールによるこのスピード感は今後のシステム開発の大きな武器になると感じました。

# おまけ
株式会社MAKE A CHANGEはAIシステム・アプリ開発とソリューションを提供する専門企業です。

お気軽にご相談ください。

また、生成AIに関わる仕事がしたい仲間（AIエンジニア、PM、UIUXデザイナーなど）も募集中です。
https://makeachange.co.jp/