先日、Devinの提供会社 Cognition AI, Inc から DeepWiki が公開されました。
Project DeepWiki
— Cognition (@cognition_labs) April 25, 2025
Up-to-date documentation you can talk to, for every repo in the world.
Think Deep Research for GitHub – powered by Devin.
It’s free for open-source, no sign-up!
Visit deepwiki com or just swap github → deepwiki on any repo URL: pic.twitter.com/5bHbvq98Ud
自分がメンテナンスしているOSSで設定すると嬉しいものを考えたところ、 JetBrains IDE プラグイン(IntelliJ Platform Plugin)の Railroads が良さそうでした。そこで、Railroads の GitHub リポジトリに設定してみたことから、内容をメモとして残します。
https://github.com/thinkAmi/railroads
目次
設定について
リポジトリのドメインを deepwiki.com へと変更してアクセスしたところ、まだ設定されていない状態でした。
そこで、メールアドレスを入力して Index を依頼しました。DeepWikiのリリース当時はキューの待ちがあったようですが、2025/4/30現在では待ちもなくindex作業に入ってくれました。
しばらく待つと Your wiki for thinkAmi/railroads is now ready! という件名で cognition.ai ドメインからメールが届きました。メールにはRailroadsプラグインのDeepWikiリンクが記載してありました。リンクを踏んでみたところ、DeepWikiができ上がっていました。
https://deepwiki.com/thinkAmi/railroads
また、RailroadsプラグインのREADMEに DeepWiki を使っていることを明示しようと調べたところ、 DeepWiki バッチのジェネレータがありました。
https://t.co/GBM768y5Evhttps://t.co/4OzgVqloK9
— ryoppippi (@ryoppippi) April 26, 2025
GitHubのREADME用にDeepWikiのバッジを簡単に生成できるサイトを作りました!ぜひ使ってみてください
ジェネレータで生成してみたところ良さそうだったので、生成したリンクをREADMEへ追加しました。
https://github.com/thinkAmi/railroads/pull/57
内容について
ざっと眺めてみましたが、概ね良さそうと感じました。
Railwaysプラグインから移植した際に rails routes の結果をどうやってパースしているのかソースコードを読むのにそこそこ時間がかかっていたため、そのあたりがドキュメント化されているのが良いです。
https://deepwiki.com/thinkAmi/railroads/2.3-routes-processing
一方、 PsiUtil でやっていることについてはドキュメント化していないせいか、DeepWikiには記載がありませんでした。DeepWikiはREADMEを読んでそうなので、READMEなどのドキュメントを充実させることで解消できるかもしれないと感じました。
リポジトリに関する質問について
DeepWikiではリポジトリに関する質問もできます。質問と回答に対してパブリックなURLが発行されるため、情報共有するには良さそうでした。一方、一度行ってしまった質問や回答を消すような機能は見当たらなかったため、セキュアな情報を含む質問は避けたほうが良さそうに感じました。
実際に使ってみました。 DeepResearch しないFastな状態で、リポジトリの実装に関する質問をしてみました。
railroadsでrails routesコマンドの結果はどうやって取得しているのですか
https://deepwiki.com/search/railroadsprogram-structures-in_e89769d5-a63c-4398-a68a-03dc35c188d3#2
詳細は上記のリンクに譲りますが、Wikiページに記載されていた内容に加え、実際のソースコードも参照した回答がありました。
Railroadsプラグインで使用している RubyGemExecutionContext に関する質問という、Railroads の範囲外のことも教えてくれるのか確認するための質問をしました。
RubyGemExecutionContextとはなんですか
https://deepwiki.com/search/railroadsprogram-structures-in_e89769d5-a63c-4398-a68a-03dc35c188d3#3
こちらについては、 RubyGemExecutionContext の説明に加え、Railroadsではどのように使っているかの回答がありました。 RubyGemExecutionContext を使う取っ掛かりとしては良さそうでした。
最後に、Fastな質問とDeepResearchを使った質問の差を見てみます。最初はFastな状態で、Railroadsで Program Structure Interface を使っているかを質問しました。
railroadsはprogram structures interface を使っていますか?
https://deepwiki.com/search/railroadsprogram-structures-in_e89769d5-a63c-4398-a68a-03dc35c188d3#1
回答は次の通り「見当たらない」とのことでした。実際には使っているので、回答としては誤りです。
railroadsプラグインはProgram Structure Interface(PSI)を直接使用している証拠は提供されたコードスニペットには見当たりません。
提供されたコードスニペットを確認すると、railroadsプラグインはIntelliJ IDEAのプラグインとして実装されていますが、PSIを直接参照している部分は見られません。
次に DeepSearch を ON にして同じ質問をしました。
https://deepwiki.com/search/railroadsprogram-structures-in_e89769d5-a63c-4398-a68a-03dc35c188d3#4
すると、回答が英語になり、 PsiUtil で使っているという正しい回答が得られました。正確な内容を把握したい場合は DeepSearch したほうが良さそうです。
Yes, the railroads plugin extensively utilizes IntelliJ's Program Structure Interface (PSI) in its implementation. PSI is a core part of the IntelliJ Platform that provides a model of the source code structure and allows plugins to access and manipulate the code elements.
おわりに
DeepWikiを使うことでソースコードに対して質問ができるようになりました。開発者としてはとてもありがたい感じです。Railroadsプラグインを作る際に存在していれば、より効率的に作業できたかもしれません。
今後もOSSのコードを読んだり機能を確認するときは使っていきたいと感じました。
ちなみに、DeepWikiはパブリックなGitHubリポジトリだけが扱えるようです。プライベートなリポジトリを扱いたい場合は Devin を有料契約すれば良さそうです。
https://devin.ai/pricing
Devin Search と Devin Wiki が使えれば良さそうなので、小さく始めるには Core プランを契約する感じでしょうか。
