SlideShare a Scribd company logo
1 of 45
Kotlin が公式サポートに
なったので Kotlin の話
2017/06/10
Google I/O 2017 報告会 四国会場 LT
Sansan株式会社 辰濱健一
Copyright © 2014 Sansan, Inc. All rights reserved.
自己紹介
1
Copyright © 2014 Sansan, Inc. All rights reserved.
> 自己紹介
2
• 辰濱健一
• 徳島生まれ、奈良育ち、徳島県在住
• 2回転職するも、いずれも徳島県内勤務
• Sansan株式会社所属
• 古民家を改修した神山ラボ勤務
• 名刺アプリ Eight Android 版の開発 を Kotlin で!
• リモートワーク
Copyright © 2014 Sansan, Inc. All rights reserved.
> 自己紹介
3
• 辰濱健一
• 徳島生まれ、奈良育ち、徳島県在住
• 2回転職するも、いずれも徳島県内勤務
• Sansan株式会社所属
• 古民家を改修した神山ラボ勤務
• 名刺アプリ Eight Android 版の開発 を Kotlin で!
• リモートワーク
Copyright © 2014 Sansan, Inc. All rights reserved.
> Sansan神山ラボ
4
Copyright © 2014 Sansan, Inc. All rights reserved.
> 趣味
5
• 楽器演奏(エレクトーン・トランペット)
• 徳島県内のイベントで、ちらほら演奏する機会を頂い
てます
Copyright © 2014 Sansan, Inc. All rights reserved. 6
本題へ…
Copyright © 2014 Sansan, Inc. All rights reserved.
Kotlin を Android アプリ開発言語に選定!
7
Copyright © 2014 Sansan, Inc. All rights reserved. 8
ということで
Copyright © 2014 Sansan, Inc. All rights reserved. 9
ざっと
Kotlin のおさらい
(&実務で使ったアドバイス)
※Eight では、2015/8 から Kotlin を導入しています
Copyright © 2014 Sansan, Inc. All rights reserved.
Kotlin について
10
• JetBrains 社が作っている
• IDE サポートも充実
Copyright © 2014 Sansan, Inc. All rights reserved.
Kotlin について
11
• JetBrains 社が作っている
• IDE サポートも充実
• JVM 上でも動作する言語
Copyright © 2014 Sansan, Inc. All rights reserved.
Kotlin について
12
• JetBrains 社が作っている
• IDE サポートも充実
• JVM 上でも動作する言語
• Java コードと相互運用可能
Copyright © 2014 Sansan, Inc. All rights reserved.
Kotlin について
13
• JetBrains 社が作っている
• IDE サポートも充実
• JVM 上でも動作する言語
• Java コードと相互運用可能
• Java → Kotlin の参照 OK
Copyright © 2014 Sansan, Inc. All rights reserved.
Kotlin について
14
• JetBrains 社が作っている
• IDE サポートも充実
• JVM 上でも動作する言語
• Java コードと相互運用可能
• Java → Kotlin の参照 OK
• Kotlin → Java の参照 OK
Copyright © 2014 Sansan, Inc. All rights reserved.
Kotlin について
15
• JetBrains 社が作っている
• IDE サポートも充実
• JVM 上でも動作する言語
• Java コードと相互運用可能
• Java → Kotlin の参照 OK
• Kotlin → Java の参照 OK
• → 既存プロジェクトに一部分から導入可能
Copyright © 2014 Sansan, Inc. All rights reserved.
Kotlin について
16
• JetBrains 社が作っている
• IDE サポートも充実
• JVM 上でも動作する言語
• Java コードと相互運用可能
• Java → Kotlin の参照 OK
• Kotlin → Java の参照 OK
• → 既存プロジェクトに一部分から導入可能
• ライブラリが軽量
Copyright © 2014 Sansan, Inc. All rights reserved.
Kotlin について
17
• JetBrains 社が作っている
• IDE サポートも充実
• JVM 上でも動作する言語
• Java コードと相互運用可能
• Java → Kotlin の参照 OK
• Kotlin → Java の参照 OK
• → 既存プロジェクトに一部分から導入可能
• ライブラリが軽量
• Java よりも少ない記述量で実現できる
Copyright © 2014 Sansan, Inc. All rights reserved.
Kotlin の代表的な言語的特徴
18
• Null 安全
• 型の省略
• ラムダ式
• data class
• 拡張関数
Copyright © 2014 Sansan, Inc. All rights reserved.
Kotlin の代表的な言語的特徴
19
• Null 安全
• 型の省略
• ラムダ式
• data class
• 拡張関数
Copyright © 2014 Sansan, Inc. All rights reserved.
Null 安全
20
• 型で 「null 不許容型」「null 許容型」が分かれる
• Java の String は null 許容型
• → 「 null でない」という状態が型ではわからない
Copyright © 2014 Sansan, Inc. All rights reserved.
Null 安全
21
• 型で 「null 不許容型」「null 許容型」が分かれる
• Java の String は null 許容型
• → 「 null でない」という状態が型ではわからない Java
Copyright © 2014 Sansan, Inc. All rights reserved.
Null 安全
22
• 型で 「null 不許容型」「null 許容型」が分かれる
• Java の String は null 許容型
• → 「 null でない」という状態が型ではわからない
• 例)String の場合
• null 不許容型:String
• null 許容型:String?
Java
Copyright © 2014 Sansan, Inc. All rights reserved.
Null 安全
23
・null が来ないことが確実であれば…
Java
Copyright © 2014 Sansan, Inc. All rights reserved.
Null 安全
24
・null が来ないことが確実であれば…
Java
Kotlin
Copyright © 2014 Sansan, Inc. All rights reserved.
Null 安全
25
• 型で null を許容するか否かを表現できる
Copyright © 2014 Sansan, Inc. All rights reserved.
Null 安全
26
• 型で null を許容するか否かを表現できる
• NullPointerException がなくなるわけではない!
Copyright © 2014 Sansan, Inc. All rights reserved.
Null 安全
27
• 型で null を許容するか否かを表現できる
• NullPointerException がなくなるわけではない!
• 例)Kotlin の関数を Java から呼び出す
• Kotlin の定義が non-null でも、Java から null を渡すこと
ができてしまう…
Copyright © 2014 Sansan, Inc. All rights reserved.
Null 安全
28
• 型で null を許容するか否かを表現できる
• NullPointerException がなくなるわけではない!
• 例)Kotlin の関数を Java から呼び出す
• Kotlin の定義が non-null でも、Java から null を渡すこと
ができてしまう…
• → support annotation を付けておこう。
Java でも IDE が認識して、null チェックの必要性を判断してくれます
Java
Copyright © 2014 Sansan, Inc. All rights reserved.
Kotlin の代表的な言語的特徴
29
• Null 安全
• 型の省略
• ラムダ式
• data class
• 拡張関数
Copyright © 2014 Sansan, Inc. All rights reserved.
型の省略
30
Java
Copyright © 2014 Sansan, Inc. All rights reserved.
型の省略
31
Java
Kotlin
Copyright © 2014 Sansan, Inc. All rights reserved.
型の省略
32
Java
Kotlin
Kotlin
Copyright © 2014 Sansan, Inc. All rights reserved.
型の省略
33
Java
Kotlin
Kotlin
※型推論に時間が掛かるので、
型を書いた方が、コンパイルが速い
Copyright © 2014 Sansan, Inc. All rights reserved.
Kotlin の代表的な言語的特徴
34
• Null 安全
• 型の省略
• ラムダ式
• data class
• 拡張関数
Copyright © 2014 Sansan, Inc. All rights reserved.
ラムダ式
35
• ラムダ式
• 関数の宣言なしに、関数オブジェクトを生成できる
Java
Copyright © 2014 Sansan, Inc. All rights reserved.
ラムダ式
36
• ラムダ式
• 関数の宣言なしに、関数オブジェクトを生成できる
Java
Kotlin
Copyright © 2014 Sansan, Inc. All rights reserved.
Kotlin の代表的な言語的特徴
37
• Null 安全
• 型の省略
• ラムダ式
• data class
• 拡張関数
Copyright © 2014 Sansan, Inc. All rights reserved.
data class
38
• モデルクラスでおなじみの関数を自動生成
• 各 getter, setter, equals, hashCode, …
Java
Copyright © 2014 Sansan, Inc. All rights reserved.
data class
39
• モデルクラスでおなじみの関数を自動生成
• 各 getter, setter, equals, hashCode, …
Kotlin
Java
Copyright © 2014 Sansan, Inc. All rights reserved.
Kotlin の代表的な言語的特徴
40
• Null 安全
• 型の省略
• ラムダ式
• data class
• 拡張関数
Copyright © 2014 Sansan, Inc. All rights reserved.
拡張関数
41
他のクラスに関数を付け加えることができる
Kotlin
Copyright © 2014 Sansan, Inc. All rights reserved. 42
他にも魅力的な
機能はたくさん!
Copyright © 2014 Sansan, Inc. All rights reserved. 43
Let’s enjoy
Kotlin♪
Copyright © 2014 Sansan, Inc. All rights reserved. 44
おわり。

