【シューマイ】Tech Lead Engineerから最新技術を学べ!Kotlin編

【シューマイ】Tech Lead Engineerから最新技術を学べ!Kotlin編

2019, Nov 27

アジェンダ

最近はjekyllのカスタマイズにおネツな野村屋ごろうです、お世話になります。
いつものように、その場で書いて即上げる!を地でやっていくんでクオリティは多少怪しいのはご愛嬌。

以下、公式ページより開催概要です。

概要

イベントページの公式サイトより。

"シューマイ"とは?

本イベントは、“世界をテックリードする日本人エンジニアを多く輩出する”をビジョンに、 日本のエンジニアのレベルの底上げを目指すコミュニティです!
最新技術・ハイレベル技術に特化したエンジニアコミュニティを形成し、勉強会・情報交換を行う機会を多く作る。
それが、『シューマイ』コミュニティ。"https://shuuu-mai.connpass.com/"

イベント概要

普段CTOやリードエンジニアクラスとして活躍されている3名の方に、
Kotlinだけでなく、「Kotlin×〇〇」をテーマに、コアでマニアックな技術について熱く語って頂きます!
最後に懇親会の時間も設けております。※懇親会では本物のシューマイ出します!!

当日ご参加の方にはイベント限定ステッカーのプレゼントもあります。皆様のご参加お待ちしております!

【開催日時】11月27日(水) 19:30〜(19:00開場/受付)
【会場】 hoops link tokyo
〒150-0042
東京都渋谷区宇田川町28-4 三井住友銀行渋谷西ビル6階 (JR渋谷駅より徒歩5分)
https://hoops-link-tokyo.com
【参加費】無料
【定員】45名→50名に増枠しました!
【持ち物】名刺 ※当日、受付の際に受付票と名刺を確認させていただきます

(中略)

こんな方におすすめのイベントです

・『シューマイ』コミュニティのビジョンに共感できる方"https://shuuu-mai.connpass.com/"
・すでに開発現場でkotlinを駆使している方
・CTOやリードエンジニアなどのスキルを学びたい方
など一歩上をいく技術に興味がある方にオススメです!!

▼シューマイのTwitterアカウントも誕生しました!
https://twitter.com/shuuumai_tech


タイムテーブル

時間	内容
19:00~	開場・受付開始
19:30~19:40	主催者からのご挨拶・当日のプログラムご案内
19:50~20:50	登壇者発表タイム〜 ※リアルタイム質疑応答あり!
20:50~21:00	写真撮影・主催者からのご挨拶・アンケートご記入
21:00~21:30	懇親会 (交流をお楽しみ下さい!)
21:45	完全撤収

※内容に変更が生じる可能性がございます。予めご了承ください。

頂いてるものをそのまま引用しています。

/resume/assets/img/2019/11/shuumatsu-agenda.jpg アジェンダ

まずは乾杯タイム

シューマイに、乾杯!

会場案内など諸連絡事項ですね。 先々週も聞いたゾ!

Kotlin × 最新! Spring 5.2

登壇者は木原 快氏。 のっけ一発目からライブコーディング! 開幕ぶっぱが日常茶飯事になりそうな気がしますね!

リアクティブとは?

人で言うとこんな感じなのを、サーバー側で対応する場合の話と置き換えて考えるとなんかそれっぽい。

というのはウソ(あながちウソでもない)で、Kotlinでいうとクライアントごとにプロセスを起こして(プロセスを起こすんだっけ?)リクエストを処理する仕組み。 何らかのリソースがロック状態のため、ウェイト状態になっている……なんてイケてない作りにならない。 これだけ聞けばnginxちっく。

この辺のガチトークをすると殴り合いになって誰も幸せにならないので、その人の考え方や経緯を尊重すべきだと思います。

ライブコーディング

最近までガッツリRailsでやってたために、MySQLの構文がこんなんだよね感がありますね。 今はTypeScriptでガッツリやってますが、やっぱり似たような感覚です。 WebフレームワークだとどうしてもDBに依存するんですよね……。

Springの資料がえらい充実してて噴いた。

ツールまであって笑いが止まらない。

initializr

アノテーションつけておけばいい感じに色々やってくれる、というのはさすが! ざっと眺めているだけでも読みやすいですね。私がただのメソッドチェーン好きというのもありますが、ここでやっているのはメソッドチェーンっぽい何かです。 何でもかんでもアノテーションで片付けられるのは激アツ! 作ったり更新したり削除したり、というのは何度も作り直すし、車輪の再発明にしかならないのでこういう仕組みは好き。

SpringじゃなくてKtorではどうか?

これは調べてみるか。 古いJavaで慣れてるとSpringばっかり頭にある……。

Kotlinである理由

リアクティブである理由、かなと言う印象。 少ないリソースでいい感じに回す、というアプローチでご回答いただいた。

Kotlin Coroutines Flowことはじめ

登壇者は梅森 翔氏。

Kotlin Coroutines Flowのお話。 Kotlin=リアクティブ、という印象ががが。

Cold Streamを扱うAPI

:オブザーバーがいないと実行しない。非同期処理に干渉しない

対義語?にHot Stream :オブザーバーがいなくても実行する。非同期処理に干渉してしまう

なんかリアクティブっぽい! nginx感がすごいある。

Experimentalなのが多い、もうちょい様子見か……? とはいえ、stableなものも増えてきている。

Flow

そもそもFlowだと何が嬉しいか?という知識がなかった。 呼び出しが楽になるもの、と聞くとラッパーか何かのように理解してしまう。

サスペンド関数についても理解を深める必要がありそうだ。

