KotlininoueKotlinでAndroid開発!【概要】この記事は2017年2月13日に書かれたものです。内容が古い可能性がありますのでご注意ください。TweetKotlinというプログラミング言語を用いたAndroid開発が今注目を集めています。本シリーズではKotlinとそのAndroid開発への導入を紹介します。KotlinとはKotlin(コトリン)とは静的型付けのプログラミング言語の一つです。2016年2月にバージョン1.0がリリースされたばかりの若い言語です。IDEAで有名なJetBrains社が開発を主導しています。JVM(Java仮装マシン)上で動作するJVM言語(他にはScala、Groovy等)であるという点が特徴です。JavaKotlin公式のトップに飾られているフレーズです。interoperableとは相互運用という意味です。Javaで書かれたコードをKotlinから呼び出すことも、Kotlinで書かれたコードをJavaから呼び出すことも可能ということです。これはJavaの既存の資産を活用できることを意味します。若い言語なだけあってモダンな言語仕様を多く取り入れており、Javaに比べて非常に書きやすくなっています。感覚的にもSwiftに近く、iOS開発者は馴染みやすいはずです。Kotlin?すでにJavaによる開発が標準であるところになぜKotlinを導入するのか。端的に言えば、Javaではどうしても冗長になる記述を改善し、かつプログラムの安全性を高めるためです。具体的な例を幾つか挙げましょう。Safety)null安全こそKotlinを採用する最大の理由と言っても過言ではありません。null安全とはなんでしょうか。簡単に言えば実行時にnullによって生じるエラーを防ぐ仕組みです。次のJavaのコードを見てみましょう。message.length();Javaではこのようにnullのメンバにアクセスしようとすると、実行時に悪名高きNullPointerExceptionを吐きます。Kotlinはこの問題を解決するために、nullが入り得る型(null許容型)とnullが入り得ない型(null非許容型)の明確な区別を言語機能として提供しています。型に?をつけるとnull許容型になります。null非許容型にnullを代入しようとするとコンパイルエラーになります。nullable?.lengthnull許容型のメンバにアクセスするときは必ずチェックが必要です。nullable?.lengthこのようにコンパイルの段階でnullによる危険を検知できるためnullによる不用意な実行時エラーを防ぐことができるのです。ちなみに、このnull安全という言語仕様は、SwiftやTypeScript等他の言語でも実装されています。今後はKotlinに限らずnull安全を使うことが標準となっていくのではないでしょうか。シンプルな記述Kotlinはモダンな言語仕様を取り入れており、Javaに比べシンプルな記述が可能です。シンプルさは記述が楽になるだけでなく、可読性も向上させます。幾つかの例をとってそのシンプルさを見てましょう。型推論Kotlinは型推論が働きます。User();変数を宣言するときは型の宣言が必須ですよね。Kotlinでは次のように記述できます。User()型推論が働くため明示的な型宣言をする必要がありません。finalを用いずにvarとvalの使い分けで再代入不可の区別が済みます。プロパティKotlinにはプロパティの仕組みが備わっており、とても記述がシンプルになります。Javaではプロパティを現すには次のように記述することが推奨されています。フィールドはprivateとし、getter/setterをpublicで用意するというものです。User();user.setName("Alice");Kotlinでは次のように書けます。"Alice"一見すると(Javaで言うところの)フィールドを直接触っているようにも見えますが、実は内部的にアクセサを作成しておりそのアクセサを経由しています。このようにプロパティが言語仕様として提供されているおかげで非常に簡潔な型定義ができるます。関数リテラルKotlinは関数リテラルを用いて関数を第一級オブジェクトとして扱うことができます。メソッド定義が一つだけ)インターフェースを引数に取るメソッドに関数リテラルを渡すと、SAMインターフェースに変換してくれます。これによりAndroidで多く書くことになるイベントリスナーの記述がとても簡潔になります。次のコードはAndroidでおなじみのボタンにクリックイベントのリスナーを登録するコードです。}});ボタンを押された時の処理を書きたいだけなのに本質的でない部分が多いですよね。Kotlinなら下のコードで済んでしまいます。"clicked")}とてもすっきりとしてボタンの押下処理という本質にフォーカスしやすくなっています。ここに挙げたこと以外にも拡張関数、デリゲート、プライマリコンストラクタ、クロージャ等便利な仕様を有しており、非常に書きやすい言語となっています。Android開発でJavaという言語由来の部分で不便を感じているなら、導入を検討してみてはいかがでしょうか。次回はAndroid開発へのKotlinの導入の流れを紹介します。