More Related Content

What's hot

Servlet と Future の関わり方 #scala_ks
Servlet と Future の関わり方 #scala_ksServlet と Future の関わり方 #scala_ks
Servlet と Future の関わり方 #scala_ksKazuhiro Sera
 
Firebase Test Lab 無料枠を使ってみました。
Firebase Test Lab 無料枠を使ってみました。Firebase Test Lab 無料枠を使ってみました。
Firebase Test Lab 無料枠を使ってみました。cch-robo
 
プログラミング言語のパラダイムシフト(ダイジェスト)ーScalaから見る関数型と並列性時代の幕開けー
プログラミング言語のパラダイムシフト(ダイジェスト)ーScalaから見る関数型と並列性時代の幕開けープログラミング言語のパラダイムシフト(ダイジェスト)ーScalaから見る関数型と並列性時代の幕開けー
プログラミング言語のパラダイムシフト(ダイジェスト)ーScalaから見る関数型と並列性時代の幕開けーTanUkkii
 
Developing an Akka Edge4-5
Developing an Akka Edge4-5Developing an Akka Edge4-5
Developing an Akka Edge4-5saaaaaaki
 
実践Akka
実践Akka実践Akka
実践AkkaHuy Do
 
akka-doc-ja
akka-doc-jaakka-doc-ja
akka-doc-jaTIS Inc.
 
