Submit Search
Upload
Java で書かれたAndroid アプリに Kotlin を適用させていく
•
Download as PPTX, PDF
•
3 likes
•
4,062 views
健一 辰濱
Follow
2017/11/18 DevFest Shikoku 2017@徳島大学
Read less
Read more
Software
Report
Share
Report
Share
1 of 74
Download now
Recommended
AccessibilityService でできてしまうこと
AccessibilityService でできてしまうこと
Hidetsugu Tamaki
世界一わかりやすいClean Architecture
世界一わかりやすいClean Architecture
Atsushi Nakamura
開発速度が速い #とは(LayerX社内資料)
開発速度が速い #とは(LayerX社内資料)
mosa siru
LinuxのFull ticklessを試してみた
LinuxのFull ticklessを試してみた
Hiraku Toyooka
ミクシィ 21卒向け Android研修
ミクシィ 21卒向け Android研修
akkuma
Unity 2018-2019を見据えたDeNAのUnity開発のこれから [DeNA TechCon 2019]
Unity 2018-2019を見据えたDeNAのUnity開発のこれから [DeNA TechCon 2019]
DeNA
【Unity道場】ゲーム制作に使う数学を学習しよう
【Unity道場】ゲーム制作に使う数学を学習しよう
Unity Technologies Japan K.K.
ジョブ管理でcronは限界があったので”Rundeck”を使ってハッピーになりました
ジョブ管理でcronは限界があったので”Rundeck”を使ってハッピーになりました
Yukiya Hayashi
Recommended
AccessibilityService でできてしまうこと
AccessibilityService でできてしまうこと
Hidetsugu Tamaki
世界一わかりやすいClean Architecture
世界一わかりやすいClean Architecture
Atsushi Nakamura
開発速度が速い #とは(LayerX社内資料)
開発速度が速い #とは(LayerX社内資料)
mosa siru
LinuxのFull ticklessを試してみた
LinuxのFull ticklessを試してみた
Hiraku Toyooka
ミクシィ 21卒向け Android研修
ミクシィ 21卒向け Android研修
akkuma
Unity 2018-2019を見据えたDeNAのUnity開発のこれから [DeNA TechCon 2019]
Unity 2018-2019を見据えたDeNAのUnity開発のこれから [DeNA TechCon 2019]
DeNA
【Unity道場】ゲーム制作に使う数学を学習しよう
【Unity道場】ゲーム制作に使う数学を学習しよう
Unity Technologies Japan K.K.
ジョブ管理でcronは限界があったので”Rundeck”を使ってハッピーになりました
ジョブ管理でcronは限界があったので”Rundeck”を使ってハッピーになりました
Yukiya Hayashi
【Unity道場】AssetGraph入門 〜ノードを駆使しててUnityの面倒な手作業を自動化する方法〜
【Unity道場】AssetGraph入門 〜ノードを駆使しててUnityの面倒な手作業を自動化する方法〜
Unity Technologies Japan K.K.
CEDEC 2018 最速のC#の書き方 - C#大統一理論へ向けて性能的課題を払拭する
CEDEC 2018 最速のC#の書き方 - C#大統一理論へ向けて性能的課題を払拭する
Yoshifumi Kawai
こわくない Git
こわくない Git
Kota Saito
アプリの鍵が消える時_Droid kaigi2018
アプリの鍵が消える時_Droid kaigi2018
ak_shio_555
OPC UAをオープンソースやフリーのソフトで遊んでみた
OPC UAをオープンソースやフリーのソフトで遊んでみた
ミソジ
【Unite Tokyo 2019】今すぐ現場で覚えておきたい最適化技法 ~「ゲシュタルト・オーディン」開発における最適化事例~
【Unite Tokyo 2019】今すぐ現場で覚えておきたい最適化技法 ~「ゲシュタルト・オーディン」開発における最適化事例~
UnityTechnologiesJapan002
何となく勉強した気分になれるパーサ入門
何となく勉強した気分になれるパーサ入門
masayoshi takahashi
今なら間に合う分散型IDとEntra Verified ID
今なら間に合う分散型IDとEntra Verified ID
Naohiro Fujie
やはりお前らのMVCは間違っている
やはりお前らのMVCは間違っている
Koichi Tanaka
アプリ起動時間高速化 ~推測するな、計測せよ~
アプリ起動時間高速化 ~推測するな、計測せよ~
gree_tech
インタフェース完全に理解した
インタフェース完全に理解した
torisoup
「関心の分離」と「疎結合」 ソフトウェアアーキテクチャのひとかけら
「関心の分離」と「疎結合」 ソフトウェアアーキテクチャのひとかけら
Atsushi Nakamura
Railsで作るBFFの功罪
Railsで作るBFFの功罪
Recruit Lifestyle Co., Ltd.
国際会計基準(IFRS)適用企業の財務評価方法
国際会計基準(IFRS)適用企業の財務評価方法
Takahiro Kubo
誰もAddressableについて語らないなら、自分が語るしかない…ッッッッ
誰もAddressableについて語らないなら、自分が語るしかない…ッッッッ
Tatsuhiko Yamamura
Unityネイティブプラグインマニアクス #denatechcon
Unityネイティブプラグインマニアクス #denatechcon
DeNA
C++でできる!OS自作入門
C++でできる!OS自作入門
uchan_nos
2019 FIDO Tokyo Seminar - LINE PayへのFIDO2実装
2019 FIDO Tokyo Seminar - LINE PayへのFIDO2実装
FIDO Alliance
Unityでパフォーマンスの良いUIを作る為のTips
Unityでパフォーマンスの良いUIを作る為のTips
Unity Technologies Japan K.K.
Squirrel
Squirrel
melpon
Firebaseの新しいデータベース
Firebaseの新しいデータベース
Hironytic
JAWS DAYS 2017 ランチセッション
JAWS DAYS 2017 ランチセッション
Tetsuya Mase
More Related Content
What's hot
【Unity道場】AssetGraph入門 〜ノードを駆使しててUnityの面倒な手作業を自動化する方法〜
【Unity道場】AssetGraph入門 〜ノードを駆使しててUnityの面倒な手作業を自動化する方法〜
Unity Technologies Japan K.K.
CEDEC 2018 最速のC#の書き方 - C#大統一理論へ向けて性能的課題を払拭する
CEDEC 2018 最速のC#の書き方 - C#大統一理論へ向けて性能的課題を払拭する
Yoshifumi Kawai
こわくない Git
こわくない Git
Kota Saito
アプリの鍵が消える時_Droid kaigi2018
アプリの鍵が消える時_Droid kaigi2018
ak_shio_555
OPC UAをオープンソースやフリーのソフトで遊んでみた
OPC UAをオープンソースやフリーのソフトで遊んでみた
ミソジ
【Unite Tokyo 2019】今すぐ現場で覚えておきたい最適化技法 ~「ゲシュタルト・オーディン」開発における最適化事例~
【Unite Tokyo 2019】今すぐ現場で覚えておきたい最適化技法 ~「ゲシュタルト・オーディン」開発における最適化事例~
UnityTechnologiesJapan002
何となく勉強した気分になれるパーサ入門
何となく勉強した気分になれるパーサ入門
masayoshi takahashi
今なら間に合う分散型IDとEntra Verified ID
今なら間に合う分散型IDとEntra Verified ID
Naohiro Fujie
やはりお前らのMVCは間違っている
やはりお前らのMVCは間違っている
Koichi Tanaka
アプリ起動時間高速化 ~推測するな、計測せよ~
アプリ起動時間高速化 ~推測するな、計測せよ~
gree_tech
インタフェース完全に理解した
インタフェース完全に理解した
torisoup
「関心の分離」と「疎結合」 ソフトウェアアーキテクチャのひとかけら
「関心の分離」と「疎結合」 ソフトウェアアーキテクチャのひとかけら
Atsushi Nakamura
Railsで作るBFFの功罪
Railsで作るBFFの功罪
Recruit Lifestyle Co., Ltd.
国際会計基準(IFRS)適用企業の財務評価方法
国際会計基準(IFRS)適用企業の財務評価方法
Takahiro Kubo
誰もAddressableについて語らないなら、自分が語るしかない…ッッッッ
誰もAddressableについて語らないなら、自分が語るしかない…ッッッッ
Tatsuhiko Yamamura
Unityネイティブプラグインマニアクス #denatechcon
Unityネイティブプラグインマニアクス #denatechcon
DeNA
C++でできる!OS自作入門
C++でできる!OS自作入門
uchan_nos
2019 FIDO Tokyo Seminar - LINE PayへのFIDO2実装
2019 FIDO Tokyo Seminar - LINE PayへのFIDO2実装
FIDO Alliance
Unityでパフォーマンスの良いUIを作る為のTips
Unityでパフォーマンスの良いUIを作る為のTips
Unity Technologies Japan K.K.
Squirrel
Squirrel
melpon
What's hot
(20)
【Unity道場】AssetGraph入門 〜ノードを駆使しててUnityの面倒な手作業を自動化する方法〜
【Unity道場】AssetGraph入門 〜ノードを駆使しててUnityの面倒な手作業を自動化する方法〜
CEDEC 2018 最速のC#の書き方 - C#大統一理論へ向けて性能的課題を払拭する
CEDEC 2018 最速のC#の書き方 - C#大統一理論へ向けて性能的課題を払拭する
こわくない Git
こわくない Git
アプリの鍵が消える時_Droid kaigi2018
アプリの鍵が消える時_Droid kaigi2018
OPC UAをオープンソースやフリーのソフトで遊んでみた
OPC UAをオープンソースやフリーのソフトで遊んでみた
【Unite Tokyo 2019】今すぐ現場で覚えておきたい最適化技法 ~「ゲシュタルト・オーディン」開発における最適化事例~
【Unite Tokyo 2019】今すぐ現場で覚えておきたい最適化技法 ~「ゲシュタルト・オーディン」開発における最適化事例~
何となく勉強した気分になれるパーサ入門
何となく勉強した気分になれるパーサ入門
今なら間に合う分散型IDとEntra Verified ID
今なら間に合う分散型IDとEntra Verified ID
やはりお前らのMVCは間違っている
やはりお前らのMVCは間違っている
アプリ起動時間高速化 ~推測するな、計測せよ~
アプリ起動時間高速化 ~推測するな、計測せよ~
インタフェース完全に理解した
インタフェース完全に理解した
「関心の分離」と「疎結合」 ソフトウェアアーキテクチャのひとかけら
「関心の分離」と「疎結合」 ソフトウェアアーキテクチャのひとかけら
Railsで作るBFFの功罪
Railsで作るBFFの功罪
国際会計基準(IFRS)適用企業の財務評価方法
国際会計基準(IFRS)適用企業の財務評価方法
誰もAddressableについて語らないなら、自分が語るしかない…ッッッッ
誰もAddressableについて語らないなら、自分が語るしかない…ッッッッ
Unityネイティブプラグインマニアクス #denatechcon
Unityネイティブプラグインマニアクス #denatechcon
C++でできる!OS自作入門
C++でできる!OS自作入門
2019 FIDO Tokyo Seminar - LINE PayへのFIDO2実装
2019 FIDO Tokyo Seminar - LINE PayへのFIDO2実装
Unityでパフォーマンスの良いUIを作る為のTips
Unityでパフォーマンスの良いUIを作る為のTips
Squirrel
Squirrel
Viewers also liked
Firebaseの新しいデータベース
Firebaseの新しいデータベース
Hironytic
JAWS DAYS 2017 ランチセッション
JAWS DAYS 2017 ランチセッション
Tetsuya Mase
Who's using Polymer
Who's using Polymer
Hiroyuki Hara
PWA, SEO, SSR
PWA, SEO, SSR
Hiroyuki Hara
[Azure Deep Dive] クラウド デザイン パターン ~優れたシステム構築のためのガイダンス~
[Azure Deep Dive] クラウド デザイン パターン ~優れたシステム構築のためのガイダンス~
Naoki (Neo) SATO
新入社員のための大規模ゲーム開発入門 サーバサイド編
新入社員のための大規模ゲーム開発入門 サーバサイド編
infinite_loop
ゲームサーバ開発現場の考え方
ゲームサーバ開発現場の考え方
Daisaku Mochizuki
サーバサイド Kotlin
サーバサイド Kotlin
Hiroki Ohtani
Viewers also liked
(8)
Firebaseの新しいデータベース
Firebaseの新しいデータベース
JAWS DAYS 2017 ランチセッション
JAWS DAYS 2017 ランチセッション
Who's using Polymer
Who's using Polymer
PWA, SEO, SSR
PWA, SEO, SSR
[Azure Deep Dive] クラウド デザイン パターン ~優れたシステム構築のためのガイダンス~
[Azure Deep Dive] クラウド デザイン パターン ~優れたシステム構築のためのガイダンス~
新入社員のための大規模ゲーム開発入門 サーバサイド編
新入社員のための大規模ゲーム開発入門 サーバサイド編
ゲームサーバ開発現場の考え方
ゲームサーバ開発現場の考え方
サーバサイド Kotlin
サーバサイド Kotlin
Similar to Java で書かれたAndroid アプリに Kotlin を適用させていく
Java で書かれた Android アプリに Kotlin を適用させていく
Java で書かれた Android アプリに Kotlin を適用させていく
健一 辰濱
Kotlin が公式サポートになったので Kotlin の話
Kotlin が公式サポートになったので Kotlin の話
健一 辰濱
Kotlinについて学んだコト
Kotlinについて学んだコト
iPride Co., Ltd.
3分で作る Kotlin Friendly な API
3分で作る Kotlin Friendly な API
Hiroshi Kikuchi
Kotlinこんなん出ましたけど
Kotlinこんなん出ましたけど
yy yank
Kotlinことはじめ -まずは触って動かしてみよう-
Kotlinことはじめ -まずは触って動かしてみよう-
CASAREAL, Inc.
Kotlinのwebフレームワーク探訪
Kotlinのwebフレームワーク探訪
豊明 尾古
Line Creators Studio Android With Kotlin
Line Creators Studio Android With Kotlin
LINE Corporation
2005 re-reverse engineering goal models from legacy code
2005 re-reverse engineering goal models from legacy code
n-yuki
20171004 kotlin rls_hosaka
20171004 kotlin rls_hosaka
Ai Muramatsu
Developers Summit 2023 9-D-1「もう悩まされない開発環境、プロジェクトで統一した環境をいつでもどこでも」
Developers Summit 2023 9-D-1「もう悩まされない開発環境、プロジェクトで統一した環境をいつでもどこでも」
Kazumi IWANAGA
KotlinでWebアプリ開発
KotlinでWebアプリ開発
Ryo Nakagawa
ALMツールたべくらべ
ALMツールたべくらべ
Kaoru NAKAMURA
KotlinでROSノードを書いてみた
KotlinでROSノードを書いてみた
Naoki Iwata
参加したセッションのピックアップ
参加したセッションのピックアップ
健一 辰濱
Kotlinソースコード探訪
Kotlinソースコード探訪
yy yank
C#メタプログラミング概略 in 2021
C#メタプログラミング概略 in 2021
Atsushi Nakamura
.NET Compiler Platform
.NET Compiler Platform
信之 岩永
Objective-C Generics
Objective-C Generics
Goichi Hirakawa
Azure Functions 開発デプロイ環境を GitHub Codespaces で爆速に整える
Azure Functions 開発デプロイ環境を GitHub Codespaces で爆速に整える
Kazumi IWANAGA
Similar to Java で書かれたAndroid アプリに Kotlin を適用させていく
(20)
Java で書かれた Android アプリに Kotlin を適用させていく
Java で書かれた Android アプリに Kotlin を適用させていく
Kotlin が公式サポートになったので Kotlin の話
Kotlin が公式サポートになったので Kotlin の話
Kotlinについて学んだコト
Kotlinについて学んだコト
3分で作る Kotlin Friendly な API
3分で作る Kotlin Friendly な API
Kotlinこんなん出ましたけど
Kotlinこんなん出ましたけど
Kotlinことはじめ -まずは触って動かしてみよう-
Kotlinことはじめ -まずは触って動かしてみよう-
Kotlinのwebフレームワーク探訪
Kotlinのwebフレームワーク探訪
Line 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 code
20171004 kotlin rls_hosaka
20171004 kotlin rls_hosaka
Developers Summit 2023 9-D-1「もう悩まされない開発環境、プロジェクトで統一した環境をいつでもどこでも」
Developers Summit 2023 9-D-1「もう悩まされない開発環境、プロジェクトで統一した環境をいつでもどこでも」
KotlinでWebアプリ開発
KotlinでWebアプリ開発
ALMツールたべくらべ
ALMツールたべくらべ
KotlinでROSノードを書いてみた
KotlinでROSノードを書いてみた
参加したセッションのピックアップ
参加したセッションのピックアップ
Kotlinソースコード探訪
Kotlinソースコード探訪
C#メタプログラミング概略 in 2021
C#メタプログラミング概略 in 2021
.NET Compiler Platform
.NET Compiler Platform
Objective-C Generics
Objective-C Generics
Azure Functions 開発デプロイ環境を GitHub Codespaces で爆速に整える
Azure Functions 開発デプロイ環境を GitHub Codespaces で爆速に整える
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 アプリの内部を見る
健一 辰濱
20171209エンジニアの移住相談会 自己紹介スライド
20171209エンジニアの移住相談会 自己紹介スライド
健一 辰濱
Device Farm を使ったスマホアプリの自動テスト
Device Farm を使ったスマホアプリの自動テスト
健一 辰濱
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 アプリの内部を見る
20171209エンジニアの移住相談会 自己紹介スライド
20171209エンジニアの移住相談会 自己紹介スライド
Device Farm を使ったスマホアプリの自動テスト
Device Farm を使ったスマホアプリの自動テスト
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 now