BETA

【レポート】JetBrains Night Tokyo 2018

投稿日:2018-11-21
最終更新:2018-11-22

2018年11月20日(火)に開催されたJetBrains Night Tokyo 2018について簡単にまとめました。

JetBrainsとは?

JetBrainsはRubyMineやPyCharm、GoLandのような高性能IDEを提供しており、2017年にGoogleがAndroid公式言語として採用したKotlinを開発している企業でもあります。

JetBrains Night Tokyoとは?

JetBrains社が開催する大規模な不定期イベントです。(実績としては2013年、2016年、2018年)

例年JetBrains社の各種製品や最新テクノロジー動向のトピックについて講演があり、今年は近年注目を浴びているGo言語とKotlinをメインとした講演がありました。

詳しく公式ホームページをみてください!

プログラム

私は主にKotlinに関してのプログラムに参加しましたので、本記事ではKotlin中心の記事を書きます。 Go言語に関しては他の方がきっと記事を書いてくれるはずです...。 また、各講演のスピーカーも公式サイトを確認して下さい。

参加プログラム

  1. オープニング
  2. 基調講演:開発者の生産性を上げるための組織作り- JetBrainsでの取り組み
  3. IntelliJ IDEA ヒントとトリック 、及びJava 11関連のアップデート
  4. UbieにおけるKotlin + Spring Framework
  5. Kotlin/Anywhere
  6. KotlinはどのようにしてJavaとの互換性を実現しているか

0. オープニング

みなさんご存知であるEclipse日本版(pleiades)を運営している企業がJetBrainsと連携を組んでいます。

JetBrainsの日本語IDEマニュアルも存在しており、URL名からしてタッグを組んでいることが明確ですね。IDEを日本語化するにあたり「Eclipseの日本語プラグインを利用して下さい」と記載されている理由がようやくわかりました。

1. 基調講演:開発者の生産性を上げるための組織作り- JetBrainsでの取り組み

働く環境

JetBrains社では、CEOやCTOなどの役職に捉われずに誰もが意見を通してよい環境になっている。その通したい意見を伝える時には上司などに報告して確認するなどのプロセスも不要となっているようで、「やりたい時にやりたいことをやる」をモットーに結果を出せば仕事を休んでいても問題ない環境となっています。ただし、会議に参加することだけは必須です。

会議について

会議が好きな人はいません。(会場で手を挙げた人は0人でした。笑)

特徴

  • 大きなトピックを1つに絞る。
  • 質問の答えは会議の前に片付けておく。

複数のトピックがあると会議で何も決まらないまま2時間経ってしまい、時間だけが過ぎ何も生み出さない会議となってしまうため、極力トピックは1つに絞るようにしています。

最新情報の共有について

最新情報は会議や朝会で共有するものではなく、どんな時でも情報を取得できる環境でなければいけません。特に何度も繰り返しをすることはコンフルのようなwikiに記録を残しています。

また、社内で共有が必要な「JetBrains製品コミュニティで何が起こっているのか」「営業利益」「マーケティング状況」などはSlackのチャンネルで全社員に共有しています。

リーダーシップ

  • 人の邪魔をしないこと。
  • Yes, Noを許可しない。
  • 権限を付与した後に、文句を言わない。
  • 指導を提供する。
  • 正直な気持ちでフィードバックをすること。
  • 人の意見を聞いて、伝える
  • 相手との関係を築く必要がある。その関係がなければ気遣うこともできなくなる。

この点と各文化を重視しています。 文化というのは、日本での文化やイギリスでの文化など各国の文化のことです。 以下の画像はイギリスで言った言葉とその意味を示します。

何でも日本の環境の表現でフィードバックを与えてはいけなく、各国の文化を尊重するのも大切です。

2. IntelliJ IDEA ヒントとトリック 、及びJava 11関連のアップデート

JavaのIDEの使用経験があまりなく昔からある機能も記事に紹介しているかもしれませんが、壮大な心で見て頂けると嬉しいです。

Github連携

Githubのアカウントを複数紐付けできるようになります。これはプライベート・企業用アカウントなど複数のアカウントを持っている人が多いため実装された機能かと思います。

特にPull Reuqestの機能についてはとても便利と感じました。 IDE上から連携したGithubアカウントのレポジトリを元にPull Reuqestをチェックできるようになり、ソースコードの差分確認やチェックアウトがGUIを介して行えるようになるため期待大です!

従来はソースコード1行に対して検索をかけれるようになっていましたが、今回のアップデートから複数行に対して検索をかけられるようになりました。

これにより特定のコードに対して直接一括変換をかけたり、バグの影響調査をしたりすることが可能です。

  • 従来
Foo f = new Foo();
  • アップデート後
try {
    Foo f = new Foo();
    f.foo();
} catch(Exeption e) {
    System.out.println("Hello World");
}

TODOコメントの複数行化

従来TODOコメントなどは1行単位でしか表示されませんでした。しかしアップデート後はTODOコメントを複数行に渡り記載することが可能となりました。2行目以降は半角スペースなどのインデントが必要ですので、その点だけ注意するだけでOKです。

  • 従来
try {
    // TODO hogehoge
    //  hogehoge この行はTODOコメントとして表示されない
    Foo f = new Foo();
    f.foo();
} catch(Exeption e) {
    System.out.println("Hello World");
}
  • アップデート後
