世界を動かす技術を、日本語で。

DeepWiki: どんなコードベースも理解する

概要

  • AIコーディングシリーズの一環として、 DeepWiki の活用法を紹介
  • DeepWikiは GitHubリポジトリ を即座にWiki化し、効率的なコード理解を支援
  • 開発環境構築 やリポジトリ評価、AIエージェントへの文脈提供に最適
  • 引用付き回答 やプライベートリポジトリ対応など多機能
  • MCPサーバー連携 でAI IDEとの統合も容易

DeepWikiで効率的なAIコーディング支援

  • DeepWiki はCognition社(Devin開発チーム)が提供する、 GitHubリポジトリを即座にナビゲート可能なWiki に変換するツール
  • github.comdeepwiki.com に置き換えるだけで、任意のリポジトリのWikiページを自動生成
    • 例:https://github.com/Dicklesworthstone/claude_code_agent_farm → https://deepwiki.com/Dicklesworthstone/claude_code_agent_farm
  • コードベースの理解、開発環境の構築、AIエージェントへの文脈生成 など、様々な用途で活躍
  • スポンサーや広告なし、実際のワークフローでの利用体験に基づく紹介

DeepWikiの主な機能と使い方

  • 公開リポジトリ はそのまま利用可能、 プライベートリポジトリ はDevinアカウント(無料)でサインインが必要
  • Fastモード (即時回答)と Deep Researchモード (全ファイル横断の高精度回答)を選択可能
  • 全ての回答にファイル・行番号単位の引用付き、ソース確認が容易で 誤情報の回避 が可能
  • GitHub URLをdeepwiki.comに貼り付ける だけで利用開始
  • 公式DeepWiki MCPサーバー をAI IDE(Claude, Windsurf, Cursor等)に統合可能
    • 認証不要、設定のみで即利用、ワークフロー内で直接質問・参照が可能

開発現場での活用シーン

  • 新規ライブラリ導入時の評価
    • メンテ状況、セキュリティ、外部送信、ライセンス等を即時確認
    • 設定ファイルやネットワーク処理、ライセンス条項への直接リンク
  • ローカル実行方法の調査
    • 環境構築手順、必要サービス、依存関係を READMEやDockerfile、スクリプトへの引用付きで提示
  • 実装例やアルゴリズムの抽出
    • 認証フローや状態管理など、 特定機構のMarkdownチートシートを自動生成
    • Claude CodeやCursorにそのまま文脈として貼り付け、 実装指示が可能
  • 複数エージェントのターミナル管理
    • DeepWikiが スクリプトや設定ファイルのマッピング を行い、短時間で独自環境構築が可能
  • ピンポイントな質問対応
    • 「キュー処理のリトライは?」「ユーザー登録時のデータフローは?」など、 関数レベルの説明とリンク付き回答

チーム開発・レビュー・オンボーディングの効率化

  • 新規参加やOSS貢献時の「Good First Issues」提案
    • TODOや失敗テスト、ドキュメント不足箇所を自動抽出、 着手しやすい修正点を提示
  • サンプル集リポジトリの活用
    • Anthropic CookbookやGemini Cookbook等、 必要なサンプルやコードを検索・生成
  • コードベースの構造・アーキテクチャ把握
    • Sidekick等のツールと連携し、 自動でcursorrules.mdやclaude.mdなどの文脈ファイル生成
    • オンボーディングやテスト生成、AIペアプログラミング支援に最適
  • Pull Requestレビューの効率化
    • PR URLをdeepwiki.comに変換するだけで、 差分の構造化サマリを即取得
      • 例:https://github.com/saharmor/simulatedev/pull/7 → https://deepwiki.com/saharmor/simulatedev/pull/7
    • 変更内容とコード全体との関係性を即把握、レビュー効率向上

今後期待する機能とまとめ

  • 会話型サイドキックモード
    • IDE横でDeepWikiを常駐させ、「この関数の呼び出し元は?」「ワーカーのローカル実行方法は?」など 逐次質問が可能
  • タスクベースのオンボーディング
    • リポジトリとゴールを指定すると、 必要なファイル・関数・セットアップ手順のガイドを自動生成
  • deepwiki.comで誰でも無料体験可能

