サムライズム社のIntelliJ IDEAセミナーに参加しました
7月19日(金)に開催されたJavaチャンピオンが教えるIntelliJ IDEAセミナーに参加しました。
いろいろと学びがあったので、振り返りを兼ねてメモしておきます。
なお、設定やショートカットキーはMac環境です。
JetBrains IDEの特徴
以下のような説明がありました。
- 必要な機能がプラグインを入れなくても、標準で対応。
- フロントエンドにもバックエンドにも対応
- DataGripはDB向けのツールだが、IntelliJ IDEAにもDB向けのツールが入っているので、不要なことが多い
- YouTrack:課題管理ツール
- 10名まで無料で使える
- Upsource:コードレビューツール
- 10名まで無料で使える
- レビューで貰ったコメントをIDE上で確認したりできる
- TeamCity:CIツール
- サムライズム社から購入すると、Slack上で日本語のテクニカルサポートが受けられる
- バージョンをアップグレードしてからダウングレードしても問題なし(プロジェクトを開くことができる)
- ZeroTurnaround JRebel
- クラスの動的リロードができる
- ここから費用対効果を計算できる
必要な設定
ここの他に必要な設定は以下の通り。
Macの設定
システム環境設定→キーボードの設定。
U.S.キーボードを追加する
この設定をしておかないと、ショートカットキーが重複したときに回避できない。
ショートカットが正常に動作しない場合は、日本語入力から英字入力に切り替えればよい。
ショートカットの無効化
Ctrl + Space
が重複しているため、前の入力ソースを選択
のチェックを外して無効化する。
Shift + Cmd + A
が重複しているため、ターミナルのmanページインデックスで検索
のチェックを外して無効化する。
ファンクションキー不要の設定を追加する
ファンクションキーは使うことが多いので、F1、F2などのキーを標準のファンクションキーとして使用
にチェックを入れておく。
IntelliJ IDEAの設定
- keymapを
Mac OS X 10.5+
にしておく - Live Editの項目上から4つにチェックを入れる
演習でやったこと
- 演習環境の確認
- プロジェクトのインポート
- プログラム、テストの実行
- プロジェクト内の効率的な移動
- テストケースの記述
- Javaコード編集
- Javaコード実行・デバッグ
- データベース連携
- 効率的なgit操作
演習に使用したソースコードはここ。
Java 8でないと動作しない模様。
以下の項目は今回の内容に含まれないが、重要とのこと。
- 課題トラッキングツール連携
- フレームワークサポート
- インスペクション、静的解析
- デプロイ
- ローカルヒストリ
- Docker/Kubernetes
便利な機能
検索機能
ファイル名やクラス名は柔軟にマッチする。
ルールは例えばFizzBuzzServlet
を検索する際は以下のような動作となる。
fbs
はマッチする(大文字だけの羅列)fizbs
はマッチする(大文字から始まる部分部分の文字列の組み合わせ)ervlet
はマッチする(部分)fiervlet
はマッチしない。
また、IntelliJではポップアップした箇所でタイプすると検索ができるとのこと。
最近開いたファイル(Cmd + E
)でタイプすると、以下のように検索が実行される。
Postfix Completion
変数や定数などの末尾にを付けて補完しようとすると、特殊な補完を行うことができる。
例えば以下のような補完が可能。
- 文字列リテラルの末尾に
.var
を付けると、その定数を変数宣言する補完候補が表示される - boolean型となる値や式の末尾に
.if
を付けると、if文に変更する補完候補が表示される
自分で設定を追加することもできる。
テストを書く用途として、「.true
や.false
を付けるとbooleanのassertEquals()に補完される」ように設定をカスタマイズするのがオススメらしい。
ステートメントの完結
以下のような状況でShift + Cmd + Enter
を押すと、空気を読んでステートメントを完結してくれる。
- IntelliJはダブルクオートをセットで入力してくれるが、かえって邪魔(カーソル移動+セミコロンが必要)になるとき
- 括弧が何重にもあるけど、いい感じに閉じてほしいとき
ブレークポイント、デバッガ
ブレークポイントの右クリックメニュー(もしくはAlt + Enter
)からブレークポイントを編集できる。
ブレークポイントの基本操作
- Resume Program:実行再開。ショートカットは
Alt + Cmd + R
- Step Over:次の行へ
- Step Into:その行で実行されるメソッドの中へ
- Force Step Into:その行で実行されるメソッドの中へ
- Step Out:その行を呼び出しているメソッドの外へ
- Drop Frame:現在のスタックを破棄してメソッド呼び出し前に戻る
- Run to Cursor:途中にあるブレークポイントを無視し、カーソルがある場所まで実行
参考:公式リファレンス
- https://www.jetbrains.com/help/idea/2019.1/debug-tool-window.html#steptoolbar
- https://www.jetbrains.com/help/idea/2019.1/stepping-through-the-program.html#tips-tricks
条件付きブレークポイント
Conditionを指定すると条件付きブレークポイントになる。number == 50
の時だけ止める、といった処理が可能。
Evaluate and log
これにチェックを入れると変数の内容が標準出力に出力されるようになる。
コード内にSystem.out.println
を埋め込む必要がなくなり、効率的になる。
変数値の強制上書き
ブレークポイントで変数を強制的に書き換え、起きづらい状況を強制的に再現可能。
以下のようにVariablesで変数を選択してSet Value(ショートカットはF2
)を実行すると、自由に書き換えられる。
データベース連携
- 右側のサイドバーからDatabaseを開く
- Data Sourceを以下のような設定で追加する
- データが見られるようになる
- 直接編集もできるが、すぐにはコミットされない。書き換えた状態で
Cmd + Enter
を押すとコミット。
- 直接編集もできるが、すぐにはコミットされない。書き換えた状態で
- SQLの方言(Dialect)を認識させることもできる
便利なプラグイン、オススメプラグイン
Speaker Deckにてスライドを公開されているとのことで、以下の通り。
- Key Promoter X:操作をしたとき、その操作に対応するショートカットを教えてくれる
- Presentation Assistant:押したショートカットが画面に表示される
- Rainbow Brackets:自動的にカッコの対応関係を色付けする
生産性低下プラグインについては割愛。
ショートカットキー
全体的な操作
Cmd + ,
:Preferencesを開くCmd + 1
:プロジェクトペインにジャンプEsc
でエディタペインへ戻る
Ctrl + Shift + R
:アプリケーションの実行。カーソルがある箇所のテストのみを実行- 日本語モードだとショートカットが効かないので注意
Ctrl + V
:バージョン管理ツールの操作
ファイルを開く・タブを切り替え
Cmd + O
:クラスなどの検索- 検索は柔軟にマッチする。FizzBuzzServlet→fbsでも検索可
Shift + Cmd + O
:ファイル名検索Cmd + E
:最近開いたファイル- ポップアップが開いた状態でタイプすると、更に絞り込みもできる(後述)
- もう一度
Cmd + E
を押すと、変更のあるファイルだけに絞り込める
Ctrl + Tab
:タブ切り替え。2つのファイルを切り替える時に使える
エディタ
Option + ↑
Option + ↓
:ソースコードの文法的なまとまりに基づき、範囲選択Ctrl + G
の後、G
を押下:選択範囲に一致する箇所へ、マルチカーソルを追加Cmd + B
:定義箇所へジャンプShift + Cmd + T
:テストコードへジャンプ(orテストを作成する)Cmd + F8
:ブレークポイントを設定Shift + Cmd + Enter
:コードの自動整形
その他
- Eclipseで言う"Workspace"に相当する概念は存在しない
Ctrl + D
で一文字削除ができないので調べてみたら、デバッグにアサインされている模様。よく使っていたのでこれはちょっと残念。
所感
業務で本格的にIntelliJ IDEAを使うことになるので、個人的に参加してみました。
個人で支払うにはちょっと負担が大きい(2時間程度の講座で8000円程度)ですが、内容は実践的で非常に満足でした。
便利な機能やショートカットを知ることができましたし、その場で質問やトラブルシューティングも対応していただけたので、書籍を片手にやるよりもストレスフリーで大きく時間が短縮できたと思います。
IntelliJ IDEAではShift + Cmd + A
でなんでも検索できることは知っていたのですが、ポップアップの中身なども検索できるのはよく考えられていると思いました。
Postfix Completionはなかなか衝撃的だったので、積極的に使っていきたいと思います。
これらは教えてもらわないと気付きづらい機能なので大きな収穫でした。
デバッガは、そもそも基本的な使い方は分かっていながらも、今まであまり使わずに来てしまったことを反省。
条件付きブレークポイント、標準出力へのロギング、変数値の強制上書き、いずれも有用なので今後活用していきます。
プラグインはKey Promoter XとRainbow Bracketsを特に活用していきたいと思います。
Eclipseからショートカットが大きく変わるのが悩みでしたが、前者のプラグインを使えば習得も早くなりそうです。
あとはJavaでホットリロードできる機能欲しいなぁと思っていたのですが、JRebelという存在は知りませんでした。
今まではSpring DevToolのAutomatic Restartを使ってましたが、(予算があれば)JRebelのほうが便利そうです。
IntelliJ IDEAは気になりつつもいろんな事情で手が出せていなかったのですが、開発環境の進歩を大きく実感しました。
最近は内製に切り替える企業が増えていますが、こういった開発環境によりその機運がどんどん高まっているなーと感じます。
まずは今回学んだ内容を使いこなし、その後は今回のセミナーで扱われなかった内容も学んでいきたいと思います。