Kotlin(プログラミング言語)Dev Basics/Keyword

Kotlin(コトリン)は「実用的」であることを主眼においたプログラミング言語だ。その特徴は簡潔/安全/汎用/(Javaとの)相互運用性にある。

» 2016年04月01日 05時00分 公開
[かわさきしんじInsider.NET編集部]
Dev Basics/Keyword
Insider.NET

 

「Dev Basics/Keyword」のインデックス

連載目次

 Kotlinは「実用的」であることを主眼においたプログラミング言語で、現在はオープンソースソフトウェアとして公開されている。その特徴は簡潔/安全/汎用/(Javaとの)相互運用性にある。Kotlinが産声を上げたサンクトペテルブルクに近いフィンランド湾に浮かぶ島「コトリン」島からその名が付けられた。

Kotlinとは

 Kotlinは静的型付けのプログラミング言語であり、オブジェクト指向言語と関数型言語の両者の特徴を併せ持つ。Javaとの完全な相互運用性を掲げ、主にJVM(Java仮想マシン)やAndroidプラットフォームをそのターゲットとする。

 Kotlinの開発に深くコミットしているJetBrainsは、もともとJavaプラットフォームに多くの投資を行ってきており、その知見も豊富で、Javaの長所短所の双方をよく理解している。その上でJavaが持つ後方互換性という制約を取り除いた形で、以下のような目標を達成すべく、新たな言語として生み出したのがKotlinだ。

  • Javaとの互換性
  • Javaと同等のコンパイル速度
  • Javaよりも簡潔
  • Javaよりも安全

 特にJavaとの互換性が維持されていることで、KotlinではJavaのライブラリをそのまま使用できるようになっている(その逆も可)。例えば、Kotlinには独自のコレクションライブラリは存在せず、Javaが持つコレクションライブラリに依存している。

 なお、Kotlinで書かれたコード(.ktファイル)は一般に、Kotlinコンパイラ(kotlincコマンド)によってJavaバイトコードへと変換された後に実行される。その一方で、Kotlinコードはスクリプトとしても実行可能だ。JVMをターゲットとすることで、Kotlinは「汎用」のプログラミング言語としてさまざまな箇所で利用できるようになっている。さらにはブラウザ環境をもターゲットとするべく、KotlinコードはJavaScriptにも変換できる。

Kotlinを試してみるには

 Kotlinを試してみる一番簡単な方法はWebベースのKotlin IDEを使用することだ。あるいはコマンドラインツールをGitHubからダウンロード/インストールすることもできる。

WebベースのKotlin IDE WebベースのKotlin IDE

 IntelliJ IDEAには現在ではKotlinが同梱されている(2016年3月時点)。また、EclipseやAndroid Studioでは、プラグインをインストールすることでKotlinでのアプリ開発が可能になる。

Android StudioでKotlinを使用しているところ Android StudioでKotlinを使用しているところ

簡潔で安全なコードとは

 最後にKotlinのコードを幾つか紹介して、Javaよりも「簡潔」で「安全」なコードとはどういうことかを見てみる。

 まずKotlinでのシンプルなクラス定義の例を以下に示す。

class Test(val msg: String)


Kotlinにおけるシンプルなクラス定義

 クラス名に続けて「val 〜」と記述することで、Testクラスにはmsgプロパティがあることを示している。「val」キーワードはそれが読み込み専用であることを意味する(変更可能な変数やプロパティには「var」キーワードを使用する)。このコードは以下のJavaコードとおおよそ同等なものだ。

public final class Test
{
  public final String getMsg()
  {
    return msg;
  }

  public Test(String msg)
  {
    this.msg = msg;
  }

  private final String msg;
}

ほぼ同等なJavaのコード

 極端な例ではあるが、Kotlinでコードがどれほど簡潔になるかが分かるはずだ。

 もう1つ例を示す。Kotlinには「null許容型」と「非null型」がある。これを活用することで、いわゆる「NullPointerException」例外を大幅に抑制できる。null許容型は型名の最後に「?」を付加して表す。

fun main(args: Array<String>) {
  var v: String? = "Kotlin"

  println(v?.length)

  if (v != null)
    println("not null: " + v.size)
  else
    println("null reference")

  println(v ?: "null reference")

  println(v!!.length)
}


null許容型の使用例

 null許容型の値のメンバにアクセスするには幾つかの方法がある。

  • 「?.」演算子(安全呼び出し演算子): nullを参照していた場合は、その時点でnullが返され、アクセスは行われない
  • if文によるnullチェック: if文でチェックした後は非null型の値として使える
  • 「?:」演算子(エルビス演算子): 左項がnull参照でなければその値が、null参照であれば右項が評価結果となる
  • 「!!」演算子: null参照であれば例外を発生させる

 このようにしてnullをKotlinの型システムやコンパイラのレベルで制御できるようになっている。

 この他にも型推測、is演算子によるオブジェクトの型チェックと同時にキャストが行われる「スマートキャスト」、各種のメソッドがデフォルトで提供される「data class」など、Kotlinのコードを簡潔かつ安全に記述できるようなさまざまな仕組みが提供されている。


 Kotlinは「実用的」であることを主眼においたプログラミング言語だ。その特徴は簡潔/安全/汎用/(Javaとの)相互運用性にあり、これらがKotolinの「実用性」の基盤となっている。主にJVM(Java仮想マシン)やAndroidプラットフォームをそのターゲットとしている。

 なお、KotlinのWeb IDEには「Kotlin Koans」と呼ばれるチュートリアルが用意されている。ドキュメント(英語)を読みながら、インタラクティブに設問を解いていくことでKotlinプログラミングを学べるようになっているので、興味のある方はこれを試してみるとよいだろう。

参考資料


「Dev Basics/Keyword」のインデックス

Dev Basics/Keyword

Copyright© Digital Advantage Corp. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。