IntelliJ IDEAハンズオンセミナーに参加してきました!

はじめに

こんにちは。 今年も JetBrains Advent Calendarに参加させていただきました。
日付ギリギリですが、12/3の枠で投稿させていただきます。
とか言いつつ、表題の通りIntelliJ IDEAハンズオンセミナーの簡単なレポートになります。
ぶっちゃけ、控えめに言って、とても良いセミナーでした...。
昨年の記事でなんとなくお分かりかもしれませんが、わたしはあまりショートカットは使っていなかったので、このセミナーを受けて『えー、こんなに色々できるんですね!!』と(態度は控えめですが)衝撃を受けたのでございます。

セミナーの流れ

今回は、サムライズム様本社での受講となりました。参加者はわたし含めて6名。
その中には、初めてお目にかかった寺田さん(!)がいらっしゃいました。(寺田さんからは差し入れのシュークリームをいただきました、ありがとうございました!!)
内容としては、長時間ではなく2時間程度で、こんな流れでした。
  • 講師&サムライズム様について
  • JetBrains社について
  • ライセンスについて
  • JetBrainsファミリー(製品)について
  • チーム向け製品(サーバ製品)について
  • IntelliJ IDEAでのハンズオン
  • まとめ
以下、上記のトピックについていくつかをピックアップして、簡単なレポとさせていただきます。


サムライズム様について

講師のサムライズム様代表の山本さまは、デブサミを通して、過去にも何回かお話を伺う機会をいただいております。
(勝手なスケッチ付きのレポはこちらです)
現在はJetBrains社製品以外にも、Atlassian社のツール、GitHubその他の開発者向けのツールも扱われているそうです。どれも何らかの形でお世話になっていますね...。

チーム向け製品について

ハンズオンで実際にIDEAを利用する前に、JetBrains社の製品、とくにチーム向け製品]についてご紹介をいただいたのですが、このあたりあまり知らなかったので、特に「聞いて良かった!」と思えた内容の一つでした。
実際に画面を見てご紹介いただいたのは、TeamCity, Upsource, YouTrackです。
TeamCityはビルド・デプロイに使うツールで、Jenkinsに近いもの。
YouTrackは課題管理ツールの位置付けで、JetBrains製品への要望やバグレポートにも使われています。
Upsourceはコードレビュー用のツールです。
今のわたしの現場では、CIはWercker, CircleCI / 課題管理はJIRAもしくはGitHubのissue / コードレビューはGitHubのプルリクエスト上で行なっているので、実のところ『このへんは縁がなさそう...』と思っていたのですが、とくにUpsourceにはとても惹かれるところがありました。
特徴的なところは、以下の通り。
  • リポジトリはGitHub, コードレビューだけUpsourceという使い方ができる
  • Upsource側でコードにコメントをつけたりコード中の他のメソッドをクリックすると、利用されている側のメソッドのコードポップアップされる
    • ありがちな、「ここで使われてるメソッドはどんなコードだっけ...」と言って別画面を開いて探して行く作業をしなくても、ポップアップで表示してくれる!
  • UpsourceとIntelliJはプラグインで連携されて、Upsource上のコメントがIDE側でチェックできる
  • レビューを受ける側は、わざわざSlack通知を見てブラウザを開いて...といったことをしなくても、IDEの中だけでレビュー内容の確認や返答、修正ができる
  • Upsourceでのコメントは、GitHub側にも連携・反映される


特に、引用しているメソッドをたどらないといけない場合の手間が省ける、というのが一番魅力的でした。
Javaに特化しているのか、それとも他の言語でも同じように辿れるのか、ちょっと試したくなりました。
リポジトリブラウザとしての機能もとても優れていて、Web上でIntelliJの検索機能を利用しているような感覚に近い気がしました。
(オープンソースのプロジェクトで使えるというのが、とてもよさそげです!)
製品自体は少人数でなら無償、warファイルの形式で配布ですぐに起動して試せるそうなので、だいぶ心が惹かれました。

IntelliJ IDEAでのハンズオン

Java初心者 or 未経験でも大丈夫そう!

『Upsourceすごいー!』とワクワクしたところで30分ほど経過し、IntelliJを使っての実際のハンズオンになりました。
受講者にはA4の「代表的なショートカット一覧」が配布され、このショートカットを使いつつ、Javaでfizzbuzzの簡単なプログラムを書いていきましょう、という流れでした。
『Javaで...』ということで、かなりの不安を覚えたわたし。
まあ、IntelliJを使う方なら、Javaのお仕事の方が多いでしょうから、もっともな言語だとは思います。
ただ、わたしは10数年前に仕事でへなちょこながら書いたことがあったのですが、それ以来全く書いていない!
(今は他の言語でお仕事してますが、それでも満足に書けたもんでもない...)
「大丈夫か?生きて帰れるのか??前に出てきて黒板に書いて見なさい!とか言われて、恥ずかしい思いをしちゃうんだろうか??」とか慌ててしまったのですが、そこはさすが山本さん&IntelliJ。
おそらくJavaを触ったことがない方でも大丈夫な進行となりました。
むしろ、「IntelliJがあれば、書けるようになっちゃうんじゃないかしら??」とすら思えてきたのでした...。

簡単なプロジェクトから

