KotlinFest 2018 に参加して Kotlin を愛でてきた。

こんにちは、松下です。

2018/08/25 に KotlinFest という「日本 kotlin ユーザグループ」さん主催のイベントが開催されたので参加してきました。

本日は KotlinFest で気になったところレポートを書こうと思います。

資料はすべて以下にアップロードされておりますので、参照いただければと思います。

kotlin.connpass.com

Kotlin で改善する Android アプリの品質

スピーカー: あんざいゆき さん

冒頭であんざいさんがおっしゃっていたように、 Android 限定ではなく、 Java のソフトウェアにも共通するお話を聞けました。

Effective Java に書いてあるテクニックは、 Kotlin の言語仕様でほぼ解決できる、というお話でした。

たとえば、セッターゲッターは Java では地道に書いていかないといけませんが、 Kotlin だと自動生成されるのでその手間が省ける、ビルダーパターンは Kotlin のデフォルト引数でほぼ代用できるといったことが紹介されました。

「継承より移譲」に関しては Class Delegation が紹介されましたが、僕は全然使ったことがなかったので今度勉強しないといけないなと思いました 💦

Kotlin に移行するだけでこういったことが整備されていくので本当に Kotlin は可愛くて素晴らしい言語ですね!

Kotlin で愛でる Microservices

スピーカー: stormcat24 さん

マイクロサービスを Kotlin で書いたときの話でした。

個人的にはマイクロサービスといえば Go 言語一択なのかなと思っていました。 実際に FRESH LIVE でも Go 言語でマイクロサービスが作られていたようなのですが、どうもずっと Go 言語で書いていると筋肉痛になるらしいです。 確かに Go は高速ですが、 Null 安全ではないですし、今どきのオシャレな文法は使えませんよね。*1

サイバーエージェントさんはクリティカルなところは Go, その他は Java エンジニアが多かったことから Kotlin を採用されたようです。 Java の資産もそのまま利用できるので採用しやすかったともおっしゃっていました。

弊社の JectorRuby on Rails で書かれたモノリシックなソフトウェアなので Kotlin をねじ込むことはできなさそうですが、機会があれば開発メンバーへの布教も兼ねて使ってみたいですね。

マイクロサービスにも採用されるなんて本当に Kotlin は柔軟で可愛い言語ですね!

Kotlinアプリのリファクタリングポイント

スピーカー: 中里直人 さん

拡張関数がお手軽なわりに広範囲に影響があること、 Nullable, Mutable やデータクラスの肥大化などについて言及されていました。

弊社の Android 開発は今の所僕の個人プレーで完結してしまっているので拡張関数はガンガン作ってしまっていますが、チームで開発しているところはルールを決めたほうがよい、らしいです。

Nullable も引き回すのはあまり良くなく、レイヤー内で解決したほうがよい、というのは僕も少しだけ実践していたりします。 Kotlin を使っていると、より不変に、より NotNull に書きたくなりますよね。

データクラスの肥大化については A は任意だが、 A が入力されたときに B は必須項目である というあるあるな場合に全部 nullable で書いてしまうと A は未入力だけど B が入っている など不整合が発生するのでそういったクラスを作りましょう、とのことでした。

僕も DDD を少し勉強したりレイヤードアーキテクチャを勉強したりしていて、バンバンクラスを作成するようになりましたが、やはりひとつのクラスに全部書くとこういう事が起こるので適度に責務を分割したほうが良いですね…。*2

もっと Kotlin の可愛いところと得意分野、苦手分野について勉強しなきゃいけないと思いました!

まとめ

参加前は Android の人しかいないのかなと思っていましたが、意外とサーバサイド Kotlin を使われている方もいらっしゃるようでした。 サーバサイドは Scala が人気かと思っていたのですが、 Kotlin も増えてきているようです。

ねこじゃらしではサーバサイドは圧倒的に Ruby (一部 Go) が人気で、 Java や Kotlin はあまり使われていません…。 確かに Ruby ほどの柔軟さも、 Go 並の速度も Kotlin にはありませんが、 Kotlin は静的型付き言語で、型推論だし、 Null 安全だし Java の資産も使えるのでいろいろとちょうどいい言語だと思っています。

Kotlin はこれからコルーチンも入ってくるし、まだまだ目が離せませんよね!
みんなで Kotlin を愛でていきましょう!

ねこじゃらしについて

ねこじゃらしでは Android に限らず Ruby (Ruby on Rails) や JavaScript での開発経験がある Web エンジニア、ネイティブエンジニア、UI/UX デザイナを募集しております。

ご興味をお持ちいただけましたら、以下のリンクからお問い合わせください。 www.nekojarashi.com

*1:ただ、それを上回るメリットはもちろんあると思います。

*2:Ruby on Rails だとディレクトリの制約があるようで、そうもいかないようですが…。