JetBrains Night Tokyo 2018に参加してきました

Blog Single

“JetBrains”をご存知ですか?
Kotlinや、IntelliJ IDEAという総合環境(IDE)など、様々なものを開発しているチェコの会社です。

11/20、JetBrains Night 2018に参加してきました。

以下は参加した際のメモになります。
仔細に書こうと思うのですが、IntelliJ IDEAなどのJetBrainsの製品での操作ベースだったセクションはアウトライン程度になると思われます。

“基調講演:開発者の生産性を上げるための組織作り- JetBrainsでの取り組み” — Hadi Hariri

JetBrainsは組織に階層がない。役職名は無意味だ、とすら私は考えている。
開発するものごとにグループがあるが、誰が何をサポートしてもいい。
入社初日の新入社員がSlackチャンネルに投げた質問に、たまたま暇だったCEOが答えたこともある。

基本的に成果さえ出せば他は自由である。
時間に関する決まりも、ミーティングに参加できさえすればあとは自由で、決まった時間に出社する必要もない。子どもが熱を出したから休みます、とわざわざ会社に伝える必要もない。

これでうまくいくのかと思われるかもしれないが、うまくいっている。

ミーティングには参加しなければならないが、ミーティングが好きな人などいない。
(ここで「この中にミーティングが好きな人はいますか?」と参加者に挙手を促されましたが、誰一人挙手しませんでした)

では、何故そんなに嫌いなミーティングをしなければならないかというと、調整最新情報の共有のためである。
調整のためのミーティングの際には、トピックは一つだけにし、またミーティング終了後に必ず実行することが重要である。これが伴わないミーティングは無意味である。
最新情報の共有のミーティングは、最近スタンダッぷミーティングというのも流行っているようであるが、私自身はそれもいやで、共有のためのミーティングは行わないようにした。共有は、トラッキングツールを用いて行うことにした。トラッキングツールだとコミットなどのログも確認できる。

JetBrainsは最初は3人だけだったが、今や社員は1000人いる。会社が成長するとともに人間関係の問題も増える。
誰が誰だかわからないし、誰が何をしているかもわからない状況になってしまう。

この状況を回避するために、我々はメールのやり取りを最低限にとどめることにした。メールの代わりにイシュートラッカーやConfluenceを用いて情報を共有することにした。
slackは勿論便利なツールではあるが、即時対応を期待してしまうというデメリットもある。私は緊急時以外はあまり使わないようにした。

情報は”いかに提供するか”も問題だし、”いかに得るか”も問題である。(Push vs Pull)

組織作りの話題になると、必ずといっていいほど”マネジメント”
我々はマネジメントに関しては以下の考えを持っている。
・No Micro-Management (細かいマネジメントなどしない、自分で仕事を探す)
・No Micro-Reporting (細かい報告もない)
・No Permissions Required (許可もいらない)
つまり、マネジメントらしいマネジメントは基本的に必要としていない。

Micro-Managementをしないためには
・一連のゴールを決める
・指導を提供する
・障害を取り除く (KPIは無い、設定すると無理が生じてしまうときがある)
が重要である。

以上の通り、JetBrainsは大半のことを社員の自由に任せている。これには代償もある。
自由に任されている上で必要なのは自己組織化自己規律責任感が必要である。
それらを得るためには、優先順位を知り、「No」の言う方法を知り、情熱のコントロール法を知る必要がある(情熱がありすぎるのは必ずしも良いとは限らない)

それが本当に価値があるのか、という自問が常に必要である。

社員に自由にさせると言うことは、社員を信用しているということである。

上記の通りマネジメントは基本的に行わないが、リーダーシップというものは存在する。
リーダーシップとは
・ボトルネックにならないこと、人の邪魔にならないこと
・権限委譲ができること
・指導すること
・公平に指摘し、フィードバックさせること
・しっかりと聞き、しっかりと伝えること

Never attribute to malice that which is adequately explained by stupidity.

という”ハンロンの剃刀”は実に真実を述べている。
誤りと悪意を混同してはならない。

