はじめてのCLion+IntelliJ Rust
2023 年 9 月 13 日更新:Rust 専用 IDE RustRover が発表されました(ブログ記事)。これは IntelliJ Rust を将来的に代替するものです。現在は EAP(アーリーアクセスプログラム)として無償で利用可能です(インストールは簡単に自動更新可能なToolbox Appの利用がお勧めです)。 2024 年中に有償のIDEおよびプラグインとして正式リリースが予定されています。
こんにちは。JetBrains堀岡です。ご存知の通り、JetBrainsの製品は様々なプログラミング言語やテクノロジーをカバー(参考:jetbrains.dev)しており、日々様々な技術情報が英語でアップデートされています。営業的な記事を書くのはそろそろ飽きてきたので、私自身仕事で使ったことのの無い(遠い昔、ソフトウェアエンジニアでしたw)プログラミング言語(Kotlin、PHP、Ruby、Swift、Scala、Go、Rust)のコンテンツも学びながら増やしていけたらと考えております。そこで、今回(今後伸び代がありそうな)IntelliJ Rustについて紹介したいと思います。
IntelliJ Rustの歴史
現在JetBrainsの製品群の中でプログラミング言語Rust専用のIDEはありませんが、オープンソースのJetBrains IDE向けプラグインとしてIntelliJ Rustがあります。歴史を調べてみると以下が大きな節目のようです。
- 2015年9月 JetBrains内の2つのチームでプロジェクト開始(JetBrains英語ブログ)
- 2016年6月 IntelliJ Rustリリース(IntelliJ Rustページ)
- 2017年8月 JetBrains IDEによるIntelliJ Rust サポートを正式発表(JetBrains英語ブログ)
- 2018年3月 JetBrains CLionによるデバッガサポート発表(JetBrains CLion英語ブログ)
- 2020年4月 CLion以外のIDEによるデバッガサポート(ただしCLionと比較すると機能は限定されている)発表(INTELLIJ RUST CHANGELOG #121)
- 2021年10月 CLion以外のIDEによるデバッガサポートについて更新(IntelliJ Rust blog)
IntelliJ Rustの情報源
IntelliJ Rustには製品レベルのドキュメントはありませんが、以下から機能概要やリリース情報を知ることができます。
- IntelliJ Rust ページ(日本語) https://www.jetbrains.com/ja-jp/rust/
- IntelliJ Rust Documentation https://intellij-rust.github.io/
- Rust Pluginページ https://plugins.jetbrains.com/plugin/8182-rust/
- GitHub https://github.com/intellij-rust/intellij-rust
- Twitter https://twitter.com/intellijrust
現時点でIntelliJ Rustと一番親和性の高いJetBrains IDEはCLionです(包括的なデバッガサポート等があるため) [追記: 2020/4/27のリリース以降でCLion以外でのデバッガサポートが発表されています。ただし制約事項があるとのこと。詳細はCLionと他のJetBrains IDEの比較ページ、IntelliJ Rust blog]。そのため、現在JetBrainsの製品カテゴリ/マーケティング的にはIntelliJ Rust関連の情報(新機能や便利な使い方紹介)は、CLionの一部として以下の通り情報提供されています。
- CLionブログ内のRustに関する記事(英語)https://blog.jetbrains.com/clion/?s=Rust
- 2019.3でのUpdate https://blog.jetbrains.com/clion/2019/12/recent-updates-in-rust/
- Debugging Rust Code in CLion https://blog.jetbrains.com/clion/2019/10/debugging-rust-code-in-clion/
- CLionドキュメント – Rust Support
IntelliJ Rustの主な機能
IntelliJ IDEAやCLionの基本操作の多くが(同じキー操作で)IntelliJ Rustプラグインでサポートされています。機能一覧はIntelliJ Rust DocumentationのFeaturesに掲載されています。基本的な機能は一通り入っているようですが、まだまだWIP(Working In Progress: 開発中)のものも多いようでこれからさらなる発展が期待されます。
ここでは、クイックスタートの指示に従って、GitHub上のコードで試してみます。
今回試してみた環境は以下の通りです。
- CLion 2018.3.4
- IntelliJ Rust Plugin v0.2.94.2119-183
- Rust 1.33.0
- macOS 10.13.6
- Xcode 10.1 (IntelliJ Rustのdebuggerが使用)
- テスト用コード rustlings
インストール
- CLionをお持ちでない方はこちらから30日試用版が利用可能です
- IntelliJ Rustプラグイン
- [Preference]-[Plugins] (またはShiftキー*2 でpluginsを検索)
- Rustを検索し[Install]
プロジェクトの選択と実行
[Open]を選択し、git clone済みのrustlingsコードが含まれるディレクトリを指定します。
Rustプロジェクトとして正しく認識されているか確認するため、画面右[Cargo]を開きます。targetsのrustlingsをダブルクリックすると自動的にCargo runしてくれます。
コード編集支援とナビゲーション
Code Completion/コード補完[Ctrl+Space/^Space]やQuick Documentation Look up/関数リファレンス参照[Ctrl+Q/^J]、Refactoring/各種リファクタリング、定義ジャンブ等はCLionのショートカットやアクションがそのまま使えるようです。
Inspection/静的解析の設定や実行、Show Intention Action/空気を読む による修正も(対応パターンはまだまだ限られているかもしれませんが)実行可能です。
以下は戻り値と思われる式にセミコロンが付いているため、戻り値の型が合わない警告に対するShow Intention Actionによる修正例です(参考:Rustの関数の戻り値について)。
デバッグ
既に「プロジェクトの選択と実行」の箇所でCargo runを実行済みであれば、Run/Debug構成はできていると思いますので(なければこちらを参考にRun/Debug Configurationを設定してください)、あとはブレークポイントをセットして、虫のマークアイコンからDebugを開始することができます。
注意が必要なのは、現在デバッガ機能は(IntelliJ Rustという名前にもかかわらず)CLionとの組み合わせが一番充実しており簡単に利用できるということです。理由はRustのデバッグ機能は、LLDB/GDBを使用したネイティブコードに対するデバッグ機能が必要であるためです(IntelliJ IDEA Ultimateの場合別途プラグインが必要)。また(今回はmacOS環境で試していますが)Windows環境の場合、(2019年3月の時点では)MSVCではなくGNU Rust toolchainが必要であることに注意が必要です(参考 IntelliJ Rust Issueへのリンク)。
おわりに
私にとっても「はじめてのCLion+IntelliJ Rust」ということで、簡単に紹介しました。これから試される方が「完全に理解できるよう」参考になっていれば幸いです。また、既に使い込んでいる方は、こんな便利機能がある等シェアいただけると嬉しいです。
IntelliJ Rustはまだまだ発展途上な雰囲気もありますが、ダウンロード数は着実に増えており、特にデバッガサポート以降、CLion+IntelliJ Rustの組み合わせで使われているケースが一番多いようです。また、CLionはC/C++以外にもRustを含む様々な言語をサポートしていますので、この機会に試してみたい方はCLion 30日トライアル版をご利用ください。一方、IntelliJ Rustのデバッガ以外の機能はIntelliJ IDEAを含むCLion以外のIDEで動作しますし、全て無料の環境で使ってみたい方はIntelliJ IDEA Community + IntelliJ Rustというオプションもあります。
本記事への提案や今後「こんな情報がほしい」等ありましたらフィードバックをお待ちしております。