SlideShare a Scribd company logo
1 of 74
Java で書かれた
Android アプリに
Kotlin を適用させていく
2017/11/18
DevFest Shikoku 2017
@徳島大学
辰濱健一
自己紹介
• 辰濱健一(たつはまけんいち)
• 徳島県生まれ、神山町在住
• GDG Shikoku スタッフ
• Sansan 株式会社、名刺アプリ Eight のアプリ開発
• Twitter:@tatsuhama50
• Facebook:kenichi.tatsuhama
2
Sansan株式会社 神山ラボ
3
Kotlin とは?
Kotlin とは
5
• JetBrains 社が開発しているプログラミング言語
• JVM 上で動作する言語で、Java と完全に相互互換がある
• Google I/O 2017 にて、Android の開発言語に選定
Kotlin とは
6
• JetBrains 社が開発しているプログラミング言語
• JVM 上で動作する言語で、Java と完全に相互互換がある
• Google I/O 2017 にて、Android の開発言語に選定
だけじゃない!
Kotlin とは
7
• Native iOS Support
• Web Apps (Ktor)
• Multiplatform Projects
Kotlin とは
8
• Native iOS Support
• Web Apps (Ktor)
• Multiplatform Projects
もう、Kotlin は Android だけじゃない。
サーバも Web も iOS も Kotlin で書ける!
Kotlin の特徴
Kotlin の特徴
• Null 安全
• 型の省略
• ラムダ式
• data class
• 拡張関数
• 便利なコレクション関数
• デフォルト引数
10
Kotlin の特徴
• Null 安全
• 型の省略
• ラムダ式
• data class
• 拡張関数
• 便利なコレクション関数
• デフォルト引数
11
Null 安全
• 型で 「null 不許容型」「null 許容型」が分かれる
• Java の String は null 許容型
• → 「 null でない」という状態が型ではわからない
•
• 例)String の場合
• null 許容型:String?
• null 不許容型:String
12
Null 安全
13
• null が来ないことが確実であれば… Java
Kotlin
Null 安全
• 型で null を許容するか否かを表現できる
• NullPointerException がなくなるわけではない!
• 例)Kotlin の関数を Java から呼び出す
• Kotlin の定義が non-null でも、Java から null を渡すことができてしまう…
• → support annotation を付けておこう。
14
Java でも IDE が認識して、null チェックの必要性を判断してくれます
Java
Kotlin の特徴
• Null 安全
• 型の省略
• ラムダ式
• data class
• 拡張関数
• 便利なコレクション関数
• デフォルト引数
15
型の省略
16
Java
Kotlin
Kotlin
※型推論に時間が掛かるので、
型を書いた方が、コンパイルが速い
Kotlin の特徴
• Null 安全
• 型の省略
• ラムダ式
• data class
• 拡張関数
• 便利なコレクション関数
• デフォルト引数
17
ラムダ式
• ラムダ式
• 関数の宣言なしに、関数オブジェクトを生成できる
18
Java
Kotlin
Kotlin の特徴
• Null 安全
• 型の省略
• ラムダ式
• data class
• 拡張関数
• 便利なコレクション関数
• デフォルト引数
19
Data class
• モデルクラスでおなじみの関数を自動生成
• 各 getter, setter, equals, hashCode, …
20
Kotlin
Java
Kotlin の特徴
• Null 安全
• 型の省略
• ラムダ式
• data class
• 拡張関数
• 便利なコレクション関数
• デフォルト引数
21
拡張関数
• 他のクラスに関数を付け加えることができる
22
Kotlin の特徴
• Null 安全
• 型の省略
• ラムダ式
• data class
• 拡張関数
• 便利なコレクション関数
• デフォルト引数
23
便利なコレクション関数
• filter:絞り込み
• map:変換
• sum() :合計
24
Kotlin の特徴
• Null 安全
• 型の省略
• ラムダ式
• data class
• 拡張関数
• 便利なコレクション関数
• デフォルト引数
25
デフォルト引数
• 指定しなかった引数のデフォルト値を指定できる
26
既存の
Android アプリに
適用させていく
Java プロジェクトへ Kotlin を!
• プロジェクト内に Kotlin を部分導入可能(ファイル単位)
• Android Studio の Java to Kotlin コンバータが便利
• Java からの見え方を知っておく
• Java → Kotlin するタイミング
28
Java プロジェクトへ Kotlin を!
• プロジェクト内に Kotlin を部分導入可能(ファイル単位)
• Android Studio の Java to Kotlin コンバータが便利
• Java からの見え方を知っておく
• Java → Kotlin するタイミング
29
Kotlin の部分導入(ファイル単位)
• 同じパッケージ内に java ファイルと kt ファイルの共存が可能
30
Kotlin
Java
Java
Kotlin
Java
Kotlin の部分導入(ファイル単位)
• 1つの Java ファイル内の関数を切り出して、Kotlin で記述す
るという方法も…
31
Java
Java
Kotlin
切り出し
呼出
Java プロジェクトへ Kotlin を!
• プロジェクト内に Kotlin を部分導入可能(ファイル単位)
• Android Studio の Java to Kotlin コンバータが便利
• Java からの見え方を知っておく
32
Convert to Kotlin
33
Convert to Kotlin
34
Java
Kotlin
Convert to Kotlin
• だいぶ Converter も賢くなってきた
• とはいえ、まだまだ過信してはいけない
• Converter が判断できない部分は手直しが必要
• そのままビルドが通とは限らない
• 実行時エラーになることも
35
変換後のエラー
• 例)Parcelable な Model
36
Java
変換後のエラー
37
Convert to Kotlin 後の手直し
• 必要があれば、nullable → non-null に
(String? → String)
• モデルクラスであれば、 data class に
他にも…
• var(書き換え可能な変数) → val (書き換え不可な変数) に
• Kotlin の言語機能(コレクション関数など)に置き換える
38
Java プロジェクトへ Kotlin を!
• プロジェクト内に Kotlin を部分導入可能(ファイル単位)
• Android Studio の Java to Kotlin コンバータが便利
• Java からの見え方を知っておく
• Java → Kotlin するタイミング
39
実行時エラー
40
CREATOR が見つからない???
Java からの見え方に配慮を
• 100% Java と互換性があるとはいえ、
Java からの見え方やコンバート結果は気をつけておく必要が
ある
• 例)
Kotlin にしかない拡張関数も Java から使えて呼べる
→ どうやって Java から呼ぶ??
41
Java から
Kotlin ファイルは
どう見える?
Java から
Kotlin ファイルは
どう見える?
これを知っておけば、Java と Kotlin が混在しても怖くない!!
みてみよう
• Android Studio Tools > Kotlin > Show Kotlin Bytecode
44
みてみよう
45
Kotlin
Kotlin
Bytecode
みてみよう
46
Kotlin
Kotlin
Bytecode
to Java
みてみよう
47
Java
プロパティ
48
JavaKotlin
var プロパティは
setter / getter
が生成されている
val なら getter のみ
プロパティの呼び出し方
49
Kotlin
Java
※public field へのアクセスに見えるが、 getter 経由になっている
Non-null 型
50
JavaKotlin
Non-null 型の実現は
Java から見ると、
アノテーションでの宣言と
null 例外にすぎない!
non-null の Java からの見え方
• アノテーションの付与でしかないので、警告しか出せない
• → コンパイル&実行できて、実行時エラー
51
static 関数の見え方
52
Kotlin
Java
static なCompanion 子クラス内に
関数が生成される
static 関数の呼び出し方
53
Kotlin
Java
※Companion オブジェクト経由の呼び出しになる
static 関数&変数の見え方の制御
54
Java
• 全ての呼び出し元に Companion をつけなければいけない。。。
• Parcelable なオブジェクトは クラス.CREATOR がある前提
(このままでは、クラス.Companion.CREATOR になり、機能しない)
Static 関数の見え方の制御
• @JvmStatic アノテーション
Companion を経由しない static 関数呼び出しを可能にする
55
Book.staticFunction() でアクセス可能
static 変数の見え方の制御
• @JvmField アノテーション
Companion を経由しない static 変数呼び出しを可能にする
56
Parcelable なオブジェクトの
CREATOR フィールドには
@JvmField 付与必須!
拡張関数の見え方
57
Kotlin
Java
拡張関数は、XXKt クラスの static 関数として出力される
拡張関数を呼び出す
58
Java
Kotlin
※第一引数は拡張関数が生えているクラスのインスタンス
デフォルト引数の見え方
59
Kotlin
Java
Java から見える
function(String):引数1つ
は存在しない・・・!?
デフォルト引数の関数を呼ぶために
• @JvmOverloads アノテーション
デフォルト引数なしの関数のオーバロード関数を生成する
60
@JvmOverloads の付与
61
Kotlin Java
Java からの
見え方
まとめ
Java からの見え方
63
項目 Java からの見え方
プロパティ getter / setter
non-null @NotNull アノテーション
null 時に例外を throw する関数
Static 関数 Companion オブジェクト経由呼び出し
or @JvmStatic の付与
Static 変数 Companion オブジェクト経由呼び出し
or @JvmField の付与
拡張関数 XXXKt.function(reciver) 形式での呼び出し
デフォルト引数 @JvmOverloads の付与
Java プロジェクトへ Kotlin を!
• プロジェクト内に Kotlin を部分導入可能(ファイル単位)
• Android Studio の Java to Kotlin コンバータが便利
• Java からの見え方を知っておく
• Java → Kotlin するタイミング
64
Java → Kotlin するタイミング
• 基本的に大きな機能修正をする場合に行う
(Kotlin 変換だけのリファクタはほぼしない。開発&テストされる機会に変換する)
• する場合も、1ファイルごとに動作確認しながら
• Java ファイルの数行の編集なら、Java で書く
(レビューコストがかさまないように)
• モデルクラスは、触るタイミングで Kotlin に移行しても安心
(機能がシンプル、レビューも容易)
※新規コードは全て Kotlin で書いています
65
Java → Kotlin の例
• 例)Parcelable なオブジェクト
66
Java
Kotlin
Java → Kotlin の例
• 例)Parcelable なオブジェクト
67
Java
Kotlin
↓エラー修正
Java → Kotlin の例
• 例)Parcelable なオブジェクト
68
ちゃんと Java から見えるように
Java → Kotlin の例
• 例)Parcelable なオブジェクト
69
↓Kotlin の機能を使う(Single Expression)
Java → Kotlin の例
• 例)Parcelable なオブジェクト
70
まだ長い…
さらに、Kotlin の
機能を使うと…!
Java → Kotlin の例
• 例)Parcelable なオブジェクト
71
これだけ(実質2行)で OK !
※まだ Experimental な Kotlin Extensions の @Parcelize を使っています
Java からの
見え方を意識すれば、
Kotlin のプロジェクト
投入も怖くない!
Let’s enjoy Kotlin
Java で書かれたAndroid アプリに Kotlin を適用させていく