try {
    // TODO hogehoge
    //  hogehoge この行はTODOコメントとして表示される
    Foo f = new Foo();
    f.foo();
} catch(Exeption e) {
    System.out.println("Hello World");
}

ここの話題でTODOに「Kotlinを使うべきだ」と記載して会場を盛り上げたのは忘れません。 現地にいた人だけの心にだけ残っているでしょう...!

3. UbieにおけるKotlin + Spring Framework

主にKotlinを用いたサーバーサイドプログラミングについての講演でした。

Kotlinとは?

JetBrainsが開発した新しい言語であり、Java(JVM言語)と相互運用性を考えられた言語であることが特徴である。現在は、JVM言語やAndroid言語だけではなくマルチプラットフォームで使用できるように言語仕様を整備している段階でありバージョンは2018/11/21時点で1.3が最新版である。

特徴

  • JVM言語
  • プラットフォーム:Android、Javascript、Nativeも重要なターゲットになる
  • 静的型付けオブジェクト指向言語
  • Scala言語に似た構文であるが、複雑ではない
  • GoogleがAndroid言語として正式にサポートする発表があった
  • JavaコードからKotlinコードを自動変換できる
  • Null安全が保証されている
  • 拡張関数

などなど

SpringFramework

Javaでも安定的に利用されているSpringFrameworkは正式にKotlinサポートされているため、Kotlinサーバーサイドプログラミングとして主に使用されています。 2018/11/19にKotlin専用WebフレームワークであるKtorのバージョンが1.0となったため、今後はこちらが使われてくる可能性の方が高いかもしれませんが...

具体的にSpringの実装内容についてはKotlin本を見た方が早いです。

コーディング規約(一例)

  1. スタイルはktlintでGradleのプラグインが存在する。またはInteliJ IDEAのフォーマット設定もあり。
  2. 表現力豊かな言語なゆえにシンプルで記述する。
  3. テストコードは素直に
  4. 型を明記する
  5. !!を使用しない。記号2つだからといって簡単に使用しない!代わりにrequireNotNull関数を利用する。
  6. lateinitは使用しない。本来NullableなのにNotNullにしたいがための抜け道である。テストコードの@Autowiredなプロパティにはlateinitを使用

4. Kotlin/Anywhere

このプログラムではKotlin1.3のテーマ「マルチプラットフォーム」に沿って未来のKotlinについて興味のある話題が発表されました。

Kotlinの可能性

Googleの発表によりKotlinはAndroid言語として広く周知されてましたが、Kotlinは本来Android言語だけではなく全てのプラットフォームで利用できる言語にするために作られているとのことで、Android・iOS・Windows・Macなどのマルチプラットフォームで動作させることを実現しようとしています。

現にJavascriptや各種スクリプト(※)、iOSでも動作することが可能となっています。 他にJetBrainsが提供するReactプラグインを使用することでKotlinでHTMLを動的にReactによる記述することも可能となります。

※ 以下のスクリプトの種類を例としてあげていました。

  • ビルドスクリプト
  • テストスクリプト
  • コマンドライン
  • ルーティングスクリプト

マルチプラットフォームライブラリ

Kotlin1.3では以下の大きな機能追加がありました。 これは全てマルチプラットフォームで動作するために必要なライブラリとして考えられていての追加であるそうです。

機能についての説明はKotlin公式を確認してください。

  • http
  • serialization
  • coroutines
  • setting
  • logging

まとめ

JetBrains

Github連携による高性能なIDEはとても使いやすく知り合いのフリーランスエンジニアからも評判が高いです。ライセンスはもちろん有料ですが、1ヶ月無料で使える枠も存在するため試してみてください。

そして、JetBrains社の社風にも驚かせられました。 自由な環境であるため生産性が非常に向上した反面、改善点やデメリットが出てきた。この事例の発表そして本来の企業とは異なった文化を取り組んでいる姿勢を見習わなくてはいけないと実感しました...。

Kotlin

Kotlinの将来性について発表があったことで、より一層Kotlinユーザーは熱があがりました。

ただ、Javascriptの実用化は可能ですが、まだ実例がありません。 それに今はまだKotlinはライブラリの整備などがされておらず、発展途中のため実用するのはAndroidだけになりがちですが、将来性があり期待されている言語であると同時にコミュニティも徐々に拡大しつつあります。今後Kotlinを使ったサービスもたくさん登場してもおかしくない時代に突入するかと思います。

私は今後はプログラミング言語をある程度まとまった形で使いたくなる時代になると予想しています。

言語で例えると、日本語やスペイン語・ドイツ語と各国に言語があり世界共通語として英語が存在します。日本語がJava、スペイン語がScalaでその英語の立ち位置がKotlinになるのではないでしょうか。

第一歩をいくKotlinを応援しましょう!


(参考になったらイイネして下さると今後のレポートの励みになります!)

技術ブログをはじめよう Qrunch(クランチ)は、プログラマの技術アプトプットに特化したブログサービスです
駆け出しエンジニアからエキスパートまで全ての方々のアウトプットを歓迎しております!
or 外部アカウントで 登録 / ログイン する
クランチについてもっと詳しく

この記事が掲載されているブログ

@tukunの技術ブログ

よく一緒に読まれる記事

0件のコメント

ブログ開設 or ログイン してコメントを送ってみよう