信頼とケアの上で我々の組織は成り立っている。
(Trust and Caring)

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

11月にアップデートされるIntelliJの新機能について紹介

どこでも検索のアップデート
“shift shift”というコマンドで実行出来るどこでも検索が新しくなる。
今までと違い”アクションの検索”、”クラスに移動”などのナビゲーションダイアログを全て組み込んでいるため、検索全般はどこでも検索でほぼまかなえるようになる。

データフローの強化
条件に関するインスペクションを強化した。

TODOのマルチライン化
TODOでコメントした際、次の行にコメントを書いてもその複数行を含めてTODOツールウィンドにリストとして表示される。

Git周り
自分のコミット履歴しか確認できなかったが、すべてのブランチを表示できるようになった。
また、複数のアカウントを登録できるようになった。

インスペクション
設定に新しいフィルタを作った。
クイックリペアにオプションを使わせるAPIを変更している。
冗長なコメントやDocsを削除するクイックリペアも表示されるようになった。

“UbieにおけるKotlin + Spring Framework” — Taro Nagasawa

本来JavaのフレームワークであるSpring FrameworkをKotlinで書いてみる。

1.KotlinでSpringアプリを始める

Spring Initializerでも”Kotlin”という環境を選べ、公式で対応している。
KotlinはJavaとの互換性100%だが、Springで使う場合は注意が必要である。
Kotlinはデフォルトでfinalクラス(継承できない)なのでopen修飾子で明示的に許可する必要がある。
Kotlinのallopenプラグインやkotlin-springプラグイン(spring用のプラグイン)など、適宜open修飾子をつけてくれるものもある。

バリデーションに注意(プロパティをフィールドに対するアノテーションだと明示する、等)

2.WebFluxとコルーチン

WebFlux(Springのノンブロッキングなアプリを作るための)はKotlinでも使える。

コルーチン
・ 関数を途中で抜けたり、そこから再開できたりする。
・ async/awaitで同期処理を書けたりする。

3.テスト

JUnit5 – Jupiter
Spring Test – WebTestClient
AssertJ
MockK (モック生成は繰り返さないこと、一度生成したら毎回リセットすべし)
DbSetup-kotlin

4.周辺ツールの紹介

コーディングガイドライン
https://github.com/ubie-inc/kotlin-coding-style
・ スタイルはktlinterに従う
・ シンプルに保つ
・ テストコードは素直に
・ 型を明記する
・ !!をしようしない (代わりにrequireNotNull関数を使用する(抑止力))
・ lateintは使用しない

“Kotlin/Anywhere” — Hadi Hariri

Kotlinはあらゆるプラットフォームでの利用を目的としている。

2010年にKotlin/JVM、2012年にKotlin/JavaScript、2017年にKotlin/Nativeを発表した。
このようにKotlinは一つの言語であらゆるプラットフォーム対応しようとしている。
一つの言語であらゆるプラットフォームに対応する、共通のコードであらゆるものを動かせるようになるのが理想である。

(これらの説明の後、Reactプラグインを用いてKotlinでのフロント周りのコーディングなど、実演がありました)

感想

日本で開催されるのが2年ぶりということで、平日ながら賑わっていました。
気合いを入れるためにIntelliJを購入して半年以上経ちましたが、本当に機能が多くて未だに100%活かせてる気がしません。
11月にさらに新しい機能が搭載・アップデートされるということで、勉強は続けていかなければならないですね。

また、Kotlinはやはり早いうちに使いこなせるようになりたいです。マルチプラットフォームが実現するとなると、いよいよ使えないようでは駄目な気がします。あと単純に楽しそうです。来年は本格的に勉強しますか…。

おまけ

受付でステッカー、ヨーヨー、遊び方のわからないオモチャを手に入れました。



特にヨーヨーは「何でヨーヨーが」と多少動揺してしまいましたが、どうやらヨーヨーは恒例らしいです。回すと光ります。

緑色だけ妙に不人気でした。
ピンボケすみません。

技術書は勿論、本全般が好き。品揃えの良い本屋に行くとテンション上がりすぎて後で具合が悪くなる。

Other Posts: