Kotlinとは――読み方、メリット、「Java」とのコード比較、実行までのチュートリアル:Android Studioで始めるKotlin入門(1)(3/3 ページ)
Android Studio 3.0を使い、最近話題のプログラミング言語「Kotlin」の特徴を解説する連載。初回は、メリット、「Java」言語とのコード比較、Android Studioの環境構築、実行までのチュートリアルなど。
Kotlinサンプルの実行
サンプルを実行してみましょう。
上部「Run」メニューから「Run app」を選択すると、図1の「Select Deployment Target」ダイアログが表示されます。これはアプリをどの環境で実行するかを選択するためのダイアログです。実際のAndroid端末をPCに接続している場合は上部の「Connected Devices」に表示されます。
今回は下部の「Android403」を選択して「OK」ボタンをクリックし、PC上のAndroid Emulatorでアプリを動かします。初回実行時など、Androidのシステムイメージをダウンロードしていない場合は、確認ダイアログが出ますので、ダウンロードしてください。
Android Emulatorの起動後、少しするとアプリがデプロイされ、図2のように「Hello World!」メッセージが表示されます。
自動生成されたKotlinのコードをざっと確認してみましょう。MainActivity.ktの内容はリスト3のようになっています。
package com.example.doi.myapplication import android.support.v7.app.AppCompatActivity import android.os.Bundle class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) } }
先頭のpackage、import文は、末尾のセミコロンがない以外は、Javaとほぼ同様の内容です。クラス定義にclassキーワードを使うのは同じですが、継承にextendsキーワードを使うJavaと異なり、コロンを使って継承元クラスであるAppCompatActivityを指定しているのが特徴です。とはいえ、C++やC#などの書き方と同様ですので、それほどとっぴな書き方ではありませんね。
その後はfunキーワードでonCreateメソッドを定義しています。このメソッドにはoverrideが付いているので、AppCompatActivityクラスのonCreateメソッドをオーバーライドしています。メソッドの中身は、セミコロンがない以外はJavaとほぼ同じコードですね。
先ほどはコマンドライン用アプリのソースコードをざっと見ましたが、Androidアプリ用コードについても、Java開発者にとってあまり違和感のないコードになっていることが分かるでしょう。
イベントハンドラの書き方で、KotlinとJavaを比べてみる
次に、画面上にボタンを配置し、Kotlinでイベントハンドラを書いてみましょう。「activity_main.xml」タブをクリックすると、図13のようなレイアウト画面とツールバーが表示されます。
ツールバーから「Button」をドラッグ&ドロップで画面上に配置し、右の「Attributes」ペインの「text」プロパティを「Click me!」に書き換えましょう(図14)。
メッセージ表示用に、もともと配置されているTextViewのIDプロパティに「myLabel」を設定して参照できるようにします(図15)。
続いてイベントハンドラを記述します。「MainActivity.kt」タブをクリックし、onCreateメソッド内をリスト4のように書き換えます。
override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) //表示用TextViewインスタンスを取得 val textView = findViewById<TextView>(R.id.myLabel) as TextView //ボタンインスタンスを取得 val button = findViewById<Button>(R.id.button) //ボタンのイベントハンドラを設定 button.setOnClickListener { v -> textView.text = "Clicked !" } }
配置したビューを取得するためのfindViewByIdメソッドなどは、JavaでのAndroid開発でも多用されるものですが、イベントハンドラの設定方法はJavaとは全く異なる書き方になっています。詳細は次回以降に解説します。
書き換え後、実行してボタンをクリックすると、図16のようにTextViewが書き換わることを確認できます。
JavaでAndroid開発経験をお持ちの方には、これだけのコードでイベントハンドラが書けるというのは驚きかもしれません。Javaであれば例えばリスト5のようなコードになることでしょう。
findViewById(R.id.button).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { //イベントハンドラ本体を記述する } });
Kotlinに比べるとやや複雑ですが、これでも無名クラスを使ったJavaとしては簡略化した書き方です。元来は「View.OnClickListenerインタフェースを実装したクラスを別途(ないしは自分自身に実装して)用意し、イベントハンドラとしてそのインスタンスを渡す」といったコードになるはずです。Javaに比べて、ぐっと簡略化されたKotlinのコードに魅力を感じる方も少なくないことでしょう。
「when」キーワードやラムダ式などの機能も注目
このように本連載では、Kotlin言語のさまざまな特徴を解説していきます。上記コードのように、Android開発においても有用な言語機能が幾つも組み込まれていますので、どうぞご期待ください。また本稿では、Kotlinの特徴について、ざっと目に付くところだけ挙げましたが、その他にも「when」という見慣れないキーワードや、ラムダ式などの機能も注目株でしょう。次回以降の言語機能解説をお楽しみに。
今回のサンプルコード
Copyright © ITmedia, Inc. All Rights Reserved.
関連記事
- Kotlin(プログラミング言語)
Kotlin(コトリン)は「実用的」であることを主眼においたプログラミング言語だ。その特徴は簡潔/安全/汎用/(Javaとの)相互運用性にある。 - JVMとAndroid用のオープンソースプログラミング言語「Kotlin 1.0」がリリース
JetBrainsが主導して開発を進めるJVMとAndroid用のオープンソースプログラミング言語の正式版がリリース。既存のコードやインフラとの相互運用性を重視した実用的なプログラミング言語だという。 - 2017年プログラミング言語別平均年収ランキング、1位は「Scala」 平均626万円
ビズリーチは、「プログラミング言語別 平均年収ランキング2017」を発表した。第1位はScalaで平均年収は626万円、第2位はPythonで601万円、第3位はKotlinで577万円だった。SwiftやRuby、Javaなどもランクインした。