はじめに
今回はコードからアプリのドキュメントを作成できる、「DeepWiki」について書いていきたいと思います。
実際に個人で作ったアプリと生成されたドキュメントを比べてみた感想なども書いていきたいと思います。
DeepWikiとは
DeepWikiとは、Github上に公開されているリポジトリのWikiを作成するツールです。AIエージェントの「Devin」を開発しているCognition社が開発しています。
GithubにあるリポジトリのURL(ドメイン)を「github.com」→「deepwiki.com」に変更すると、Wikiページが生成・閲覧できます。(今のところ無料!)
コードやドキュメントからWikiが生成されていたり、文章や図に対して出典箇所が乗っていたりすることでより正確な内容になっていると思います。
DeepWikiで生成された内容
以下、個人でAI使って開発したEラーニングアプリのGithubリポジトリとDeepWikiの例です。
図やテーブルを使用して見える化されているので、リポジトリの内容について詳しくない人でも処理やアーキテクチャを把握しやすいと思います。
Wikiページは以下のように作成されました。
いくつかのWikiページを選んで、書いたコードや構成が反映されているか見ていきたいと思います。
※ 英語で生成されるので日本語に翻訳しています
- GithubのURL:https://github.com/w2406/flutter_e_learning
- DeepWikiのURL:https://deepwiki.com/w2406/flutter_e_learning
・ 概要
リポジトリの概要について以下の内容が記載されていました。
Readmeの内容のようなWikiページが作成されていました。※ 出典もReadmeが多い
内容も概ね正しく全体を把握するのに有用だと思いました。
- リポジトリにあるアプリの説明
- システムアーキテクチャ
- 使用されている技術・パッケージ
- 学習用に一部シーケンスの抜粋
- アプリの機能
- 使用している外部サービス
など
概要ページ: https://deepwiki.com/w2406/flutter_e_learning/1-overview
・ アプリケーションアーキテクチャ
アーキテクチャについて詳細な以下の内容が記載されていました。
アプリはクリーンアーキテクチャ+DDDを意識して作っており、それをコードとディレクトリ構成から読み取ってWikiページに反映しているみたいでした。
※ Readmeにはアーキテクチャについて記載していない
- 詳細なアーキテクチャの概要(結構わかりやすい図付き)
- 各層ごとの責務
- 依存性注入(DI)について
- コード生成で使用している技術について(freezedやreverpodなど)
- 使用されているアーキテクチャパターンやデザインパターンについて
- リポジトリパターンやクリーンアーキテクチャなど説明されている
より詳細で具体的な内容は階層がひとつ下のページに記載してありました。
例:2.1 Riverpodによる状態管理
アプリケーションアーキテクチャページ:https://deepwiki.com/w2406/flutter_e_learning/2-application-architecture
・ ユーザーインターフェース画面
各画面やナビゲーションフローなどについて以下の内容が記載されていました。
実装している画面について図やフローで確認することができ、アプリの全体把握に有用だと思いました。
- 画面の実装方針・実装パターン
- ナビゲーションフロー
- 各画面の説明
- view, viewModelのつながりや画面の部品(Widget)
画面ごとのより詳細な内容は階層がひとつ下のページに記載してありました。
例:3.1 ホーム画面
・ ドメインモデル
ビジネスロジックや業務知識に関するモデルについて記載されていました。(ドメイン駆動設計におけるエンティティやValue Objectなど)
各ドメインモデルの構成要素やドメインモデル間の関係フロー図など詳細に記載されていて、業務知識がどのようにしてコードで表現されているか把握するのに有用だと感じました。(あんまりコードには書いてないけど、ビジネスロジックなども出してくれると思う)
ドメインモデルページ:https://deepwiki.com/w2406/flutter_e_learning/4-domain-models
・ インフラストラクチャ層
データの永続化(DBなど)や外部システム連携(firebaseや外部APIなど)について記載されていました。
データベースのスキーマ構造やリレーション、実装内容など記載してありました。
データベースのスキーマ構造が図で表示されていて、DBについて理解しやすいと思います。
階層が一つ下のページに更に詳しくCRUDのフローやDBのスキーマについて記載されていました。また使用しているAPIの仕様や実装しているリクエスト構造など確認することができました。
インフラストラクチャ層ページ:https://deepwiki.com/w2406/flutter_e_learning/5-infrastructure-layer
DeepWikiの活用について考える
DeepWikiを見て以下のような活用が開発で効果的だと思いました。
- ドキュメントが少ない開発プロジェクトのWikiとして使用する
- プロジェクト新規加入者へのオンボーディング資料として使用する
- 有識者がお手本用の綺麗なベースコードを作成してWikiの生成を行い、初心者や新入社員の教育用ドキュメントとして活用する
- 要求や要件、基本設計などの設計書のリポジトリからWikiを作成することで仕様に対するWikiとして活用する
- README.mdの出典でもWikiが生成されていたから設計書などのドキュメントもいけそう
- Wiki内で検索(Deep Research)できるので、仕様の把握もすぐにできそう(画像の例参照)
まとめ
今回は、Githubのリポジトリから生成されたDeepWikiについて「実際のコードに対して正確か」、「開発のドキュメントとして有用か」について個人的に考えてみました。
今後もAI関連のツールについて使っていきたいと思います!

