Ce diaporama a bien été signalé.
Nous utilisons votre profil LinkedIn et vos données d’activité pour vous proposer des publicités personnalisées et pertinentes. Vous pouvez changer vos préférences de publicités à tout moment.
モバイルアプリ開発をグッと楽にする
Kotlinの便利なところ3選
@kikuchy
Who?
@kikuchy
菊池紘
株式会社Diverse (ミクシィグループ)
新規のAndroidアプリ開発やってます
Kotlinがどんな言語かご存知の方?
Kotlinという言語
IntelliJで有名なJetBrainsが作った言語
数々のプラットフォーム上で動作
初めはJVMの上で動く言語として有名に
2017年5月からAndroidの公式開発言語
Spring Framework 5 からK...
これだけできれば何でもできる、と言っても
過言ではない言語
今回はモバイルアプリ開発のときに便利な
言語機能に絞ってお伝えします
1. 文ではなく"式"
// Java
if (user.isNewCommer()) {
forNewcommerView.setVisivility(View.VISIBLE);
} else {
forNewcommerView.setVisivility(Vi...
// Kotlin
Intent(
context,
when (age) {
in 0..6 -> WithRubyActivity::class.java
in 7..12 -> EasyKanjiActivity::class.java
...
1. 文ではなく"式"
何が便利なの?
→ 同じようなメソッド呼び出し/一時変数の宣言を書かな
くて良い!!!
2. 代数的データ型も取り扱い可能
これを支える言語機能
sealed class
Smart Cast
2‑1. sealed class
// BTreeNode.kt
// 二分木
sealed class BTreeNode {
// 葉
data class Leaf(
val data: Int
): BTreeNode()
// 枝
...
2‑1. sealed class
特定の範囲内でのみ継承可能な抽象クラス
version 1.0.4までは「内部クラスのみ」
version 1.0.4から「同じファイル内でのみ」
これによって代数的データ型を実現できる
型によるORを表現で...
2‑2. Smart Cast
fun extract(node: BTreeNode): Int {
if (node is Leaf) {
return node.data // <- 注目!
}
...
2‑2. Smart Cast
文脈から型が明らかな場合、自動的にキャストしてくれる機能
2. 代数的データ型も取り扱い可能
何が便利なの?
→ UIに不可欠な状態管理を簡単に書ける!!!
https://www.slideshare.net/HiroshiKikuchi/ss‑78564692
3. 提供されてる拡張関数が豊富
// Java
Intent newIntent(Context context, String p1, String p2) {
final Intent intent =
new Intent(context, SomeActivity.c...
//Java
final int[] optionIds = {
R.string.tokyo,
R.string.kyoto,
R.string.osaka
};
final String[] options = new String[](o...
// Kotlin
val spinnerAdapter = ArrayAdapter<String>(
context,
R.layout.spinner_item,
arrayOf(
R.string.tokyo,
R.string.kyo...
3. 提供されてる拡張関数が豊富
何が便利なの?
→ 紋切り型のコードを書く必要がなくなる!!!
紹介しきれなかっただけで他にもたくさん
Nullablityが型レベルで表現されている
型推論もある
標準で提供されているクラス群も便利
Android Kotlin Extensionを使うとView探しが超ラクに
わかりやすく読みやすいDS...
便利なKotlinを使っていきましょう
宣伝
DiverseではSwift(iOS)/Kotlin(Android, サーバー)を扱えるエンジニ
アを募集中です
特に新規事業のiOS開発チームリーダー募集に注力中
自分の力でサービスを成長させることに興味がある方、お話させて
ください!
モバイルアプリ開発をグッと楽にするKotlinの便利なところ3選
モバイルアプリ開発をグッと楽にするKotlinの便利なところ3選
モバイルアプリ開発をグッと楽にするKotlinの便利なところ3選
Prochain SlideShare
Chargement dans…5
×

モバイルアプリ開発をグッと楽にするKotlinの便利なところ3選

1 346 vues

Publié le

Swift/Kotlion勉強会 #2 でお話する(した)ものです。

Publié dans : Technologie
  • Soyez le premier à commenter

モバイルアプリ開発をグッと楽にするKotlinの便利なところ3選

  1. 1. モバイルアプリ開発をグッと楽にする Kotlinの便利なところ3選 @kikuchy
  2. 2. Who? @kikuchy 菊池紘 株式会社Diverse (ミクシィグループ) 新規のAndroidアプリ開発やってます
  3. 3. Kotlinがどんな言語かご存知の方?
  4. 4. Kotlinという言語 IntelliJで有名なJetBrainsが作った言語 数々のプラットフォーム上で動作 初めはJVMの上で動く言語として有名に 2017年5月からAndroidの公式開発言語 Spring Framework 5 からKotlinサポート 今では更に幅広く JavaScriptにも! LLVMでマシン語にも! なのでiOSアプリも書けちゃう
  5. 5. これだけできれば何でもできる、と言っても 過言ではない言語
  6. 6. 今回はモバイルアプリ開発のときに便利な 言語機能に絞ってお伝えします
  7. 7. 1. 文ではなく"式"
  8. 8. // Java if (user.isNewCommer()) { forNewcommerView.setVisivility(View.VISIBLE); } else { forNewcommerView.setVisivility(View.GONE); } // Kotlin forNewcommerView.visivility = if (user.isNewcommer) { View.VISIBLE } else { View.GONE }
  9. 9. // Kotlin Intent( context, when (age) { in 0..6 -> WithRubyActivity::class.java in 7..12 -> EasyKanjiActivity::class.java else -> StanderdActivity::class.java } )
  10. 10. 1. 文ではなく"式" 何が便利なの? → 同じようなメソッド呼び出し/一時変数の宣言を書かな くて良い!!!
  11. 11. 2. 代数的データ型も取り扱い可能
  12. 12. これを支える言語機能 sealed class Smart Cast
  13. 13. 2‑1. sealed class // BTreeNode.kt // 二分木 sealed class BTreeNode { // 葉 data class Leaf( val data: Int ): BTreeNode() // 枝 data class Branch( val left: BTreeNode, val right: BTreeNode ): BTreeNode() } // OtherFile.kt // ↓これはコンパイルエラーになる // class OutOfTree(): BTreeNode()
  14. 14. 2‑1. sealed class 特定の範囲内でのみ継承可能な抽象クラス version 1.0.4までは「内部クラスのみ」 version 1.0.4から「同じファイル内でのみ」 これによって代数的データ型を実現できる 型によるORを表現できるようなものだと思ってください ex)  BTreeNode とは Leaf or  Branch 
  15. 15. 2‑2. Smart Cast fun extract(node: BTreeNode): Int { if (node is Leaf) { return node.data // <- 注目! } ...
  16. 16. 2‑2. Smart Cast 文脈から型が明らかな場合、自動的にキャストしてくれる機能
  17. 17. 2. 代数的データ型も取り扱い可能 何が便利なの? → UIに不可欠な状態管理を簡単に書ける!!!
  18. 18. https://www.slideshare.net/HiroshiKikuchi/ss‑78564692
  19. 19. 3. 提供されてる拡張関数が豊富
  20. 20. // Java Intent newIntent(Context context, String p1, String p2) { final Intent intent = new Intent(context, SomeActivity.class); intent.putExtra("p1", p1); intent.putExtra("p2", p2); return intent; } // Kotlin fun newIntent(context: Context, p1: String, p2: String) = Intent(content, SomeActivity:class.java).apply { putExtra("p1", p1) putExtra("p2", p2) }
  21. 21. //Java final int[] optionIds = { R.string.tokyo, R.string.kyoto, R.string.osaka }; final String[] options = new String[](optionIds.size); for(int i = 0; i < optionIds.size; i++) { options[i] = getString(optionIds[i]); } final ArrayAdapter<String> spinnerAdapter = new ArrayAdapter( getContext(), R.layout.spinner_item, options );
  22. 22. // Kotlin val spinnerAdapter = ArrayAdapter<String>( context, R.layout.spinner_item, arrayOf( R.string.tokyo, R.string.kyoto, R.string.osaka ) .map { id -> getString(id) } )
  23. 23. 3. 提供されてる拡張関数が豊富 何が便利なの? → 紋切り型のコードを書く必要がなくなる!!!
  24. 24. 紹介しきれなかっただけで他にもたくさん Nullablityが型レベルで表現されている 型推論もある 標準で提供されているクラス群も便利 Android Kotlin Extensionを使うとView探しが超ラクに わかりやすく読みやすいDSLも作れる iOSもKotlinで書けるようになる予定
  25. 25. 便利なKotlinを使っていきましょう
  26. 26. 宣伝 DiverseではSwift(iOS)/Kotlin(Android, サーバー)を扱えるエンジニ アを募集中です 特に新規事業のiOS開発チームリーダー募集に注力中 自分の力でサービスを成長させることに興味がある方、お話させて ください!

×