マジセミドライブ

ウェビナー関連のニュースやITサービス&ツールの最新情報を随時配信します。

OSS情報

2020.01.01

【OSS情報アーカイブ】Kotlin

【OSS情報アーカイブ】Kotlin

※当記事に記載されている情報は、古くなっている場合があります。オフィシャルサイトで最新情報をご確認ください。

「Kotlin」とは

「Kotlin」基本情報

■概要

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

■基本説明

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

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

■主要開発元

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

■経緯

Kotlinは、バルト海にある島「コトリン」が名称の由来です。

・2012年 オープンソース化
・2016年 Ver1.0リリース
・2017年 GoogleはKotlinをAndroidの正式な開発言語に採用

■オフィシャルサイト情報

オフィシャルサイト

→Kotlin(Kotlin Programming Language)

ライセンス情報

Kotlinのライセンスは「The Apache 2 license」です。

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

ダウンロード

→GitHub →JetBrains / kotlin

■同様製品

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

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

「Kotlin」の主な特徴

■Kotlinの設計方針

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

■Kotlinの習得難易度

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

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

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

■コード量削減

Kotlinのコーディング文法(記法)はシンプルに設計されているため、Javaより簡潔に記述できます。コード行数ベースでは、Javaより概算で約40%削減されています。

主なポイント

・ボイラープレートコード量を大幅に削減
・equals()、hashCode()、toString()、copy()などを単一の行に書ける
・クロージャをシンプルに書ける
・ラムダ式を使ってリストをフィルタリング
・型変数推論機能
・高階関数を使用できる
・拡張関数
・ミックスイン など

■抽象的プログラミングによる簡潔コード

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

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

null安全

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

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

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

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

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

■Kotlinライブラリ

標準ライブラリ

Kotlin標準ライブラリでは、主として開発において必要不可欠なものを提供しています。

・慣用パターン—let/apply/use/synchronizedなどを実装する高次関数
・コレクション—クエリ操作を提供する拡張関数
・各種ユーティリティ—文字列操作、文字シーケンス操作
・JDKクラス拡張機能—ファイル操作、IO処理、スレッド処理 など

→Kotlin →Kotlin Standard Library

テストライブラリ

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

→Kotlin →kotlin.test

「Kotlin」の開発ツール

「Kotlin」の開発ツール

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

■IDEプラグイン「IntelliJ IDEA」

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

→Kotlin →Tutorials →Getting Started with IntelliJ IDEA

■IDE「Android Studio」

「Android Studio」では、非常に強力な連携機能を利用できます。

・Javaと同じようなimport補助
・interfaceの一括設置
・kotlin風関数呼び出しサポート など

→Kotlin →Tutorials →Getting started with Android and Kotlin

■IDE「Eclipse」

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

→Kotlin →Tutorials →Getting Started with Eclipse IDE

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

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

→Kotlin →Tutorials →Working with the Command Line Compiler

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

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

→Kotlin →Try Kotlin

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

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

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

→Kotlin →Tutorials →Documenting Kotlin Code

■対応ビルドツール

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

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

「Kotlin」のユースケース

「Kotlin」のユースケース

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コードとの相互運用性もサポートされる予定です。

→Kotlin →Kotlin/Native for Native

 

参考元サイト

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

この記事のタグ一覧

おすすめの記事

【AIツール実験室】チャットAI対抗「添削能力」選手権🏆

AIツール実験室

2023.12.27

【AIツール実験室】チャットAI対抗「添削能力」選手権🏆

各チャットAIの「添削能力」について比較確認をしています。 「ChatGPT4と同等の添削能力を発揮した無料チャットAI」にご注目ください。 また、 ChatGPTカスタマイズ機能「GPTs」を利用して作成した GPTs文章添削機能「添削師匠さん✍️」を紹介しています。 課金勢は試しに使ってみてください。

AIツール関連 記事リストポータル

AIツール

2023.10.05

AIツール関連 記事リストポータル

AI 関連の記事をまとめたポータルページです。

【IT用語解説】「 デジタルヒューマン 」とは😊

IT用語解説

2024.01.26

【IT用語解説】「 デジタルヒューマン 」とは😊

【IT用語解説】「 デジタルヒューマン 」として、「デジタルヒューマンとは何か?」「どのようにして作成できるのか?」「私たちの世界にどのような影響を与えているのか?」などについて、まとめています。