DeepWiki は、現代の爆発的な開発速度とコード量増加に対応するための 最強のリファレンスツールオンボーディング、レビュー、AIコーディング支援 において、 時間短縮と理解度向上 を実現。

Hackerたちの意見

https://deepwiki.com/kieler/elkjs/5-usage-guide

自動コードアシスタンスの一例として、例えば「カーソルの下にあるアイテムの型はこれ、ドキュメントはこれ」よりも役立つと思う。... LLMは忍耐強いと思う(バカな質問をしても問題ないからね)。DeepWikiはすでに大きな価値を加えてる。オープンソースプロジェクトを維持していて、ボランティアにDeepWikiを使って複雑なコードベースを探るように指示することが多い。でも…構造体やパッケージ、関数がもうやってないことや、ルールに従ってないことのために、DeepWikiがかなり説得力を持って幻覚を見せてるのを何度も見たことがある。これはメンテナのリファクタリングのやり方に対する批判というよりも、そういうことだね。「コードの可読性」とテスト(エージェントの「ジム」の一部)は、外部からの生産的な貢献を常に受けたいオープンソースプロジェクトには重要だと思う。

https://eclipse.dev/elk/documentation/tooldevelopers/graphda...

「使ってる」って言うのは強い表現だね… https://github.com/kieler/elkjs からのリンクは見当たらないし。イライラすることに、誰でもGitHubのリポジトリに対してDeepWikiをリクエストできるんだよね。それが存在するからって、プロジェクトに承認されたりレビューされたりしてるわけじゃない。勝手に押しかけてきた感じ。単なるSEOスパムだよ。

うん、これはAIの合理的な使い方って感じだね。自分のリポジトリの一つからDeepWikiを生成してみたけど、結構情報が豊富だった。一部の些細な詳細については深く掘り下げすぎてるし、もっと重要なことはあまり触れられてないけど、全体的にはパッケージが何をしているのか、なぜそのように多くのことをしているのかの詳細な要約ができてるみたい。

