2026.09.02 15:20 ~ 16:00 Panda

Android StudioからPSIを盗み出す方法: 大規模コードベースをAIにナビゲートさせる

Development with AI English 通訳あり

AIコーディングエージェントは、コードベースをプレーンテキストとして読み取ります。 LSPをベースにしたツールでさえ、プロジェクトをゼロから再インデックスし、メモリ使用量を倍増させます。 一方で、すでに開いているIDE(Android Studio)は、Program Structure Interface (PSI) を介して遥かに豊かなセマンティック理解を行っています。これは Find Usages、リファクタリング、継承関係のナビゲーションを支える同じエンジンです。 もしAIエージェントが 10,000 個のファイルを grep する代わりに、Android Studio に直接「このメソッドの使用箇所を検索して」「この関数のシグネチャ、アノテーション、可視性を見せて」と質問し、IDEクオリティの回答を得られたらどうでしょうか? 本セッションでは、PSI を Model Context Protocol (MCP) サーバーとして公開し、あらゆる AI エージェントがコードベースのナビゲーションのために Android Studio の頭脳を借りられるようにする JetBrains プラグイン「Kotlin PSI MCP」をどのように構築したかを共有します。 **GitHub Link:** https://github.com/mercari/kotlin-psi-mcp **JetBrains Plugin Marketplace:** https://plugins.jetbrains.com/plugin/33755-kotlin-psi-mcp ## 主な内容: - テキストベース(grep)の AI ナビゲーションが大規模コードベースでどのように不十分であるか - 簡単なタスク例(「Find Usages」)を通してテキストベースのナビゲーションがどのように失敗するかを確認する - KotlinLSP や JetBrains 公式 MCP Server などの既存のソリューション - LSP とは何か、何のために発明されたのか - それらが優れている点と限界がある点 - JetBrains の PSI (Program Structure Interface) とは何か(コードの内部表現) - Kotlin PSI MCP の開発方法 - アーキテクチャの概要 - MCP の仕組みの簡単な解説 - プラグインコードのウォークスルー - `find-usages` MCP ツールの例の探求 - Kotlin PSI MCP の実際の動作を見る - さまざまな Kotlin PSI MCP ツールを探求する - 大規模コードベースでのユースケース例: Find Usages、モジュール分析、宣言の検索、Compose UI ツリーの描画、および派生ワークフロー(例: 集合カバーアルゴリズムを使用した最適なテストケース生成など) AI にコードベースを推測させるのをやめ、AI と Android Studio を架け橋でつなぐ方法を学びましょう。 (DroidKaigi実行委員会による翻訳)

発表資料を見る

対象者

**前提知識:** - 基本的な Android 開発の経験 - AI コーディングエージェント(Claude Code、Cursor、GitHub Copilot など)の使用経験がある程度あること - PSI や MCP の事前知識は不要です(どちらもゼロから紹介します) **対象者:** - AI エージェントが参照を見落としたり、関数の場所を幻覚(ハルシネーション)したり、grep するだけでコンテキストウィンドウを使い果たしてしまうような、大規模またはレガシーなコードベースで作業している Android エンジニア。 - 実際のプロダクションコードベースで Claude Code / Cursor / Copilot を試してみて、コードベースをセマンティックにナビゲートすることの限界を感じた開発者。 - Model Context Protocol (MCP) に興味があり、AI エージェントに根本的に欠けている能力を与えるカスタム MCP サーバーを構築することがどのようなものか知りたい方。 - IDE プラグイン開発、JetBrains Platform の内部構造、または Android Studio が内部でどのようにコードを理解しているかに興味があるエンジニア。 ## 本セッションで解決を目指す課題: - 「なぜ私の AI エージェントはこの関数の使用箇所を見落とし続けるのか?」 - 「なぜ AI は異なるモジュールにある同じ名前の2つのメソッドを混同してしまうのか?」 - 「AI はモジュール間の関係を正確に見つけることができるか?」 - 「AI は Android Studio と同じくらい正確に自分のコードベースを理解できるか?」 - 「LSP (Language Server Protocol) とは何か? PSI (Program Structure Interface) とは何か?」 - 「AI と通信する MCP サーバーとして機能する JetBrains プラグインをどのように書けばよいか?」

同じ時間帯のセッション

すべてのセッションを見る