ちょっと昔の話になりますが、2017年5月の Google I/Oにおいて、
プログラミング言語「Kotlin」(コトリン)がAndroidの開発言語として
公式サポートされるという発表がありました。
遅ればせながら、Kotlinでもさわってみようということで、
Android Studio での開発環境を構築した際のメモです。
Kotlinとは?
JetBrains社が開発したプログラミング言語です。
Javaとの互換性があり、同一プロジェクト内で混在させることができます。
JavaとHelloWorldを比較するとこんな感じです。
Java
public class HelloWorld { public static void main( String[] args ){ System.out.println( "Hello, World!" ); } }
Kotlin
fun main( args; Array<String> ){ println( "Hello, World!" ) }
Android Studio でのサポート
Android Developersにありました
Get Started with Kotlin on Android | Android Developers
ここによると、プロジェクトを作った際に
「include Kotlin Support」
というチェックがあるとのことですが、手元の環境にない…
よくよく見ると(というか1行目に書いてますが)
Android Studio 3.0 からのサポートとのこと。
3.0は今のところ(2017年8月現在)、プレビューバージョンがダウンロードできます。
Android Studio プレビューを入手する | Android Studio
手順
ということで、Android Studio 2系での構築手順です。
インストール
Android Studio を起動したら右下の「Configure」から「Settings」をクリック
左のリストから「Plugins」を選択し、「Install JetBrains plugin…」をクリック
真ん中付近にある「Kotlin」を選択し、「Install」をクリック
Install完了までしばし待機
終わったら、Android Studioを再起動します
これでインストールは完了
設定
次はプロジェクトごとの設定
とりあえず、プロジェクトを立ち上げます。(いつも通りで結構です)
通常通りプロジェクトを作ると、コードはすべてJavaで作られますので、
Kotlinのコードに変換します。
「Code」→「Convert Java File to Kotlin File」をクリック
.javaのファイルが、.ktのKotlinソースに変換されます。
Kotlinのコンパイル環境を設定します。
「Tool」→「Kotlin」→「Configure Kotlin in Project」をクリック
以上
これでデバッグなり実行なりできるようになります
ちなみに
KotlinのMainActivityはこんな感じ
import android.os.Bundle import android.support.design.widget.FloatingActionButton import android.support.design.widget.Snackbar import android.support.v7.app.AppCompatActivity import android.support.v7.widget.Toolbar import android.view.View import android.view.Menu import android.view.MenuItem class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) val toolbar = findViewById(R.id.toolbar) as Toolbar setSupportActionBar(toolbar) val fab = findViewById(R.id.fab) as FloatingActionButton fab.setOnClickListener { view ->; Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG) .setAction("Action", null).show() } } override fun onCreateOptionsMenu(menu: Menu): Boolean { // Inflate the menu; this adds items to the action bar if it is present. menuInflater.inflate(R.menu.menu_main, menu) return true } override fun onOptionsItemSelected(item: MenuItem): Boolean { // Handle action bar item clicks here. The action bar will // automatically handle clicks on the Home/Up button, so long // as you specify a parent activity in AndroidManifest.xml. val id = item.itemId if (id == R.id.action_settings) { return true } return super.onOptionsItemSelected(item) } }
個人的に気になってるのは
・プロパティが使える
・Nullable
・layoutとの連携
あたりでしょうか。