JetBrains IDEのプラグインRailroadsを、IDE 2026.1やサブディレクトリのプロジェクトに対応してみた

自分の開発しているJetBrains IDEのプラグインRailroadsについて、いくつかissueが寄せられました。

 
5月に入り、色々メンテナンスしたことから、内容をメモしておきます。

 
目次

 

プラグインの機能開発・保守の効率化を実施

今まで、機能開発や保守については、人間メインで行ってきました。

ただ、最近は

という状況になっていました。

このままでは継続的に機能開発・保守するのが難しくなる未来が見えたため、まずはここから改善していくことにしました。

 

AIエージェント向けの環境を整備

これまでもAIによるプラグインの修正は行っていました。
JetBrains AIとともに、IntelliJ Platform PluginのRailroadsをIDEバージョン 2025.1 へ対応してみた - メモ的な思考的な

ただ、当時はAIの性能がそこまで高くなかったため、結局は自分で実装することもありました。

一方、最近ではAIの性能が上がり、ある程度仕様に詳しくなっています。そのため、対応する範囲が決まっているのであれば、ほぼAI(AIエージェント)に任せることができそうです。

そこで、AIエージェント向けの環境を整えることにしました。

 

Linearでのタスク管理

RailroadsプラグインはOSSのため、GitHubのIssueやPull Requestは英語で記載しています。

しかし、自分の英語力の問題や、外部に公開できないようなタスクはGitHub Issueで管理しづらい問題があります。そこで、別途タスク管理ツールを用意し、そこで管理することにしました。

 
AIエージェントと相性の良さそうなタスク管理ツールを探したところ、Linearがありました。
https://linear.app/

Railroadsのタスクを管理する程度なので、Freeプランで試してみることにしました。

 
Linearには公式CLIはありませんが、MCPサーバがありました。
MCP server – Linear Docs

そこで、AIエージェント向けにMCPサーバをセットアップし、AIエージェントがissueを管理できるようにしました。

 

AIエージェント向けのスキルを作成

必要になったら追加するという感じで、次のようなスキルを用意しました。

  • 別のAIエージェントを呼び出してレビューするスキル
  • IntelliJ Platform Plugin Templateリポジトリの差分を確認し、Railroadsリポジトリに取り込むものがあるかをチェック・提案するスキル
  • 特定の形式でGitHubのプルリクを作成するスキル

 
ちなみに、スキルの内容を把握しやすいようSKILL.mdは日本語で書いていることもあり、Railroadsリポジトリには入れていません。

また、 gh skill install などでスキルをメンテナンスできるよう、今のところはスキルに関するディレクトリはgitignoreしてあります。

 

AIエージェント向けのフックを作成

Linearでissueを管理していることもあり、ソースコードやコミットメッセージにLinearのissue IDが紛れ込んでしまうことがありました。

それを防ぐため、Linearのissue IDが紛れ込んでいる場合にAIエージェントが気づけるよう、フックを作成しました。

Linearに関する情報が含まれているため、これもリポジトリには入れていないです。

 

IntelliJ Platform Plugin Templateリポジトリへ追随

次は、IntelliJ Platform Plugin Templateリポジトリへ追随し、最新のものでAIエージェントが実装できるようにしました。

できる限り最新のTemplateに寄せる形で不要な設定を削除しました。一方で、動作確認に必要なローカルIDEの設定は残すなど、細かいところはRailroads向けに調整しています。

具体的な内容はこちらです。
Migrate Gradle and CI configuration by thinkAmi · Pull Request #95 · thinkAmi/railroads

 

IDE 2026.1への対応とrails routes実行の安定化

冒頭に挙げた通り、IntelliJ Platformのスレッドモデルには変更が入っています。

そこで、AIエージェントが古いスレッドモデルで実装を行わないよう、スレッドモデル変更に追随しました。

また、IDE 2026.1系で発生したPSIアクセスやSwing更新スレッドの問題、 rails routes 実行前の設定不備、ルート読み込み時の例外、未保存ファイルが反映されない問題にも対応しました。

なお、対応が必要な箇所について、一度ではすべて挙げることができなかったため、複数回に分けて対応しています。

 

サブディレクトリにあるRailsプロジェクトにも対応

