Kotlin(コトリン)とは、マルチプラットフォームアプリケーション用のJVMプログラミング言語です。Androidの正式な開発言語に採用されています。

オープンソースの言語/Kotlinとは

Kotlin(コトリン)とは、マルチプラットフォームアプリケーション用のJVMプログラミング言語です。Androidの正式な開発言語に採用されています。

目次

「Kotlin」基本情報
■概要
■基本説明
■経緯

主な特徴
■Kotlinの設計方針
・習得難易度
■JVM言語(Java相互運用性)
・JavaScriptへの出力も可能
■静的型付けオブジェクト指向言語
■コンパイラ言語
■簡潔コード
・コード量削減
・抽象的プログラミングで簡潔コードに
■コードの安全性
・型安全
・null安全
・コーディングバグを低減させる仕組み
■Kotlinライブラリ
・標準ライブラリ
・テストライブラリ

開発ツール
■IDEプラグイン「IntelliJ IDEA」
■IDE「Android Studio」
■IDE「Eclipse」
■コマンドラインコンパイラ
■オンラインコードエディタ「Try Kotlin」
■ドキュメント生成ツール「Dokka」
■対応ビルドツール

ユースケース
■サーバサイドアプリケーション開発
■Androidアプリケーション開発
■クライアントサイド(JavaScript)アプリケーション開発
■Kotlinネイティブアプリケーション開発

補足情報
■同様製品
■オフィシャルサイト
・オフィシャルサイト
・ライセンス情報
・ダウンロード

「Kotlin」基本情報

■概要

Kotlin(コトリン)とは、マルチプラットフォームアプリケーション用のJVMプログラミング言語です。Androidの正式な開発言語に採用されています。

■基本説明

Kotlinは、マルチプラットフォームアプリケーション用静的型付きプログラミング言語です。「JVM」「Android」「JavaScript」「ネイティブ」をターゲットとして、「Java実装Webアプリケーション」「Android用スマートフォンアプリ」「Android用ソーシャルゲームアプリ」などの開発を行えます。

「Java/Androidと100%相互運用可能」「従来のJavaよりシンプルに記述できる」「安全性が高い」などの特徴により、Androidの正式な開発言語に採用され、大きな注目を集めています。

■経緯

Kotlinは、JetBrains社が中心となって開発が進められています。

バルト海にある島「コトリン」が名称の由来です。
・2012年 オープンソース化
・2016年 Ver1.0リリース
・2017年5月 GoogleはKotlinをAndroidの正式な開発言語に採用

主な特徴

■Kotlinの設計方針

Kotlin開発チームはKotlinの設計方針を次のように定めています。
・Java互換
・Javaと同等のコンパイル速度
・Javaよりも安全
・Javaよりも簡潔
・Scalaよりもシンプル
・表現力を実用的なレベルに維持

習得難易度

Kotlinは「Java」「C#」「JavaScript」「Scala」「Groovy」などの既存言語の影響を受けて設計されています。

開発チームは、Kotlinを簡単に学べるように設計しているため、「初めてKotlinに触れる方でも数日で読み書きできるようになります」としています。

Kotlinの高度な機能を使用するまでには少し時間がかかりますが、全体的には複雑な言語ではありません。

■JVM言語(Java相互運用性)

KotlinはJVM言語であり、「Javaプログラミング言語と100%互換」「既存のJavaコードベースがKotlinと適切に相互作用できる」などに重点が置かれています。Kotlinコードは、JVM(Java Virtual Machine:Java仮想マシン)で動作するJavaバイトコードへコンパイルされます。

KotlinではJava 6とJava 8の互換バイトコードの生成を選択できます。より高いバージョンのプラットフォームに対して、より最適なバイトコードを生成できます。

KotlinのJava連携能力は非常に高く、ほぼ完全な互換性があるため、「KotlinコードからJavaコードを呼び出す」「JavaコードからKotlinコードを呼び出す」ことが可能で、JavaコードとKotlinコードを混在させた開発も可能です。遥かに簡単に導入を行え、開発リスクを低減できます。