More Related Content

What's hot

【Unity道場】AssetGraph入門 〜ノードを駆使しててUnityの面倒な手作業を自動化する方法〜
【Unity道場】AssetGraph入門 〜ノードを駆使しててUnityの面倒な手作業を自動化する方法〜【Unity道場】AssetGraph入門 〜ノードを駆使しててUnityの面倒な手作業を自動化する方法〜
【Unity道場】AssetGraph入門 〜ノードを駆使しててUnityの面倒な手作業を自動化する方法〜Unity Technologies Japan K.K.
 
CEDEC 2018 最速のC#の書き方 - C#大統一理論へ向けて性能的課題を払拭する
CEDEC 2018 最速のC#の書き方 - C#大統一理論へ向けて性能的課題を払拭するCEDEC 2018 最速のC#の書き方 - C#大統一理論へ向けて性能的課題を払拭する
CEDEC 2018 最速のC#の書き方 - C#大統一理論へ向けて性能的課題を払拭するYoshifumi Kawai
 
こわくない Git
こわくない Gitこわくない Git
こわくない GitKota Saito
 
アプリの鍵が消える時_Droid kaigi2018
アプリの鍵が消える時_Droid kaigi2018アプリの鍵が消える時_Droid kaigi2018
アプリの鍵が消える時_Droid kaigi2018ak_shio_555
 