Yet Another DLR for Silverlightの試作
Yet Another DLR for Silverlightの試作Yet Another DLR for Silverlightの試作
Yet Another DLR for Silverlightの試作terurou
 
Reactive Systems と Back Pressure
Reactive Systems と Back PressureReactive Systems と Back Pressure
Reactive Systems と Back PressureAkihiro Ikezoe
 
Developing an Akka Edge1-3
Developing an Akka Edge1-3Developing an Akka Edge1-3
Developing an Akka Edge1-3saaaaaaki
 
Device Farm を使ったスマホアプリの自動テスト
Device Farm を使ったスマホアプリの自動テストDevice Farm を使ったスマホアプリの自動テスト
Device Farm を使ったスマホアプリの自動テスト健一 辰濱
 
PHP Application E2E with Capybara
PHP Application E2E with CapybaraPHP Application E2E with Capybara
PHP Application E2E with CapybaraYoshiaki Yoshida
 
Akkaとは。アクターモデル とは。
Akkaとは。アクターモデル とは。Akkaとは。アクターモデル とは。
Akkaとは。アクターモデル とは。Kenjiro Kubota
 
Scala.js触ってみた
Scala.js触ってみたScala.js触ってみた
Scala.js触ってみたAsami Abe
 
SpringOne 2016 報告 Reactive APIの設計・実装・使用
SpringOne 2016 報告 Reactive APIの設計・実装・使用SpringOne 2016 報告 Reactive APIの設計・実装・使用
SpringOne 2016 報告 Reactive APIの設計・実装・使用Takuya Iwatsuka
 

What's hot (16)

Servlet と Future の関わり方 #scala_ks
Servlet と Future の関わり方 #scala_ksServlet と Future の関わり方 #scala_ks
Servlet と Future の関わり方 #scala_ks
 
