「速習Kotlin〜Javaより簡単!新Android開発言語を今すぐマスター」を読みました

マルチプラットフォームアプリケーション開発の勉強中で、各プラットフォームの開発の学習をしているので、Androidアプリ開発で使う言語としてKotlin触ってみようと思います。

TOC

Part1 イントロダクション

Kotlinとは何ぞや?ということで、Kotlinの特徴と開発環境の準備について記載されている。

  1. 簡潔
    • Javaと比較して短く書ける
  2. 安全
    • Null安全とスマートキャスト
  3. 相互運用性に優れる
    • altJSやKotlinNativeがあり、様々な開発に使用できる
  4. ツールとの親和性に優れる
    • IDEやツールがKotlinをサポートしている

Part2 基本構文

  • 変数宣言は var, val
    • varが再代入可能、valが不可(定数)
    • コンパイル時定数の const キーワード
  • 8進数リテラルがない
  • 文字列リテラルは Escaped String, Raw String
    • Raw Stringはいわゆるヒアドキュメント。trimMarginという行頭余白を落とすメソッドがある
  • 文字列テンプレートあり
  • Null許容型、ボクシングは他言語とだいたい一緒
    • if式でNullチェックをすればブロック内でNull許容型をそのまま使用可能(スマートキャスト)
  • 型変換は明示的に行う必要あり
  • ラムダ式で i -> i を省略できる it 変数
  • コレクションを生成する xxxOf, mutabuleXxxOf

Part3 演算子/制御構文

  • 同値性 == (.equals相当), 同一性 === (==相当)
  • 三項演算子なし。if式で行う
  • if (i in 1..20) { println("iは1〜20の範囲") }
  • ビット演算子は(演算子ではなく)関数として提供
    • and, or, xorなど
  • if, whenは式なので値を返せる
    • val a = if (b == 1) { "1" } else { "not 1" }
  • for inが基本。mapに対しては for (key, val) in
  • for i in 1..10 step 3 で増分変更
    • for i in 10 downTo 1 でデクリメント方向
  • ラベルは末尾 @
    • label@, break@label

Part4 関数

  • 関数の宣言はfun
  • 引数、戻り値の型指定必須
    • 何も返さない戻り値 Unit については省略可
  • 可変長引数 vararg, 可変長引数に配列を渡す *list
  • 複数の戻り値型は Pair, Triple で表現
  • 高階関数として引数に関数を渡す ::func
  • ラムダ式内でのreturnは呼び出し元での return になること注意
    • ラムダ式の終了は return@label または return@forEach (関数名)でラベルで指定
  • 関数内で関数を定義するとローカル関数になる

Part5 オブジェクト指向構文

  • デフォルト public
  • class name()の部分でコンストラクタ生成できる
  • プロパティのgetter, setterでバッキングフィールド field を使用できる
  • パッケージはフォルダ構成一致させる必要なし
  • インポートは as で別名でインポートできる

Part6 継承とインターフェイス

  • デフォルト final のため、継承可能なクラスは open 修飾子で明示する
    • 抽象クラスには abstract
  • インターフェイスの定義は class の代わりに interface

Part7 特殊なクラス

  • データクラス
  • オブジェクト宣言
  • オブジェクト式
  • コンパニオンオブジェクト
  • enumクラス
  • ジェネリック

データクラスべんりそう。

Part8 もっとオブジェクト指向

委譲プロパティ、委譲クラスが言語仕様でできるの良いですね。

感想

Javaの知識を活かして差分の知識を素早く習得」とあるように、あっさりとKotlinの言語仕様を学習できました。 Swift, TypeScriptのような新しい言語のいいとこ取りって感じでいいですね。Kotlin覚えれば主要モバイルプラットフォームで使う言語だいたい使えるようになるので頑張るぞ。 ただ、この本ではKotlinの活用先であろうAndroidアプリ開発については全く触れていないので、そちらは別の場所で学習が必要でしょう。

そういえばエラー処理について書かれていなかったけど、そこはJavaと同じなのかな…めんどい。