OPC UAをオープンソースやフリーのソフトで遊んでみた
OPC UAをオープンソースやフリーのソフトで遊んでみたOPC UAをオープンソースやフリーのソフトで遊んでみた
OPC UAをオープンソースやフリーのソフトで遊んでみたミソジ
 
【Unite Tokyo 2019】今すぐ現場で覚えておきたい最適化技法 ~「ゲシュタルト・オーディン」開発における最適化事例~
【Unite Tokyo 2019】今すぐ現場で覚えておきたい最適化技法 ~「ゲシュタルト・オーディン」開発における最適化事例~【Unite Tokyo 2019】今すぐ現場で覚えておきたい最適化技法 ~「ゲシュタルト・オーディン」開発における最適化事例~
【Unite Tokyo 2019】今すぐ現場で覚えておきたい最適化技法 ~「ゲシュタルト・オーディン」開発における最適化事例~UnityTechnologiesJapan002
 
何となく勉強した気分になれるパーサ入門
何となく勉強した気分になれるパーサ入門何となく勉強した気分になれるパーサ入門
何となく勉強した気分になれるパーサ入門masayoshi takahashi
 
今なら間に合う分散型IDとEntra Verified ID
今なら間に合う分散型IDとEntra Verified ID今なら間に合う分散型IDとEntra Verified ID
今なら間に合う分散型IDとEntra Verified IDNaohiro Fujie
 
やはりお前らのMVCは間違っている
やはりお前らのMVCは間違っているやはりお前らのMVCは間違っている
やはりお前らのMVCは間違っているKoichi Tanaka
 
アプリ起動時間高速化 ~推測するな、計測せよ~
アプリ起動時間高速化 ~推測するな、計測せよ~アプリ起動時間高速化 ~推測するな、計測せよ~
アプリ起動時間高速化 ~推測するな、計測せよ~gree_tech
 
インタフェース完全に理解した
インタフェース完全に理解したインタフェース完全に理解した
インタフェース完全に理解したtorisoup
 
「関心の分離」と「疎結合」 ソフトウェアアーキテクチャのひとかけら
「関心の分離」と「疎結合」   ソフトウェアアーキテクチャのひとかけら「関心の分離」と「疎結合」   ソフトウェアアーキテクチャのひとかけら
「関心の分離」と「疎結合」 ソフトウェアアーキテクチャのひとかけらAtsushi Nakamura
 
国際会計基準(IFRS)適用企業の財務評価方法
国際会計基準(IFRS)適用企業の財務評価方法国際会計基準(IFRS)適用企業の財務評価方法
国際会計基準(IFRS)適用企業の財務評価方法Takahiro Kubo
 
誰もAddressableについて語らないなら、自分が語るしかない…ッッッッ
誰もAddressableについて語らないなら、自分が語るしかない…ッッッッ誰もAddressableについて語らないなら、自分が語るしかない…ッッッッ
誰もAddressableについて語らないなら、自分が語るしかない…ッッッッTatsuhiko Yamamura
 