主なメリット
・Javaの抱える問題から解放されてプログラミングできる
・高い信頼と性能を持ったJVM上で動く
・Javaによって記述された既存のライブラリ/フレームワークなどの資産を活用できる
・「Java-to-Kotlinコンバートツール」で既存のコードの移行を簡素化できる

JavaScriptへの出力も可能

Kotlinのコンパイラは「Javaバイトコード」の他に、「JavaScriptコード」を出力できます。JavaScriptターゲットを選択すると、プロジェクトの一部であるKotlinコードとKotlinに付属する標準ライブラリがJavaScriptに変換されます。

JavaScriptコードを利用することで、バックエンドとフロントエンドの双方でKotlinを使った開発も行えます。

■静的型付けオブジェクト指向言語

Kotlinは、静的型付けの本格的なオブジェクト指向言語で、「型推論」「ラムダ式」「高次関数」「関数型」などのモダンな文法/機能を備えています。

クラスベースのオブジェクト単位で開発を行うことができるため、開発スピードや作業工数を削減できます。

■コンパイラ言語

Kotlinはコンパイラ言語であるため、他のインタプリタ言語よりも実行速度が高速です。

■簡潔コード

コード量削減

Kotlinのコーディング文法(記法)はシンプルに設計されているため、Javaより簡潔に記述できます。コード行数ベースでは、Javaより概算で約40%削減されています。
・ボイラープレートコード量を大幅に削減
・equals()、hashCode()、toString()、copy()などを単一の行に書ける
・クロージャをシンプルに書ける
・ラムダ式を使ってリストをフィルタリング
・型変数推論機能
・高階関数を使用できる
・拡張関数
・ミックスイン など

抽象的プログラミングで簡潔コードに

Kotlinでは関数をオブジェクトとして扱えます。関数をほかの値型オブジェクトと同じように関数の引数として渡したり、戻り値として受け取ることが可能です。粒度の小さい単位で関数を再利用できるため、抽象的プログラミングが可能となり簡潔なコードにできます。

簡潔コードのメリット
・バグ混入確率が減少
・可読性は増加
・メンテナンスコスト低減
・学習コストを抑えられる
・プログラマによるコーディングのばらつきを抑えられる など

■コードの安全性

型安全

Kotlinは「型」や「null」について厳格に取り扱う設計になっているため、Javaよりも安全なコードを書けます。

コンパイル時にソースコードの誤りが発見されるため、開発者は早い段階でバグを発見でき、より安全なコーディングを行えます。

null安全

特にnullの問題については、「nullポインタの逆参照(NullPointerException)」が起こり得ないような仕組み(null安全)が言語機能として提供されています。

型として「nullを持つ型」と「nullを持たない型」が区別されます。型検査の結果、中身がnullではないことが確認されると、その時点で中身の型にキャストされます。

このような仕組みにより、NullPointerExceptionが発生する可能性を非常に低くすることができ、コードの安全度が増します。

コーディングバグを低減させる仕組み

その他にも、さまざまな「ミスを未然に防ぐための機能」が導入されており、イージーなコーディングバグを生みにくい言語になっています。

■Kotlinライブラリ

標準ライブラリ

Kotlin標準ライブラリでは、主として開発において必要不可欠なものを提供しています。
・慣用パターン---let/apply/use/synchronizedなどを実装する高次関数
・コレクション---クエリ操作を提供する拡張関数
・各種ユーティリティ---文字列操作、文字シーケンス操作
・JDKクラス拡張機能---ファイル操作、IO処理、スレッド処理 など

https://kotlinlang.org/api/latest/jvm/stdlib/index.html

テストライブラリ

kotlin.testライブラリは、使用されているテストフレームワークとは独立して、テストでのアサーションを実行するためのテスト関数とユーティリティ関数のセットを提供します。

https://kotlinlang.org/api/latest/kotlin.test/index.html

開発ツール

