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
4,204 views
Java で書かれたAndroid アプリに Kotlin を適用させていく
2017/11/18 DevFest Shikoku 2017@徳島大学
Software
◦
Read more
3
Save
Share
Embed
Embed presentation
Download
Download to read offline
1
/ 74
2
/ 74
3
/ 74
4
/ 74
5
/ 74
6
/ 74
7
/ 74
8
/ 74
9
/ 74
10
/ 74
11
/ 74
12
/ 74
Most read
13
/ 74
14
/ 74
Most read
15
/ 74
16
/ 74
17
/ 74
18
/ 74
Most read
19
/ 74
20
/ 74
21
/ 74
22
/ 74
23
/ 74
24
/ 74
25
/ 74
26
/ 74
27
/ 74
28
/ 74
29
/ 74
30
/ 74
31
/ 74
32
/ 74
33
/ 74
34
/ 74
35
/ 74
36
/ 74
37
/ 74
38
/ 74
39
/ 74
40
/ 74
41
/ 74
42
/ 74
43
/ 74
44
/ 74
45
/ 74
46
/ 74
47
/ 74
48
/ 74
49
/ 74
50
/ 74
51
/ 74
52
/ 74
53
/ 74
54
/ 74
55
/ 74
56
/ 74
57
/ 74
58
/ 74
59
/ 74
60
/ 74
61
/ 74
62
/ 74
63
/ 74
64
/ 74
65
/ 74
66
/ 74
67
/ 74
68
/ 74
69
/ 74
70
/ 74
71
/ 74
72
/ 74
73
/ 74
74
/ 74
More Related Content
PDF
モノタロウの商品データ連携について
by
株式会社MonotaRO Tech Team
PDF
TLS 1.3 と 0-RTT のこわ〜い話
by
Kazuho Oku
PDF
Try new transport protocol SRT (ver. 2)
by
Tetsuyuki Kobayashi
PDF
Hokkaido.cap #osc11do Wiresharkを使いこなそう!
by
Panda Yamaki
PPTX
工程師必備第一工具 - Git
by
Alan Tsai
PPTX
100 G超通信時代の安定した高品質な伝送インフラ構築づくり
by
Tomohiro Sakamoto(Onodera)
PPTX
Spring超入門-Springと出会ってから1年半-
by
Ryosuke Uchitate
PDF
エムスリーのQAチームが目指すもの
by
Yuki Shiromoto
モノタロウの商品データ連携について
by
株式会社MonotaRO Tech Team
TLS 1.3 と 0-RTT のこわ〜い話
by
Kazuho Oku
Try new transport protocol SRT (ver. 2)
by
Tetsuyuki Kobayashi
Hokkaido.cap #osc11do Wiresharkを使いこなそう!
by
Panda Yamaki
工程師必備第一工具 - Git
by
Alan Tsai
100 G超通信時代の安定した高品質な伝送インフラ構築づくり
by
Tomohiro Sakamoto(Onodera)
Spring超入門-Springと出会ってから1年半-
by
Ryosuke Uchitate
エムスリーのQAチームが目指すもの
by
Yuki Shiromoto
Viewers also liked
PDF
Firebaseの新しいデータベース
by
Hironytic
PDF
JAWS DAYS 2017 ランチセッション
by
Tetsuya Mase
PDF
Who's using Polymer
by
Hiroyuki Hara
PDF
PWA, SEO, SSR
by
Hiroyuki Hara
PDF
[Azure Deep Dive] クラウド デザイン パターン ~優れたシステム構築のためのガイダンス~
by
Naoki (Neo) SATO
PDF
新入社員のための大規模ゲーム開発入門 サーバサイド編
by
infinite_loop
PDF
ゲームサーバ開発現場の考え方
by
Daisaku Mochizuki
PPTX
サーバサイド Kotlin
by
Hiroki Ohtani
Firebaseの新しいデータベース
by
Hironytic
JAWS DAYS 2017 ランチセッション
by
Tetsuya Mase
Who's using Polymer
by
Hiroyuki Hara
PWA, SEO, SSR
by
Hiroyuki Hara
[Azure Deep Dive] クラウド デザイン パターン ~優れたシステム構築のためのガイダンス~
by
Naoki (Neo) SATO
新入社員のための大規模ゲーム開発入門 サーバサイド編
by
infinite_loop
ゲームサーバ開発現場の考え方
by
Daisaku Mochizuki
サーバサイド Kotlin
by
Hiroki Ohtani
Similar to Java で書かれたAndroid アプリに Kotlin を適用させていく
PPTX
Java で書かれた Android アプリに Kotlin を適用させていく
by
Kenichi Tatsuhama
PPTX
Kotlin が公式サポートになったので Kotlin の話
by
Kenichi Tatsuhama
PPTX
Kotlin
by
Shumpei Hozumi
PPTX
Kotlin 使いになりました
by
Kenichi Tatsuhama
PDF
Kotlinアンチパターン
by
Recruit Lifestyle Co., Ltd.
PPTX
YJTC18 C-1 Kotlin導入の状況と展望
by
Yahoo!デベロッパーネットワーク
PDF
20170618 Google I/O報告会in福岡
by
mokelab
PDF
Kotlin勉強会 in ehime
by
Eigoro Yamamura
PPTX
Java → Kotlin 変換 そのあとに。
by
Kenichi Tatsuhama
PDF
Kotlinの紹介
by
Taro Nagasawa
PDF
Kotlinの紹介
by
豊明 尾古
PDF
LastaFluteでKotlinをはじめよう
by
Shinsuke Sugaya
PPTX
2018/2/20 Kotlin勉強会
by
虎の穴 開発室
PDF
Kotlinで快適Android開発 #W8lt
by
Junpei Matsuda
PDF
かわいいKotlinでAndroidアプリをつくろう
by
gyro_s
PDF
Rubyistのためのkotlin紹介
by
豊明 尾古
PPTX
コードで感じるKotlin入門
by
iPride Co., Ltd.
PDF
Kotlinではじめる Webアプリケーション入門
by
虎の穴 開発室
PDF
Better Java なだけじゃない。Kotlin の思想と未来
by
史也 久米
PPTX
Java → Kotlin 変換 そのあとに。
by
Kenichi Tatsuhama
Java で書かれた Android アプリに Kotlin を適用させていく
by
Kenichi Tatsuhama
Kotlin が公式サポートになったので Kotlin の話
by
Kenichi Tatsuhama
Kotlin
by
Shumpei Hozumi
Kotlin 使いになりました
by
Kenichi Tatsuhama
Kotlinアンチパターン
by
Recruit Lifestyle Co., Ltd.
YJTC18 C-1 Kotlin導入の状況と展望
by
Yahoo!デベロッパーネットワーク
20170618 Google I/O報告会in福岡
by
mokelab
Kotlin勉強会 in ehime
by
Eigoro Yamamura
Java → Kotlin 変換 そのあとに。
by
Kenichi Tatsuhama
Kotlinの紹介
by
Taro Nagasawa
Kotlinの紹介
by
豊明 尾古
LastaFluteでKotlinをはじめよう
by
Shinsuke Sugaya
2018/2/20 Kotlin勉強会
by
虎の穴 開発室
Kotlinで快適Android開発 #W8lt
by
Junpei Matsuda
かわいいKotlinでAndroidアプリをつくろう
by
gyro_s
Rubyistのためのkotlin紹介
by
豊明 尾古
コードで感じるKotlin入門
by
iPride Co., Ltd.
Kotlinではじめる Webアプリケーション入門
by
虎の穴 開発室
Better Java なだけじゃない。Kotlin の思想と未来
by
史也 久米
Java → Kotlin 変換 そのあとに。
by
Kenichi Tatsuhama
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
を適用させていく 2017/11/18 DevFest Shikoku 2017 @徳島大学 辰濱健一
2.
自己紹介 • 辰濱健一(たつはまけんいち) • 徳島県生まれ、神山町在住 •
GDG Shikoku スタッフ • Sansan 株式会社、名刺アプリ Eight のアプリ開発 • Twitter:@tatsuhama50 • Facebook:kenichi.tatsuhama 2
3.
Sansan株式会社 神山ラボ 3
4.
Kotlin とは?
5.
Kotlin とは 5 • JetBrains
社が開発しているプログラミング言語 • JVM 上で動作する言語で、Java と完全に相互互換がある • Google I/O 2017 にて、Android の開発言語に選定
6.
Kotlin とは 6 • JetBrains
社が開発しているプログラミング言語 • JVM 上で動作する言語で、Java と完全に相互互換がある • Google I/O 2017 にて、Android の開発言語に選定 だけじゃない!
7.
Kotlin とは 7 • Native
iOS Support • Web Apps (Ktor) • Multiplatform Projects
8.
Kotlin とは 8 • Native
iOS Support • Web Apps (Ktor) • Multiplatform Projects もう、Kotlin は Android だけじゃない。 サーバも Web も iOS も Kotlin で書ける!
9.
Kotlin の特徴
10.
Kotlin の特徴 • Null
安全 • 型の省略 • ラムダ式 • data class • 拡張関数 • 便利なコレクション関数 • デフォルト引数 10
11.
Kotlin の特徴 • Null
安全 • 型の省略 • ラムダ式 • data class • 拡張関数 • 便利なコレクション関数 • デフォルト引数 11
12.
Null 安全 • 型で
「null 不許容型」「null 許容型」が分かれる • Java の String は null 許容型 • → 「 null でない」という状態が型ではわからない • • 例)String の場合 • null 許容型:String? • null 不許容型:String 12
13.
Null 安全 13 • null
が来ないことが確実であれば… Java Kotlin
14.
Null 安全 • 型で
null を許容するか否かを表現できる • NullPointerException がなくなるわけではない! • 例)Kotlin の関数を Java から呼び出す • Kotlin の定義が non-null でも、Java から null を渡すことができてしまう… • → support annotation を付けておこう。 14 Java でも IDE が認識して、null チェックの必要性を判断してくれます Java
15.
Kotlin の特徴 • Null
安全 • 型の省略 • ラムダ式 • data class • 拡張関数 • 便利なコレクション関数 • デフォルト引数 15
16.
型の省略 16 Java Kotlin Kotlin ※型推論に時間が掛かるので、 型を書いた方が、コンパイルが速い
17.
Kotlin の特徴 • Null
安全 • 型の省略 • ラムダ式 • data class • 拡張関数 • 便利なコレクション関数 • デフォルト引数 17
18.
ラムダ式 • ラムダ式 • 関数の宣言なしに、関数オブジェクトを生成できる 18 Java Kotlin
19.
Kotlin の特徴 • Null
安全 • 型の省略 • ラムダ式 • data class • 拡張関数 • 便利なコレクション関数 • デフォルト引数 19
20.
Data class • モデルクラスでおなじみの関数を自動生成 •
各 getter, setter, equals, hashCode, … 20 Kotlin Java
21.
Kotlin の特徴 • Null
安全 • 型の省略 • ラムダ式 • data class • 拡張関数 • 便利なコレクション関数 • デフォルト引数 21
22.
拡張関数 • 他のクラスに関数を付け加えることができる 22
23.
Kotlin の特徴 • Null
安全 • 型の省略 • ラムダ式 • data class • 拡張関数 • 便利なコレクション関数 • デフォルト引数 23
24.
便利なコレクション関数 • filter:絞り込み • map:変換 •
sum() :合計 24
25.
Kotlin の特徴 • Null
安全 • 型の省略 • ラムダ式 • data class • 拡張関数 • 便利なコレクション関数 • デフォルト引数 25
26.
デフォルト引数 • 指定しなかった引数のデフォルト値を指定できる 26
27.
既存の Android アプリに 適用させていく
28.
Java プロジェクトへ Kotlin
を! • プロジェクト内に Kotlin を部分導入可能(ファイル単位) • Android Studio の Java to Kotlin コンバータが便利 • Java からの見え方を知っておく • Java → Kotlin するタイミング 28
29.
Java プロジェクトへ Kotlin
を! • プロジェクト内に Kotlin を部分導入可能(ファイル単位) • Android Studio の Java to Kotlin コンバータが便利 • Java からの見え方を知っておく • Java → Kotlin するタイミング 29
30.
Kotlin の部分導入(ファイル単位) • 同じパッケージ内に
java ファイルと kt ファイルの共存が可能 30 Kotlin Java Java Kotlin Java
31.
Kotlin の部分導入(ファイル単位) • 1つの
Java ファイル内の関数を切り出して、Kotlin で記述す るという方法も… 31 Java Java Kotlin 切り出し 呼出
32.
Java プロジェクトへ Kotlin
を! • プロジェクト内に Kotlin を部分導入可能(ファイル単位) • Android Studio の Java to Kotlin コンバータが便利 • Java からの見え方を知っておく 32
33.
Convert to Kotlin 33
34.
Convert to Kotlin 34 Java Kotlin
35.
Convert to Kotlin •
だいぶ Converter も賢くなってきた • とはいえ、まだまだ過信してはいけない • Converter が判断できない部分は手直しが必要 • そのままビルドが通とは限らない • 実行時エラーになることも 35
36.
変換後のエラー • 例)Parcelable な
Model 36 Java
37.
変換後のエラー 37
38.
Convert to Kotlin
後の手直し • 必要があれば、nullable → non-null に (String? → String) • モデルクラスであれば、 data class に 他にも… • var(書き換え可能な変数) → val (書き換え不可な変数) に • Kotlin の言語機能(コレクション関数など)に置き換える 38
39.
Java プロジェクトへ Kotlin
を! • プロジェクト内に Kotlin を部分導入可能(ファイル単位) • Android Studio の Java to Kotlin コンバータが便利 • Java からの見え方を知っておく • Java → Kotlin するタイミング 39
40.
実行時エラー 40 CREATOR が見つからない???
41.
Java からの見え方に配慮を • 100%
Java と互換性があるとはいえ、 Java からの見え方やコンバート結果は気をつけておく必要が ある • 例) Kotlin にしかない拡張関数も Java から使えて呼べる → どうやって Java から呼ぶ?? 41
42.
Java から Kotlin ファイルは どう見える?
43.
Java から Kotlin ファイルは どう見える? これを知っておけば、Java
と Kotlin が混在しても怖くない!!
44.
みてみよう • Android Studio
Tools > Kotlin > Show Kotlin Bytecode 44
45.
みてみよう 45 Kotlin Kotlin Bytecode
46.
みてみよう 46 Kotlin Kotlin Bytecode to Java
47.
みてみよう 47 Java
48.
プロパティ 48 JavaKotlin var プロパティは setter /
getter が生成されている val なら getter のみ
49.
プロパティの呼び出し方 49 Kotlin Java ※public field へのアクセスに見えるが、
getter 経由になっている
50.
Non-null 型 50 JavaKotlin Non-null 型の実現は Java
から見ると、 アノテーションでの宣言と null 例外にすぎない!
51.
non-null の Java
からの見え方 • アノテーションの付与でしかないので、警告しか出せない • → コンパイル&実行できて、実行時エラー 51
52.
static 関数の見え方 52 Kotlin Java static なCompanion
子クラス内に 関数が生成される
53.
static 関数の呼び出し方 53 Kotlin Java ※Companion オブジェクト経由の呼び出しになる
54.
static 関数&変数の見え方の制御 54 Java • 全ての呼び出し元に
Companion をつけなければいけない。。。 • Parcelable なオブジェクトは クラス.CREATOR がある前提 (このままでは、クラス.Companion.CREATOR になり、機能しない)
55.
Static 関数の見え方の制御 • @JvmStatic
アノテーション Companion を経由しない static 関数呼び出しを可能にする 55 Book.staticFunction() でアクセス可能
56.
static 変数の見え方の制御 • @JvmField
アノテーション Companion を経由しない static 変数呼び出しを可能にする 56 Parcelable なオブジェクトの CREATOR フィールドには @JvmField 付与必須!
57.
拡張関数の見え方 57 Kotlin Java 拡張関数は、XXKt クラスの static
関数として出力される
58.
拡張関数を呼び出す 58 Java Kotlin ※第一引数は拡張関数が生えているクラスのインスタンス
59.
デフォルト引数の見え方 59 Kotlin Java Java から見える function(String):引数1つ は存在しない・・・!?
60.
デフォルト引数の関数を呼ぶために • @JvmOverloads アノテーション デフォルト引数なしの関数のオーバロード関数を生成する 60
61.
@JvmOverloads の付与 61 Kotlin Java
62.
Java からの 見え方 まとめ
63.
Java からの見え方 63 項目 Java
からの見え方 プロパティ getter / setter non-null @NotNull アノテーション null 時に例外を throw する関数 Static 関数 Companion オブジェクト経由呼び出し or @JvmStatic の付与 Static 変数 Companion オブジェクト経由呼び出し or @JvmField の付与 拡張関数 XXXKt.function(reciver) 形式での呼び出し デフォルト引数 @JvmOverloads の付与
64.
Java プロジェクトへ Kotlin
を! • プロジェクト内に Kotlin を部分導入可能(ファイル単位) • Android Studio の Java to Kotlin コンバータが便利 • Java からの見え方を知っておく • Java → Kotlin するタイミング 64
65.
Java → Kotlin
するタイミング • 基本的に大きな機能修正をする場合に行う (Kotlin 変換だけのリファクタはほぼしない。開発&テストされる機会に変換する) • する場合も、1ファイルごとに動作確認しながら • Java ファイルの数行の編集なら、Java で書く (レビューコストがかさまないように) • モデルクラスは、触るタイミングで Kotlin に移行しても安心 (機能がシンプル、レビューも容易) ※新規コードは全て Kotlin で書いています 65
66.
Java → Kotlin
の例 • 例)Parcelable なオブジェクト 66 Java Kotlin
67.
Java → Kotlin
の例 • 例)Parcelable なオブジェクト 67 Java Kotlin ↓エラー修正
68.
Java → Kotlin
の例 • 例)Parcelable なオブジェクト 68 ちゃんと Java から見えるように
69.
Java → Kotlin
の例 • 例)Parcelable なオブジェクト 69 ↓Kotlin の機能を使う(Single Expression)
70.
Java → Kotlin
の例 • 例)Parcelable なオブジェクト 70 まだ長い… さらに、Kotlin の 機能を使うと…!
71.
Java → Kotlin
の例 • 例)Parcelable なオブジェクト 71 これだけ(実質2行)で OK ! ※まだ Experimental な Kotlin Extensions の @Parcelize を使っています
72.
Java からの 見え方を意識すれば、 Kotlin のプロジェクト 投入も怖くない!
73.
Let’s enjoy Kotlin
Download