Unityネイティブプラグインマニアクス #denatechcon
Unityネイティブプラグインマニアクス #denatechconUnityネイティブプラグインマニアクス #denatechcon
Unityネイティブプラグインマニアクス #denatechconDeNA
 
C++でできる!OS自作入門
C++でできる!OS自作入門C++でできる!OS自作入門
C++でできる!OS自作入門uchan_nos
 
2019 FIDO Tokyo Seminar - LINE PayへのFIDO2実装
2019 FIDO Tokyo Seminar - LINE PayへのFIDO2実装2019 FIDO Tokyo Seminar - LINE PayへのFIDO2実装
2019 FIDO Tokyo Seminar - LINE PayへのFIDO2実装FIDO Alliance
 
Unityでパフォーマンスの良いUIを作る為のTips
Unityでパフォーマンスの良いUIを作る為のTipsUnityでパフォーマンスの良いUIを作る為のTips
Unityでパフォーマンスの良いUIを作る為のTipsUnity Technologies Japan K.K.
 
Squirrel
SquirrelSquirrel
Squirrelmelpon
 

What's hot (20)

【Unity道場】AssetGraph入門 〜ノードを駆使しててUnityの面倒な手作業を自動化する方法〜
【Unity道場】AssetGraph入門 〜ノードを駆使しててUnityの面倒な手作業を自動化する方法〜【Unity道場】AssetGraph入門 〜ノードを駆使しててUnityの面倒な手作業を自動化する方法〜
【Unity道場】AssetGraph入門 〜ノードを駆使しててUnityの面倒な手作業を自動化する方法〜
 
CEDEC 2018 最速のC#の書き方 - C#大統一理論へ向けて性能的課題を払拭する
CEDEC 2018 最速のC#の書き方 - C#大統一理論へ向けて性能的課題を払拭するCEDEC 2018 最速のC#の書き方 - C#大統一理論へ向けて性能的課題を払拭する
CEDEC 2018 最速のC#の書き方 - C#大統一理論へ向けて性能的課題を払拭する
 
こわくない Git
こわくない Gitこわくない Git
こわくない Git
 
アプリの鍵が消える時_Droid kaigi2018
アプリの鍵が消える時_Droid kaigi2018アプリの鍵が消える時_Droid kaigi2018
アプリの鍵が消える時_Droid kaigi2018
 
OPC UAをオープンソースやフリーのソフトで遊んでみた
OPC UAをオープンソースやフリーのソフトで遊んでみたOPC UAをオープンソースやフリーのソフトで遊んでみた
OPC UAをオープンソースやフリーのソフトで遊んでみた
 
【Unite Tokyo 2019】今すぐ現場で覚えておきたい最適化技法 ~「ゲシュタルト・オーディン」開発における最適化事例~
【Unite Tokyo 2019】今すぐ現場で覚えておきたい最適化技法 ~「ゲシュタルト・オーディン」開発における最適化事例~【Unite Tokyo 2019】今すぐ現場で覚えておきたい最適化技法 ~「ゲシュタルト・オーディン」開発における最適化事例~
【Unite Tokyo 2019】今すぐ現場で覚えておきたい最適化技法 ~「ゲシュタルト・オーディン」開発における最適化事例~
 
何となく勉強した気分になれるパーサ入門
何となく勉強した気分になれるパーサ入門何となく勉強した気分になれるパーサ入門
何となく勉強した気分になれるパーサ入門
 
今なら間に合う分散型IDとEntra Verified ID
今なら間に合う分散型IDとEntra Verified ID今なら間に合う分散型IDとEntra Verified ID
今なら間に合う分散型IDとEntra Verified ID
 
やはりお前らのMVCは間違っている
やはりお前らのMVCは間違っているやはりお前らのMVCは間違っている
やはりお前らのMVCは間違っている
 
アプリ起動時間高速化 ~推測するな、計測せよ~
アプリ起動時間高速化 ~推測するな、計測せよ~アプリ起動時間高速化 ~推測するな、計測せよ~
アプリ起動時間高速化 ~推測するな、計測せよ~
 
インタフェース完全に理解した
インタフェース完全に理解したインタフェース完全に理解した
インタフェース完全に理解した
 
「関心の分離」と「疎結合」 ソフトウェアアーキテクチャのひとかけら
「関心の分離」と「疎結合」   ソフトウェアアーキテクチャのひとかけら「関心の分離」と「疎結合」   ソフトウェアアーキテクチャのひとかけら
「関心の分離」と「疎結合」 ソフトウェアアーキテクチャのひとかけら
 
Railsで作るBFFの功罪
Railsで作るBFFの功罪Railsで作るBFFの功罪
Railsで作るBFFの功罪
 
国際会計基準(IFRS)適用企業の財務評価方法
国際会計基準(IFRS)適用企業の財務評価方法国際会計基準(IFRS)適用企業の財務評価方法
国際会計基準(IFRS)適用企業の財務評価方法
 