自分のユースケースではなかったこともあり、RailroadsではサブディレクトリにあるRailsプロジェクトへの対応は特に行っていませんでした。

そんな中、次のissueが寄せられました。
Does not work for repositories where the rails app is in a subdirectory · Issue #93 · thinkAmi/railroads

 
そこでCodex (GPT 5.5 high) と壁打ちし、「JetBrains IDEがRailsプロジェクトとして認識済」の前提で対応するのが良さそうとなりました。

JetBrains IDEではサブディレクトリにあるプロジェクトも、

In the Project view, right-click the rails_backend directory, then select Mark Directory As > Ruby Module Root

という手順で認識させることができるためです。

この設定の詳細は、動作確認用アプリのREADMEにスクリーンショット付きで記載しました。
https://github.com/thinkAmi-sandbox/rails_subdirectory_app

 
実際の対応内容の次のプルリクになります。
Support Rails apps in project subdirectories by thinkAmi · Pull Request #105 · thinkAmi/railroads

 

動作バージョンの絞り込み

Railroadsプラグインの元となったRailwaysプラグインがIDE 2023.3以降で動作しなくなったこともあり、今までは「Railroadsプラグインの最新版が動作するIDEのバージョンはなるべく広くする」ことを目標にしてきました。

しかし、

  • 動作確認用IDEは2つ
    • IntelliJ IDEA + Rubyプラグイン
    • RubyMine
  • 動作確認用IDEの動作確認バージョンは複数
    • これからも増える
  • 動作確認用アプリは、今のところ2つ
    • 種類
      • ルートにあるプロジェクト
      • サブディレクトリにあるプロジェクト
    • 状況によっては、今後増えるかもしれない

という状況から、最近では動作確認の時間がだいぶ時間がかかるようになっていました。

そして、実装はAIエージェントに任せられたとしても、この動作確認は人間の作業として残り続けます。

 
ここで、Railroadsプラグインの機能はある意味枯れており、今後大きな機能追加はあまり考えていません。

これより、最新IDEバージョンで動作すれば問題なさそうと考え、このタイミングで動作バージョンを絞り込むことにしました。具体的には次の通りです。

  • Railroads 0.6.0
    • IDE 2025.3 以降
    • IDE 2026.1 対応と Rails Routes の安定化を入れた
  • Railroads 0.7.0
    • IDE 2026.1 以降
    • IDE が Ruby Module Root として認識したサブディレクトリ内の Rails アプリにも実験的に対応した

おそらく、今後も似たような動作バージョンになると思います。

なお、過去バージョンのプラグインはJetBrains Marketplaceからダウンロードできるため、そこまで大きな影響はなさそうと考えています。

 

プラグインの動作確認におけるTips

ここでは、プラグインの動作確認を行う時のTipsを記載します。

 

mise利用時のRubyインタープリターの設定方法

IntelliJ IDEAやRubyMineでは、Rubyのインタープリターは以下のようにして設定できます(IDEやバージョンによっては多少異なるかも)。

  • Project Structure → Project Settings Modules → +interpreter でmiseのRubyを指定

 
miseのRubyはどこにあるかについては、IDEのターミナルで which ruby するとパスが分かります。

% which ruby
~/.local/share/mise/installs/ruby/3.4.8/bin/ruby

 
このパスにあるファイルをIDEで指定すればよいです。

なお、 .local は隠しディレクトリのため、 Cmd + Shift + . で表示できます。

 
ちなみに、routes.rbに多くのルートを持つアプリで動作確認する場合、インタープリターを設定するのは full_apprails_large_routes_app だけで十分でした。

逆に mountable_** を選択してしまうと、見えないところでエラーになってしまうようです。その結果、Cancel ボタンしか押せなくなることに注意します。

 

動作確認で起動したIDEの閉じ方について

動作確認が終わりIDEを閉じるときは、起動したIDEの x ボタンで閉じていくのが良いです。

次回 Run Plugin したときも、同じ設定が残るためです。

一方、開発用IDEで Run Plugin を止めると、それらの設定が消えてしまい、毎回設定する手間が増えてしまいます。

 

ソースコード

RailroadsのソースコードはGitHubで公開しています。
https://github.com/thinkAmi/railroads

また、動作確認用アプリのリポジトリは次の通りです。