🗒️

Devin AIのDeepWikiを使って Movable Typeプラグインを開発してみた

に公開

Advent Calendar の以来の久しぶりの投稿です。
本業が忙しくてあまりアウトプットができずやっと落ち着いたのでGW中に検証してブログを書いていました。(でも最近ブログもAIが書いてくれるので、助かってます)

自律型AIソフトウェアエンジニアの検証とかをやり始めたので、メモとして残しておきます。

最近使い始めてる 自律型AIソフトウェアエンジニア「Devin AI」の DeepWiki でMovable Type のドキュメントを生成させて、Deep Research を使ってみました。

https://deepwiki.com/

Movable Type は、昔から大好きなCMSであるものの言語的にはPerlの壁や情報が古いものばかりで、プラグインを作るときには本体のソースコードを読んでいくしかありませんでした。

そこで、最近流行りのDevinのDeepWikiを利用し、 GitHubのMovable Type本体リポジトリからDevinにMovable Typeのコアのソースからドキュメントを生成してもらいました!

これによって、深いソースコードの調査が圧倒的に楽になりました!

https://deepwiki.com/movabletype/movabletype/1-overview

いままでどんなアーキテクチャがどうか、わかってた部分・アップデートされてから追加されたものなどソースコードで発見するしか方法がなかったです。

Wikiを作ってくれたおかげで、アーキテクト図があったり、どのように依存しているのかも可視化できるようになったので、プラグインを作る時の勉強や調べ事には活用できそうです。

DeepWikiとは

DeepWikiは、GitHubリポジトリのコードベースを解析し、自動的にドキュメントを生成するツールです。コードの構造や依存関係を視覚化し、開発者の理解を助けます。

https://x.com/cognition_labs/status/1915816544480989288

オープンソースで公開しているので、ローカルでも動かすことができそうです。

https://github.com/AsyncFuncAI/deepwiki-open

やり方

1. リポジトリの準備

まず、Movable TypeのGitHubリポジトリを指定し、DeepWikiでドキュメントを生成しました。
これにより、以下のようなドキュメントが自動生成されました

  • システム概要
  • コンポーネント構成
  • 依存関係図
  • APIリファレンス

https://note.com/masa_wunder/n/n29e9eee79af4

やり方はとても簡単なのと、すでに私が一番始めに生成されたので、すでに Movable Typeのドキュメントは生成済みです。
他のリポジトリも同じようなやり方でドキュメントを無料で生成してくれるためパブリックなアンドキュメントなライブラリは生成できます。

プライベート課金が必要です

  1. 特定のリポジトリにアクセス:https://github.com/movabletype/movabletype
  2. github.comdeepwiki に変えるだけ
  3. すでにだれかがドキュメントを生成しているものは、アクセスできる
  4. ドキュメントがなければ、アドレスを入力してIndexしてクロールしてもらう

数分で、ドキュメントが生成されます。

# Indexing in Progress
The indexing process typically takes 2-10 minutes to complete
Your repository is queued for indexing. You are number 545 in the queue.

Indexing をクローリングするには、待ち時間が発生します。
時間帯によっては、数時間かかる可能性があるかもしれません。

2. Deep Researchの活用

Deep Researchを使用して、既存のMovable Typeプラグインのパターンや設計手法を分析できます。
今回は、Deep Researchを利用して、Movable Typeのプラグインの作ってみました。

  • プラグインの基本構造の理解
  • 一般的な実装パターンの把握
  • ベストプラクティスの発見

Deep Researchを利用することで、Movable Typeプラグインも作り方など教えてもらえることができます。
Movable Type でコンテンツフィールドのプラグインを独自で作ってみたい という自然言語で聞いてみると、やり方を教えてくれました。

https://deepwiki.com/search/movable-type_64771694-c6a3-451d-8f43-ce7ca00f9575

Deep Resarchは、本体のソースコードをベースに静的解析してくれることでプラグインの作り方も含めてどんなサブルーチンがあるのか教えてくれます。
これからプラグインを作ってみる人も、いままでプラグインを作っている人も利用できる関数を即座に調べることができます。

3. 今回作ったもの

今回、試しに コンテンツフィールドで自作プラグインを作りたい カレンダー用のプラグインで期間ありのフィールドにしたい というプラグインを作らせてみました。

https://github.com/redamoon/mt-plugin-CalendarPeriodField

  1. コンテンツフィールドで自作プラグインを作りたい カレンダー用のプラグインで期間ありのフィールドにしたい を聞いてみた
  2. 作り方が生成される
  3. 作ったコードを手元でコピペでファイルを配置させた
  4. 動作チェック
  5. エラーやうまくいかない部分は再度質問を投げるを繰り返す

流れとして、このようにやってみました。
最初、いい感じで生成しているし動きそうとなりましたが、実勢にはうまく動きませんでした。

いくつかのルールまでは Deep Resarch だけでは解消できない部分はあるものの、ベースを作ってもらえたことで1時間くらいもあれば簡易プラグインは作れました。

作ったプラグインをさらにDeep Wikiで生成

作ったプラグインのリポジトリにもDeep Wikiを使ってドキュメントを生成させました。
これによって、READMEをわざわざ作る工数削減にも繋がります。

https://deepwiki.com/redamoon/mt-plugin-CalendarPeriodField

記事公開時点では、生成中でした。

学んだこと

  • DeepWikiは複雑なコードベースの理解を大幅に効率化
  • Deep Researchによる既存コードの分析は、品質の高いプラグイン開発に不可欠
  • 自動生成されたドキュメントは、開発の指針として非常に有用

まとめ

DeepWikiとDeep Researchの組み合わせは、Movable Typeのようなレガシーシステムのプラグイン開発において、非常に強力なツールとなることが分かりました。

これらのツールを活用することで、以下が解消されそうです。

  • 開発時間の短縮
  • コードの品質向上
  • ドキュメンテーションの充実
  • 変更されたコードへのドキュメントアップデート

現時点での技術では、リポジトリのアップデートは検知できないため都度生成する必要がありそうです。
しかし、これから新規のプロダクト系のドキュメントは Devin の DeepWiki の活用場面は増えていきそうと感じました。

Discussion