まずはプロジェクト作成から開始。
EclipseやNetBeansも同じようなものかと思いますが、最初におすすめのキーマップの設定、JDKの設定、プラグインの追加を行いました。
このあたりは、『IntelliJ IDEAハンズオン』の書籍とも同じですが、実際に山本さんがショートカットを使って流れるように操作して行く様子を見ると、すごいなと思いますね^^;
同じことをほぼマウスでしかやれていなかったので...。

JavaのプロジェクトでもHTML

プロジェクトができたので、じゃあJavaのコード...?
と、その前に、プロジェクトのツリーやエディタ画面、メニュー利用に慣れるために、まずはHTMLページの作成とライブプレビュー機能を使ってのチェックを行う流れとなりました。
こちらはWebStormでも、その他のIDEシリーズでも共通です。
スケッチ付きのレポでも、HTML編集とライブプレビューのデモは見せていただいておりましたが、今回は手元のショートカット一覧を見ながら、わたしも実際にコーディング。
特にEmmetを使って、CSSセレクタの形式で指定したHTMLを、一発で置換してくれることにも驚き!
IntelliJの機能というよりは、Emmetのサポートが付いているというのが正解ですが、こういうイベントのタイミングで便利な機能を学習できるというのも良いですね...。
おかげさまでChromeでのライブプレビューも問題なく進みました。

テンプレート炸裂! 知らなくても大丈夫!

さて、いよいよJavaのコードを書く番に。
わたしのうしろには、Javaエバンジェリストのてらださんがいらっしゃいます...。

『うわぁフルスクラッチ無理無理...』とこわばっておりましたが、そこは空気を読んでくださったのか、ほとんど「ライブテンプレート」の機能を使って穴埋めしていくだけで fizzbuzz のプログラムを書くことができました。

IDEってすごい...と思った瞬間です。


実際のところは、mainの関数を記述する、変数を宣言する、1〜100までのfor文を作る、if文で場合分けする、出力するといったあたりを書ければいいのですが、ほとんどがライブテンプレードを使って書くことができました。

たとえば、こんな感じ。
  • psvn + tab で、public static void main
  • sout + tab で System.out.println 
  • fori + tab で for (int i = 0; i < ; i++)  

さらに、テンプレートで差し込むコードでは、変数名や値を変更することができます。
実際に設定画面で確認すると、かなりたくさんのテンプレートがありますし、わたしのよく使うDB向けに、SQLのテンプレートもありました...。
(rubyプラグインを入れていれば、ruby用のテンプレートも追加されます)

#『 begin; commit; // rollback; 』のブロックもテンプレート化しておくと良いかもしれない...。

デバッグもしてみよう!

拍子抜けするくらいサックリとJavaのコードが出来上がってしまったので、次は実行&デバッグです。
こちらもショートカットで特に問題なく実行と出力を確認できました。

ショートカットは別として、デバッグはRubyのコードを書く際によく使っていたのですが、今回初めて知ったのが、ブレークポイントも条件指定した時だけブレークできたり、Chrononの機能が使える、ということでした。

Chrononは、デバッグの際の変数の移り変わりを記録しておき、ステップインで前に進むだけではなく、擬似的に前に戻って処理を確認んできるという機能です。
これも実際にハンズオンで動かすことができて非常に良かったことの1つでした。

バージョン管理機能のここがいい!

ひきつづき、バージョン管理についても、あまり使っていなかったのでとても参考になったものの1つです。
ふだんはなんだか敷居が高くて、ついついコミットやpushといった作業はSourcetreeを別に立ち上げて利用しておりました...。

ですが、このVCSの機能もショートカットをガンガン使えること、コンフリクトした際にGUIで競合を解決しやすい点を目の当たりにすると、『これは使わねば!』という気になりました。
コミットログもちゃんと日本語も通りますし^^;

Kotlinも書いてみよう!

ここまででも十分お腹いっぱいでしたが、Kotlinについてもご紹介いただきました。
シンプルな例ではありますが、Kotlinで書いたクラスをJava側から利用したり、Kotlinの文法がわからなくてもIntelliJ側で変換してくれる、といった内容で各自機能を試すことができました。





まとめとか感想とか

以上、かいつまんでのハンズオントレーニングについて書かせていただきました。
なんだかんだでJavaをすっかり忘れていたわたしでも、今回の参加で『IntelliJがあれば、もしかしてJava書けるようになっちゃうんじゃないかしら??』とすら思えてきました。

それほど、ショートカット、補完、ビルド・デバッグをいい感じにしてくれるツールだというのを実感した次第です。
古式ゆかしくターミナルを起動して、「javac xxxx.java, java xxxx」と言った感じでコンパイルして実行といったことは、一度も出てきませんでした。
ですから、もし機会がありましたら、Javaを使っていない場合でもハンズオンへの参加はおすすめです!

また、企業への出張トレーニングも可能とのことでした。

IntelliJ IDEAハンズオン


IntelliJ、ここ3年くらい使っていながら、知らなくて損(?)していたことが多く、お恥ずかしい限りではあります。

駆け足でのハンズオンでしたが、こうしてレポート用の記事を書くために、ハンズオンでやったことを書籍とメモを見ながら復習...となりましたし、あらためて色々できるんだなあと感じた次第です。

来年はもう少し効率Up、他の言語もうまく学んでいけるようにしたいです!

コメント

人気の投稿