Firebase Test Lab 無料枠を使ってみました。
Firebase Test Lab 無料枠を使ってみました。Firebase Test Lab 無料枠を使ってみました。
Firebase Test Lab 無料枠を使ってみました。
 
プログラミング言語のパラダイムシフト(ダイジェスト)ーScalaから見る関数型と並列性時代の幕開けー
プログラミング言語のパラダイムシフト(ダイジェスト)ーScalaから見る関数型と並列性時代の幕開けープログラミング言語のパラダイムシフト(ダイジェスト)ーScalaから見る関数型と並列性時代の幕開けー
プログラミング言語のパラダイムシフト(ダイジェスト)ーScalaから見る関数型と並列性時代の幕開けー
 
Developing an Akka Edge4-5
Developing an Akka Edge4-5Developing an Akka Edge4-5
Developing an Akka Edge4-5
 
実践Akka
実践Akka実践Akka
実践Akka
 
akka-doc-ja
akka-doc-jaakka-doc-ja
akka-doc-ja
 
Yet Another DLR for Silverlightの試作
Yet Another DLR for Silverlightの試作Yet Another DLR for Silverlightの試作
Yet Another DLR for Silverlightの試作
 
Reactive Systems と Back Pressure
Reactive Systems と Back PressureReactive Systems と Back Pressure
Reactive Systems と Back Pressure
 
Developing an Akka Edge1-3
Developing an Akka Edge1-3Developing an Akka Edge1-3
Developing an Akka Edge1-3
 
Device Farm を使ったスマホアプリの自動テスト
Device Farm を使ったスマホアプリの自動テストDevice Farm を使ったスマホアプリの自動テスト
Device Farm を使ったスマホアプリの自動テスト
 
Akka入門
Akka入門Akka入門
Akka入門
 
PHP Application E2E with Capybara
PHP Application E2E with CapybaraPHP Application E2E with Capybara
PHP Application E2E with Capybara
 
Ruby紹介
Ruby紹介Ruby紹介
Ruby紹介
 
Akkaとは。アクターモデル とは。
Akkaとは。アクターモデル とは。Akkaとは。アクターモデル とは。
Akkaとは。アクターモデル とは。
 
Scala.js触ってみた
Scala.js触ってみたScala.js触ってみた
Scala.js触ってみた
 
SpringOne 2016 報告 Reactive APIの設計・実装・使用
SpringOne 2016 報告 Reactive APIの設計・実装・使用SpringOne 2016 報告 Reactive APIの設計・実装・使用
SpringOne 2016 報告 Reactive APIの設計・実装・使用
 

Similar to Kotlin が公式サポートになったので Kotlin の話

Java で書かれたAndroid アプリに Kotlin を適用させていく
Java で書かれたAndroid アプリに Kotlin を適用させていくJava で書かれたAndroid アプリに Kotlin を適用させていく
Java で書かれたAndroid アプリに Kotlin を適用させていく健一 辰濱
 
Java で書かれた Android アプリに Kotlin を適用させていく
Java で書かれた Android アプリに Kotlin を適用させていくJava で書かれた Android アプリに Kotlin を適用させていく
Java で書かれた Android アプリに Kotlin を適用させていく健一 辰濱
 
Robotium を使った UI テスト
Robotium を使った UI テストRobotium を使った UI テスト
Robotium を使った UI テスト健一 辰濱
 
【とらのあな主催】オタクがKotlinを追うライトニングトークイベント
【とらのあな主催】オタクがKotlinを追うライトニングトークイベント【とらのあな主催】オタクがKotlinを追うライトニングトークイベント
【とらのあな主催】オタクがKotlinを追うライトニングトークイベント虎の穴 開発室
 
Kotlinについて学んだコト
Kotlinについて学んだコトKotlinについて学んだコト
Kotlinについて学んだコトiPride Co., Ltd.
 
GarumとMeteoriteと私 3nd Edition ver0.04
GarumとMeteoriteと私 3nd Edition ver0.04GarumとMeteoriteと私 3nd Edition ver0.04
GarumとMeteoriteと私 3nd Edition ver0.04Shinobu Okano
 
