「R.kt #3」に参加してきました

変態文法とKotlin Puzzlers

  • 長澤 太郎さん(エムスリー)

変態文法

  • Nothing型がおおもとの型

Kotlin Puzzlers

  • ラムダの中でreturnはインライン関数でしか使えない

Kotlinミニアンチパターン

Destructing Declaration

  • 変数の宣言準ルール決めないと事故の元

Nullable Boolean

// 警告出る
if (condition ?: false) { }
  • true/false/nullの3つの場合分けするとややこしい

SAM変換

  • Javaのメソッドをラムダで呼べる

sealed class

  • どうファイルのみで子クラス宣言できる

Data Binding

  • findViewById

もくもくKontribute

  • 磯貝 佳典さん(ASICS)

Providing Sample Codes

  • サンプルコードを提供するissue

ホットペッパービューティー / Kotlin採用時の懸念と実際

ホットペッパービューティーをKotlin化

  • 2016/6〜2017/12でリプレイス
  • 84画面
  • 最大11人
  • must案件以外完全ストップ

なぜKotlin

  • Android界隈での高まり
  • 一度Javaのままリプレイスしたらもう変えられないだろう
  • エンジニアのモチベーション

採用の懸念

  • Kotlin化したらKotlinエンジニア探し続けないといけなくなる
    • 学習コスト低い
    • 採用リスク無視できるだろうと
    • Java経験者なら1週間
      • Kotlinらしさを無視すれば
    • Javaの資産使えるのがいい
  • 未熟なエコシステム
    • 最悪Javaで書こうとしてたが必要なかった
    • Javaの静的解析ツールが無駄になった
      • kotlinようのツールある
  • 言語としての発展性
    • Googleが採用してくれた

ktlint

  • 仙波 拓さん(AbemaTV)

Kotlinのlint

  • AbemaTVで最近ktlintいれた
  • kotlinの静的解析ツール&フォーマッター
  • json/xmlで出力できる
  • gradkeのタスク追加するだけ

ktlintのルール

  • 公式のスタイルガイドにそっているルール
  • ルールを変更することは公式ではできない
    • 頑張ればできる
  • 特定の行で無効化とかはできる
  • ルールの追加はできる

ktlintの仕組み

  • ASTの構文木に分解して解析してる

CI

  • CI連携できる
  • PRにコメント出したり