ジェンスパーク(Genspark)開発で不具合だらけ?UML設計図で整合性確認する実践テクニック
📋 目次
はじめに:複雑化したシステムの落とし穴
ジェンスパーク(Genspark)でWebアプリケーションを開発していると、最初はシンプルだったシステムが、機能追加や修正を重ねるうちにどんどん複雑になっていきます。そして気づいたときには、「あれ、仕様書に書いてあることと実装が違う…」という事態に陥っていることがあります。
このブログ「ジェンスパーク(Genspark)開発奮闘記」でも、実は大きな問題に直面していました。データベースに存在するカラムが仕様書に記載されていなかったり、API仕様が曖昧だったり、システム全体の整合性が取れなくなっていたのです。
仕様書と実装のズレが見えない問題
AIに直接比較させても見つからない理由
ジェンスパーク(Genspark)のようなAIツールは非常に強力ですが、複雑なシステムの仕様書と実装コードを同時に比較させようとすると、以下のような問題が発生します:
- コンテキストウィンドウの限界:大量のコードと長い仕様書を同時に処理しきれない
- 情報の複雑さ:どこに注目すべきか優先順位がつけにくい
- 見落としの発生:細かい差異を見逃してしまう
- 確認漏れ:チェックすべき項目を網羅しきれない
実際に起きた問題の例
- データベースに
view_countカラムが存在するのに、仕様書には記載なし - NULL制約の仕様が実装と異なる
- Cloudflare Pages Functions APIの仕様が不明確
- Reactコンポーネント構造が文書化されていない
UML設計図を使った整合性確認とは
そんなとき有効なのが、UML設計図を使った整合性確認です。UML(Unified Modeling Language)は、ソフトウェアシステムを図で表現できる標準的な記法です。
基本的なアプローチ
ポイントは、仕様書からUMLを作るのではなく、実装からUMLを作らせる点です。この方がAIには整合性の確認がしやすいようです。
💡 なぜ「実装→UML」なのか?
実装コードは動いている事実そのものです。コードからUMLに変換する際は、構造をそのまま図示するだけなので間違いが少なくなります。一方、仕様書から作ると、AIの解釈が入り込む余地があり、不正確になる可能性があります。
整合性確認の流れ
- 実装コードからUML設計図を作成(AI支援)
- UML設計図と仕様書を比較(AI支援)
- 差異を抽出して問題点を明確化
- 修正すべき箇所を特定して対応
なぜUMLが効果的なのか
1. 視覚的に理解しやすい
UMLは図で表現されるため、システムの構造や関係性が一目でわかります。長い文章の仕様書よりも、全体像を把握しやすくなります。
2. 標準化された表現
UMLは国際的に標準化された記法なので、表現の曖昧さが減ります。データベースならER図、処理の流れならシーケンス図というように、用途に応じて最適な図を使い分けられます。
3. 中間表現として機能
実装コードは詳細すぎて全体像が見えにくく、仕様書は抽象的すぎて具体性に欠けることがあります。UMLはその中間に位置し、適度な抽象度で情報を整理できます。
UMLの種類と用途
| UML図の種類 | 用途 | 確認できる内容 |
|---|---|---|
| ER図 | データベース構造 | テーブル、カラム、リレーション、制約 |
| クラス図 | コード構造 | クラス、メソッド、依存関係 |
| シーケンス図 | 処理の流れ | API呼び出し順序、タイミング |
| アーキテクチャ図 | システム全体構成 | コンポーネント間の関係、データフロー |
4. 人間も確認できる
UMLはソースコードを人間が理解するための設計図なので、AIだけでなく、開発者自身が目視でチェックすることも可能です。これにより、AIが見落とした問題も発見しやすくなります。
実践事例:7つの不具合を発見した話
このブログシステムでは、2025年12月15日に実装からUML設計図を作成し、仕様書との差異を徹底的に洗い出しました。その結果、7つの重大な不具合を発見・修正することができました。
発見された問題(優先度別)
🔴 高優先度(必須修正)
データベースには閲覧数を記録する
view_countカラムが存在するのに、仕様書には一切記載されていませんでした。これでは新規開発者がシステムを理解できません。
修正内容
修正前:
修正後:
実装では6つのカラムに
NOT NULL制約が設定されているのに、仕様書では制約の記載が漏れていました。これはデータの整合性に関わる重要な情報です。
実装には記事取得APIやRSSフィードAPIが存在するのに、仕様書にはエンドポイント、パラメータ、レスポンス形式などの情報が一切ありませんでした。
🟡 中優先度(推奨修正)
フロントエンドの構成(ページ、コンポーネント、使用技術)が文書化されていませんでした。これを明記することで、UI修正時の参照が容易になります。
「記事ID範囲: 103〜111」とだけ記載されており、初期データと追加データの区別がつきませんでした。「104〜112(初期: 104-108、追加: 109-112)」と詳細化しました。
🟢 低優先度(任意)
- 6. GitHub Actionsのpushトリガー記載漏れ
- 7. アーキテクチャ図のデータベース注釈不足
✨ 修正の成果
これらの問題を全て修正した結果、以下の効果が得られました:
- ✅ データベーススキーマが実装と完全一致
- ✅ APIの仕様が明確(エンドポイント、パラメータ、レスポンス)
- ✅ フロントエンド構成が明確(ページ、コンポーネント、技術スタック)
- ✅ 新規開発者がシステムを正確に理解可能
- ✅ メンテナンス性が大幅に向上
具体的な実践手順
では、実際にUML設計図を使った整合性確認をどのように進めればよいのか、ステップバイステップで解説します。
ステップ1:実装からUML設計図を作成する
まず、ジェンスパーク(Genspark)に実装コードを見せて、UML設計図を作成してもらいます。このとき、PlantUML形式で出力してもらうと、テキストベースで管理しやすく、バージョン管理も容易です。
ジェンスパーク(Genspark)への指示例
「このデータベーススキーマファイルを見て、ER図をPlantUML形式で作成してください。すべてのテーブル、カラム、制約、インデックスを含めてください。」
「このReactプロジェクトのソースコードを見て、コンポーネント構造をクラス図として作成してください。」
ステップ2:作成したUMLを確認・修正する
AIが作成したUML設計図は、そのまま使えることもあれば、細かい調整が必要な場合もあります。PlantUML Online Serverなどで図を表示して、内容を確認しましょう。
💡 確認ポイント
- すべての重要な要素が含まれているか
- 関係性が正確に表現されているか
- 見やすく整理されているか
ステップ3:UMLと仕様書を比較させる
次に、完成したUML設計図と仕様書をジェンスパーク(Genspark)に見せて、差異を抽出してもらいます。
ジェンスパーク(Genspark)への指示例
「このER図と仕様書のデータベース仕様を比較して、以下の観点で差異をリストアップしてください:
- 仕様書に記載がないが実装に存在する要素
- 仕様書と実装で定義が異なる要素
- 制約やデフォルト値の違い
差異は優先度(高・中・低)をつけて整理してください。」
ステップ4:差異を修正する
抽出された差異を確認し、優先度の高いものから修正していきます。通常は、仕様書を実装に合わせて修正することが多くなります(実装が正しい前提)。
⚠️ 注意:実装が間違っている場合
もし実装側に明らかなバグがある場合は、実装を修正する必要があります。UMLと仕様書の比較により、「そもそも実装が間違っていた」というケースも発見できます。
ステップ5:UML設計図も保存・管理する
修正が完了したら、作成したUML設計図もプロジェクトの一部として保存・管理しましょう。今後のメンテナンスや新機能追加の際に、非常に役立ちます。
推奨される管理方法
- GitHubリポジトリの
docs/uml/フォルダに保存 - PlantUML形式(.puml)でテキスト管理
- README.mdにUMLの説明と表示方法を記載
- システム変更時はUMLも同時に更新
成功のポイント
1. 最初は小さく始める
いきなりシステム全体のUMLを作ろうとすると大変です。まずは問題が起きている部分(データベース、特定のAPIなど)から始めましょう。
2. 実装→UMLの順序を守る
繰り返しになりますが、実装からUMLを作ることが重要です。仕様書からUMLを作ると、仕様書の曖昧さや誤りがそのまま反映されてしまいます。
3. 複数の視点で確認する
1種類のUML図だけでなく、複数の視点から確認すると効果的です:
- ER図でデータ構造を確認
- シーケンス図で処理フローを確認
- クラス図でコード構造を確認
- アーキテクチャ図でシステム全体を確認
4. 人間の目でも確認する
AIが作成したUML設計図は、最終的に人間の目でも確認しましょう。図を見て「何か違和感がある」と感じたら、それが重要な発見につながることもあります。
5. 定期的にメンテナンスする
システムは常に変化します。大きな機能追加や修正を行ったら、UML設計図も更新しましょう。それを仕様書と比較することで、常に整合性を保てます。
まとめ
ジェンスパーク(Genspark)開発でシステムが複雑化してきたら、UML設計図を使った整合性確認が非常に効果的です。
✅ この記事の重要ポイント
- 複雑なシステムでは、仕様書と実装のズレが見えにくくなる
- AIに直接比較させるだけでは、重要な差異を見落とす可能性がある
- 実装からUMLを作成し、それを仕様書と比較するのが効果的
- UMLは視覚的で標準化されており、適度な抽象度で情報を整理できる
- 実践事例では7つの重大な不具合を発見・修正できた
- 人間も確認できる図なので、AIが見落とした問題も発見しやすい
関連記事
- ジェンスパーク(Genspark)の嘘を見抜け!AI生成コードの3つの落とし穴と対策
- ジェンスパーク(Genspark)で始めるAIコーディング入門:初心者が知るべき5つの基本
- ジェンスパーク(Genspark)生成コードのレビュー完全マニュアル:品質を担保する実践手法
参考リンク
- PlantUML 公式サイト - UML図を簡単に作成できるツール
- Unified Modeling Language (UML) 公式サイト - UMLの標準仕様
- PlantUML 日本語ガイド - PlantUMLの日本語ドキュメント
- VS Code PlantUML拡張機能 - VS CodeでUMLをプレビュー
この記事が参考になったら、ぜひSNSでシェアしてください!
ジェンスパーク(Genspark)開発の知見を共有し、より良い開発体験を広めていきましょう。