3分で作る Kotlin Friendly な API
3分で作る Kotlin Friendly な API3分で作る Kotlin Friendly な API
3分で作る Kotlin Friendly な APIHiroshi Kikuchi
 
[20190530]yahoo japan+kubernetes meetup "Rook v1.0で試すCSI"
[20190530]yahoo japan+kubernetes meetup "Rook v1.0で試すCSI"[20190530]yahoo japan+kubernetes meetup "Rook v1.0で試すCSI"
[20190530]yahoo japan+kubernetes meetup "Rook v1.0で試すCSI"t8kobayashi
 
Kotlinことはじめ -まずは触って動かしてみよう-
Kotlinことはじめ  -まずは触って動かしてみよう-Kotlinことはじめ  -まずは触って動かしてみよう-
Kotlinことはじめ -まずは触って動かしてみよう-CASAREAL, Inc.
 
RubyKaigi2009 - RubyをつかったiPhoneアプリケーション開発
RubyKaigi2009 - RubyをつかったiPhoneアプリケーション開発RubyKaigi2009 - RubyをつかったiPhoneアプリケーション開発
RubyKaigi2009 - RubyをつかったiPhoneアプリケーション開発takuma mori
 
OCI serverless introduction
OCI serverless introductionOCI serverless introduction
OCI serverless introductionSuguruSugiyama
 
某社における在宅勤務スタート状況について
某社における在宅勤務スタート状況について某社における在宅勤務スタート状況について
某社における在宅勤務スタート状況についてkazuuw
 
iOS開発でのおすすめライブラリと管理
iOS開発でのおすすめライブラリと管理iOS開発でのおすすめライブラリと管理
iOS開発でのおすすめライブラリと管理Tomoya Hayakawa
 
アプリの不具合を少なくするために
アプリの不具合を少なくするためにアプリの不具合を少なくするために
アプリの不具合を少なくするために健一 辰濱
 
ひしめき合うOpen PaaSを徹底解剖! PaaSの今と未来
ひしめき合うOpen PaaSを徹底解剖! PaaSの今と未来ひしめき合うOpen PaaSを徹底解剖! PaaSの今と未来
ひしめき合うOpen PaaSを徹底解剖! PaaSの今と未来Kazuto Kusama
 
Kotlinのコルーチンについて
KotlinのコルーチンについてKotlinのコルーチンについて
Kotlinのコルーチンについて虎の穴 開発室
 
Rubyistのためのkotlin紹介
Rubyistのためのkotlin紹介Rubyistのためのkotlin紹介
Rubyistのためのkotlin紹介豊明 尾古
 

Similar to Kotlin が公式サポートになったので Kotlin の話 (20)

Java で書かれたAndroid アプリに Kotlin を適用させていく
Java で書かれたAndroid アプリに Kotlin を適用させていくJava で書かれたAndroid アプリに Kotlin を適用させていく
Java で書かれたAndroid アプリに Kotlin を適用させていく
 
Java で書かれた Android アプリに Kotlin を適用させていく
Java で書かれた Android アプリに Kotlin を適用させていくJava で書かれた Android アプリに Kotlin を適用させていく
Java で書かれた Android アプリに Kotlin を適用させていく
 
Robotium を使った UI テスト
Robotium を使った UI テストRobotium を使った UI テスト
Robotium を使った UI テスト
 
【とらのあな主催】オタクがKotlinを追うライトニングトークイベント
【とらのあな主催】オタクがKotlinを追うライトニングトークイベント【とらのあな主催】オタクがKotlinを追うライトニングトークイベント
【とらのあな主催】オタクがKotlinを追うライトニングトークイベント
 
Kotlinについて学んだコト
Kotlinについて学んだコトKotlinについて学んだコト
Kotlinについて学んだコト
 
GarumとMeteoriteと私 3nd Edition ver0.04
GarumとMeteoriteと私 3nd Edition ver0.04GarumとMeteoriteと私 3nd Edition ver0.04
GarumとMeteoriteと私 3nd Edition ver0.04
 
3分で作る Kotlin Friendly な API
3分で作る Kotlin Friendly な API3分で作る Kotlin Friendly な API
3分で作る Kotlin Friendly な API
 
