Android で Kotlin を使ってみる

Kotlin は Android Studio 3.0 以上で完全にサポートされており、Kotlin ファイルを使った新しいプロジェクトの作成、既存のプロジェクトへの Kotlin ファイルの追加Java 言語コードの Kotlin への変換が容易にできます。Kotlin コードに対して Android Studio の既存のどのツールも使用可能で、オートコンプリート、lint チェック、リファクタリング、デバッグなどができます。

すぐに使い始めるには、Kotlin サンプルをご覧ください。Kotlin 言語について詳しくは、Kotlin の学習用リソースをご確認ください。

既存のアプリに Kotlin を追加する

Kotlin を確実に使用できるようにスキルを身に付けるには、段階的なアプローチをおすすめします。

  1. まず、Kotlin でテストを記述することから始めます。テストはコードの回帰をチェックするのに便利で、コードのリファクタリングを行う際の確認にもなります。既存の Java コードを Kotlin に変換する場合に、テストは特に有効です。テストはパッケージング時にアプリにはバンドルされていないので、コードベースに安全に Kotlin を追加できます。
  2. Kotlin で新しいコードを記述します。既存の Java コードを Kotlin に変換する前に、小さな新しい Kotlin コードをアプリに追加してみてください。小さなクラスまたはトップレベルのヘルパー関数から始めます。Java コードとの適切な相互運用性を確保するために、関連するアノテーションを Kotlin コードに必ず追加してください。
  3. 既存のコードを Kotlin に更新します。新しい Kotlin コードの記述に慣れたら、既存の Java コードを Kotlin に変換します。小さな Java 機能を抽出し、Kotlin クラスとトップレベル関数に変換することを検討してください。

    まず、Java ファイルのコードを Kotlin に変換する Android Studio コード コンバータを使用します。または、クリップボードから Kotlin ファイルに貼り付けた Java コードを変換することもできます。

Android API と Kotlin の例

Kotlin には Java 言語との完全な相互運用性があるので、Android API を呼び出す処理は多くの場合、対応する Java コードとまったく同じように見えます。ただし、これらのメソッド呼び出しは Kotlin の構文機能と組み合わせることができるようになっています。

また Google では、すべての Android API ドキュメントで Kotlin の言語特有のリファレンスを提供できるように準備を進めています。Kotlin の利用可能なリファレンスへのリンクは Android のリファレンスの概要に掲載されています。

Kotlin での Android API の呼び出しと、Java 言語での同じコードを比較した例を以下にいくつか示します。

アクティビティを宣言する

Kotlin

    class MyActivity : AppCompatActivity() {
      override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity)
      }
    }
    

Java

    public class MyActivity extends AppCompatActivity {
      @Override
      protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity);
      }
    }
    

on-click リスナーを作成する

Kotlin

    val fab = findViewById(R.id.fab) as FloatingActionButton
    fab.setOnClickListener {
      ...
    }
    

Java

    FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
    fab.setOnClickListener(new View.OnClickListener() {
      @Override
      public void onClick(View view) {
        ...
      }
    });
    

アイテム クリック リスナーを作成する

Kotlin

    private val onNavigationItemSelectedListener
        = BottomNavigationView.OnNavigationItemSelectedListener { item ->
      when (item.itemId) {
        R.id.navigation_home -> {
          textMessage.setText(R.string.title_home)
          return@OnNavigationItemSelectedListener true
        }
        R.id.navigation_dashboard -> {
          textMessage.setText(R.string.title_dashboard)
          return@OnNavigationItemSelectedListener true
        }
     }
     false
    }
    

Java

    private BottomNavigationView.OnNavigationItemSelectedListener onNavigationItemSelectedListener
        = new BottomNavigationView.OnNavigationItemSelectedListener() {
      @Override
      public boolean onNavigationItemSelected(@NonNull MenuItem item) {
        switch (item.getItemId()) {
          case R.id.navigation_home:
            textMessage.setText(R.string.title_home);
            return true;
          case R.id.navigation_dashboard:
            textMessage.setText(R.string.title_dashboard);
            return true;
        }
        return false;
      }
    };
    

おすすめの方法

Kotlin を学習する際には、次のガイドラインを参考にしてください。

  • コードの行数を最小限に抑えることよりも、読みやすさを優先します。Kotlin 構文を過度に使用しないようにしてください。
  • チームに最適なコーディング規則と慣用的なコードを確立することをおすすめします。KotlinAndroid Kotlin のスタイルガイドには、Kotlin コードの書式設定に関する優れたアドバイスが記載されています。