SlideShare uma empresa Scribd logo
1 de 45
Baixar para ler offline
Android Studio 3.0
with
Kotlin
〜 Google I/O 2017 報告会〜
@mokelab
● モバイルアプリの
受託開発
● 技術情報発信
● グッズ販売
Tech Sheets
本がでます
初心者〜中級者向けに
アプリ開発時の落とし穴を50個ほど紹介
(おとなの事情で7月中旬予定)
● IntelliJ 2017.1
● Kotlinサポート
● サンプルデータ
● Downloadable fonts
● Device explorer
● Android Profiler
● APK Analyzerの改善
● エミュレータ
● etc
サンプルデータ
プレビューにサンプルデータ表示機能
tools:src=”@sample/xxxx”
JSONやtxtファイルで用意
(画像はだめっぽい。。。)
フォント
XMLでフォントが指定できるようになった!
<TextView
android:id="@+id/body_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:fontFamily="@font/aclonica"
tools:text="@tools:sample/lorem"/>
フォント
Android Studioもいい感じに対応
Device explorer
地味だけど便利
Android Profiler
Chrome dev toolのAndroid版みたいなやつ
動画でどうぞ
APK Analyzer
地味〜に改善
エミュレータ
Playストア入りエミュレータ
ただしRootはとれません
Gradle
dependenciesの書き方が変更に
compile 'com.android.xxxxx'
↓
implementation 'com.android.xxxxx'
api 'com.android.xxxxx'
● JVM言語
○ Scalaとか、Groovyとか
● Javaと混ぜて使える
○ ブリッジを書く必要なし!
○ ただしAPTが混ざるとアヤシイ
● モダンな機能いろいろ入ってる
● コンパイルはそれなりに早い
○ というかSwiftが遅すぎや。。
変数
val name : String = "moke"
var age : Int = 5
[val|var] 名前 : 型 という形式
valだと変更できません
if式
var message = ""
if (Build.VERSION.SDK_INT >=
Build.VERSION_CODE.M) {
message = "Supported"
} else {
message = "not supported"
}
if式
式なので、こんな風にかける
var message = if (Build.VERSION.SDK_INT >=
Build.VERSION_CODE.M)
"Supported" else "not supported"
繰り返し(for)
Javaの拡張for文と同じかたち
val a = arrayOf(1, 2, 3, 4, 5)
for (item in a) {
Log.v("tag", "value=$item")
}
繰り返し(for)
for (int i = 0 ; i < 10 ; ++i) はどうやって書く?
for (item in 0..9) {
Log.v("tag", "value=$item")
}
繰り返し(while)
Javaとまぁ同じ
val k = 10
while (k >= 10) {
….
--k
}
繰り返し(do-while)
Javaとまぁ同じ
val k = 10
do {
….
--k
} while (k >= 10)
when式
switch文のちょいいい版
var name = ""
when (Build.VERSION.SDK_INT) {
Build.VERSION_CODE.M -> name = "M!"
Build.VERSION_CODE.N -> name = "N!"
else -> { name = "Unknown" }
}
when式
式なので右辺に使える
else は必須
var name = when (Build.VERSION.SDK_INT) {
Build.VERSION_CODE.M -> "M!"
Build.VERSION_CODE.N -> "N!"
else -> { "Unknown" }
}
プロパティ
Kotlinのクラスではプロパティになる
class KotlinClass {
var name : String = ""
}
プロパティ
Javaだとsetter/getter
valなプロパティだったらgetterのみ
public class JavaClass {
private void moke() {
KotlinClass c = new KotlinClass();
c.setName("moke");
}
}
コンストラクタ
その1:constructorで定義する
class KotlinClass {
val name : String
constructor(name : String) {
this.name = name
}
}
コンストラクタ
その2:プライマリコンストラクタで定義する
class KotlinClass(n : String) {
val name : String = n
}
※その1の方法はセカンダリコンストラクタと呼ぶよ
コンストラクタ
その3:プロパティも一緒に定義しちゃえ
class KotlinClass(val name : String) {
…
}
コンパニオンオブジェクト
staticメソッドはどうやって定義する?
// これはだめ
class KotlinClass {
static fun newInstance() : KotlinClass {
return KotlinClass()
}
}
コンパニオンオブジェクト
コンパニオンオブジェクトを使う
class KotlinClass {
companion object {
fun newInstance() : KotlinClass {
return KotlinClass()
}
}
}
コンパニオンオブジェクト
Javaではこう見える
void moke() {
KotlinClass c =
KotlinClass.Companion.newInstance();
}
コンパニオンオブジェクト
@JvmStatic をつけると、staticメソッドっぽく
class KotlinClass {
companion object {
@JvmStatic
fun newInstance() : KotlinClass {
return KotlinClass()
}
}
コンパニオンオブジェクト
Javaではこう見える
void moke() {
KotlinClass c =
KotlinClass.newInstance();
}
null安全
nullが入る可能性がある変数は
型に?をつける
fun moke(val name : String?) {
if (name != null) {
Log.v("tag", "name=$name")
}
}
null安全
nullだったらnullを返してメソッドを呼ばない
fun moke(val name : String?) {
Log.v("tag", "length=" + name?.length)
}
null安全
nullがはいらない場合は強制的にNon-Nullにでき
る
もし実行時にnullだったらクラッシュ
fun moke(val name : String?) {
Log.v("tag", "length=" + name!!.length)
}
null安全
Javaのメソッドの戻り値は?があってもなくてもOK
fun moke(val name : String?) {
val version : String = JavaClass.getVersion()
val version2 : String? =
JavaClass.getVersion()
}
null安全
Javaのメソッドに@Nullableや@NonNullをつける
と、Kotlin側で忖度してくれる
@Nullable
public static String getVersion() { /* */ }
fun moke(val name : String?) {
// エラー、NullableはNon-Nullにセット不可
val version : String = JavaClass.getVersion()
}
ラムダ式
メソッド1つで、その引数が1つの場合はいろいろ省
略できる
val b = Button(this)
b.setOnClickListener {
Log.v("tag", "id=" + it.id)
}
Thanks!

Mais conteúdo relacionado

Semelhante a 20170618 Google I/O報告会in福岡

.NET の今と今後に思うこと
.NET の今と今後に思うこと.NET の今と今後に思うこと
.NET の今と今後に思うことAkira Inoue
 
VSUG Day 2010 Summer - Using ADO.NET Entity Framework
VSUG Day 2010 Summer - Using ADO.NET Entity FrameworkVSUG Day 2010 Summer - Using ADO.NET Entity Framework
VSUG Day 2010 Summer - Using ADO.NET Entity FrameworkAtsushi Fukui
 
Electronについて
ElectronについてElectronについて
Electronについてtomowata
 
Jetpack Library 事始め
Jetpack Library 事始めJetpack Library 事始め
Jetpack Library 事始めTomohiro Kaizu
 
物体検出フレームワークMMDetectionで快適な開発
物体検出フレームワークMMDetectionで快適な開発物体検出フレームワークMMDetectionで快適な開発
物体検出フレームワークMMDetectionで快適な開発Tatsuya Suzuki
 
基礎から見直す ASP.NET MVC の単体テスト自動化方法 ~ Windows Azure 関連もあるかも~
基礎から見直す ASP.NET MVC の単体テスト自動化方法 ~ Windows Azure 関連もあるかも~基礎から見直す ASP.NET MVC の単体テスト自動化方法 ~ Windows Azure 関連もあるかも~
基礎から見直す ASP.NET MVC の単体テスト自動化方法 ~ Windows Azure 関連もあるかも~normalian
 
cocos2d-xとネイティブ間の連携
cocos2d-xとネイティブ間の連携cocos2d-xとネイティブ間の連携
cocos2d-xとネイティブ間の連携Tomoaki Shimizu
 
C#勉強会 ~ C#9の新機能 ~
C#勉強会 ~ C#9の新機能 ~C#勉強会 ~ C#9の新機能 ~
C#勉強会 ~ C#9の新機能 ~Fujio Kojima
 
Building React, Flutter and Blazor development and debugging environment with...
Building React, Flutter and Blazor development and debugging environment with...Building React, Flutter and Blazor development and debugging environment with...
Building React, Flutter and Blazor development and debugging environment with...Shotaro Suzuki
 
Qlik TECHTALK Qlik Cloud 日本リージョン開設!テナント作成と移行方法を解説
Qlik TECHTALK Qlik Cloud 日本リージョン開設!テナント作成と移行方法を解説Qlik TECHTALK Qlik Cloud 日本リージョン開設!テナント作成と移行方法を解説
Qlik TECHTALK Qlik Cloud 日本リージョン開設!テナント作成と移行方法を解説QlikPresalesJapan
 
KotlinでROSノードを書いてみた
KotlinでROSノードを書いてみたKotlinでROSノードを書いてみた
KotlinでROSノードを書いてみたNaoki Iwata
 
Elastic circle ci-co-webinar-20210127
Elastic circle ci-co-webinar-20210127Elastic circle ci-co-webinar-20210127
Elastic circle ci-co-webinar-20210127Shotaro Suzuki
 
GoF デザインパターン 2009
GoF デザインパターン 2009GoF デザインパターン 2009
GoF デザインパターン 2009miwarin
 
160705-03 RTミドルウエア講習会・名城大
160705-03 RTミドルウエア講習会・名城大160705-03 RTミドルウエア講習会・名城大
160705-03 RTミドルウエア講習会・名城大openrtm
 
.NETの自作ツール公開手段
.NETの自作ツール公開手段.NETの自作ツール公開手段
.NETの自作ツール公開手段Pierre3 小林
 
Kotlin/Native 「使ってみた」の一歩先へ
Kotlin/Native 「使ってみた」の一歩先へKotlin/Native 「使ってみた」の一歩先へ
Kotlin/Native 「使ってみた」の一歩先へTakaki Hoshikawa
 
Introduction to extensions and other useful features for developing apps usin...
Introduction to extensions and other useful features for developing apps usin...Introduction to extensions and other useful features for developing apps usin...
Introduction to extensions and other useful features for developing apps usin...Shotaro Suzuki
 

Semelhante a 20170618 Google I/O報告会in福岡 (20)

.NET の今と今後に思うこと
.NET の今と今後に思うこと.NET の今と今後に思うこと
.NET の今と今後に思うこと
 
VSUG Day 2010 Summer - Using ADO.NET Entity Framework
VSUG Day 2010 Summer - Using ADO.NET Entity FrameworkVSUG Day 2010 Summer - Using ADO.NET Entity Framework
VSUG Day 2010 Summer - Using ADO.NET Entity Framework
 
Electronについて
ElectronについてElectronについて
Electronについて
 
Jetpack Library 事始め
Jetpack Library 事始めJetpack Library 事始め
Jetpack Library 事始め
 
Molecule入門
Molecule入門Molecule入門
Molecule入門
 
物体検出フレームワークMMDetectionで快適な開発
物体検出フレームワークMMDetectionで快適な開発物体検出フレームワークMMDetectionで快適な開発
物体検出フレームワークMMDetectionで快適な開発
 
基礎から見直す ASP.NET MVC の単体テスト自動化方法 ~ Windows Azure 関連もあるかも~
基礎から見直す ASP.NET MVC の単体テスト自動化方法 ~ Windows Azure 関連もあるかも~基礎から見直す ASP.NET MVC の単体テスト自動化方法 ~ Windows Azure 関連もあるかも~
基礎から見直す ASP.NET MVC の単体テスト自動化方法 ~ Windows Azure 関連もあるかも~
 
cocos2d-xとネイティブ間の連携
cocos2d-xとネイティブ間の連携cocos2d-xとネイティブ間の連携
cocos2d-xとネイティブ間の連携
 
C#勉強会 ~ C#9の新機能 ~
C#勉強会 ~ C#9の新機能 ~C#勉強会 ~ C#9の新機能 ~
C#勉強会 ~ C#9の新機能 ~
 
Building React, Flutter and Blazor development and debugging environment with...
Building React, Flutter and Blazor development and debugging environment with...Building React, Flutter and Blazor development and debugging environment with...
Building React, Flutter and Blazor development and debugging environment with...
 
Qlik TECHTALK Qlik Cloud 日本リージョン開設!テナント作成と移行方法を解説
Qlik TECHTALK Qlik Cloud 日本リージョン開設!テナント作成と移行方法を解説Qlik TECHTALK Qlik Cloud 日本リージョン開設!テナント作成と移行方法を解説
Qlik TECHTALK Qlik Cloud 日本リージョン開設!テナント作成と移行方法を解説
 
KotlinでROSノードを書いてみた
KotlinでROSノードを書いてみたKotlinでROSノードを書いてみた
KotlinでROSノードを書いてみた
 
sveltekit-ja.pdf
sveltekit-ja.pdfsveltekit-ja.pdf
sveltekit-ja.pdf
 
Elastic circle ci-co-webinar-20210127
Elastic circle ci-co-webinar-20210127Elastic circle ci-co-webinar-20210127
Elastic circle ci-co-webinar-20210127
 
GoF デザインパターン 2009
GoF デザインパターン 2009GoF デザインパターン 2009
GoF デザインパターン 2009
 
What is template
What is templateWhat is template
What is template
 
160705-03 RTミドルウエア講習会・名城大
160705-03 RTミドルウエア講習会・名城大160705-03 RTミドルウエア講習会・名城大
160705-03 RTミドルウエア講習会・名城大
 
.NETの自作ツール公開手段
.NETの自作ツール公開手段.NETの自作ツール公開手段
.NETの自作ツール公開手段
 
Kotlin/Native 「使ってみた」の一歩先へ
Kotlin/Native 「使ってみた」の一歩先へKotlin/Native 「使ってみた」の一歩先へ
Kotlin/Native 「使ってみた」の一歩先へ
 
Introduction to extensions and other useful features for developing apps usin...
Introduction to extensions and other useful features for developing apps usin...Introduction to extensions and other useful features for developing apps usin...
Introduction to extensions and other useful features for developing apps usin...
 

Último

Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。iPride Co., Ltd.
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NTT DATA Technology & Innovation
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。iPride Co., Ltd.
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイスCRI Japan, Inc.
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)Hiroshi Tomioka
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルCRI Japan, Inc.
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。iPride Co., Ltd.
 

Último (7)

Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 

20170618 Google I/O報告会in福岡