だから、知ってるオープンソースのリポジトリをいくつか見てみることにした。ウィキがあるのはLLVMだけみたいだね(https://deepwiki.com/llvm/llvm-project)。概要ページについての感想:うーん、トップレベルのディレクトリの変なサブセットだね。高レベルのコンパイルパイプラインの図は…間違ってる? Clang-ASTは確実にclangフロントエンドの一部なのに、最適化パイプラインに行くと、ベクトル化や命令選択の流れを完全に無視してる(GlobalISelも完全に省略してるし)。強調されているバックエンドの選択も変だし、結局LLVMの最も重要なパスのいくつか(InstCombineみたいな)を完全に省略してる。別のページに掘り下げてみると…LLVM IRについてすら言及されてないし、パスマネージャーについても、パスの期待される正規化についても何もない。TargetLoweringの役割については妙にこだわってるけど、実際に役立つ詳細はほとんど省かれてる。TableGenの役割がいくつかのコンポーネントで完全に欠けてるし、FWIW、TableGenとそのエラーメッセージを理解するのがLLVMバックエンドを組み立てる上で最も難しい部分だから、そこに焦点を当ててほしいところだね。推測するに、非常に大きなファイルにこだわりすぎてるんじゃないかな。単一ページで焦点を当てたものは、たまたま30klocのファイルとかだと思う。でも、それだと複数のファイルに分かれてるような巨大なものは見逃しちゃうんだよね。Clangのコード生成は約100kloc、InstCombineは約40klocだけど、4-5klocのファイルに分かれてるから、重要視されずに無視されてる。

それは非常に興味深い観察だね。(どう働くかは読んでないけど…)ファイルサイズやコミット数、他の数値メタデータを取り除くことで出力に大きな影響があるのかな?それとも、すべてのファイルをパス+ファイル名のマーカー付きで一つの大きな入力にまとめた方がいいのかな?

うん、俺も同じ経験があるよ。よく知ってるプロジェクトの図は、エンジニアリングの品質じゃないんだよね。

これって短い技術ブログのはずじゃないの?なんで営業マンみたいで、セールスピッチみたいに感じるんだろう?

「私たちはこれまで以上に多くのコードを生成しています。ClaudeのようなLLMがAnthropicのコードのほとんどを書いているので、課題はもはやコードを生成することではなく、それを理解することです。」 最初の文からして明らかにAI生成だし、読んでみると完全にAIが書いたもので、ちょっと気が散る。著者はAIが自分よりも書くのが上手だと感じているかもしれないけど、自分の声を使った方がいいと思う。個人的には、誰かがAIにテキストを生成するように促したポイントを考えるようにしてる(著者の実際の考え)から、AIが生成したゴミをスキップしやすくなるんだよね。「…環境設定、必要なサービス、README、Dockerfile、スクリプトへの引用を含む依存関係グラフを得られるので、すぐに始められます」みたいな。

君に同意だけど、君が引用した2つの文(記事の最初の2つ)は英語に間違いがあって、AIが書いたものじゃないと思うよ。

DeepWikiは、Playwrightから純粋なCDP @ browser-useへの大規模なコードベースのリファクタリングにおいて重要な役割を果たした。これを作ったチームには大きな感謝を。これは、数少ない純粋にプラスのAIコーディングツールの一つとして、私は定期的に言及している。自動概要や図は素晴らしいけど、真に光るのは下部の「深いリサーチ」フォローアップ質問システムだね。Puppeteer/Playwright/Chromiumなどの複雑なコードベースについて質問するには、OpenAIの深いリサーチよりもずっと良いよ。

明確な削除リクエストの送信方法がないのは残念だな。LibreOfficeのためにデタラメなドキュメントが生成されるなんて頼んでないのに、こういうのがあって新しいユーザーが見つけちゃうんだよね。ここにあるよ: https://deepwiki.com/LibreOffice/core/2-build-system (ネタバレ: LibreOfficeはビルドシステムとしてBuckを使ったことはない)

ちょっと気になったんだけど、LibreOfficeには.buckversionやBUCK、.buckconfigとかがあるのはどうして?このコミット[1]は、一時的にBuckを使ってビルドしてたことを示してるみたいだけど、10年前のものなんだよね。[1]: https://github.com/LibreOffice/core/commit/1fd41f43eb73c373c...

深層ウィキを使った経験から言うと、生成されるものは騙しのゴミじゃないよ。

Deepwikiを批判するのはためらうけど、やってることはある程度印象的で時間を節約できるんだよね(特にシステム図は)。でも、俺のライブラリ(そんなに人気はないけど、年間数百万ダウンロードはある)には間違ったドキュメントが生成されてて、これはユーザーにとって良くないよ。

もしこの第三者に自分のコードを信頼できなかったら、オープンソースやローカルでこれを実行する方法はあるの?

俺のやり方はこんな感じだよ:

  1. Repopackを使って、リポジトリ全体を1つのテキストファイルにアーカイブする。リンクはこれね: https://github.com/yamadashy/repomix
  2. トークンを減らすために、LLMLingua-2でファイルを圧縮する。リンクはこれ: https://github.com/microsoft/LLMLingua (トークンが少ないほど、LLMに与えられるコンテキストが増えて、LLMがリポジトリをよりよく理解できる)
  3. 圧縮したアーカイブのテキスト内容をそのままChatGPTの入力フィールドやローカルのLLMにコピー&ペーストする。
  4. LLMにドキュメント生成を頼む。「これはリポジトリのソースコードです。このコンテキストをもとに、目次を生成して。」って感じで。そうすると目次ができるよ。良さそうなら、最初の章の生成を頼んでみて。そうやって全体のドキュメントが完成するまで続けられる。もしTypescript/Javascriptのコードベースをドキュメント化しようとしてるなら、ステップ2でesbuildみたいなバンドラーを使うとトークン削減に役立つよ。ステップ2のLLMLingua-2に興味があれば、インストールなしで動かせる俺のTypescriptポートをチェックしてみて: https://atjsh.github.io/llmlingua-2-js/

最近、俺がメンテしてる小さなオープンソースプロジェクト(PureLB)に対してAIが生成したバグレポートを受け取ったんだけど、そのスラップはDeepWikiによって生成されたものだった。すごく間違ってたけど、「DeepWiki」が何か知らなかったから、約1時間無駄にしちゃったよ。DeepWikiが俺のような小さなプロジェクトでもゴミみたいなバグレポートを引き起こしてるなら、全体でどれだけメンテナーの時間を無駄にしてるか想像もつかないね。