Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Kotlinの開発でも AIをいい感じに使いたい / Making the Most of A...

kohii
February 28, 2025

Kotlinの開発でも AIをいい感じに使いたい / Making the Most of AI in Kotlin Development

サーバーサイドKotlin LT大会 vol.14 の発表資料です。
https://server-side-kotlin-meetup.connpass.com/event/340992/

kohii

February 28, 2025
Tweet

More Decks by kohii

Other Decks in Programming

Transcript

  1. Copyrights(c) Henry, Inc. All rights reserved. About Me Kohei Ishikawa

    / @kohii • 2021.08〜 Henry Inc. ◦ Tech Lead ◦ Architect • Indie Hacker ◦ SmoothCSV - 最強のCSVエディター ◦ MediXplorer - 医科診療行為マスタービューアー ◦ Moyuk - ブラウザ上でTypeScriptでツールを作るプラットフォーム • X: @kohii00
  2. Copyrights(c) Henry, Inc. All rights reserved. ヘンリーが作っているもの • レセコン一体型電子カルテ「Henry」 ◦

    電子カルテ: 医療情報を記録・管理するソフトウェア ◦ レセコン: 診療報酬制度に基づいた会計情報を管理す るソフトウェア
  3. Copyrights(c) Henry, Inc. All rights reserved. 今日話すこと 個人的な課題感 • TypeScriptの開発では公私でCursorを利用しているが、生産性が段違いだと

    感じる • Kotlinの開発でもこのレベルでAIの恩恵を得られないものか • Kotlin界隈が置いていかれる危機感
  4. Copyrights(c) Henry, Inc. All rights reserved. 私のAIコーディング歴 TypeScript Kotlin 2022年6月

    GitHub Copilot w/ VSCode GitHub Copilot w/ IntelliJ 2024年9月 Cursor へ移行 〃 2025年1月 (Cline 併用) 〃
  5. Copyrights(c) Henry, Inc. All rights reserved. Kotlin開発 with AI を極限まで突き詰めてみたい

    2つの道を検討する: • 道1. IntelliJでAI支援を最大化する • 道2. IntelliJ以外でKotlinを開発できるようになる 注: • ※ ここで話す各ツールに対する評価は個人の主観的な感想 • ※ 2025年2月現在の情報 • ※ ローカルでの開発を対象とする (Devin などは対象外)
  6. Copyrights(c) Henry, Inc. All rights reserved. 話すこと 1. 道1. IntelliJでAI支援を最大化する

    2. 道2. IntelliJ以外でKotlinを開発できるようになる 3. まとめ
  7. Copyrights(c) Henry, Inc. All rights reserved. コーディングにおけるAI支援 1. コード補完ツール: •

    コードの続きを補完するもの • 人間がドライバーでAIが支援 2. コーディングエージェント: • AIが環境を認識し、計画を立て、ツールを駆使してタスクを達成する • AIがドライバーで人間が監督 3. その他 • チャットアシスタント、コミットメッセージ生成、バグ発見など 1,2が特に大事だと思うのでここを中心に調べてみる
  8. Copyrights(c) Henry, Inc. All rights reserved. 1. コード補完ツール IntelliJ IDEA上で利用可能なコード補完ツール最強種を探したい

    評価ポイント: • 普通の補完: 書きかけのコードから続きを補完 ◦ 👉 補完の精度や範囲、応答速度 • 次の修正の提案: 直近の操作の意図を汲み取り、次の修正を提案する ◦ (Cursor TabやCopilot NESなど) ◦ 👉 まず、この機能があるかないか
  9. Copyrights(c) Henry, Inc. All rights reserved. GitHub Copilot • このジャンルの先駆者かつ巨人

    • 多くのIDEやエディタで利用可能 ◦ ただしVS Code以外は二級市民扱い • 実験的な機能やエディタ外の機能もあり、日々進化している ◦ 次々リリースするので面白い https://github.blog/changelog/label/copilot/ https://plugins.jetbrains.com/plugin/17718-github-copilot Plans • Free ($0/月): 補完は2000回/月まで • Pro ($10/月) • Business ($19/月) • Enterprise ($39/月)
  10. Copyrights(c) Henry, Inc. All rights reserved. GitHub Copilot • 補完の精度や応答速度:

    ◦ なかなか良い(体感) ◦ 最近 GPT-4o mini ベースの補完モデルが追加され、精度や応答速度が向上 ▪ 275,000以上のリポジトリ、30以上の言語を追加学習 ▪ JetBrains IDEでも利用可能 (Preview) • 次の修正の予測: ◦ VS Codeでは Next Edit Suggestions (NES) をPreview版として利用可能 ◦ JetBrains IDEでは未対応😢
  11. Copyrights(c) Henry, Inc. All rights reserved. JetBrains AI Assistant •

    JetBrains謹製のAIコーディングアシスタント • JetBrains IDEでのみ利用可能 • 機能の豊富さやIDE統合レベルはCopilot (for JetBrains IDE) より上 https://plugins.jetbrains.com/plugin/22282-jetbrains-ai-assistant Plans • Pro ($10/月) • Enterprise ($30/月)
  12. Copyrights(c) Henry, Inc. All rights reserved. JetBrains AI Assistant •

    補完の精度や応答速度: ◦ 2024年11月からMellumという独自のモデルを使用し、性能が大幅に向上 ◦ Completion policy を Creative にすると補完してくれやすくなる ◦ Copilotとそれほど遜色なし (やや補完発生が控えめな気がする) • 次の修正の予測: ◦ なし
  13. Copyrights(c) Henry, Inc. All rights reserved. Cody • Sourcegraph社のクロスエディタなAIコーディングアシスタント •

    OSS https://plugins.jetbrains.com/plugin/9682-cody-ai-code-assistant Plans • Free ($0/月): 補完使い放題 ◦ Chatも200回使える • Pro ($9/月) • Enterprise Starter ($19/月)
  14. Copyrights(c) Henry, Inc. All rights reserved. Cody • 補完の精度や応答速度: ◦

    応答がかなり早く、激しめに提案してくれる ◦ 精度も他と遜色ないレベルと感じた ◦ 補完用モデルにDeepSeek-V2を使ってるらしい • 次の修正の予測: ◦ なし
  15. Copyrights(c) Henry, Inc. All rights reserved. コード補完ツールの結論 • 補完に肝してはどれもだいたい似たような感じで、そこまで大きな差はない ◦

    安定感を重視: Copilot、JetBrains AI Assistant ◦ 無料で使いたい: Cody • Cursor Tabのように次の修正の予測ができるものはまだない 😢
  16. Copyrights(c) Henry, Inc. All rights reserved. 2. コーディングエージェント • 現状でIntelliJで使えるGAなサービスはない

    • Junie (by JetBrains) ◦ まだEAPなのでWaitlistに登録して待て ◦ 招待されたユーザーがちらほら出始めている • GitHub CopilotのエージェントはVS Codeでプレビュー版 ◦ 将来的にJetBrains IDEに来るかな...?
  17. Copyrights(c) Henry, Inc. All rights reserved. 身も蓋もない話 本気で優れたAI統合機能を作るには、現状ではエディタ本体への修正が不可欠 • この分野で強い企業はVS

    Codeをフォーク (Cursor, Windsurf) ◦ Windsurfは元々各エディタ向け拡張Codeiumを提供していたが限界に直面したとのこと https://www.latent.space/p/windsurf • GitHub Copilotも、VS CodeにCopilotのための修正を多く入れている ◦ 「Copilot Chatはその深いUI統合によりVS Codeと同期してリリースされる」 https://marketplace.visualstudio.com/items?itemName=GitHub.copilot ◦ VS CodeのリリースノートのトップセクションはCopilotに関するもの • JetBrainsも、AI Assistantの優位性はIDEとの統合レベルと言っている ◦ https://www.jetbrains.com/ai/ → 単なるプラグインの立場では限界があるようだ
  18. Copyrights(c) Henry, Inc. All rights reserved. IntelliJでAI支援を最大化する道 の結論 • 補完ツール:

    ◦ 👍通常の補完はVS Codeで使えるものと遜色ない ◦ 👎Cursor Tab相当のものはない ◦ → IDEとしては優れているので、通常の補完によるコーディングで頑張る • コーディングエージェント: ◦ 👍Junie by JetBrainsが開発中 ◦ 👎VS Codeベースのものに比べて遅れを取っている • IntelliJがどれほど優れたAI統合IDEになれるかはJetBrains次第 ◦ IntelliJに賭ける/応援するならJetBrains AI Assistantを使おう
  19. Copyrights(c) Henry, Inc. All rights reserved. 話すこと 1. 道1. IntelliJでAI

    支援を最大化する 2. 道2. IntelliJ以外でKotlinを開発できるようになる 3. まとめ
  20. Copyrights(c) Henry, Inc. All rights reserved. 「IntelliJ以外で」=「VS Codeで」とする • VS

    Code界隈がAIコーディングエディタの先進国 • VS CodeでKotlin開発できるなら、CursorやWindsurfでもできる ◦ これらはVS Codeのフォークで、基本的な操作や利用可能な拡張は同じ ◦ 1つ選ぶなら今のところCursorがトップランナーだと思われる ◦ ちなみにヘンリーでは希望する人にCursorを配ってます
  21. Copyrights(c) Henry, Inc. All rights reserved. 「VS CodeでKotlinの開発ができる」=「LSPが使える」 • VS

    CodeでKotlinの開発ができる • = コード補完、エラー診断、参照の検索等ができる • = KotlinのLanguage Serverが利用できる
  22. Copyrights(c) Henry, Inc. All rights reserved. Language Server • エディタに補完やエラー診断などの機能を提供するバックグラウンドプロセ

    ス • エディタとは独立して動作し、標準化されたプロトコル(LSP)で通信する • VS Codeのために開発されたが、多くのエディタで採用されている
  23. Copyrights(c) Henry, Inc. All rights reserved. KotlinのLanguage Server実装 • 公式のもの:

    ◦ なし • コミュニティ主導: ◦ fwcd/kotlin-language-server ◦ SuduIDE/ideals
  24. Copyrights(c) Henry, Inc. All rights reserved. JetBrainsはLanguage Serverを提供しない? • 「現時点ではLSPをサポートする予定はありません。その代わりに、私たちは独自のIDEである

    IntelliJ IDEAで最高のKotlin開発体験を提供することに集中しています。」(2017) • 同スレッドで2020年にも否定 https://discuss.kotlinlang.org/t/any-plan-for-supporting-language-server-protocol/2471
  25. Copyrights(c) Henry, Inc. All rights reserved. JetBrainsはLanguage Serverを提供しない? 「当面そのような計画はありません」 (2025)

    https://youtrack.jetbrains.com/issue/IJPL-175427/Support-running-Intellij-in-a-headless-mode-to-use-as-a-Language-Server
  26. Copyrights(c) Henry, Inc. All rights reserved. JetBrainsはLanguage Serverを提供しない? • 結論:

    しないようだ • JetBrainsが世の中の状況を見て方針を変える可能性に期待 ◦ 5月のKotlin Confの発表にちょっとだけ期待......
  27. Copyrights(c) Henry, Inc. All rights reserved. fwcd/kotlin-language-server • https://github.com/fwcd/kotlin-language-server ◦

    Star: 1.8k ◦ 最終コミット: 2025-02-05 • コミュニティ主導のKotlinのLSP実装 • @georgewfraserさんが作り、@fwcdさんがメンテ ◦ コミットはだいたい依存ライブラリの更新くらいであまり活発ではない • VS Codeでは拡張を通して利用可能 ◦ https://marketplace.visualstudio.com/items?itemName=fwcd.kotlin ◦ 自動的にLSをダウンロードして起動してくれる ◦ Last Release: 2024-12-06 (その前は2024年7月)
  28. Copyrights(c) Henry, Inc. All rights reserved. fwcd/kotlin-language-server • 実用に耐えるか? ◦

    エラー診断や補完候補表示が遅い ◦ CPU、メモリをアホほど食う ◦ コードベースの大きさによるが、Henryのバックエンドのリポジトリを開くと最終的に CPU800%くらい持っていかれて何もできなくなる • 小さなプロジェクトならそこそこ動く! ◦ が、まだまだ不安定で仕事での利用は厳しそう…
  29. Copyrights(c) Henry, Inc. All rights reserved. IdeaLS • https://github.com/SuduIDE/ideals ◦

    Star: 76 ◦ 最終コミット: 2024年5月 • 裏でヘッドレスなIntelliJを動かし、補完や診断結果をLSP経由で提供するVS Code拡張
  30. Copyrights(c) Henry, Inc. All rights reserved. IdeaLS ちなみにFleet (by JetBrains)

    もKotlin開発時にIntelliJをバックエンドのエンジンとして動 かす。発想は同じなのでなかなか筋が良いのでは…? https://www.jetbrains.com/fleet/
  31. Copyrights(c) Henry, Inc. All rights reserved. IdeaLS • 開発状況: ◦

    最終コミット: 2024年5月 ◦ 最近ほぼ息をしてない… • Forks: ◦ elebeaup/ideals : これが一番進んでる(2025年2月にコミットあり) ◦ kohii/ideals : ↑をフォークして IntelliJ IDEA のバージョンとかを上げた ▪ フォーク元に取り込まれてた • 実用性: ◦ 動いたり動かなかったりする → 動作が不安定であり、実務での利用は厳しい
  32. Copyrights(c) Henry, Inc. All rights reserved. LSなしでCursor使うのはどう? • Cursor Tabは人間が主導するので、ないと結構困る

    ◦ LSなしCursorよりは、IntelliJ + (Copilot or AI Assistant) の方が良い • コーディングエージェントはLSなくても結構どうにかなる ◦ LSある場合のメリット: ▪ 多くのエージェントはエラー診断を環境情報として認識し利用する • 「コードを書き換えたら必ずコンパイルすること」みたいな指示で補う ▪ 監督役の人間も生成されたコードにエラーや警告があるか瞬時にわかる ▪ シームレスにコーディングの主導権を交代できる → というわけで次にエージェントについて話す
  33. Copyrights(c) Henry, Inc. All rights reserved. コーディングエージェント • AIコーディングエージェントとは ◦

    AIエージェント = 環境を認識し、計画を立て、ツールを駆使してタスクを達成するAI ◦ AIコーディングエージェント = コーディングを行うエージェント • エージェントが利用するツールの種類: ◦ 知識の拡張: WebブラウジングやDBアクセスなど、情報を取得するためのツール ◦ 能力の拡張: ターミナルや計算機の利用など、エージェントの機能を強化するツール ◦ 書き込みアクション: コードの更新やPR作成など、環境に直接影響を与えるアクション ◦ だいたいMCPとかで追加のツールを与えられるようになっている
  34. Copyrights(c) Henry, Inc. All rights reserved. Kotlinでのコーディングエージェントの利用 • 主要なコーティングエージェント ◦

    Cursor Agent (旧ComposerのAgentモード) ◦ Windsurf Cascade ◦ GitHub Copilot Edits (Preview) ◦ Cline系列 (Roo Code, CoolCline) • お好きなのを使えばOK ◦ Cline系列はOSSなので中身が透明 & 改造できる ◦ Cursor AgentはUIなど細かいところで気が効いていてGood ◦ Windsurf Cascadeは評判良い(私は使ったことない) ◦ それぞれクセがあるのでプロジェクトルールなどで調教
  35. Copyrights(c) Henry, Inc. All rights reserved. Kotlinでのコーディングエージェントの利用 注意点: エージェントによってはKotlinがちょっと不利になる場合がある •

    Clineはtree-sitterを使ってコードのメンバー定義をリストアップするツー ルを与えられているが、Kotlinは未対応 ◦ Roo CodeにKotlin対応のPR送ったけど放置されてる https://github.com/RooVetGit/Roo-Code/pull/721 • GitHub Copilotも同様らしい https://sizu.me/laiso/posts/rzhftmu6k8tx • (どれほどの影響があるかは未検証)
  36. Copyrights(c) Henry, Inc. All rights reserved. ヘンリーではRoo Code、Cursor Agentをいち早く利用 •

    繰り返し似たようなコードを作るところで特に有効 ◦ プロンプトはMarkdownでコミットしておき、チャットUIで @prompt.md のように参照 ◦ 次以降うまく行くように、ルールやプロンプトを育てる/育てさせる • コツ: ◦ 難しいタスクはいくつかのステップに分ける / フォーカスを絞る ◦ 計測器を与えてフィードバックループを回させる ▪ コンパイルやテストが通るか、パフォーマンス計測など ◦ 必要な情報を参照できるようにする ▪ MCP実装しなくても、Terminal経由でかなりいろいろできる ◦ AIが働きやすいように構造を整備する
  37. Copyrights(c) Henry, Inc. All rights reserved. IntelliJ以外でKotlinを開発できるようになる道 の結論 • 現存するLanguage

    Serverはまだ不安定で、業務での利用は難しい ◦ 状況によっては動くので期待は持てる ◦ 今こそAIのパワーでみんなで改善しまくれば実用レベルになるかも…? • エージェントは普通に使えるので、今すぐ使おう
  38. Copyrights(c) Henry, Inc. All rights reserved. 話すこと 1. 道1. IntelliJでAI

    支援を最大化する 2. 道2. IntelliJ以外でKotlinを開発できるようになる 3. まとめ
  39. Copyrights(c) Henry, Inc. All rights reserved. まとめ ※個人の感想としての結論 • 現状ではどちらの道でもTypeScript

    with Cursorの生産性にはまだ及ばない • IntelliJ IDEAとCursor(など)を切り替えて利用しつつ、JetBrainsに期待する ◦ VS Codeベースのエージェントを利用しつつ、コードを書く際にはIntelliJ with (AI Assistant or Copilot) を使う ◦ Junieの完成度が上がればIntelliJだけで完結しそう
  40. Copyrights(c) Henry, Inc. All rights reserved. おまけ: JetBrains IDEとCursorを相互に行き来する方法 •

    この拡張が超便利 ◦ Switch2IDEA: Cursorの拡張 ◦ Switch2Cursor: JetBrains IDEのプラグイン ◦ どちらも@qczoneという方が開発 • Alt+Shift+O で今開いているファイルのカーソル位置を、もう一方のエディ タで瞬時に開ける
  41. Copyrights(c) Henry, Inc. All rights reserved. おまけ2: Junieを使ってみた感想 招待いただいたのでちょっと使ってみた •

    今までのエージェントとはちょっと異質な感じがする • 時間をかけてアウトプットをすごいブラッシュアップしてくれる • さすがのIDE統合 ◦ IDE上でのエラーや警告をフィードバックとして使ってくれる ◦ テスト実行はターミナル経由ではなく、IntelliJ内で実行し結果を表示 • よしなにやってくれようとする ◦ ユーザーと対話しない。計画を箇条書きして、やったことを淡々と報告 ◦ モデル選べない(ベストなものを選んでくれるらしい) • 日本語で指示しても英語しか使わない