誰もAddressableについて語らないなら、自分が語るしかない…ッッッッ
誰もAddressableについて語らないなら、自分が語るしかない…ッッッッ誰もAddressableについて語らないなら、自分が語るしかない…ッッッッ
誰もAddressableについて語らないなら、自分が語るしかない…ッッッッ
 
Unityネイティブプラグインマニアクス #denatechcon
Unityネイティブプラグインマニアクス #denatechconUnityネイティブプラグインマニアクス #denatechcon
Unityネイティブプラグインマニアクス #denatechcon
 
C++でできる!OS自作入門
C++でできる!OS自作入門C++でできる!OS自作入門
C++でできる!OS自作入門
 
2019 FIDO Tokyo Seminar - LINE PayへのFIDO2実装
2019 FIDO Tokyo Seminar - LINE PayへのFIDO2実装2019 FIDO Tokyo Seminar - LINE PayへのFIDO2実装
2019 FIDO Tokyo Seminar - LINE PayへのFIDO2実装
 
Unityでパフォーマンスの良いUIを作る為のTips
Unityでパフォーマンスの良いUIを作る為のTipsUnityでパフォーマンスの良いUIを作る為のTips
Unityでパフォーマンスの良いUIを作る為のTips
 
Squirrel
SquirrelSquirrel
Squirrel
 

Viewers also liked

Firebaseの新しいデータベース
Firebaseの新しいデータベースFirebaseの新しいデータベース
Firebaseの新しいデータベースHironytic
 
JAWS DAYS 2017 ランチセッション
JAWS DAYS 2017 ランチセッションJAWS DAYS 2017 ランチセッション
JAWS DAYS 2017 ランチセッションTetsuya Mase
 
[Azure Deep Dive] クラウド デザイン パターン ~優れたシステム構築のためのガイダンス~
[Azure Deep Dive] クラウド デザイン パターン ~優れたシステム構築のためのガイダンス~[Azure Deep Dive] クラウド デザイン パターン ~優れたシステム構築のためのガイダンス~
[Azure Deep Dive] クラウド デザイン パターン ~優れたシステム構築のためのガイダンス~Naoki (Neo) SATO
 
新入社員のための大規模ゲーム開発入門 サーバサイド編
新入社員のための大規模ゲーム開発入門 サーバサイド編新入社員のための大規模ゲーム開発入門 サーバサイド編
新入社員のための大規模ゲーム開発入門 サーバサイド編infinite_loop
 
ゲームサーバ開発現場の考え方
ゲームサーバ開発現場の考え方ゲームサーバ開発現場の考え方
ゲームサーバ開発現場の考え方Daisaku Mochizuki
 
サーバサイド Kotlin
サーバサイド Kotlinサーバサイド Kotlin
サーバサイド KotlinHiroki Ohtani
 

Viewers also liked (8)

Firebaseの新しいデータベース
Firebaseの新しいデータベースFirebaseの新しいデータベース
Firebaseの新しいデータベース
 
JAWS DAYS 2017 ランチセッション
JAWS DAYS 2017 ランチセッションJAWS DAYS 2017 ランチセッション
JAWS DAYS 2017 ランチセッション
 
Who's using Polymer
Who's using PolymerWho's using Polymer
Who's using Polymer
 
PWA, SEO, SSR
PWA, SEO, SSRPWA, SEO, SSR
PWA, SEO, SSR
 
[Azure Deep Dive] クラウド デザイン パターン ~優れたシステム構築のためのガイダンス~
[Azure Deep Dive] クラウド デザイン パターン ~優れたシステム構築のためのガイダンス~[Azure Deep Dive] クラウド デザイン パターン ~優れたシステム構築のためのガイダンス~
[Azure Deep Dive] クラウド デザイン パターン ~優れたシステム構築のためのガイダンス~
 
新入社員のための大規模ゲーム開発入門 サーバサイド編
新入社員のための大規模ゲーム開発入門 サーバサイド編新入社員のための大規模ゲーム開発入門 サーバサイド編
新入社員のための大規模ゲーム開発入門 サーバサイド編
 
ゲームサーバ開発現場の考え方
ゲームサーバ開発現場の考え方ゲームサーバ開発現場の考え方
ゲームサーバ開発現場の考え方
 
サーバサイド Kotlin
サーバサイド Kotlinサーバサイド Kotlin
サーバサイド Kotlin
 

Similar to Java で書かれたAndroid アプリに Kotlin を適用させていく

Java で書かれた Android アプリに Kotlin を適用させていく
Java で書かれた Android アプリに Kotlin を適用させていくJava で書かれた Android アプリに Kotlin を適用させていく
Java で書かれた Android アプリに Kotlin を適用させていく健一 辰濱
 
Kotlin が公式サポートになったので Kotlin の話
Kotlin が公式サポートになったので Kotlin の話Kotlin が公式サポートになったので Kotlin の話
Kotlin が公式サポートになったので Kotlin の話健一 辰濱
 
Kotlinについて学んだコト
Kotlinについて学んだコトKotlinについて学んだコト
Kotlinについて学んだコトiPride Co., Ltd.
 
3分で作る Kotlin Friendly な API
3分で作る Kotlin Friendly な API3分で作る Kotlin Friendly な API
3分で作る Kotlin Friendly な APIHiroshi Kikuchi
 
