Download free for 30 days
Sign in
Upload
Language (EN)
Support
Business
Mobile
Social Media
Marketing
Technology
Art & Photos
Career
Design
Education
Presentations & Public Speaking
Government & Nonprofit
Healthcare
Internet
Law
Leadership & Management
Automotive
Engineering
Software
Recruiting & HR
Retail
Sales
Services
Science
Small Business & Entrepreneurship
Food
Environment
Economy & Finance
Data & Analytics
Investor Relations
Sports
Spiritual
News & Politics
Travel
Self Improvement
Real Estate
Entertainment & Humor
Health & Medicine
Devices & Hardware
Lifestyle
Change Language
Language
English
Español
Português
Français
Deutsche
Cancel
Save
EN
Uploaded by
Kenichi Tatsuhama
PPTX, PDF
2,787 views
Java で書かれた Android アプリに Kotlin を適用させていく
2018/02/03 Android Bazaar&Conference, Diverse 2018 UDON県 @e-とぴあ香川
Software
◦
Read more
1
Save
Share
Embed
Embed presentation
Download
Download to read offline
1
/ 81
2
/ 81
3
/ 81
4
/ 81
5
/ 81
6
/ 81
7
/ 81
8
/ 81
9
/ 81
10
/ 81
11
/ 81
12
/ 81
13
/ 81
14
/ 81
15
/ 81
16
/ 81
17
/ 81
18
/ 81
19
/ 81
20
/ 81
21
/ 81
22
/ 81
23
/ 81
24
/ 81
25
/ 81
26
/ 81
27
/ 81
28
/ 81
29
/ 81
30
/ 81
31
/ 81
32
/ 81
33
/ 81
34
/ 81
35
/ 81
36
/ 81
37
/ 81
38
/ 81
39
/ 81
40
/ 81
41
/ 81
42
/ 81
43
/ 81
44
/ 81
45
/ 81
46
/ 81
47
/ 81
48
/ 81
49
/ 81
50
/ 81
51
/ 81
52
/ 81
53
/ 81
54
/ 81
55
/ 81
56
/ 81
57
/ 81
58
/ 81
59
/ 81
60
/ 81
61
/ 81
62
/ 81
63
/ 81
64
/ 81
65
/ 81
66
/ 81
67
/ 81
68
/ 81
69
/ 81
70
/ 81
71
/ 81
72
/ 81
73
/ 81
74
/ 81
75
/ 81
76
/ 81
77
/ 81
78
/ 81
79
/ 81
80
/ 81
81
/ 81
More Related Content
PPTX
php-src の歩き方
by
do_aki
PDF
Pros & cons of svelte
by
ElenorWisozk
PPTX
PHP AST 徹底解説
by
do_aki
PPTX
java memory management & gc
by
exsuns
PPTX
PHP と SAPI と ZendEngine3 と
by
do_aki
PDF
Formation Gratuite Total Tests par les experts Java Ippon
by
Ippon
PDF
unique_ptrにポインタ以外のものを持たせるとき
by
Shintarou Okada
PDF
Core JavaScript
by
Lilia Sfaxi
php-src の歩き方
by
do_aki
Pros & cons of svelte
by
ElenorWisozk
PHP AST 徹底解説
by
do_aki
java memory management & gc
by
exsuns
PHP と SAPI と ZendEngine3 と
by
do_aki
Formation Gratuite Total Tests par les experts Java Ippon
by
Ippon
unique_ptrにポインタ以外のものを持たせるとき
by
Shintarou Okada
Core JavaScript
by
Lilia Sfaxi
What's hot
PPTX
Spring MVC
by
Emprovise
PPTX
A topology of memory leaks on the JVM
by
Rafael Winterhalter
PDF
Introduction to Kotlin coroutines
by
Roman Elizarov
PPTX
SQLcl overview - A new Command Line Interface for Oracle Database
by
Jeff Smith
PPTX
React hooks
by
Ramy ElBasyouni
PDF
An Introduction to ReactJS
by
All Things Open
PPT
Spring AOP
by
AnushaNaidu
PDF
導入から 10 年、PHP の trait は滅びるべきなのか その適切な使いどころと弱点、将来について
by
shinjiigarashi
PPTX
Ch14 簡介 Spring Boot
by
Justin Lin
PPT
initiation au javascript
by
Abdoulaye Dieng
ODP
MVC の Model を考える
by
tomo_masakura
PDF
Closures in Javascript
by
David Semeria
PPT
Lockfree Queue
by
Kumazaki Hiroki
PPTX
Async programming and python
by
Chetan Giridhar
PDF
PostgreSQLセキュリティ総復習
by
Uptime Technologies LLC (JP)
PDF
Where狙いのキー、order by狙いのキー
by
yoku0825
PPTX
Training On Angular Js
by
Mahima Radhakrishnan
PDF
クロージャデザインパターン
by
Moriharu Ohzu
PDF
JIT のコードを読んでみた
by
y-uti
PPTX
Qué es Angular.pptx
by
JuanPa119141
Spring MVC
by
Emprovise
A topology of memory leaks on the JVM
by
Rafael Winterhalter
Introduction to Kotlin coroutines
by
Roman Elizarov
SQLcl overview - A new Command Line Interface for Oracle Database
by
Jeff Smith
React hooks
by
Ramy ElBasyouni
An Introduction to ReactJS
by
All Things Open
Spring AOP
by
AnushaNaidu
導入から 10 年、PHP の trait は滅びるべきなのか その適切な使いどころと弱点、将来について
by
shinjiigarashi
Ch14 簡介 Spring Boot
by
Justin Lin
initiation au javascript
by
Abdoulaye Dieng
MVC の Model を考える
by
tomo_masakura
Closures in Javascript
by
David Semeria
Lockfree Queue
by
Kumazaki Hiroki
Async programming and python
by
Chetan Giridhar
PostgreSQLセキュリティ総復習
by
Uptime Technologies LLC (JP)
Where狙いのキー、order by狙いのキー
by
yoku0825
Training On Angular Js
by
Mahima Radhakrishnan
クロージャデザインパターン
by
Moriharu Ohzu
JIT のコードを読んでみた
by
y-uti
Qué es Angular.pptx
by
JuanPa119141
Similar to Java で書かれた Android アプリに Kotlin を適用させていく
PPTX
Java で書かれたAndroid アプリに Kotlin を適用させていく
by
Kenichi Tatsuhama
PPTX
Kotlin が公式サポートになったので Kotlin の話
by
Kenichi Tatsuhama
PPTX
Kotlin
by
Shumpei Hozumi
PPTX
YJTC18 C-1 Kotlin導入の状況と展望
by
Yahoo!デベロッパーネットワーク
PDF
Kotlinアンチパターン
by
Recruit Lifestyle Co., Ltd.
PDF
Kotlinの紹介
by
Taro Nagasawa
PPTX
Kotlin 使いになりました
by
Kenichi Tatsuhama
PDF
Kotlinの紹介
by
豊明 尾古
PDF
LastaFluteでKotlinをはじめよう
by
Shinsuke Sugaya
PDF
20170618 Google I/O報告会in福岡
by
mokelab
PDF
Kotlin勉強会 in ehime
by
Eigoro Yamamura
PPTX
2018/2/20 Kotlin勉強会
by
虎の穴 開発室
PPTX
Java → Kotlin 変換 そのあとに。
by
Kenichi Tatsuhama
PDF
Kotlinではじめる Webアプリケーション入門
by
虎の穴 開発室
PDF
Kotlinで快適Android開発 #W8lt
by
Junpei Matsuda
PPTX
コードで感じるKotlin入門
by
iPride Co., Ltd.
PDF
Rubyistのためのkotlin紹介
by
豊明 尾古
PDF
Kotlin handson
by
Ryuto Yasugi
PDF
かわいいKotlinでAndroidアプリをつくろう
by
gyro_s
PDF
Kotlinことはじめ -まずは触って動かしてみよう-
by
CASAREAL, Inc.
Java で書かれたAndroid アプリに Kotlin を適用させていく
by
Kenichi Tatsuhama
Kotlin が公式サポートになったので Kotlin の話
by
Kenichi Tatsuhama
Kotlin
by
Shumpei Hozumi
YJTC18 C-1 Kotlin導入の状況と展望
by
Yahoo!デベロッパーネットワーク
Kotlinアンチパターン
by
Recruit Lifestyle Co., Ltd.
Kotlinの紹介
by
Taro Nagasawa
Kotlin 使いになりました
by
Kenichi Tatsuhama
Kotlinの紹介
by
豊明 尾古
LastaFluteでKotlinをはじめよう
by
Shinsuke Sugaya
20170618 Google I/O報告会in福岡
by
mokelab
Kotlin勉強会 in ehime
by
Eigoro Yamamura
2018/2/20 Kotlin勉強会
by
虎の穴 開発室
Java → Kotlin 変換 そのあとに。
by
Kenichi Tatsuhama
Kotlinではじめる Webアプリケーション入門
by
虎の穴 開発室
Kotlinで快適Android開発 #W8lt
by
Junpei Matsuda
コードで感じるKotlin入門
by
iPride Co., Ltd.
Rubyistのためのkotlin紹介
by
豊明 尾古
Kotlin handson
by
Ryuto Yasugi
かわいいKotlinでAndroidアプリをつくろう
by
gyro_s
Kotlinことはじめ -まずは触って動かしてみよう-
by
CASAREAL, Inc.
More from Kenichi Tatsuhama
PDF
【技術的負債LT会】私たちの技術負債最前線〜過去と未来について〜 2024/08/01
by
Kenichi Tatsuhama
PDF
地方創生ワカモノ会合
by
Kenichi Tatsuhama
PDF
Google Analytics のデータ分析ハンズオン
by
Kenichi Tatsuhama
PDF
Sansan Tech Meetup Androidエンジニアが振り返る Google I/O
by
Kenichi Tatsuhama
PDF
知っておきたいFirebase の色んな上限について
by
Kenichi Tatsuhama
PDF
Android 開発の昔と今
by
Kenichi Tatsuhama
PDF
Firebase Extensions はじめの一歩
by
Kenichi Tatsuhama
PDF
Firebase & BigQuery で Android アプリの成⻑を支える
by
Kenichi Tatsuhama
PPTX
GDG DevFest Tokyo 2019 Day2 Special Hands-on
by
Kenichi Tatsuhama
PPTX
Firebase Summit 2019 Recap
by
Kenichi Tatsuhama
PPTX
Cloud Firestore を使って、Polling をやめたい話
by
Kenichi Tatsuhama
PPTX
Firebase hands on in Matsuyama
by
Kenichi Tatsuhama
PPTX
インドのインターネット環境との戦い方
by
Kenichi Tatsuhama
PPTX
インドの低速なネットワーク環境の攻略法
by
Kenichi Tatsuhama
PPTX
DroidKaigi 2018 参加報告会 Closing
by
Kenichi Tatsuhama
PPTX
企業スポンサー
by
Kenichi Tatsuhama
PPTX
参加したセッションのピックアップ
by
Kenichi Tatsuhama
PPTX
CFP(Call For Paper)を出す話
by
Kenichi Tatsuhama
PPTX
DroidKaigi 2018 参加報告会
by
Kenichi Tatsuhama
PPTX
DroidKaigi アプリの内部を見る
by
Kenichi Tatsuhama
【技術的負債LT会】私たちの技術負債最前線〜過去と未来について〜 2024/08/01
by
Kenichi Tatsuhama
地方創生ワカモノ会合
by
Kenichi Tatsuhama
Google Analytics のデータ分析ハンズオン
by
Kenichi Tatsuhama
Sansan Tech Meetup Androidエンジニアが振り返る Google I/O
by
Kenichi Tatsuhama
知っておきたいFirebase の色んな上限について
by
Kenichi Tatsuhama
Android 開発の昔と今
by
Kenichi Tatsuhama
Firebase Extensions はじめの一歩
by
Kenichi Tatsuhama
Firebase & BigQuery で Android アプリの成⻑を支える
by
Kenichi Tatsuhama
GDG DevFest Tokyo 2019 Day2 Special Hands-on
by
Kenichi Tatsuhama
Firebase Summit 2019 Recap
by
Kenichi Tatsuhama
Cloud Firestore を使って、Polling をやめたい話
by
Kenichi Tatsuhama
Firebase hands on in Matsuyama
by
Kenichi Tatsuhama
インドのインターネット環境との戦い方
by
Kenichi Tatsuhama
インドの低速なネットワーク環境の攻略法
by
Kenichi Tatsuhama
DroidKaigi 2018 参加報告会 Closing
by
Kenichi Tatsuhama
企業スポンサー
by
Kenichi Tatsuhama
参加したセッションのピックアップ
by
Kenichi Tatsuhama
CFP(Call For Paper)を出す話
by
Kenichi Tatsuhama
DroidKaigi 2018 参加報告会
by
Kenichi Tatsuhama
DroidKaigi アプリの内部を見る
by
Kenichi Tatsuhama
Java で書かれた Android アプリに Kotlin を適用させていく
1.
Java で書かれた Android アプリに Kotlin
を適用させていく 2018/02/03 Android Bazaar&Conference, Diverse 2018 UDON県 @ e-とぴあ香川 辰濱健一
2.
自己紹介 • 辰濱健一(たつはまけんいち) • 徳島県生まれ、神山町在住 •
GDG Shikoku スタッフ • Sansan 株式会社、名刺アプリ Eight のアプリ開発 • Twitter:@tatsuhama50 • Facebook:kenichi.tatsuhama 2
3.
ブース出してます 3 ラムネ・ステッカー・携帯クリーナー・野菜の種配布中!!
4.
徳島県神山町 4
5.
Sansan株式会社 神山ラボ 5
6.
Kotlin とは?
7.
Kotlin とは 7 • JetBrains
社が開発しているプログラミング言語 • JVM 上で動作する言語で、Java と完全に相互互換がある • Google I/O 2017 にて、Android の開発言語に選定
8.
Kotlin とは 8 • JetBrains
社が開発しているプログラミング言語 • JVM 上で動作する言語で、Java と完全に相互互換がある • Google I/O 2017 にて、Android の開発言語に選定 だけじゃない!
9.
Kotlin とは 9 • Native
iOS Support • Web Apps (Ktor) • Multiplatform Projects(Common Module)
10.
Kotlin とは 10 • Native
iOS Support • Web Apps (Ktor) • Multiplatform Projects(Common Module) もう、Kotlin は Android だけじゃない。 サーバも iOS も Kotlin で書ける!
11.
iOS で Kotlin •
DroidKaigi 2018 unofficial iOS app • https://github.com/kikuchy/DroidKaigi2018iOS 11
12.
iOS で Kotlin 12
13.
Kotlin の特徴
14.
Kotlin の特徴 • Null
安全 • 型の省略 • ラムダ式 • data class • 拡張関数 • 便利なコレクション関数 • デフォルト引数 14
15.
Kotlin の特徴 • Null
安全 • 型の省略 • ラムダ式 • data class • 拡張関数 • 便利なコレクション関数 • デフォルト引数 15
16.
Null 安全 • 型で
「null 不許容型」「null 許容型」が分かれる • Java の String は null 許容型 • → 「 null でない」という状態が型ではわからない • • 例)String の場合 • null 許容型:String? • null 不許容型:String 16
17.
Null 安全 17 • null
が来ないことが確実であれば… Java Kotlin
18.
Null 安全 • 型で
null を許容するか否かを表現できる • NullPointerException がなくなるわけではない! • 例)Kotlin の関数を Java から呼び出す • Kotlin の定義が non-null でも、Java から null を渡すことができてしまう… • → support annotation を付けておこう。 18 Java でも IDE が認識して、null チェックの必要性を判断してくれます Java
19.
Kotlin の特徴 • Null
安全 • 型の省略 • ラムダ式 • data class • 拡張関数 • 便利なコレクション関数 • デフォルト引数 19
20.
型の省略 20 Java Kotlin Kotlin ※型推論に時間が掛かるので、 型を書いた方が、コンパイルが速い
21.
Kotlin の特徴 • Null
安全 • 型の省略 • ラムダ式 • data class • 拡張関数 • 便利なコレクション関数 • デフォルト引数 21
22.
ラムダ式 • ラムダ式 • 関数の宣言なしに、関数オブジェクトを生成できる 22 Java Kotlin
23.
Kotlin の特徴 • Null
安全 • 型の省略 • ラムダ式 • data class • 拡張関数 • 便利なコレクション関数 • デフォルト引数 23
24.
Data class • モデルクラスでおなじみの関数を自動生成 •
各 getter, setter, equals, hashCode, … 24 Kotlin Java
25.
Kotlin の特徴 • Null
安全 • 型の省略 • ラムダ式 • data class • 拡張関数 • 便利なコレクション関数 • デフォルト引数 25
26.
拡張関数 • 他のクラスに関数を付け加えることができる 26
27.
Kotlin の特徴 • Null
安全 • 型の省略 • ラムダ式 • data class • 拡張関数 • 便利なコレクション関数 • デフォルト引数 27
28.
便利なコレクション関数 • filter:絞り込み • map:変換 •
sum() :合計 28
29.
Kotlin の特徴 • Null
安全 • 型の省略 • ラムダ式 • data class • 拡張関数 • 便利なコレクション関数 • デフォルト引数 29
30.
デフォルト引数 • 指定しなかった引数のデフォルト値を指定できる 30
31.
既存の Android アプリに Kotlin を 導入していく
32.
Java プロジェクトへ Kotlin
を! • プロジェクト内に Kotlin を部分導入可能(ファイル単位) • Android Studio の Java to Kotlin コンバータが便利 • Java からの見え方を知っておく • Java → Kotlin するタイミング 32
33.
Java プロジェクトへ Kotlin
を! • プロジェクト内に Kotlin を部分導入可能(ファイル単位) • Android Studio の Java to Kotlin コンバータが便利 • Java からの見え方を知っておく • Java → Kotlin するタイミング 33
34.
Kotlin の部分導入(ファイル単位) • 同じパッケージ内に
java ファイルと kt ファイルの共存が可能 34 Kotlin Java Java Kotlin Java
35.
Kotlin の部分導入(ファイル単位) • 1つの
Java ファイル内の関数を切り出して、Kotlin で記述す るという方法も… 35 Java Java Kotlin 切り出し 呼出
36.
Java プロジェクトへ Kotlin
を! • プロジェクト内に Kotlin を部分導入可能(ファイル単位) • Android Studio の Java to Kotlin コンバータが便利 • Java からの見え方を知っておく 36
37.
Convert to Kotlin 37
38.
Convert to Kotlin 38 Java Kotlin
39.
Convert to Kotlin •
だいぶ Converter も賢くなってきた • とはいえ、まだまだ過信してはいけない • Converter が判断できない部分は手直しが必要 • そのままビルドが通とは限らない • 実行時エラーになることも 39
40.
変換後のエラー • 例)Parcelable な
Model 40 Java
41.
変換後のエラー 41
42.
Convert to Kotlin
後の手直し • 必要があれば、nullable → non-null に (String? → String) • モデルクラスであれば、 data class に 他にも… • var(書き換え可能な変数) → val (書き換え不可な変数) に • Kotlin の言語機能(コレクション関数など)に置き換える 42
43.
Java プロジェクトへ Kotlin
を! • プロジェクト内に Kotlin を部分導入可能(ファイル単位) • Android Studio の Java to Kotlin コンバータが便利 • Java からの見え方を知っておく • Java → Kotlin するタイミング 43
44.
実行時エラー 44 CREATOR が見つからない???
45.
Java からの見え方に配慮を • 100%
Java と互換性があるとはいえ、 Java からの見え方やコンバート結果は気をつけておく必要が ある • 例) Kotlin にしかない拡張関数も Java から使えて呼べる → どうやって Java から呼ぶ?? 45
46.
Java から Kotlin ファイルは どう見える?
47.
Java から Kotlin ファイルは どう見える? これを知っておけば、Java
と Kotlin が混在しても怖くない!!
48.
みてみよう • Android Studio
Tools > Kotlin > Show Kotlin Bytecode 48
49.
みてみよう 49 Kotlin Kotlin Bytecode
50.
みてみよう 50 Kotlin Kotlin Bytecode to Java
51.
みてみよう 51 Java
52.
プロパティ 52 JavaKotlin var プロパティは setter /
getter が生成されている val なら getter のみ
53.
プロパティの呼び出し方 53 Kotlin Java ※public field へのアクセスに見えるが、
getter 経由になっている
54.
Non-null 型 54 JavaKotlin Non-null 型の実現は Java
から見ると、 アノテーションでの宣言と null 例外にすぎない!
55.
non-null の Java
からの見え方 • アノテーションの付与でしかないので、警告しか出せない • → コンパイル&実行できて、実行時エラー 55
56.
static 関数の見え方 56 Kotlin Java static なCompanion
子クラス内に 関数が生成される
57.
static 関数の呼び出し方 57 Kotlin Java ※Companion オブジェクト経由の呼び出しになる
58.
static 関数&変数の見え方の制御 58 Java • 全ての呼び出し元に
Companion をつけなければいけない。。。 • Parcelable なオブジェクトは クラス.CREATOR がある前提 (このままでは、クラス.Companion.CREATOR になり、機能しない)
59.
Static 関数の見え方の制御 • @JvmStatic
アノテーション Companion を経由しない static 関数呼び出しを可能にする 59 Book.staticFunction() でアクセス可能
60.
static 変数の見え方の制御 • @JvmField
アノテーション Companion を経由しない static 変数呼び出しを可能にする 60 Parcelable なオブジェクトの CREATOR フィールドには @JvmField 付与必須!
61.
拡張関数の見え方 61 Kotlin Java 拡張関数は、XXKt クラスの static
関数として出力される
62.
拡張関数を呼び出す 62 Java Kotlin ※第一引数は拡張関数が生えているクラスのインスタンス
63.
デフォルト引数の見え方 63 Kotlin Java Java から見える function(String):引数1つ は存在しない・・・!?
64.
デフォルト引数の関数を呼ぶために • @JvmOverloads アノテーション デフォルト引数なしの関数のオーバロード関数を生成する 64
65.
@JvmOverloads の付与 65 Kotlin Java
66.
Java からの 見え方 まとめ
67.
Java からの見え方 67 項目 Java
からの見え方 プロパティ getter / setter non-null @NotNull アノテーション null 時に例外を throw する関数 Static 関数 Companion オブジェクト経由呼び出し or @JvmStatic の付与 Static 変数 Companion オブジェクト経由呼び出し or @JvmField の付与 拡張関数 XXXKt.function(reciver) 形式での呼び出し デフォルト引数 @JvmOverloads の付与
68.
Java プロジェクトへ Kotlin
を! • プロジェクト内に Kotlin を部分導入可能(ファイル単位) • Android Studio の Java to Kotlin コンバータが便利 • Java からの見え方を知っておく • Java → Kotlin するタイミング 68
69.
Java → Kotlin
するタイミング • 基本的に大きな機能修正をする場合に行う (Kotlin 変換だけのリファクタはほぼしない。開発&テストされる機会に変換する) • する場合も、1ファイルごとに動作確認しながら • Java ファイルの数行の編集なら、Java で書く (レビューコストがかさまないように) • モデルクラスは、触るタイミングで Kotlin に移行しても安心 (機能がシンプル、レビューも容易) ※新規コードは全て Kotlin で書いています 69
70.
Java → Kotlin
の例 • 例)Parcelable なオブジェクト 70 Java Kotlin
71.
Java → Kotlin
の例 • 例)Parcelable なオブジェクト 71 Java Kotlin ↓エラー修正
72.
Java → Kotlin
の例 • 例)Parcelable なオブジェクト 72 ちゃんと Java から見えるように
73.
Java → Kotlin
の例 • 例)Parcelable なオブジェクト 73 ↓Kotlin の機能を使う(Single Expression)
74.
Java → Kotlin
の例 • 例)Parcelable なオブジェクト 74 まだ長い… さらに、Kotlin の 機能を使うと…!
75.
Java → Kotlin
の例 • 例)Parcelable なオブジェクト 75 これだけ(実質2行)で OK ! ※まだ Experimental な Kotlin Extensions の @Parcelize を使っています
76.
Java からの 見え方を意識すれば、 Kotlin のプロジェクト 投入も怖くない!
77.
Let’s enjoy Kotlin
79.
告知
80.
DroidKaigi 参加報告会 • 2/8(木),
9(金) に東京で開催される DroidKaigi 2018 の参加 報告会を開催します • 日時:2/25(日) 13:00〜17:00 • 場所:大同生命徳島ビル 1 階(徳島駅周辺) • 申込:GDG Shikoku の Compass にて! 80
Download