Kotinって良い言語だって聞くけど、
「何がいいの?」
「どうやってはじめるの?」
「どうやってはじめるのか」
次のステップは?
Androidアプリは世界のスマートフォン市場で7割超という圧倒的なシェアを誇ります(2017年10月現在・StatConter調べ)。
その莫大な市場であるAndroidアプリの開発ができる新しいプログラミング言語、Kotlinについての基本知識から、開発環境の整備、最初のビルドまで解説していきます。
手軽にKotlinを体験してみたい方は、オンラインコードエディタ「Try Kotlin」をぜひお試し下さい。
目次
Kotlinとは
Kotlin(コトリン)とは、マルチプラットフォームアプリケーション用のJVMプログラミング言語です。Androidの正式な開発言語に採用されています。初期バージョンのリリースは2011年7月と、ごく新しいプログラミング言語です。
比較的新しいと言われるC#ですら、初期バージョンは2002年ですから、Kotlinの新しさは群を抜いています。そんなKotlinが急遽に耳目を集めたきっかけは、なんといってもGoogle I/O 2017です。
GoogleのAndroidチームが、Kotlinの正式サポートを表明したのです。これによってKotlinは、一気に「いま学ばなければならない言語のひとつ」の地位を得たわけです。その後、2017年10月には、Android Studio 3がKotlinをサポートしたことで、開発の環境も整いました。
それから1年、既にAndroidアプリをKotlinで開発しているという人も少なくないのではないのでしょうか。
「せっかく、Java(や別の言語)を学んだのに、また新しいことを勉強しなければならないの?」と思った人も、心配することはありません。Kotlinの文法は、Java/Scaleなどをベースとしています。これらの言語を理解している人であれば、おそらく、初見でも基本的なKotlinコードを読み解くのに不便はないはずです。
また、コンパイルされたコードはJava仮想マシン(JVM)の上で動作します。つまり、既存のJavaアプリはJavaアプリで活かしつつ、Kotlinを部分的に導入していくことが可能です。
Kotlinはいま学ぶに足る言語であると同時に、初心者が気軽に学び始められる言語でもあるのです。加えて、Kotlinは偉大な先駆者(言語)のノウハウを、文法面でもどん欲に取り込んでいます。Kotlinを学ぶことは、それらのグッドパターンを学ぶきっかけにもなるでしょう。
Kotlinの特徴
静的型付けオブジェクト指向言語
「型推論」「ラムダ式」「高次関数」「関数型」などのモダンな文法/機能
マルチプラットフォーム言語(相互運用性に優れる)
Java仮想マシン、Android、JavaScript、LLVN
JetBrainsにより開発されたOSS(ツールとの親和性に優れる)
IntelliJ IDEAの開発元。今後は非営利組織に移管
Javaより短く簡潔にコードが書ける
文法、コードの見た目がわかりやすい。学習コストが低そう
Javaより安全である
型安全、null安全、コーディングバグを低減させる仕組み
Googleのお墨付き
Kotlinユーザはどんどん増えそう
Kotlinできること
Androidの開発
Kotlinは、Androidのファーストクラスの言語としてサポートされており、Googleの強力なサポートを利用できるため、Androidアプリケーション開発には非常に適している言語です。
Kotlin言語のすべての利点を活かしてAndroidアプリケーションを開発できます。
Webアプリの開発(サーバーサイドもクライアントサイドも)
Kotlinは、既存のJavaベースのテクノロジースタックとの完全な互換性を維持しながら、簡潔で表現力豊かなコードを書くことができるため、サーバサイドアプリケーションの開発に向いています。
また、Kotlinは、コードをJavaScriptに変換できるため、JavaScriptアプリケーショにン開発も対応できます。KotlinをバックエンドWeb用に加えて、クライアントサイドWeb用にも使用できます。
Kotlinネイティブアプリの開発
Kotlinネイティブとは、Kotlinコードを、VMなしで実行されるネイティブバイナリにコンパイルするためのテクノロジーです。Kotlinコンパイラ用のLLVMベースのバックエンドと、Kotlinランタイムライブラリのネイティブ実装で構成されます。
ネイティブコードとの相互運用性をサポートし、MacOS/iOSでは、Objective/Cコードとの相互運用性もサポートされる予定です。
Kotlinのメリット
- Javaの抱える問題から解放されてプログラミングできる
- 高い信頼と性能を持ったJVM上で動く
- Javaによって記述された既存のライブラリ/フレームワークなどの資産を活用できる
- 「Java-to-Kotlinコンバートツール」で既存のコードの移行を簡素化できる
Kotlinのデメリット
- Javaに寄せすぎた
Null安全、プラットフォーム型など
良く言えば現実的、悪く言えば妥協 - 結局Javaを知る必要はありそう
Kotlinのコンパイル後の姿を創造するスキル
フレームワークやツールからKotlinコードが呼び出されときにハマりポイントがあるので注意 - 新しい言語なので情報が少ない
開発からまだ間もないので、技術情報はまだ少ないのが現状
まだ仕様が安定しておらず、仕様変更が多い
開発ツール
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を試せるコードエディタ+開発環境です。こちらでは、Webブラウザ上で問題をときながらKotlinを学ぶことができます。
Kotlin Koansと呼ばれる全42問の問題を解いていけば、Kotlinの基礎や特徴が学べるようになっています。
各問題には、参考とすべき公式ドキュメントへのリンクが載せてあります。例えば7問目の「Introduction – Data classes」であれば「classes」「properties」「data classes」の3つのリンクが貼られています。実際に問題を解きながら必要な箇所のドキュメントを効率よくチェックできるため、やる気もキープしやすいのではないでしょうか。
Kotlinの学習方法
Kotlinを実際に学んでみたいと思った方もいらっしゃるでしょう。次に、オススメのKotlinの学習方法について紹介します。
学習サイト
Udemy
スキル・知識を持った講師と学びたい人を結びつけるオンライン学習プラットフォーム「Udemy」では、Kotlinの学習コースが提供されています。
プログラミングやKotrlinの基本情報からスタートして、GooglePlayストアでのアプリのリリースまで学べます。ドットインストール
ドットインストール
動画で学べるプログラミング学習サイトであるドットインストールでは、「Kotlin入門」コースが提供されています。
全29回で第5回まで無料で学習が可能です。Kotlinに興味はあるけれどよくわからないという方は、まずはドットインストールの動画でさくっと基礎を理解してみてはいかがでしょうか。
本で学ぶ
「Kotlinスタートブック」
著者 長澤太郎
価格 ¥3,780
『Kotlinスタートブック』はKotlinユーザグループの代表であり「Kotlinのエバンジュリスト」を自称する長澤太郎によって執筆されました。日本ではじめてのKotlinの完全ガイドですので、体系立ててしっかりと学びたい方は必須の書籍となっています。
開発環境を整える
Hello Worldをやってみよう
インストール後、例によって、Hello Worldをやってみましょう。
Android Studioのダウンロードとインストール
Androidアプリの開発環境「Android Studio」は、3.0から正式にKotlinに対応しています。
Android Studio と SDK ツールをダウンロードする | Android Studio
ダウンロードしたZIPファイルを解凍してインストールしましょう。
Android Studioを起動すると、ウィザードが開始されるので、SDKのダウンロードなど初期設定を進めます。少し時間がかかるので、気長に待ちましょう。既に別バージョンのAndroid Studioをインストールしてあれば、設定を引き継ぐこともできます。
プロジェクト作成
初期設定が終わると、次のようなウィンドウが表示されます。[Start a new Android Studio project]を選択します。
ここではアプリの名前、保存場所などを設定します。
- Application name: Test001
- 例としてTest001という名前でプロジェクトを作成してみます。
- Company domain: example.com
- テストなのでそのまま使います。但しリリースするときはユニークなものにしないといけません。
- Project location: アプリプロジェクトを保存する場所
- デフォルトのまま、あるいはフォルダ名がアルファベットであればどこにでも作れます(フォルダ名が日本語はだめ)。ただしアプリ名のフォルダが作成されるのでその名前も忘れずに
…\hogehoge\Test001
- デフォルトのまま、あるいはフォルダ名がアルファベットであればどこにでも作れます(フォルダ名が日本語はだめ)。ただしアプリ名のフォルダが作成されるのでその名前も忘れずに
ここで「Include Kotlin Support 」にチェックすると、Kotlinが使えます。 → 「Next」
Targetの設定
Androidのバージョンを設定して「Next」を押して下さい。下の例では API 28: Android 9.0 (Pie)にしています。Googleのアプリとしてリリースするためには現在(2018)はAPI26以上をターゲットにしないとリリースできません。
また、エミュレータでテストする場合もそのAPIに対応しているか確認します。先にSDKを追加インストールしたバージョンと合っていない場合は後でインストールすることになります。
Activityの設定
そのまま「Next」を押して下さい。
Activity, Layout ファイルなどの名前を設定
ここはテストなのでデフォルトのままでいきます
- Activity Name: MainActivity
- Layout Name: activity_main
これでプロジェクトの開発画面が起動し Kotlin で書かれたメインアクティビティ「MainActivity.kt」が編集可能な状態となります。
ビルド実行
ボタンを1つ追加して、実機で動作を確認してみます。以下の2つのファイルを編集しています。
MainActivity.kt
...(略)... class MainActivity : AppCompatActivity(), View.OnClickListener { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) val button : Button = findViewById<Button>(R.id.button) button.setOnClickListener(this) } override fun onClick(view: View?) { Toast.makeText(this, "ボタンがクリックされた!", Toast.LENGTH_LONG).show() } }
activity_main.xml
ボタンを追加しています。
...(略)... <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Hello World!" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintRight_toRightOf="parent" app:layout_constraintTop_toTopOf="parent" /> <Button android:id="@+id/button" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Button" /> </android.support.constraint.ConstraintLayout>
実機でアプリを実行した結果です。ボタンを押すとメッセージが表示されます。
まとめ
Kotlinの基本知識を紹介し、開発環境を整えて簡単なAndroidアプリを作ってみました。Kotlinはいま学ぶに足る言語であると同時に、初心者が気軽に学び始められる言語でもあるのです。
Androidアプリの開発では、今後はKotlinを使う場面が増えてくると思います。モダンな言語を使うことで開発効率が上がったり、エンジニアとしての学びも増えます。積極的に導入してはいかがでしょうか。