ちょっと昔の話になりますが、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との連携
あたりでしょうか。