が、今のうちから積極的に活用するクセをつけておくと幸せになれそう。

RxJavaからのマイグレーションに強い

RxJavaはドキュメントが多い、これもリアクティブプログラミングに強い。

Kotlinでフロント側をさわる?というイメージがなかった。 ちょっと調べておこう……。

Kotlin で書く Gradle Custom Task

登壇者は横幕 圭真氏。

Gradleの話。 何が嬉しいか、目的の話がさっと流されてしまったので何のためにやってるんだっけ?を理解するのに時間がかかった……。 そのため、前半部分に理解のために頭を使ったので内容が飛んでしまった、もったいない。 初心者お断り、かなぁ。Gradeのカスタムタスクについて、深く知りたくなったら帰ってきます。

運用と修正の話

masterに全部寄せてreleaseでbugfixもやる、 conflictも起こすよね、とは思うけど骨が折れそう。

GitFlowを採用しなかったのはKotlin(Gradle)とは合わない? buildSrc以下にGradle用のカスタムソースやテスト用のコードを置くのは良さそう。

また、Java用のGitが使える。JGit API? これは便利そうだけど、大規模プロジェクト向け?

こういう思想のライブラリだったかがあった気がする。 Gitコマンドの名前でCHANGELOGを書く、だっけか。

授与式(公式)

登壇された三名

本日の資料

あとで上がる、かも知れません。

全体所感

片手間かつ個人趣味でやってる内容だとそこまでやんないよね、だったのがKotlin。 Java分かるし、なんとなくイメージは……と思ってましたが、こりゃ別物だわ…… 最近のJavaがそうなのか?う~む。

ここしばらくずっと、ハンズオンばかりやっていたので、分からなくなったらその場で聞く、という事ができるので理解しやすかったのと、そちらの方が記事を書きやすい感じがあったかなと、 理解が追いつかないと本当に置いてけぼりになってしまうのが講習型だなぁ……。

これはKotlinの勉強会でする話ではないけど、Javaが嫌いな人でもKotlinが使えるかどうかは考えた方が良いのかも知れない。 Javaほどゴリゴリに押さえつけたりはされないだろう、と期待したい。

Kotlinに対するイメージ

パネルディスカッションでもあった、Java-Kotlinのお話について、

池田:Kotlinのどのあたりに「エバンジェリストになりたい」と思うほどの魅力を感じられたのでしょうか。

長澤:最初に触ったときに、「この言語は開発の現実をよく見ているな」と感じたのです。Kotlinには、良い意味での「妥協」が多く盛り込まれています。近年のパラダイムに合ったモダンな文法も使えますし、null安全の考え方や、拡張関数のような機能も採用されています。その一方で、技術そのものにはそれほど「とがった」ところがなく、すぐにでも実務に生かせそうな印象でした。そのあたりが、入れ込んだ一番の理由な気がします。

池田:私も、Kotlinを実際に触ってみて、まさにそれを感じているところです。最初、Kotlinについては、「新しいけれども難しい」と勝手に思い込んでいたところがありました。でも、実際に触ってみると、非常に使いやすい。

 通常のJavaとして書いてもほとんどそのまま動きますし、開発環境も整っていて、JavaからKotlinへ一発で変換するようなこともできる。始める際の敷居がとても低く、初心者に優しい言語だと感じました。

(中略)

Kotlinへの「漠然とした不安」をどう払拭するかが普及のカギに
長澤:業務の中でどうKotlinを使うかを考える際には、技術的な部分ももちろんですが、同じくらいに、チーム内や社内でKotlinの存在感をどう高めていくかも重要だと思います。そのあたり、池田さんはどのように進めてこられましたか。

池田:社内については、やはりGoogleがKotlinを公式に認めたことが大きかったです。「お墨付き」が出たことで、雰囲気は大きく変わりました。

 チーム内で広げていくにあたっては、当初、Kotlinに対する漠然とした不安を持っている人が多くて、それを払拭していくのが予想外に難しかったですね。

長澤:「漠然とした不安」ですか。どういうものなのでしょう。

池田:自分が使ったことのない新しい言語に対して、「難しそう」「導入コストが大きそう」と感じてしまい、実際には何が困るのかよくわかってないまま不安を持っている状態ですね。社内でKotlinの勉強会を開くと、「Kotlinすごい!」という雰囲気を盛り上げることはできるのですが、実際に使う「最初の一歩」を踏み出させるのが難しい。「Kotlinは導入コスト小さいよ」と言っても、現場のエンジニアの中には前述の不安を感じて躊躇してしまう人もいます。本人も不安の理由が明確ではない状態なので、説得しても簡単には変えられないんです。

長澤:その状況は、どう変えられたのでしょう。ペアプログラミングやコードレビューを念入りにやるといった感じですか。

池田:ペアプロなども併用しつつ、コードレビューは大量にやりましたね。書いている人のそばに張りついて、Android Studioを使ったコンバートまでを一緒にやってみせた上で「ほら、できたでしょ」と納得させるみたいなこともやっていました。

 「まずやってみる」ことで、その人の不安が根拠のないものなのか、そうでなければ、具体的にどこが難しいのか明確になるので、そこまで状態を持っていくことが大事です。その点、Kotlinは「まずやってみる」ことが許される素地があるという意味でも、使いやすい言語だと思います。

参考ページ

次回「【シューマイ】Tech Lead Engineerから最新技術を学べ!Rubyまつもとゆきひろ氏に聞く★エンジニアキャリア編」comming soon…

カミングスーンとありますが、一覧では公開されています。