ニーズ
ちょっと大きめのUnityプロジェクトがあり、リファクタ+改善のためにC#スクリプトの構造を調べています。ただ、スクリプトが膨大で、なかなかハード・・・
ということで、何かしら効率化できないかと考えました。
フロー
1. Geminiで分析
まず、分析はGemini。GemにMarkdownでコードを分析・出力するように指示したうえで、プロジェクトの概要を知識としてあらかじめ与えておきます。これ結構重要。プロジェクト全体の知識があるだけで、だいぶサマリーの解像度が上がるかと思います。
ちゃんとOne-Shotで出力例を与えておくと、ファイル一個丸ごと無言で投げて、クラスのサマリーがMarkdownとして返されます。
2. Gemini ⇔ Obsidianの橋渡しスクリプト
正直ここは技術的にはどうとでもなりますが、でも作業の効率化という観点だと一番大事な部分。
Geminiの出力をどうやってObsidianに持ってくるかという話。
つまり、Markdownをコピーして、Obsidianに新規作成したファイルに貼る、関連ページにそのクラスを追記する、その一連の作業自体が繰り返しだととても面倒なわけですね。
なので、今回はPythonでサクっとGUIを作成。
GUIなのは、CUIでファイル保存の手間が嫌だったためです。
このGUIにGemini出力のMarkdownをそのまま貼ってやると、Obsidianのあらかじめ指定したVaultに、指定した構造でのファイル新規作成やページ更新をしてくれるという寸法です。らくちん!

3. Obsidian
あとはObsidianで見れます。
私の場合はGeminiの出力形式をGemでがちがちに指定しているので、PythonスクリプトでMarkdownの構造・情報自体を取得して、依存関係グラフやクラスが持つイベント等を更新するようにしています。ここ、Gemが私史上二番目に活躍している部分です。毎回プロンプトとかセットアップする必要がないということの恩恵がフルに受けられますね。
ここの、Obsidianにどのような情報を残すかは工夫次第でとても変わりそうなところ。
感想
正直、思った以上に便利で助かっています。
ここまで自動化してやれば、調べているコードの参照先とかが未分析だった時に、サクッとGeminiに投げてサマリー取得、サクッとObsidiainのドキュメントを更新、というフローが現実的な手間の範疇になりました。
実際、止まっていた手が順調に動き始めたので、めでたしめでたし、という感じですね。
お仕事でやるなら、経験はないけどOllamaとかでAgent作ってAPI叩くようにする感じになるのかな?
AIエージェントは驚くほど開発モチベが(今は)わいてこないので、使えるものは使い倒していきましょうね。

コメント