Kotlin

出典: フリー百科事典『ウィキペディア(Wikipedia)』
移動先: 案内検索
Kotlin
パラダイム オブジェクト指向
登場時期 2011年 (2011)
設計者 アンドリー・ブレスラフ、ドミトリー・ジェメロフ
最新リリース Kotlin 1.0.2 / 2016年5月13日(3か月前) (2016-05-13
評価版リリース Kotlin 1.0.0 RC / 2016年2月4日(6か月前) (2016-02-04 [1]
型付け 静的型付け
影響を受けた言語 JavaGroovyScala
プラットフォーム JavaプラットフォームAndroid含む)、JavaScript
ライセンス Apache License 2.0
ウェブサイト kotlin.jetbrains.org
拡張子 .kt

Kotlin(ことりん、コトリン)は、ジェットブレインズ社のアンドリー・ブレスラフ、ドミトリー・ジェメロフが開発した、静的型付けオブジェクト指向プログラミング言語である。

開発経緯[編集]

Kotlin言語は、ロシア連邦レニングラード州都のサンクトペテルブルクにある、ジェットブレインズ社の研究所で生まれた。

ジェットブレインズ社は JavaRubyPython などのプログラミング言語による開発環境などを開発して販売してきた。Kotlin言語は、同社の経験を活かしJava言語をもっと簡潔・安全になるように改良した産業利用向け汎用言語として開発され、2011年7月20日に発表された。

オペーレーティング・システムによらずJava仮想マシン上で動く。Java言語が書かれたプログラムと同じほど速くコンパイルされ同じほど速く動作するとしている。

Java言語に望まれている機能であっても互換性を保つために実現できていない機能や、将来のJava言語の仕様で実現が予定されている機能から、有用と思われる機能を採用した。また、Java仮想マシンで動く点で似ているスクリプト言語 Groovy関数型プログラミング言語の要素が強い Scala から、機能や簡易記法(糖衣構文)を採用した。

2012年2月14日KotlinApacheライセンス バージョン2.0に基づいてオープンソース化された[2]

アプリケーションプログラミングインタフェース[3]が公開され、ウェブサイト上でのデモンストレーション[4] のほか、スタンドアローンコンパイラの形と同社提供の統合開発環境IntelliJ IDEA」上のプラグインの形で、マイルストーン安定版「M1」が2012年4月12日より提供[5]された。

「M2」では言語機能が強化されたほか、Android 上の開発および動作も可能となり、JavaScript へのコンパイルもサポートされた。「M3」では約400件の障害修正を行ない、性能向上、型引数推論の強化などを行った。「M4」で128件の障害修正を行ない、型引数推論の高速化、JDK 7 対応、データクラスの copy メソッド新設などを行った。

名称[編集]

コトリン島にちなんで命名された。コトリンは、開発の地サンクトペテルブルクに近いバルト海フィンランド湾にあり、全長約12kmの細長い島である。

もともと Kotlin というのはやかんを表すフィンランド語であり、Kotlin 言語のロゴマークもやかんである。

公式サイトには[6]「この島から名前が付いたコトリン型駆逐艦というのがありますが、Kotlin 言語は別にクラスを駆逐しようというわけではありません」や、Java の由来がコーヒーであることにかけて「この島ではコーヒーなどの外来植物はあまり作っていないと思います」というジョークが掲載されている。

特徴[編集]

Java 言語よりも簡潔に書けることを目指している。実際、 KotlinHello World プログラムJavaHello World プログラムよりも短い。

特徴としては、文の末尾にセミコロンが不要、型推論機能がある。また、初期値なしの変数定義が可能である。

var str: String? = "foo";

のようにヌル収容可能と明示しておけば実行時にnullが代入されてもヌルポインター例外が発生しない。ほかにも、性能と機能性を保ちながら簡潔化を図るさまざまな工夫が凝らされている。

Java では数値をもつオブジェクト変数の演算は「+」「-」「*」「/」などの記法では行うことができず、メソッド名の引数の中にメソッドを入れたりドットでつないでメソッドチェイン記法で行うため記述が長大になり分かりにくかった。Kotlin演算子オーバロード機能を採用しているので、自然な四則演算式で記述できる(例.BigDecimal の項を「+」「*」などでつないで加減乗除できる)。演算子オーバロードは C++ 言語にもあるが初心者が濫用するとミスを招く諸刃の剣との懸念もあり、Java では要望も強かったが採用されなかった。それにしてもこの機能は、桁数の大きな数値計算を多用する事務処理計算などに威力を発揮する、強力な機能といえる。[要出典]

関数には名前付き引数と既定値の機能がある[7]。これにより、関数をひとつ

fun edit( 
   number   : Int, 
   blankIf0 : Boolean = true, 
   comma    : Boolean = true, 
   maxSize  : Int = 18) { 
  // some work
  ...
 }

と定義するだけで、呼び出し側は

edit(number)
edit(number, comma = true, maxSize = 10)
edit(number, maxSize = 10, blankIf0 = true)

などのように、そのとき既定値から変えたい引数だけ選んで指定できる(Kotlin では「blankIf0=true」といった代入式は戻り値を返さないので、代入の戻り値を引数に与えているのかどうかという曖昧性は生じない)。Java では引数を順序で識別するのが基本で、一部のみ使うメソッドがあればオーバーロードで定義する、あるいは呼び出し前に既定値から変更する必要のあるフィールド値を順々にセットするなど、冗長で分かりにくい方法しかなかった。Kotlin では名前付き引数を採用したので、オプションの組合せをもつ機能が簡潔に定義・呼び出しできるようになった。

特徴的な機能は以下のとおり[8]

  • 演算子オーバロード
  • ヌル安全を保証
  • 高階関数クロージャ
  • ミックスインと第一級デリゲーション
  • プロパティ(フィールドはない)
  • 宣言側および利用側分散における変位指定
  • 拡張関数
  • モジュール
  • インライン関数(オーバヘッドなしクロージャ)
  • Java との相互運用性(Kotlin から Java を呼び出すことも、Java から Kotlin を呼び出すこともできる)

統合開発環境[編集]

同社提供の統合開発環境 IntelliJ IDEA で利用できる。統合開発環境 Eclipse でもKotlinプラグインを提供している。

関連項目[編集]

脚注[編集]

[ヘルプ]

外部リンク[編集]

Kotlin開発元からの情報へのリンク[編集]

日本語解説サイト・研究会へのリンク[編集]

その他のリンク[編集]