【初心者歓迎】Kotlin開発Tech Talks 参加レポート
【初心者歓迎】Kotlin開発Tech Talks 参加レポート
概要
Google I/Oにて、ついにKotlinがAndroidの正式な開発言語として追加されました。今後より盛り上がっていくと考えられるAndroidでのKotlin利用に関する勉強会を開催します。
この勉強会で登壇するスピーカーが所属する5社は、Kotlinの導入度合いも会社の規模や成長フェーズもバラバラですが、いずれも「ヒトをつなぐ」自社サービスを展開しています。それぞれのサービスでのAndroid開発におけるKotlin利用について、その取り組みやノウハウなどを発表します。
【日時】7月12日(水)19:30~22:00
【場所】スタートアップベースキャンプ オープンスペース
【住所】東京都渋谷区円山町28-1 渋谷道玄坂スカイビル8F
【費用】¥1,000 ※飲み物と軽食をご用意します
【URL】https://connpass.com/event/59898/
■ほぼ毎週リリースアプリのKotlin書き換えの道のり
- 株式会社葵 近藤 和宏
Kotlin事情
- アオイゼミ(iOS, Android, Web版)
- 去年夏頃よりリニューアル計画
- 10月には言語や内部仕様、リニューアル内容の決定
- Kotlinの熱量と書きやすさ採用などを鑑み採用
- 12月から開発開始
12月末一部KotlinとJavaが併存している状態でリリース
ほぼ毎週リリース
- 1月〜4月までの間、Kotlin Onlyで書き直しているブランチと試作用の2つのブランチを使って開発していた
- 約20万行以上のコードを書き直し
メリット編
- null safe
- 公式サポート
- 採用にインパクトある
色々あったよ編
- Android 65K
- Null safeなKotlinでもnullpointerexceptionは発生する “?"でマーク、コード側で防御、NPEが入り込まないように設計
- 動画が再生されない事件
一部ユーザーが動画がされない報告が続出
CDNがHTTP2.0に対応TLS1.1.以下を切り捨てていた
急なトラブル対応にはまだJavaのコードを読む必要がある
■開発 4 年目のアプリへの Kotlin 導入
ChatWork株式会社 宮下 竜大郎(チームリーダー)
国産のビジネスチャットサービス
最初はTitanium製
Android版(2014年12月からネイティブ)
なぜKotlinを導入するのか?
急ぐ必要はあるのか?
-> 急がなければならない理由はない
あくまでも公式サポート言語が増えただけ
- それでもKotlinを導入する理由
- エンジニア的な楽しさ
エンドユーザーのメリットにもなる言語機能
- ボイラーテンプレートを少なく出来る
- Lambda式
java8のラムダ式よりもカンタンに書ける(スッキリ書ける)
- Lambda式
- ボイラーテンプレートを少なく出来る
脳内の処理イメージをコードに反映しやすい
スコープ関数
拡張関数
if, try, when
チームにどう効いていくるか
- ユースケースを表したコードになりやすい
- 無駄が無いのでコードレビューがやりやすい、確認と指摘の漏れが少なくなる
気をつけること
- 7200メソッドほど増える
- 65Kメソッド制限にぶつかる可能性が高まる
- kaptが生成するコードに問題があることもある(たまにドハマリ注意)
どう導入を進めていくか
- すべてのコードをKotlinにするのは先が遠い
- 部分的にKotlin化していくのがよい、Chatworksでは下記の手順で行った
- はじめに、シンプルなDialogFragmentをKotlin化して、誰でもJavaのコードがイメージできるように
- 次に既存のコードを一つKotlin化
- 新規機能コードをKotlinで追加
課題
- 何をどこまでKotlinで書くかは定まっていない
- 非同期処理でasync/awaitを使っていくとか
- 全員が足並みを揃えられるかどうか
- チームにとって、ひいてはユーザーの価値になるか
- Kotlinのコードを負債にしてはいけない
■1年ぶりにやりなおすKotlinアプリ開発
株式会社m-gram 北原 和也
エムグラム正確診断
もうすぐリリース予定
AndroidはKotlinで開発
思ったこと
Annotationプロセッサーを使用しているライブラリをするっと使えるようになっている
Kotlin記事も増えている(一年で倍以上増えている)
一年前のlintの結果がイマイチだった
クラスによってはwarning出たり出なかったりしてまだ使えない印象
Kotlinと一緒に使ったライブ
■テストから始めるKotlin導入
株式会社エウレカ 二川 隆浩
futabooo
十分に発達したバグはどれも、機能と見分けがつかない
-> 主要な機能でバグが発生
- テストが書いてあれば防げた
-> しかし、テストが書ける状態ではなかった
テストが書きやす構成にする
レイヤーをはっきり分ける
詳細は、Activityを改善した話のスライド見て!
■KotlinとJavaの相互運用
コネヒト株式会社 富田 健二
@tommykw
ママリのkotlin導入
導入方針
- 無理にKotlin化はしない
- リファクタリングや新機能を実装する際にKotlin化をする
Kotlin導入結果
10月からスタートして54%導入完了
2割くらいコード行数が減った
簡潔に記述できるようになった
KotlinとJavaの相互運用
難しい点
PlatformType
T!を表す
IDEAでPlatformTypeだと警告を表示してくれる場合がある
java側で@nullable, @nonnullを定義するMappedType
javaとkotlinの型テーブルデフォルトfinal class
kotlinのクラスはデフォルトfinal
javaとは異なり、継承する場合にopenをつける検査例外について
Kotlin側で@Throwを定義する
IDEA側で警告を定義するドキュメント
コメントの書式が統一出来る
コメントがまとまっていてコードが読みやすい
コメントを書くことによって読みやすいコードを意識できる- KDoc
マークダウン記法 - dokka(htmlとして吐き出してくれる)
共存したプロジェクトにも対応
- KDoc
メリット
生産性の高さ
コレクションの操作が直感的で楽
学習コストもそれほど高くない
IDEAの補完が強力
デメリット
既存である場合は相互関係の辛さがある
ごちそうさまでした🍕