Submit Search
Upload
Java → Kotlin 変換 そのあとに。
•
Download as PPTX, PDF
•
1 like
•
10,085 views
健一 辰濱
Follow
2016/12/13 第4回Kotlin勉強会@Sansan Sansan株式会社 辰濱健一
Read less
Read more
Software
Report
Share
Report
Share
1 of 46
Download now
Recommended
Java → Kotlin 変換 そのあとに。
Java → Kotlin 変換 そのあとに。
健一 辰濱
Kotlin が公式サポートになったので Kotlin の話
Kotlin が公式サポートになったので Kotlin の話
健一 辰濱
Kotlin 使いになりました
Kotlin 使いになりました
健一 辰濱
前任者から引き継いだ Eight Android アプリ内部の改善
前任者から引き継いだ Eight Android アプリ内部の改善
健一 辰濱
Android 開発, 運用時に使いたいライブラリやサービスの紹介
Android 開発, 運用時に使いたいライブラリやサービスの紹介
健一 辰濱
AWS Amplify XRを動かしてみたら、、、
AWS Amplify XRを動かしてみたら、、、
Tsuyoshi Yamamoto
Developing an Akka Edge6
Developing an Akka Edge6
saaaaaaki
プログラミング言語のパラダイムシフト(ダイジェスト)ーScalaから見る関数型と並列性時代の幕開けー
プログラミング言語のパラダイムシフト(ダイジェスト)ーScalaから見る関数型と並列性時代の幕開けー
TanUkkii
Recommended
Java → Kotlin 変換 そのあとに。
Java → Kotlin 変換 そのあとに。
健一 辰濱
Kotlin が公式サポートになったので Kotlin の話
Kotlin が公式サポートになったので Kotlin の話
健一 辰濱
Kotlin 使いになりました
Kotlin 使いになりました
健一 辰濱
前任者から引き継いだ Eight Android アプリ内部の改善
前任者から引き継いだ Eight Android アプリ内部の改善
健一 辰濱
Android 開発, 運用時に使いたいライブラリやサービスの紹介
Android 開発, 運用時に使いたいライブラリやサービスの紹介
健一 辰濱
AWS Amplify XRを動かしてみたら、、、
AWS Amplify XRを動かしてみたら、、、
Tsuyoshi Yamamoto
Developing an Akka Edge6
Developing an Akka Edge6
saaaaaaki
プログラミング言語のパラダイムシフト(ダイジェスト)ーScalaから見る関数型と並列性時代の幕開けー
プログラミング言語のパラダイムシフト(ダイジェスト)ーScalaから見る関数型と並列性時代の幕開けー
TanUkkii
Servlet と Future の関わり方 #scala_ks
Servlet と Future の関わり方 #scala_ks
Kazuhiro Sera
AWS Lambda in Golang
AWS Lambda in Golang
Koichiro Nishijima
akka-doc-ja
akka-doc-ja
TIS Inc.
Developing an Akka Edge4-5
Developing an Akka Edge4-5
saaaaaaki
Reactive Systems と Back Pressure
Reactive Systems と Back Pressure
Akihiro Ikezoe
PHP Application E2E with Capybara
PHP Application E2E with Capybara
Yoshiaki Yoshida
Scala.js触ってみた
Scala.js触ってみた
Asami Abe
並行処理初心者のためのAkka入門
並行処理初心者のためのAkka入門
Yoshimura Soichiro
Ruby紹介
Ruby紹介
Masahiro Tomita
地方創生ワカモノ会合
地方創生ワカモノ会合
健一 辰濱
Google Analytics のデータ分析ハンズオン
Google Analytics のデータ分析ハンズオン
健一 辰濱
Sansan Tech Meetup Androidエンジニアが振り返る Google I/O
Sansan Tech Meetup Androidエンジニアが振り返る Google I/O
健一 辰濱
知っておきたいFirebase の色んな上限について
知っておきたいFirebase の色んな上限について
健一 辰濱
Android 開発の昔と今
Android 開発の昔と今
健一 辰濱
Firebase Extensions はじめの一歩
Firebase Extensions はじめの一歩
健一 辰濱
Firebase & BigQuery で Android アプリの成⻑を支える
Firebase & BigQuery で Android アプリの成⻑を支える
健一 辰濱
GDG DevFest Tokyo 2019 Day2 Special Hands-on
GDG DevFest Tokyo 2019 Day2 Special Hands-on
健一 辰濱
Firebase Summit 2019 Recap
Firebase Summit 2019 Recap
健一 辰濱
Cloud Firestore を使って、Polling をやめたい話
Cloud Firestore を使って、Polling をやめたい話
健一 辰濱
Firebase hands on in Matsuyama
Firebase hands on in Matsuyama
健一 辰濱
インドのインターネット環境との戦い方
インドのインターネット環境との戦い方
健一 辰濱
インドの低速なネットワーク環境の攻略法
インドの低速なネットワーク環境の攻略法
健一 辰濱
More Related Content
What's hot
Servlet と Future の関わり方 #scala_ks
Servlet と Future の関わり方 #scala_ks
Kazuhiro Sera
AWS Lambda in Golang
AWS Lambda in Golang
Koichiro Nishijima
akka-doc-ja
akka-doc-ja
TIS Inc.
Developing an Akka Edge4-5
Developing an Akka Edge4-5
saaaaaaki
Reactive Systems と Back Pressure
Reactive Systems と Back Pressure
Akihiro Ikezoe
PHP Application E2E with Capybara
PHP Application E2E with Capybara
Yoshiaki Yoshida
Scala.js触ってみた
Scala.js触ってみた
Asami Abe
並行処理初心者のためのAkka入門
並行処理初心者のためのAkka入門
Yoshimura Soichiro
Ruby紹介
Ruby紹介
Masahiro Tomita
What's hot
(9)
Servlet と Future の関わり方 #scala_ks
Servlet と Future の関わり方 #scala_ks
AWS Lambda in Golang
AWS Lambda in Golang
akka-doc-ja
akka-doc-ja
Developing an Akka Edge4-5
Developing an Akka Edge4-5
Reactive Systems と Back Pressure
Reactive Systems と Back Pressure
PHP Application E2E with Capybara
PHP Application E2E with Capybara
Scala.js触ってみた
Scala.js触ってみた
並行処理初心者のためのAkka入門
並行処理初心者のためのAkka入門
Ruby紹介
Ruby紹介
More from 健一 辰濱
地方創生ワカモノ会合
地方創生ワカモノ会合
健一 辰濱
Google Analytics のデータ分析ハンズオン
Google Analytics のデータ分析ハンズオン
健一 辰濱
Sansan Tech Meetup Androidエンジニアが振り返る Google I/O
Sansan Tech Meetup Androidエンジニアが振り返る Google I/O
健一 辰濱
知っておきたいFirebase の色んな上限について
知っておきたいFirebase の色んな上限について
健一 辰濱
Android 開発の昔と今
Android 開発の昔と今
健一 辰濱
Firebase Extensions はじめの一歩
Firebase Extensions はじめの一歩
健一 辰濱
Firebase & BigQuery で Android アプリの成⻑を支える
Firebase & BigQuery で Android アプリの成⻑を支える
健一 辰濱
GDG DevFest Tokyo 2019 Day2 Special Hands-on
GDG DevFest Tokyo 2019 Day2 Special Hands-on
健一 辰濱
Firebase Summit 2019 Recap
Firebase Summit 2019 Recap
健一 辰濱
Cloud Firestore を使って、Polling をやめたい話
Cloud Firestore を使って、Polling をやめたい話
健一 辰濱
Firebase hands on in Matsuyama
Firebase hands on in Matsuyama
健一 辰濱
インドのインターネット環境との戦い方
インドのインターネット環境との戦い方
健一 辰濱
インドの低速なネットワーク環境の攻略法
インドの低速なネットワーク環境の攻略法
健一 辰濱
DroidKaigi 2018 参加報告会 Closing
DroidKaigi 2018 参加報告会 Closing
健一 辰濱
企業スポンサー
企業スポンサー
健一 辰濱
参加したセッションのピックアップ
参加したセッションのピックアップ
健一 辰濱
CFP(Call For Paper)を出す話
CFP(Call For Paper)を出す話
健一 辰濱
DroidKaigi 2018 参加報告会
DroidKaigi 2018 参加報告会
健一 辰濱
DroidKaigi アプリの内部を見る
DroidKaigi アプリの内部を見る
健一 辰濱
Java で書かれた Android アプリに Kotlin を適用させていく
Java で書かれた Android アプリに Kotlin を適用させていく
健一 辰濱
More from 健一 辰濱
(20)
地方創生ワカモノ会合
地方創生ワカモノ会合
Google Analytics のデータ分析ハンズオン
Google Analytics のデータ分析ハンズオン
Sansan Tech Meetup Androidエンジニアが振り返る Google I/O
Sansan Tech Meetup Androidエンジニアが振り返る Google I/O
知っておきたいFirebase の色んな上限について
知っておきたいFirebase の色んな上限について
Android 開発の昔と今
Android 開発の昔と今
Firebase Extensions はじめの一歩
Firebase Extensions はじめの一歩
Firebase & BigQuery で Android アプリの成⻑を支える
Firebase & BigQuery で Android アプリの成⻑を支える
GDG DevFest Tokyo 2019 Day2 Special Hands-on
GDG DevFest Tokyo 2019 Day2 Special Hands-on
Firebase Summit 2019 Recap
Firebase Summit 2019 Recap
Cloud Firestore を使って、Polling をやめたい話
Cloud Firestore を使って、Polling をやめたい話
Firebase hands on in Matsuyama
Firebase hands on in Matsuyama
インドのインターネット環境との戦い方
インドのインターネット環境との戦い方
インドの低速なネットワーク環境の攻略法
インドの低速なネットワーク環境の攻略法
DroidKaigi 2018 参加報告会 Closing
DroidKaigi 2018 参加報告会 Closing
企業スポンサー
企業スポンサー
参加したセッションのピックアップ
参加したセッションのピックアップ
CFP(Call For Paper)を出す話
CFP(Call For Paper)を出す話
DroidKaigi 2018 参加報告会
DroidKaigi 2018 参加報告会
DroidKaigi アプリの内部を見る
DroidKaigi アプリの内部を見る
Java で書かれた Android アプリに Kotlin を適用させていく
Java で書かれた Android アプリに Kotlin を適用させていく
Java → Kotlin 変換 そのあとに。
1.
Java → Kotlin
変換 そのあとに。 2016/12/13 第4回Kotlin勉強会@Sansan Sansan株式会社 辰濱健一
2.
Copyright © 2014
Sansan, Inc. All rights reserved. 自己紹介 1
3.
Copyright © 2014
Sansan, Inc. All rights reserved. > 自己紹介 2 • 辰濱健一 • 徳島生まれ、奈良育ち、徳島県在住 • 2回転職するも、いずれも徳島県内勤務 • Tokushima.app 主催 (徳島でのスマホアプリの勉強会) • Sansan株式会社所属 • 古民家を改修した神山ラボ勤務 • 名刺アプリ Eight Android 版の開発 • Kotlin, RxJava, Realm, … を使ってます • リモートワーク • 趣味は楽器演奏
4.
Copyright © 2014
Sansan, Inc. All rights reserved. > Sansan神山ラボ 3
5.
Copyright © 2014
Sansan, Inc. All rights reserved. > 趣味 4 • 楽器演奏(エレクトーン・トランペット) • 徳島県内のイベントで、ちらほら演奏する機会を頂い てます
6.
Copyright © 2014
Sansan, Inc. All rights reserved. > Tokushima.app 5 • http://tokushima-app.connpass.com • 徳島のスマホアプリ開発の勉強会 • 基本もくもく会、たまにハンズオン • 場所は徳島市内、10:00〜16:00 • 初心者でも OK、入退出自由、参加費無料 • 月1ペースで開催(したいと思ってはいる) • 辰濱が東京の勉強会で仕入れてきた情報なども共有します • 要望あれば、近隣に出張ハンズオンなども始めようかな…とか思っている。
7.
Copyright © 2014
Sansan, Inc. All rights reserved. 6 本題へ…
8.
Copyright © 2014
Sansan, Inc. All rights reserved. 7 Java → Kotlin そのあとに。
9.
Copyright © 2014
Sansan, Inc. All rights reserved. Android Studio の Code メニュー 8
10.
Copyright © 2014
Sansan, Inc. All rights reserved. 9 Convert Java File to Kotlin File!
11.
Copyright © 2014
Sansan, Inc. All rights reserved. 10 既存コードを 簡単に Kotlin 化!
12.
Copyright © 2014
Sansan, Inc. All rights reserved. 11 できるけど、 Kotlin らしくない 変換結果も…
13.
Copyright © 2014
Sansan, Inc. All rights reserved. 変換後に手直ししたい箇所 12 • メンバ変数の名前 • 可能な箇所は var → val に • 遅延初期化に • NotNull 型にできるならして、!! 演算子の除去 • スコープ関数に置き換える • 単一式関数に • 安全呼び出しに • if, else if, … は when に • 使われていない関数パラメータの NotNull / Nullable チェック
14.
Copyright © 2014
Sansan, Inc. All rights reserved. 変換後に手直ししたい箇所 13 • メンバ変数の名前 • 可能な箇所は var → val に • 遅延初期化に • NotNull 型にできるならして、!! 演算子の除去 • スコープ関数に置き換える • 単一式関数に • 安全呼び出しに • if, else if, … は when に • 使われていない関数パラメータの NotNull / Nullable チェック
15.
Copyright © 2014
Sansan, Inc. All rights reserved. メンバ変数の名前 14 • Java • Kotlin
16.
Copyright © 2014
Sansan, Inc. All rights reserved. メンバ変数の名前 15 • Java • Kotlin 接頭辞の m は外しておこう!
17.
Copyright © 2014
Sansan, Inc. All rights reserved. なぜ? 16 • 生成される getter / setter 関数名に残ってしまう • 例) これを Java から使うと…
18.
Copyright © 2014
Sansan, Inc. All rights reserved. 変換後に手直ししたい箇所 17 • メンバ変数の名前 • 可能な箇所は var → val に • 遅延初期化に • NotNull 型にできるならして、!! 演算子の除去 • スコープ関数に置き換える • 単一関数式に • 安全呼び出しに • if, else if, … は when に • 使われていない関数パラメータの NotNull / Nullable チェック
19.
Copyright © 2014
Sansan, Inc. All rights reserved. おさらい 18 • var • 再代入可能な変数 • val • 再代入不可な変数 • 原則として、val を使用して再代入を極力避けるべき
20.
Copyright © 2014
Sansan, Inc. All rights reserved. var → val に 19 • Java • Kotlin ↑こいつを val にする
21.
Copyright © 2014
Sansan, Inc. All rights reserved. var → val に書き換えた 20 val は再代入不可…
22.
Copyright © 2014
Sansan, Inc. All rights reserved. Val cannot be reassigned 対応 21 val は再代入不可なので、宣言時に代入
23.
Copyright © 2014
Sansan, Inc. All rights reserved. 変換後に手直ししたい箇所 22 • メンバ変数の名前 • 可能な箇所は var → val に • 遅延初期化に • NotNull 型にできるならして、!! 演算子の除去 • スコープ関数に置き換える • 単一式関数に • 安全呼び出しに • if, else if, … は when に • 使われていない関数パラメータの NotNull / Nullable チェック
24.
Copyright © 2014
Sansan, Inc. All rights reserved. 遅延初期化に 23 • by lazy{…} を使うと、初期化を遅延できる • 委譲プロパティ
25.
Copyright © 2014
Sansan, Inc. All rights reserved. 変換後に手直ししたい箇所 24 • メンバ変数の名前 • 可能な箇所は var → val に • 遅延初期化に • NotNull 型にできるならして、!! 演算子の除去 • スコープ関数に置き換える • 単一式関数に • 安全呼び出しに • if, else if, … は when に • 使われていない関数パラメータの NotNull / Nullable チェック
26.
Copyright © 2014
Sansan, Inc. All rights reserved. NotNull 型にできるならして、!! 演算子の除去 25 • NotNull 型 • null 代入可能 • 型名そのまま • Nullable 型 • null 代入不可 • 型名のあとに?をつける
27.
Copyright © 2014
Sansan, Inc. All rights reserved. NotNull 型にできるならして、!! 演算子の除去 26 警告が増えた…orz
28.
Copyright © 2014
Sansan, Inc. All rights reserved. NotNull 型にできるならして、!! 演算子の除去 27 • !! 演算子 • Nullable な参照を、NotNull に強制的に変換する • ただし、null に対して !! 演算子を適用すると、 KotlinNullPointerException が throw される • !! 演算子は原則使用しないことがお勧めされている • どうしても必要なら、requireNotNull を
29.
Copyright © 2014
Sansan, Inc. All rights reserved. NotNull 型にできるならして、!! 演算子の除去 28 !! を除去するだけでOK
30.
Copyright © 2014
Sansan, Inc. All rights reserved. 変換後に手直ししたい箇所 29 • メンバ変数の名前 • 可能な箇所は var → val に • 遅延初期化に • NotNull 型にできるならして、!! 演算子の除去 • スコープ関数に置き換える • 単一式関数に • 安全呼び出し • if, else if, … は when に • 使われていない関数パラメータの NotNull / Nullable チェック
31.
Copyright © 2014
Sansan, Inc. All rights reserved. スコープ関数 30 • let, with, run, apply • 「Kotlin スコープ関数 用途まとめ」 http://qiita.com/ngsw_taro/items/d29e3080d9fc8a38691e がわかりやすくて、オススメ! • newIntent 関数 に apply を使うのがオススメ
32.
Copyright © 2014
Sansan, Inc. All rights reserved. スコープ関数に置き換える 31
33.
Copyright © 2014
Sansan, Inc. All rights reserved. 変換後に手直ししたい箇所 32 • メンバ変数の名前 • 可能な箇所は var → val に • 遅延初期化に • NotNull 型にできるならして、!! 演算子の除去 • スコープ関数に置き換える • 単一式関数に • 安全呼び出し • if, else if, … は when に • 使われていない関数パラメータの NotNull / Nullable チェック
34.
Copyright © 2014
Sansan, Inc. All rights reserved. 単一式関数 33 • 波括弧 { } で囲まれたブロックがない • 関数シグネチャに続けて =、その後に式がある • return がない 単一式関数化
35.
Copyright © 2014
Sansan, Inc. All rights reserved. 単一式関数にする 34 単一式関数化 行数削減
36.
Copyright © 2014
Sansan, Inc. All rights reserved. 変換後に手直ししたい箇所 35 • メンバ変数の名前 • 可能な箇所は var → val に • 遅延初期化に • NotNull 型にできるならして、!! 演算子の除去 • スコープ関数に置き換える • 単一式関数に • 安全呼び出しに • if, else if, … は when に • 使われていない関数パラメータの NotNull / Nullable チェック
37.
Copyright © 2014
Sansan, Inc. All rights reserved. 安全呼び出し 36 • Nullable 変数に null が入っていたら何もしない → null チェックを簡素化できる
38.
Copyright © 2014
Sansan, Inc. All rights reserved. 変換後に手直ししたい箇所 37 • メンバ変数の名前 • 可能な箇所は var → val に • 遅延初期化に • NotNull 型にできるならして、!! 演算子の除去 • スコープ関数に置き換える • 単一式関数に • 安全呼び出しに • if, else if, … は when に • 使われていない関数パラメータの NotNull / Nullable チェック
39.
Copyright © 2014
Sansan, Inc. All rights reserved. if, else if,… は when に 38 Java to Kotlin
40.
Copyright © 2014
Sansan, Inc. All rights reserved. 変換後に手直ししたい箇所 39 • メンバ変数の名前 • 可能な箇所は var → val に • 遅延初期化に • NotNull 型にできるならして、!! 演算子の除去 • スコープ関数に置き換える • 単一式関数に • 安全呼び出しに • if, else if, … は when に • 使われていない関数パラメータの NotNull / Nullable チェック
41.
Copyright © 2014
Sansan, Inc. All rights reserved. 使われていない関数パラメータの型チェック 40 Java to Kotlin
42.
Copyright © 2014
Sansan, Inc. All rights reserved. 使われていない関数パラメータの型チェック 41 Java to Kotlin
43.
Copyright © 2014
Sansan, Inc. All rights reserved. 使われていない関数パラメータの型チェック 42 Java to Kotlin 実はここは Nullable
44.
Copyright © 2014
Sansan, Inc. All rights reserved. 使われていない関数パラメータの型チェック 43 Java to Kotlin 実はここは Nullable “Intent” → “Intent?” にする必要がある!
45.
Copyright © 2014
Sansan, Inc. All rights reserved. 44 Convert Java to Kotlin したら、 Kotlin らしくするのも お忘れなく!
46.
Copyright © 2014
Sansan, Inc. All rights reserved. 45 おわり。
Download now