【集まれKotlin好き!Kotlin愛好会 vol2】に行ってきました

集まれKotlin好き!Kotlin愛好会 vol2

https://love-kotlin.connpass.com/event/91710/

に行ってきたので、その時のレポート

談義: 「JavaからKotlinにコンバートする際にj2kコンバータをカスタマイズした話」by paraya3636さん

資料

以下、談義を聞きながらのメモ

Java から Kotlin に変換する際に苦労した点

通常、Android Studio で変換すると思う。このとき、j2k コンバータが使われている。

ただ、この j2k コンバータは問題がある。

それは、強制的にnon null 変換されること

これを調べてみると、

引数や戻りの型に non null のアノテーションがついてないと、

nulableな変換にしてくれない。

そのため、そのまま実行するとクラッシュしてしまう。

解決案1

目視で全部チェックする

解決案2

Kotlin 化して全部テストする

ただ、この2つの案だと、やる際に手作業で辛すぎる。

さらに考えて、

コンバータを改造すればいいのではないかと考えた。

Java から Kotlin に変換するツール「j2kコンバータ」をカスタマイズした話

ステップ

  1. Kotlin を build する環境を整える
  2. typeConverter.ktを編集
  3. チャイルド IDEA を実行
  4. コードをコンパイルする。

Kotlin の build 環境は長くなるので割愛。

資料のURLとかをみてね!

カスタムコンバータの使い心地は?

クラッシュの確率が激減した。

信頼感がupして、レビューを簡素にすることができた。



談義: 「Java で書かれた Android アプリを Kotlin で書き直すまでの話」by Ryutaro Miyashitaさん

資料

以下、談義を聞きながらのレポート

書き直す際に

最初は部分的に使えるところで使っていこうという形だった。

次に、既存の画面を書き換えてみた。

次に、新しい機能追加の際には Kotlin を使い始めた。

チーム内に Kotlin が浸透してきた。

Javaとつなぎこみたいときどうすればいいの?

Javaとの共存はもちろんできるが、このコードは Java から呼ぶとか Kotlin から呼ぶとか意識づけが必要。

Kotlin 側に、Java からアクセスさせるためにアノテーションをつけてあげたりする。

ここは Java からアクセスするんだねっていうのを意識する必要がない。

Java には Unit 型はないので、 Java 側に Unit を返すような実装をしなければいけない。

このように、Java 側に Kotlin の都合が侵食していったりする。

Kotlin の旨味を100%引き出したいとなると

Java と Kotlin がお互いに都合をお互いに考えなければいけなくなる。

いっそのこと、Kotlin に書き換えたほうがいいのでは?となり、

ただ、Kotlin の習熟度レベルはバラバラ。

なので、レビューをしたり、チャットでクイズを出したり、説明したりして、

理解を深めて行った。

結果、5.3万行くらいあった、コードが4.3万行くらいになった。

手作業でやりきったのはいい思い出。

10ヶ月で全部 Kotlin 化した。

その間に機能追加やリファクタリングもできた。

効果

可読性はあがった。

Null Pointer Exception の撲滅。ほぼ出会っていない。

最後に

既存のアプリも段階的に Kotlin 化して行けた。

中途半端に導入するぐらいであれば、全てを書き換えたい。

 → Java と Kotlin 間でそれぞれを意識する手間を省けた

他チームから見た、想定外の効果

 → iOS エンジニアや Scala のエンジニアが Kotlin のコードを読んで交流が生まれるようになった。



談義: 「低レベルな Kotolin 」by tomoya0x00さん

資料

以下、談義を聞きながらのメモ

Kotolin のbyte型の話。

符号なしで処理をしたいことがある。

kotlin の byte 型に 0x80 を突っ込むと

-128になってしまう。

そこで、

符号なしとして扱ったときの最大値が十分に表現できる型に変換する。

そして、マスクをする。

やり方は、

toInt()して、0xffでandをとる。

チェックサムの話

2の補数表現を考慮して実装をする。



談義: 「webエンジニアが 2ヶ月Kotlin(Android)開発して思ったこと」by achanさん

私の談義です。

資料

以下、概要

日頃はサーバーサイドを触っている

  • サーバーサイド
  • インフラ
  • Kotlin(Android)

ができると、一人でオンラインアプリが作れるようになる。

webもできてアプリもできるって人は少ないように感じる。

webの現場で「それ、アプリでできますよ」って言えるようになりたい。

Kotlin楽しい

これから始める人はぜひ実機デバッグで欲しい。

動いたときの感動がある。

型に厳密な言語は楽しい

IDEが叱ってくれる

型を書くのは頭の整理になる。

webだといろいろ複雑な要素が多いし、環境が違うこともあるが

Kotlinだと、同じ問題に当たっている人が同じ解決策で乗り切れることが多い。

Kotlinの世界を見て思ったこと

  • viewとロジックの分離が難しい
  • クライアントにインストールされている古いバージョンへの対応
  • 端末依存問題

まとめ

サーバーサイドを日頃触っているが、

Kotlinを触って新しい世界に触れるのは良い。



談義: Property Getterby scacheさん

資料



談義: 「完全に理解した気になる Kotlin Coroutines」by takahiromさん

資料

apiが多いが、基本的なところから理解したい。

coroutinesはスレッドの上で動く、動きは確認できる。

中断もできる。



談義: 「KotlinJs でも Coroutines」by Ryo Sakaguchiさん

資料

react wigh kotlinのインストールは簡単

npm で数コマンドたたくだけでできる!

- PR -