Kotlinこんなん出ましたけど
Kotlinこんなん出ましたけどKotlinこんなん出ましたけど
Kotlinこんなん出ましたけどyy yank
 
Kotlinことはじめ -まずは触って動かしてみよう-
Kotlinことはじめ  -まずは触って動かしてみよう-Kotlinことはじめ  -まずは触って動かしてみよう-
Kotlinことはじめ -まずは触って動かしてみよう-CASAREAL, Inc.
 
Kotlinのwebフレームワーク探訪
Kotlinのwebフレームワーク探訪Kotlinのwebフレームワーク探訪
Kotlinのwebフレームワーク探訪豊明 尾古
 
Line Creators Studio Android With Kotlin
Line Creators Studio Android With KotlinLine Creators Studio Android With Kotlin
Line Creators Studio Android With KotlinLINE Corporation
 
2005 re-reverse engineering goal models from legacy code
2005 re-reverse engineering goal models from legacy code2005 re-reverse engineering goal models from legacy code
2005 re-reverse engineering goal models from legacy coden-yuki
 
20171004 kotlin rls_hosaka
20171004 kotlin rls_hosaka20171004 kotlin rls_hosaka
20171004 kotlin rls_hosakaAi Muramatsu
 
Developers Summit 2023 9-D-1「もう悩まされない開発環境、プロジェクトで統一した環境をいつでもどこでも」
Developers Summit 2023 9-D-1「もう悩まされない開発環境、プロジェクトで統一した環境をいつでもどこでも」Developers Summit 2023 9-D-1「もう悩まされない開発環境、プロジェクトで統一した環境をいつでもどこでも」
Developers Summit 2023 9-D-1「もう悩まされない開発環境、プロジェクトで統一した環境をいつでもどこでも」Kazumi IWANAGA
 
KotlinでWebアプリ開発
KotlinでWebアプリ開発KotlinでWebアプリ開発
KotlinでWebアプリ開発Ryo Nakagawa
 
ALMツールたべくらべ
ALMツールたべくらべALMツールたべくらべ
ALMツールたべくらべKaoru NAKAMURA
 
KotlinでROSノードを書いてみた
KotlinでROSノードを書いてみたKotlinでROSノードを書いてみた
KotlinでROSノードを書いてみたNaoki Iwata
 
参加したセッションの ピックアップ
参加したセッションのピックアップ参加したセッションのピックアップ
参加したセッションの ピックアップ健一 辰濱
 
Kotlinソースコード探訪
Kotlinソースコード探訪Kotlinソースコード探訪
Kotlinソースコード探訪yy yank
 
C#メタプログラミング概略 in 2021
C#メタプログラミング概略 in 2021C#メタプログラミング概略 in 2021
C#メタプログラミング概略 in 2021Atsushi Nakamura
 
.NET Compiler Platform
.NET Compiler Platform.NET Compiler Platform
.NET Compiler Platform信之 岩永
 
Azure Functions 開発デプロイ環境を GitHub Codespaces で爆速に整える
Azure Functions 開発デプロイ環境を GitHub Codespaces で爆速に整えるAzure Functions 開発デプロイ環境を GitHub Codespaces で爆速に整える
Azure Functions 開発デプロイ環境を GitHub Codespaces で爆速に整えるKazumi IWANAGA
 

Similar to Java で書かれたAndroid アプリに Kotlin を適用させていく (20)

Java で書かれた Android アプリに Kotlin を適用させていく
Java で書かれた Android アプリに Kotlin を適用させていくJava で書かれた Android アプリに Kotlin を適用させていく
Java で書かれた Android アプリに Kotlin を適用させていく
 
Kotlin が公式サポートになったので Kotlin の話
Kotlin が公式サポートになったので Kotlin の話Kotlin が公式サポートになったので Kotlin の話
Kotlin が公式サポートになったので Kotlin の話
 
Kotlinについて学んだコト
Kotlinについて学んだコトKotlinについて学んだコト
Kotlinについて学んだコト
 
3分で作る Kotlin Friendly な API
3分で作る Kotlin Friendly な API3分で作る Kotlin Friendly な API
3分で作る Kotlin Friendly な API
 
Kotlinこんなん出ましたけど
Kotlinこんなん出ましたけどKotlinこんなん出ましたけど
Kotlinこんなん出ましたけど
 
Kotlinことはじめ -まずは触って動かしてみよう-
Kotlinことはじめ  -まずは触って動かしてみよう-Kotlinことはじめ  -まずは触って動かしてみよう-
Kotlinことはじめ -まずは触って動かしてみよう-
 
Kotlinのwebフレームワーク探訪
Kotlinのwebフレームワーク探訪Kotlinのwebフレームワーク探訪
Kotlinのwebフレームワーク探訪
 
Line Creators Studio Android With Kotlin
Line Creators Studio Android With KotlinLine Creators Studio Android With Kotlin
Line Creators Studio Android With Kotlin
 
2005 re-reverse engineering goal models from legacy code
2005 re-reverse engineering goal models from legacy code2005 re-reverse engineering goal models from legacy code
2005 re-reverse engineering goal models from legacy code
 