Kotlinは、IDE連携用プラグインなどを提供しており、主要な統合開発ツールでの開発を行えます。

■IDEプラグイン「IntelliJ IDEA」

IntelliJ IDEA(Community Edition/Ultimate Edition)でKotlin開発を行えます。

https://kotlinlang.org/docs/tutorials/getting-started.html

■IDE「Android Studio」

「Android Studio」では、非常に強力な連携機能を利用できます。
・Javaと同じようなimport補助
・interfaceの一括設置
・kotlin風関数呼び出しサポート など

https://kotlinlang.org/docs/tutorials/kotlin-android.html

■IDE「Eclipse」

Eclipse用プラグインも用意されています。

https://kotlinlang.org/docs/tutorials/getting-started-eclipse.html

■コマンドラインコンパイラ

コマンドラインベースのコンパイラを利用して開発を行えます。

https://kotlinlang.org/docs/tutorials/command-line.html

■オンラインコードエディタ「Try Kotlin」

ブラウザ上でKotlinコードを入力して実行できる環境が用意されています。

→Kotlin →Try Kotlin

■ドキュメント生成ツール「Dokka」

「Dokka」は、JavaにおけるJavaDocに相当するドキュメント生成ツールです。

Dokkaには「Gradle」「Maven」「Ant」用のプラグインが用意されているため、ドキュメンテーション生成をビルドプロセスに統合できます。

https://kotlinlang.org/docs/reference/kotlin-doc.html

■対応ビルドツール

JVM側では、ビルドツール「Gradle」「Maven」「Ant」「Kobalt」などと連携できます。

クライアント側のJavaScriptをターゲットとするビルドツールもいくつか用意されています。

ユースケース

Kotlinは「サーバ側」「クライアント側」「Webアプリ」「Android環境」など、さまざまな種類の開発に使用できます。

■サーバサイドアプリケーション開発

Kotlinは、既存のJavaベースのテクノロジースタックとの完全な互換性を維持しながら、簡潔で表現力豊かなコードを書くことができるため、サーバサイドアプリケーションの開発に向いています。

■Androidアプリケーション開発

Kotlinは、KotlinはAndroidのファーストクラスの言語としてサポートされており、Googleの強力なサポートを利用できるため、Androidアプリケーション開発には非常に適している言語です。

Kotlin言語のすべての利点を活かしてAndroidアプリケーションを開発できます。

■クライアントサイド(JavaScript)アプリケーション開発

Kotlinは、コードをJavaScriptに変換できるため、JavaScriptアプリケーション開発にも対応できます。KotlinをバックエンドWeb用に加えて、クライアントサイドWeb用にも使用できます。

■Kotlinネイティブアプリケーション開発

Kotlinネイティブとは、Kotlinコードを、VMなしで実行されるネイティブバイナリにコンパイルするためのテクノロジーです。Kotlinコンパイラ用のLLVMベースのバックエンドと、Kotlinランタイムライブラリのネイティブ実装で構成されます。

ネイティブコードとの相互運用性をサポートし、MacOS/iOSでは、Objective/Cコードとの相互運用性もサポートされる予定です。

https://kotlinlang.org/docs/reference/native-overview.html

補足情報

■同様製品

同様な機能を提供する製品として、次のようなものがあります。

オープンソース製品:「Java」「C#」「Scala」「Groovy」など。

■オフィシャルサイト

オフィシャルサイト

→Kotlin(Kotlin Programming Language)

ライセンス情報

Kotlinのライセンスは「Apache 2.0ライセンス」です。

詳細について、こちらを参照ください。
→GitHub →kotlin/license/

ダウンロード

→GitHub →JetBrains / kotlin

 

参考元サイト

※定期的にメンテナンスを実施しておりますが、一部情報が古い場合がございます。ご了承ください。

Kotlin最新TOPICS

最新情報はありません。

Kotlin最新CLOSEUPコラム

  • 勉強会
  • OSSNEWSに広告を掲載しませんか?

facebook

twitter