[20190530]yahoo japan+kubernetes meetup "Rook v1.0で試すCSI"
[20190530]yahoo japan+kubernetes meetup "Rook v1.0で試すCSI"[20190530]yahoo japan+kubernetes meetup "Rook v1.0で試すCSI"
[20190530]yahoo japan+kubernetes meetup "Rook v1.0で試すCSI"
 
Spring I/O 2015 報告
Spring I/O 2015 報告Spring I/O 2015 報告
Spring I/O 2015 報告
 
Kotlinことはじめ -まずは触って動かしてみよう-
Kotlinことはじめ  -まずは触って動かしてみよう-Kotlinことはじめ  -まずは触って動かしてみよう-
Kotlinことはじめ -まずは触って動かしてみよう-
 
RubyKaigi2009 - RubyをつかったiPhoneアプリケーション開発
RubyKaigi2009 - RubyをつかったiPhoneアプリケーション開発RubyKaigi2009 - RubyをつかったiPhoneアプリケーション開発
RubyKaigi2009 - RubyをつかったiPhoneアプリケーション開発
 
OCI serverless introduction
OCI serverless introductionOCI serverless introduction
OCI serverless introduction
 
某社における在宅勤務スタート状況について
某社における在宅勤務スタート状況について某社における在宅勤務スタート状況について
某社における在宅勤務スタート状況について
 
YJTC18 C-1 Kotlin導入の状況と展望
YJTC18 C-1 Kotlin導入の状況と展望YJTC18 C-1 Kotlin導入の状況と展望
YJTC18 C-1 Kotlin導入の状況と展望
 
iOS開発でのおすすめライブラリと管理
iOS開発でのおすすめライブラリと管理iOS開発でのおすすめライブラリと管理
iOS開発でのおすすめライブラリと管理
 
Kotlin
KotlinKotlin
Kotlin
 
アプリの不具合を少なくするために
アプリの不具合を少なくするためにアプリの不具合を少なくするために
アプリの不具合を少なくするために
 
ひしめき合うOpen PaaSを徹底解剖! PaaSの今と未来
ひしめき合うOpen PaaSを徹底解剖! PaaSの今と未来ひしめき合うOpen PaaSを徹底解剖! PaaSの今と未来
ひしめき合うOpen PaaSを徹底解剖! PaaSの今と未来
 
Kotlinのコルーチンについて
KotlinのコルーチンについてKotlinのコルーチンについて
Kotlinのコルーチンについて
 
Rubyistのためのkotlin紹介
Rubyistのためのkotlin紹介Rubyistのためのkotlin紹介
Rubyistのためのkotlin紹介
 

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エンジニアの移住相談会 自己紹介スライド健一 辰濱
 

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エンジニアの移住相談会 自己紹介スライド
 