20171004 kotlin rls_hosaka
20171004 kotlin rls_hosaka20171004 kotlin rls_hosaka
20171004 kotlin rls_hosaka
 
Developers Summit 2023 9-D-1「もう悩まされない開発環境、プロジェクトで統一した環境をいつでもどこでも」
Developers Summit 2023 9-D-1「もう悩まされない開発環境、プロジェクトで統一した環境をいつでもどこでも」Developers Summit 2023 9-D-1「もう悩まされない開発環境、プロジェクトで統一した環境をいつでもどこでも」
Developers Summit 2023 9-D-1「もう悩まされない開発環境、プロジェクトで統一した環境をいつでもどこでも」
 
KotlinでWebアプリ開発
KotlinでWebアプリ開発KotlinでWebアプリ開発
KotlinでWebアプリ開発
 
ALMツールたべくらべ
ALMツールたべくらべALMツールたべくらべ
ALMツールたべくらべ
 
KotlinでROSノードを書いてみた
KotlinでROSノードを書いてみたKotlinでROSノードを書いてみた
KotlinでROSノードを書いてみた
 
参加したセッションの ピックアップ
参加したセッションのピックアップ参加したセッションのピックアップ
参加したセッションの ピックアップ
 
Kotlinソースコード探訪
Kotlinソースコード探訪Kotlinソースコード探訪
Kotlinソースコード探訪
 
C#メタプログラミング概略 in 2021
C#メタプログラミング概略 in 2021C#メタプログラミング概略 in 2021
C#メタプログラミング概略 in 2021
 
.NET Compiler Platform
.NET Compiler Platform.NET Compiler Platform
.NET Compiler Platform
 
Objective-C Generics
Objective-C GenericsObjective-C Generics
Objective-C Generics
 
Azure Functions 開発デプロイ環境を GitHub Codespaces で爆速に整える
Azure Functions 開発デプロイ環境を GitHub Codespaces で爆速に整えるAzure Functions 開発デプロイ環境を GitHub Codespaces で爆速に整える
Azure Functions 開発デプロイ環境を GitHub Codespaces で爆速に整える
 

More from 健一 辰濱

地方創生ワカモノ会合
地方創生ワカモノ会合地方創生ワカモノ会合
地方創生ワカモノ会合健一 辰濱
 
Google Analytics のデータ分析ハンズオン
Google Analytics のデータ分析ハンズオンGoogle Analytics のデータ分析ハンズオン
Google Analytics のデータ分析ハンズオン健一 辰濱
 
Sansan Tech Meetup Androidエンジニアが振り返る Google I/O
 Sansan Tech Meetup Androidエンジニアが振り返る Google I/O   Sansan Tech Meetup Androidエンジニアが振り返る Google I/O
Sansan Tech Meetup Androidエンジニアが振り返る Google I/O 健一 辰濱
 
知っておきたいFirebase の色んな上限について
知っておきたいFirebase の色んな上限について知っておきたいFirebase の色んな上限について
知っておきたいFirebase の色んな上限について健一 辰濱
 
Android 開発の昔と今
Android 開発の昔と今Android 開発の昔と今
Android 開発の昔と今健一 辰濱
 
Firebase Extensions はじめの一歩
Firebase Extensions はじめの一歩Firebase Extensions はじめの一歩
Firebase Extensions はじめの一歩健一 辰濱
 
Firebase & BigQuery で Android アプリの成⻑を支える
Firebase & BigQuery で Android アプリの成⻑を支えるFirebase & BigQuery で Android アプリの成⻑を支える
Firebase & BigQuery で Android アプリの成⻑を支える健一 辰濱
 
GDG DevFest Tokyo 2019 Day2 Special Hands-on
GDG DevFest Tokyo 2019 Day2 Special Hands-onGDG DevFest Tokyo 2019 Day2 Special Hands-on
GDG DevFest Tokyo 2019 Day2 Special Hands-on健一 辰濱
 
Firebase Summit 2019 Recap
Firebase Summit 2019 RecapFirebase Summit 2019 Recap
Firebase Summit 2019 Recap健一 辰濱
 
Cloud Firestore を使って、Polling をやめたい話
Cloud Firestore を使って、Polling をやめたい話Cloud Firestore を使って、Polling をやめたい話
Cloud Firestore を使って、Polling をやめたい話健一 辰濱
 
Firebase hands on in Matsuyama
Firebase hands on in MatsuyamaFirebase hands on in Matsuyama
Firebase hands on in Matsuyama健一 辰濱
 
インドのインターネット環境 との戦い方
インドのインターネット環境との戦い方インドのインターネット環境との戦い方
インドのインターネット環境 との戦い方健一 辰濱
 
インドの低速なネットワーク環境の攻略法
インドの低速なネットワーク環境の攻略法インドの低速なネットワーク環境の攻略法
インドの低速なネットワーク環境の攻略法健一 辰濱
 
DroidKaigi 2018 参加報告会 Closing
DroidKaigi 2018 参加報告会 ClosingDroidKaigi 2018 参加報告会 Closing
DroidKaigi 2018 参加報告会 Closing健一 辰濱
 
