Kotlinプログラミングの基礎【現役エンジニアがわかりやすく解説】
Kotlinプログラミングの基礎を知りたい方に。
この記事を読まれている方は、
- Kotlinのプログラミングがどんなものか知りたい
- Kotlin言語の簡単な書き方が知りたい
- Kotlinが使われる場面を知りたい
おそらくこのように考えている方が多いと思います。
この記事を書いている私は、
プログラミング未経験から転職を果たした現役のWeb系エンジニアです。
エンジニア歴は3年ですが、本業とは別にフリーランスの副業で月10万円ほど、多いときで20万円ほどの収入があります。
この記事では、現役のエンジニアが、Kotlinプログラミングの基礎を解説しています。
プログラミング言語のKotlinの特徴
Kotlinはプログラミング言語のひとつで、静的型付けのコンパイル言語で、オブジェクト指向型の言語です。
静的型付けの言語とは、簡単に言うと、データを文字列型や数値型、論理型などに分ける必要がある言語のことです。しかし、Kotlinには型推論がありますので、varを使って型を指定しない変数の定義も可能です。この場合、コンパイル時に型が決定されます。
コンパイル言語とは、プログラムの実行前に、開発者の方でコンパイラーを使って構文チェックなどをしたうえで中間言語に変換しないと動作しない言語のことです。
一方、コンパイル言語と対をなすスクリプト言語とは、プログラム実行前にコンパイルをする必要のない言語のことで、書いた後はすぐにプログラムを実行することができる言語のことです。
一般に、コンパイル言語は、処理速度がスクリプト言語に比べて速くなります。速度が求められる処理では、コンパイル言語が使用されることが多いです。
オブジェクト指向型言語とは、オブジェクトという概念を持つ言語のことで、簡単に言うと、データ構造として、配列や構造体に加えて、オブジェクト(クラス)があるということです。
オブジェクトのおかげで、ソースコードのメンテナンスがしやすかったり、機能の流用ができます。
KotlinはJavaVM(JVM)上で動くため、Javaと高い互換性があります。この点はScalaなどと似ていると思いますが、Scalaは関数型言語とオブジェクト指向型言語が統合された言語だったのに対し、Kotlinはオブジェクト指向型言語となります。
Kotlinは最近ではサーバーサイドにもその分野を広げていますが、基本的にはAndroidアプリ開発に使われる言語になります。
統合開発環境(IDE)としては、Android Studioで開発することになると思います。
Android StudioはGoogleが配布しているIDEなので、KotlinはGoogleの公式開発言語にも指定されているということになります。
Javaとの互換性が高く、また開発環境も充実しているため、JavaからKotlinに簡単に変換することも可能です。
単にJavaの複製というわけではなく、NULLポインタなどの罠などのチェックの充実で安全性が高かったり、コードが書きやすくなったりしていますので、特に初心者にとっては入りやすい言語なのではないかと思われます。
現在の主流はAndroidアプリですが、将来的にはKotlinでできることが増えていくものと予想されます。
Kotlinの用途
Kotlinは静的型付けのコンパイル言語ということもあり、速度が遅くて使えない、という心配はあまりないでしょう。また、Javaとの互換性も高いため、やっぱりJavaでないと…ということにもほぼなりません。
Kotlinは現時点ではAndroidアプリの開発で利用されることが多い言語です。
日本語のサンプルも増えてきてはいますが、比較的新しい言語のため、英語がわかる人であれば、英語のサイトの方がサンプルを多く見つけることができるでしょう。
また、Javaのエンジニアであれば、開発環境で簡単に変換できるということもありますので、Kotlinでの開発に参加することができます。
したがって、今後もさまざまな開発で使われることが想像でき、かつ、要員も集めやすいので、よりメジャーな言語になっていくのではないかと思われます。
Kotlinの書き方
ここでは簡単に書き方を少しだけ紹介します。実際に始める気になったら、ぜひ参考書などの教材を参考にして、試してみて下さい。
Hello World!を画面に出力する
まずはお決まりのHello World!という文字列を画面に出力する方法から。
fun main(args: Array<String>) { print("Hello World!") }
これで出力することができます。
C言語やJavaなどと同じように、main関数を書かなければ動きません。
コンパイル言語のため、プログラム実行前には必ずコンパイラーを使って中間言語に変換する必要があります。
変数宣言と分岐処理
次は少し踏み込んで、変数宣言と分岐処理をしてみます。
fun main(args: Array<String>) { var age = 19 if (age<20) { print("未成年") } else { print("成人") } }
上記の例では、まずageという数値型の変数を作り、その中に19という数値を入れています。
次にageが20未満であれば”未成年”という文字列を、それ以外であれば”成人”という文字列を出力するような分岐処理をしています。
配列と繰返処理
続いて、配列の使い方と繰返処理について、解説します。
ここでは配列を作って、以下のようにデータを出力することにしましょう。
佐藤,田中,小林
これを出力するコードは以下です。
fun main(args: Array<String>) { var students = arrayOf("佐藤","田中","小林") for (i in 0..students.count()-1) { print(students[i]) if (i < students.count()-1) { print(",") } } }
上記の例では、まず文字列型の配列studentsに「佐藤」「田中」「小林」の3つの文字列を格納しています。
その後、数値型のカウンタ変数iを0に初期セットし、配列studentsの要素の数に到達するまでループでiを1ずつ増やしてまわしていきます。その際に、print関数を使い、配列studentsのi番目の要素の値を出力し、最後の要素以外、その後に「,(カンマ)」を出力しています。
構造体の取り扱い
最後に構造体の取り扱い方法について解説します。
ここではエクセルのようなデータを作って、以下のようにデータを出力することにしましょう。
名前:佐藤,性別:男性 名前:田中,性別:女性 名前:小林,性別:女性
これを出力するコードは以下です。
fun main(args: Array<String>) { var first_row = mapOf("A" to "佐藤", "B" to "男性") var second_row = mapOf("A" to "田中", "B" to "女性") var third_row = mapOf("A" to "小林", "B" to "女性") var excel_data = arrayOf(first_row,second_row,third_row) for (i in 0..excel_data.count()-1) { print(excel_data[i]["A"]) print(",") println(excel_data[i]["B"]) } }
上記の例では、まずfirst_row, second_row, third_rowという、キー・値がともに文字列型の連想配列を3つ作り、Aというキー(列)に名前を、Bのキーに性別の値を入れていきます。
そして、それら全てをexcel_dataという連想配列型の配列に入れます。
その後、数値型のカウンタ変数iを0に初期セットし、配列excel_dataの要素の数に到達するまでループでiを1ずつ増やしてまわしていきます。その際に、print関数を使い、配列excel_dataのi番目の要素の中のA列とB列の値を出力しています。
まとめ:KotlinはJavaの拡張言語でAndroidアプリの標準開発言語
Kotlinの良さを簡単にまとめると、以下のとおりです。
- コードが書きやすい ← 静的型付けだが型推論あり
- 高い安全性 ← NULLポインタの罠などのチェックが充実
- Javaとの高い互換性 ← Javaのライブラリやフレームワークが使える
つまりKotlinは、Javaを拡張していったものであるため、Javaの良いところを取り入れつつ、より安全に、より書きやすくなった言語です。
Android Studioで標準言語として使えることから、Androidアプリの開発ではKotlinは主流になってきました。今後はサーバーサイドなどでKotlinが使われる機会が増えていくものと思われます。
Kotlinは静的型付けの言語でオブジェクト指向型の言語なので、初心者の方は独学では少し難しいと感じるかもしれません。もし独学でできなさそうな方は、プログラミングスクールも手段の一つに入れると良いと思います。
現役エンジニアがオススメするプログラミングスクール3選【無料体験あり】
「一からきちんと学べるオススメのプログラミングスクールを知りたい。プログラミングの効率的な学び方を知りたい」←こういった疑問に答えます。本記事内容:まずはどのプログラミング言語を選ぶべきか/現役エンジニアがオススメするプログラミングスクール3選/プログラミングスクールにプラスして行うべきこと