Kotlin が公式サポートになったので Kotlin の話

  • 1. Kotlin が公式サポートに なったので Kotlin の話 2017/06/10 Google I/O 2017 報告会 四国会場 LT Sansan株式会社 辰濱健一
  • 2. Copyright © 2014 Sansan, Inc. All rights reserved. 自己紹介 1
  • 3. Copyright © 2014 Sansan, Inc. All rights reserved. > 自己紹介 2 • 辰濱健一 • 徳島生まれ、奈良育ち、徳島県在住 • 2回転職するも、いずれも徳島県内勤務 • Sansan株式会社所属 • 古民家を改修した神山ラボ勤務 • 名刺アプリ Eight Android 版の開発 を Kotlin で! • リモートワーク
  • 4. Copyright © 2014 Sansan, Inc. All rights reserved. > 自己紹介 3 • 辰濱健一 • 徳島生まれ、奈良育ち、徳島県在住 • 2回転職するも、いずれも徳島県内勤務 • Sansan株式会社所属 • 古民家を改修した神山ラボ勤務 • 名刺アプリ Eight Android 版の開発 を Kotlin で! • リモートワーク
  • 5. Copyright © 2014 Sansan, Inc. All rights reserved. > Sansan神山ラボ 4
  • 6. Copyright © 2014 Sansan, Inc. All rights reserved. > 趣味 5 • 楽器演奏(エレクトーン・トランペット) • 徳島県内のイベントで、ちらほら演奏する機会を頂い てます
  • 7. Copyright © 2014 Sansan, Inc. All rights reserved. 6 本題へ…
  • 8. Copyright © 2014 Sansan, Inc. All rights reserved. Kotlin を Android アプリ開発言語に選定! 7
  • 9. Copyright © 2014 Sansan, Inc. All rights reserved. 8 ということで
  • 10. Copyright © 2014 Sansan, Inc. All rights reserved. 9 ざっと Kotlin のおさらい (&実務で使ったアドバイス) ※Eight では、2015/8 から Kotlin を導入しています
  • 11. Copyright © 2014 Sansan, Inc. All rights reserved. Kotlin について 10 • JetBrains 社が作っている • IDE サポートも充実
  • 12. Copyright © 2014 Sansan, Inc. All rights reserved. Kotlin について 11 • JetBrains 社が作っている • IDE サポートも充実 • JVM 上でも動作する言語
  • 13. Copyright © 2014 Sansan, Inc. All rights reserved. Kotlin について 12 • JetBrains 社が作っている • IDE サポートも充実 • JVM 上でも動作する言語 • Java コードと相互運用可能
  • 14. Copyright © 2014 Sansan, Inc. All rights reserved. Kotlin について 13 • JetBrains 社が作っている • IDE サポートも充実 • JVM 上でも動作する言語 • Java コードと相互運用可能 • Java → Kotlin の参照 OK
  • 15. Copyright © 2014 Sansan, Inc. All rights reserved. Kotlin について 14 • JetBrains 社が作っている • IDE サポートも充実 • JVM 上でも動作する言語 • Java コードと相互運用可能 • Java → Kotlin の参照 OK • Kotlin → Java の参照 OK
  • 16. Copyright © 2014 Sansan, Inc. All rights reserved. Kotlin について 15 • JetBrains 社が作っている • IDE サポートも充実 • JVM 上でも動作する言語 • Java コードと相互運用可能 • Java → Kotlin の参照 OK • Kotlin → Java の参照 OK • → 既存プロジェクトに一部分から導入可能
  • 17. Copyright © 2014 Sansan, Inc. All rights reserved. Kotlin について 16 • JetBrains 社が作っている • IDE サポートも充実 • JVM 上でも動作する言語 • Java コードと相互運用可能 • Java → Kotlin の参照 OK • Kotlin → Java の参照 OK • → 既存プロジェクトに一部分から導入可能 • ライブラリが軽量
  • 18. Copyright © 2014 Sansan, Inc. All rights reserved. Kotlin について 17 • JetBrains 社が作っている • IDE サポートも充実 • JVM 上でも動作する言語 • Java コードと相互運用可能 • Java → Kotlin の参照 OK • Kotlin → Java の参照 OK • → 既存プロジェクトに一部分から導入可能 • ライブラリが軽量 • Java よりも少ない記述量で実現できる
  • 19. Copyright © 2014 Sansan, Inc. All rights reserved. Kotlin の代表的な言語的特徴 18 • Null 安全 • 型の省略 • ラムダ式 • data class • 拡張関数
  • 20. Copyright © 2014 Sansan, Inc. All rights reserved. Kotlin の代表的な言語的特徴 19 • Null 安全 • 型の省略 • ラムダ式 • data class • 拡張関数
  • 21. Copyright © 2014 Sansan, Inc. All rights reserved. Null 安全 20 • 型で 「null 不許容型」「null 許容型」が分かれる • Java の String は null 許容型 • → 「 null でない」という状態が型ではわからない
  • 22. Copyright © 2014 Sansan, Inc. All rights reserved. Null 安全 21 • 型で 「null 不許容型」「null 許容型」が分かれる • Java の String は null 許容型 • → 「 null でない」という状態が型ではわからない Java
  • 23. Copyright © 2014 Sansan, Inc. All rights reserved. Null 安全 22 • 型で 「null 不許容型」「null 許容型」が分かれる • Java の String は null 許容型 • → 「 null でない」という状態が型ではわからない • 例)String の場合 • null 不許容型:String • null 許容型:String? Java
  • 24. Copyright © 2014 Sansan, Inc. All rights reserved. Null 安全 23 ・null が来ないことが確実であれば… Java
  • 25. Copyright © 2014 Sansan, Inc. All rights reserved. Null 安全 24 ・null が来ないことが確実であれば… Java Kotlin
  • 26. Copyright © 2014 Sansan, Inc. All rights reserved. Null 安全 25 • 型で null を許容するか否かを表現できる
  • 27. Copyright © 2014 Sansan, Inc. All rights reserved. Null 安全 26 • 型で null を許容するか否かを表現できる • NullPointerException がなくなるわけではない!
  • 28. Copyright © 2014 Sansan, Inc. All rights reserved. Null 安全 27 • 型で null を許容するか否かを表現できる • NullPointerException がなくなるわけではない! • 例)Kotlin の関数を Java から呼び出す • Kotlin の定義が non-null でも、Java から null を渡すこと ができてしまう…
  • 29. Copyright © 2014 Sansan, Inc. All rights reserved. Null 安全 28 • 型で null を許容するか否かを表現できる • NullPointerException がなくなるわけではない! • 例)Kotlin の関数を Java から呼び出す • Kotlin の定義が non-null でも、Java から null を渡すこと ができてしまう… • → support annotation を付けておこう。 Java でも IDE が認識して、null チェックの必要性を判断してくれます Java
  • 30. Copyright © 2014 Sansan, Inc. All rights reserved. Kotlin の代表的な言語的特徴 29 • Null 安全 • 型の省略 • ラムダ式 • data class • 拡張関数
  • 31. Copyright © 2014 Sansan, Inc. All rights reserved. 型の省略 30 Java
  • 32. Copyright © 2014 Sansan, Inc. All rights reserved. 型の省略 31 Java Kotlin
  • 33. Copyright © 2014 Sansan, Inc. All rights reserved. 型の省略 32 Java Kotlin Kotlin
  • 34. Copyright © 2014 Sansan, Inc. All rights reserved. 型の省略 33 Java Kotlin Kotlin ※型推論に時間が掛かるので、 型を書いた方が、コンパイルが速い
  • 35. Copyright © 2014 Sansan, Inc. All rights reserved. Kotlin の代表的な言語的特徴 34 • Null 安全 • 型の省略 • ラムダ式 • data class • 拡張関数
  • 36. Copyright © 2014 Sansan, Inc. All rights reserved. ラムダ式 35 • ラムダ式 • 関数の宣言なしに、関数オブジェクトを生成できる Java
  • 37. Copyright © 2014 Sansan, Inc. All rights reserved. ラムダ式 36 • ラムダ式 • 関数の宣言なしに、関数オブジェクトを生成できる Java Kotlin
  • 38. Copyright © 2014 Sansan, Inc. All rights reserved. Kotlin の代表的な言語的特徴 37 • Null 安全 • 型の省略 • ラムダ式 • data class • 拡張関数
  • 39. Copyright © 2014 Sansan, Inc. All rights reserved. data class 38 • モデルクラスでおなじみの関数を自動生成 • 各 getter, setter, equals, hashCode, … Java
  • 40. Copyright © 2014 Sansan, Inc. All rights reserved. data class 39 • モデルクラスでおなじみの関数を自動生成 • 各 getter, setter, equals, hashCode, … Kotlin Java
  • 41. Copyright © 2014 Sansan, Inc. All rights reserved. Kotlin の代表的な言語的特徴 40 • Null 安全 • 型の省略 • ラムダ式 • data class • 拡張関数
  • 42. Copyright © 2014 Sansan, Inc. All rights reserved. 拡張関数 41 他のクラスに関数を付け加えることができる Kotlin
  • 43. Copyright © 2014 Sansan, Inc. All rights reserved. 42 他にも魅力的な 機能はたくさん!
  • 44. Copyright © 2014 Sansan, Inc. All rights reserved. 43 Let’s enjoy Kotlin♪
  • 45. Copyright © 2014 Sansan, Inc. All rights reserved. 44 おわり。