Submit Search
Upload
Java で書かれたAndroid アプリに Kotlin を適用させていく
•
Download as PPTX, PDF
•
3 likes
•
4,071 views
健一 辰濱
Follow
2017/11/18 DevFest Shikoku 2017@徳島大学
Read less
Read more
Software
Report
Share
Report
Share
1 of 74
Download now
Recommended
AR / VR / MRの世界に、置けるUI、置けないUI、置くべきUI
AR / VR / MRの世界に、置けるUI、置けないUI、置くべきUI
Koichi Tanaka
Java で書かれた Android アプリに Kotlin を適用させていく
Java で書かれた Android アプリに Kotlin を適用させていく
健一 辰濱
はじめようARCore:自己位置推定・平面検出・FaceTracking
はじめようARCore:自己位置推定・平面検出・FaceTracking
Takashi Yoshinaga
頭を柔らかくするデザインの発想 by Life is Tech !
頭を柔らかくするデザインの発想 by Life is Tech !
Naoki Kanazawa
Node canvasで作るプロトタイプ
Node canvasで作るプロトタイプ
H T
リアルタイムなゲームの開発でコンテナを使ってみたら簡単便利で激安だったのでオススメしたい
リアルタイムなゲームの開発でコンテナを使ってみたら簡単便利で激安だったのでオススメしたい
YutoNishine
Unityでパフォーマンスの良いUIを作る為のTips
Unityでパフォーマンスの良いUIを作る為のTips
Unity Technologies Japan K.K.
猫でも分かるUE4を使った VRコンテンツ開発 超入門編 2021
猫でも分かるUE4を使った VRコンテンツ開発 超入門編 2021
エピック・ゲームズ・ジャパン Epic Games Japan
Recommended
AR / VR / MRの世界に、置けるUI、置けないUI、置くべきUI
AR / VR / MRの世界に、置けるUI、置けないUI、置くべきUI
Koichi Tanaka
Java で書かれた Android アプリに Kotlin を適用させていく
Java で書かれた Android アプリに Kotlin を適用させていく
健一 辰濱
はじめようARCore:自己位置推定・平面検出・FaceTracking
はじめようARCore:自己位置推定・平面検出・FaceTracking
Takashi Yoshinaga
頭を柔らかくするデザインの発想 by Life is Tech !
頭を柔らかくするデザインの発想 by Life is Tech !
Naoki Kanazawa
Node canvasで作るプロトタイプ
Node canvasで作るプロトタイプ
H T
リアルタイムなゲームの開発でコンテナを使ってみたら簡単便利で激安だったのでオススメしたい
リアルタイムなゲームの開発でコンテナを使ってみたら簡単便利で激安だったのでオススメしたい
YutoNishine
Unityでパフォーマンスの良いUIを作る為のTips
Unityでパフォーマンスの良いUIを作る為のTips
Unity Technologies Japan K.K.
猫でも分かるUE4を使った VRコンテンツ開発 超入門編 2021
猫でも分かるUE4を使った VRコンテンツ開発 超入門編 2021
エピック・ゲームズ・ジャパン Epic Games Japan
HoloLensでコンテンツを操作する方法 - Gaze And Dwell -
HoloLensでコンテンツを操作する方法 - Gaze And Dwell -
Takahiro Miyaura
【出張ヒストリア2018】Caligula OverdoseでのUIデザインアプローチ
【出張ヒストリア2018】Caligula OverdoseでのUIデザインアプローチ
historia_Inc
医療ビジネス概要
医療ビジネス概要
Perry
継続的インテグレーションとテストの話
継続的インテグレーションとテストの話
Preferred Networks
Vue3でアプリ開発してみて 困ったこと4選
Vue3でアプリ開発してみて 困ったこと4選
虎の穴 開発室
こわくない Git
こわくない Git
Kota Saito
Unityで意外と簡単・・・だけど難しいVRコンテンツ
Unityで意外と簡単・・・だけど難しいVRコンテンツ
infinite_loop
はじめようArcore (修正版)
はじめようArcore (修正版)
Takashi Yoshinaga
猫でも分かるUMG
猫でも分かるUMG
エピック・ゲームズ・ジャパン Epic Games Japan
【Unite 2018 Tokyo】60fpsのその先へ!スマホの物量限界に挑んだSTG「アカとブルー」の開発設計
【Unite 2018 Tokyo】60fpsのその先へ!スマホの物量限界に挑んだSTG「アカとブルー」の開発設計
UnityTechnologiesJapan002
Voxon Photonics VX1で遊んでみた
Voxon Photonics VX1で遊んでみた
Takashi Yoshinaga
【Unite Tokyo 2019】Unityだったら簡単!マルチプレイ用ゲームサーバ開発 ~実践編~
【Unite Tokyo 2019】Unityだったら簡単!マルチプレイ用ゲームサーバ開発 ~実践編~
UnityTechnologiesJapan002
はじめようGit
はじめようGit
techscore
Immersal を活用した AR クラウドなシステム開発とハンズオン!
Immersal を活用した AR クラウドなシステム開発とハンズオン!
NishoMatsusita
伝統的な組織で始めるアジャイル
伝統的な組織で始めるアジャイル
toshihiro ichitani
Unityでロボットの教師データは作れる!
Unityでロボットの教師データは作れる!
UnityTechnologiesJapan002
Cinemachineで見下ろし視点のカメラを作る
Cinemachineで見下ろし視点のカメラを作る
Unity Technologies Japan K.K.
組み込み開発でのシステムテスト自動化の一つの考え方(STAC)
組み込み開発でのシステムテスト自動化の一つの考え方(STAC)
H Iseri
【Unite Tokyo 2019】MeshSyncを有効活用したセルルックプリレンダーのワークフロー
【Unite Tokyo 2019】MeshSyncを有効活用したセルルックプリレンダーのワークフロー
UnityTechnologiesJapan002
カヤックコピー部のコピー講座
カヤックコピー部のコピー講座
コピーライターはせがわ てつじ
Firebaseの新しいデータベース
Firebaseの新しいデータベース
Hironytic
JAWS DAYS 2017 ランチセッション
JAWS DAYS 2017 ランチセッション
Tetsuya Mase
More Related Content
What's hot
HoloLensでコンテンツを操作する方法 - Gaze And Dwell -
HoloLensでコンテンツを操作する方法 - Gaze And Dwell -
Takahiro Miyaura
【出張ヒストリア2018】Caligula OverdoseでのUIデザインアプローチ
【出張ヒストリア2018】Caligula OverdoseでのUIデザインアプローチ
historia_Inc
医療ビジネス概要
医療ビジネス概要
Perry
継続的インテグレーションとテストの話
継続的インテグレーションとテストの話
Preferred Networks
Vue3でアプリ開発してみて 困ったこと4選
Vue3でアプリ開発してみて 困ったこと4選
虎の穴 開発室
こわくない Git
こわくない Git
Kota Saito
Unityで意外と簡単・・・だけど難しいVRコンテンツ
Unityで意外と簡単・・・だけど難しいVRコンテンツ
infinite_loop
はじめようArcore (修正版)
はじめようArcore (修正版)
Takashi Yoshinaga
猫でも分かるUMG
猫でも分かるUMG
エピック・ゲームズ・ジャパン Epic Games Japan
【Unite 2018 Tokyo】60fpsのその先へ!スマホの物量限界に挑んだSTG「アカとブルー」の開発設計
【Unite 2018 Tokyo】60fpsのその先へ!スマホの物量限界に挑んだSTG「アカとブルー」の開発設計
UnityTechnologiesJapan002
Voxon Photonics VX1で遊んでみた
Voxon Photonics VX1で遊んでみた
Takashi Yoshinaga
【Unite Tokyo 2019】Unityだったら簡単!マルチプレイ用ゲームサーバ開発 ~実践編~
【Unite Tokyo 2019】Unityだったら簡単!マルチプレイ用ゲームサーバ開発 ~実践編~
UnityTechnologiesJapan002
はじめようGit
はじめようGit
techscore
Immersal を活用した AR クラウドなシステム開発とハンズオン!
Immersal を活用した AR クラウドなシステム開発とハンズオン!
NishoMatsusita
伝統的な組織で始めるアジャイル
伝統的な組織で始めるアジャイル
toshihiro ichitani
Unityでロボットの教師データは作れる!
Unityでロボットの教師データは作れる!
UnityTechnologiesJapan002
Cinemachineで見下ろし視点のカメラを作る
Cinemachineで見下ろし視点のカメラを作る
Unity Technologies Japan K.K.
組み込み開発でのシステムテスト自動化の一つの考え方(STAC)
組み込み開発でのシステムテスト自動化の一つの考え方(STAC)
H Iseri
【Unite Tokyo 2019】MeshSyncを有効活用したセルルックプリレンダーのワークフロー
【Unite Tokyo 2019】MeshSyncを有効活用したセルルックプリレンダーのワークフロー
UnityTechnologiesJapan002
カヤックコピー部のコピー講座
カヤックコピー部のコピー講座
コピーライターはせがわ てつじ
What's hot
(20)
HoloLensでコンテンツを操作する方法 - Gaze And Dwell -
HoloLensでコンテンツを操作する方法 - Gaze And Dwell -
【出張ヒストリア2018】Caligula OverdoseでのUIデザインアプローチ
【出張ヒストリア2018】Caligula OverdoseでのUIデザインアプローチ
医療ビジネス概要
医療ビジネス概要
継続的インテグレーションとテストの話
継続的インテグレーションとテストの話
Vue3でアプリ開発してみて 困ったこと4選
Vue3でアプリ開発してみて 困ったこと4選
こわくない Git
こわくない Git
Unityで意外と簡単・・・だけど難しいVRコンテンツ
Unityで意外と簡単・・・だけど難しいVRコンテンツ
はじめようArcore (修正版)
はじめようArcore (修正版)
猫でも分かるUMG
猫でも分かるUMG
【Unite 2018 Tokyo】60fpsのその先へ!スマホの物量限界に挑んだSTG「アカとブルー」の開発設計
【Unite 2018 Tokyo】60fpsのその先へ!スマホの物量限界に挑んだSTG「アカとブルー」の開発設計
Voxon Photonics VX1で遊んでみた
Voxon Photonics VX1で遊んでみた
【Unite Tokyo 2019】Unityだったら簡単!マルチプレイ用ゲームサーバ開発 ~実践編~
【Unite Tokyo 2019】Unityだったら簡単!マルチプレイ用ゲームサーバ開発 ~実践編~
はじめようGit
はじめようGit
Immersal を活用した AR クラウドなシステム開発とハンズオン!
Immersal を活用した AR クラウドなシステム開発とハンズオン!
伝統的な組織で始めるアジャイル
伝統的な組織で始めるアジャイル
Unityでロボットの教師データは作れる!
Unityでロボットの教師データは作れる!
Cinemachineで見下ろし視点のカメラを作る
Cinemachineで見下ろし視点のカメラを作る
組み込み開発でのシステムテスト自動化の一つの考え方(STAC)
組み込み開発でのシステムテスト自動化の一つの考え方(STAC)
【Unite Tokyo 2019】MeshSyncを有効活用したセルルックプリレンダーのワークフロー
【Unite Tokyo 2019】MeshSyncを有効活用したセルルックプリレンダーのワークフロー
カヤックコピー部のコピー講座
カヤックコピー部のコピー講座
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 を適用させていく
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
KotlinつかってQiitaクライアント作った時の話
KotlinつかってQiitaクライアント作った時の話
shinnosuke kugimiya
Similar to Java で書かれたAndroid アプリに Kotlin を適用させていく
(20)
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 で爆速に整える
KotlinつかってQiitaクライアント作った時の話
KotlinつかってQiitaクライアント作った時の話
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