企業スポンサー
企業スポンサー企業スポンサー
企業スポンサー健一 辰濱
 
CFP(Call For Paper) を出す話
CFP(Call For Paper)を出す話CFP(Call For Paper)を出す話
CFP(Call For Paper) を出す話健一 辰濱
 
DroidKaigi 2018 参加報告会
DroidKaigi 2018 参加報告会DroidKaigi 2018 参加報告会
DroidKaigi 2018 参加報告会健一 辰濱
 
DroidKaigi アプリの内部を見る
DroidKaigi アプリの内部を見るDroidKaigi アプリの内部を見る
DroidKaigi アプリの内部を見る健一 辰濱
 
20171209エンジニアの移住相談会 自己紹介スライド
20171209エンジニアの移住相談会 自己紹介スライド20171209エンジニアの移住相談会 自己紹介スライド
20171209エンジニアの移住相談会 自己紹介スライド健一 辰濱
 
Device Farm を使ったスマホアプリの自動テスト
Device Farm を使ったスマホアプリの自動テストDevice Farm を使ったスマホアプリの自動テスト
Device Farm を使ったスマホアプリの自動テスト健一 辰濱
 

More from 健一 辰濱 (20)

地方創生ワカモノ会合
地方創生ワカモノ会合地方創生ワカモノ会合
地方創生ワカモノ会合
 
Google Analytics のデータ分析ハンズオン
Google Analytics のデータ分析ハンズオンGoogle Analytics のデータ分析ハンズオン
Google Analytics のデータ分析ハンズオン
 
Sansan Tech Meetup Androidエンジニアが振り返る Google I/O
 Sansan Tech Meetup Androidエンジニアが振り返る Google I/O   Sansan Tech Meetup Androidエンジニアが振り返る Google I/O
Sansan Tech Meetup Androidエンジニアが振り返る Google I/O
 
知っておきたいFirebase の色んな上限について
知っておきたいFirebase の色んな上限について知っておきたいFirebase の色んな上限について
知っておきたいFirebase の色んな上限について
 
Android 開発の昔と今
Android 開発の昔と今Android 開発の昔と今
Android 開発の昔と今
 
Firebase Extensions はじめの一歩
Firebase Extensions はじめの一歩Firebase Extensions はじめの一歩
Firebase Extensions はじめの一歩
 
Firebase & BigQuery で Android アプリの成⻑を支える
Firebase & BigQuery で Android アプリの成⻑を支えるFirebase & BigQuery で Android アプリの成⻑を支える
Firebase & BigQuery で Android アプリの成⻑を支える
 
GDG DevFest Tokyo 2019 Day2 Special Hands-on
GDG DevFest Tokyo 2019 Day2 Special Hands-onGDG DevFest Tokyo 2019 Day2 Special Hands-on
GDG DevFest Tokyo 2019 Day2 Special Hands-on
 
Firebase Summit 2019 Recap
Firebase Summit 2019 RecapFirebase Summit 2019 Recap
Firebase Summit 2019 Recap
 
Cloud Firestore を使って、Polling をやめたい話
Cloud Firestore を使って、Polling をやめたい話Cloud Firestore を使って、Polling をやめたい話
Cloud Firestore を使って、Polling をやめたい話
 
Firebase hands on in Matsuyama
Firebase hands on in MatsuyamaFirebase hands on in Matsuyama
Firebase hands on in Matsuyama
 
インドのインターネット環境 との戦い方
インドのインターネット環境との戦い方インドのインターネット環境との戦い方
インドのインターネット環境 との戦い方
 
インドの低速なネットワーク環境の攻略法
インドの低速なネットワーク環境の攻略法インドの低速なネットワーク環境の攻略法
インドの低速なネットワーク環境の攻略法
 
DroidKaigi 2018 参加報告会 Closing
DroidKaigi 2018 参加報告会 ClosingDroidKaigi 2018 参加報告会 Closing
DroidKaigi 2018 参加報告会 Closing
 
企業スポンサー
企業スポンサー企業スポンサー
企業スポンサー
 
CFP(Call For Paper) を出す話
CFP(Call For Paper)を出す話CFP(Call For Paper)を出す話
CFP(Call For Paper) を出す話
 
DroidKaigi 2018 参加報告会
DroidKaigi 2018 参加報告会DroidKaigi 2018 参加報告会
DroidKaigi 2018 参加報告会
 
DroidKaigi アプリの内部を見る
DroidKaigi アプリの内部を見るDroidKaigi アプリの内部を見る
DroidKaigi アプリの内部を見る
 
20171209エンジニアの移住相談会 自己紹介スライド
20171209エンジニアの移住相談会 自己紹介スライド20171209エンジニアの移住相談会 自己紹介スライド
20171209エンジニアの移住相談会 自己紹介スライド
 
Device Farm を使ったスマホアプリの自動テスト
Device Farm を使ったスマホアプリの自動テストDevice Farm を使ったスマホアプリの自動テスト
Device Farm を使ったスマホアプリの自動テスト
 

Java で書かれたAndroid アプリに Kotlin を適用させていく