Kotlinとは
Kotlinは、コトリンと呼びJavaの統合開発環境であるIntelliJ IDEAで有名なJetBrainsが開発したオブジェクト指向プログラミング言語です。言語構文自体はJavaとは互換性がない独自方式ですが、コンパイルされたコードはJava VM(仮想マシン)上で動作するため、今まで開発したJavaソースコードの多くを流用できるという特徴を持っています。
ちなみにGoogle I/Oと呼ばれるGoogleが毎年開催している開発者向けの発表会で、Androidアプリ開発の言語として2017年に公式サポートが発表されました。以前まではJavaという言語でAndroidアプリ開発が行われていましたが、最近ではKotlinでの開発が主流になってきています。
Kotlinファイルの拡張子は.ktとなり、Javaの場合は.javaになります。
※iOSアプリではSwiftという言語が使われます。
Kotlinの基本
Kotlinを書いて学ぶために、Web上でソースコードを書いてコンパイルできるツールがありますので、こちらを開いてください。
今回はこちらを利用しますが、Android Studioでやってみたいという方は、Android Studioでプロジェクトを開いて同じようにやってみてください。
Kotlin : Hello World
最初にベーシックなプログラミングとしてとして、「Hello World」と表示させてみましょう。
上記のWebサイトを開くと、デフォルトで下記コードが既に書かれていると思いますので、画面右上の矢印ボタンを押してみましょう。
fun main() {
println("Hello, world!!!")
}
画面右上の矢印ボタンを押すと、下の枠の部分に「Hello world!!!」と表示されていると思います。コード内容としては、main関数が実行され、printlnという関数で引数として「Hello World!」を表示しているという内容になります。
Kotlin : 基本の型
Kotlinの型はJavaと違って、プリミティブ型に相当する int
や boolean
といった型は存在せず、すべてがオブジェクトです。 例えば、32 ビット整数を扱いたい場合は、一貫して Int
と記述すればよくJava のように int
と Integer
を使い分ける必要はありません。(内部で必要に応じて Java の int
や Integer
相当のものとして扱われます)
型 | 項目 |
---|---|
数値型 | Byte |
Short | |
Long | |
Int | |
Float | |
Double | |
文字、文字列 | Char |
String | |
論理型 | Boolean |
列挙型 | enum class |
Kotlin : 変数
Kotlinで変数を定義するときには、valとvarというキーワードを付ける必要があります。
valは1度定義すると変数を変更できないようになりますが、varでは何度も変更が可能になります。
変数によって、1度定義したら変更がないものか、何度も変更があるものかでval,varを使い分けましょう。試しに下記コードをmain関数の上に書いてみましょう。
val a: Int = 1
val b = 2
b = 3
val c: Int
実行すると3行目と4行目で下記画像のようなエラーが出ると思います。3行目の変数bはval型のため1度定義すると変更ができないためエラーとなります。4行目は初期値が設定されていないためエラーとなります。
続いてvar型を見ていきましょう。main関数を下記のように変更してから実行してみてください。下の画面を見てみると、6と表示されていると思います。これは変数xの初期値を5に設定して、その後xに1を足しているため、6と表示されています。このようにvar型では一度定義した後も変更が可能になっています。
fun main() {
var x = 5
x += 1
println(x)
}
Kotlin : 関数
関数とは何かを実行するために記述しておくまとまった処理のようなものになります。
例えばネットショッピングを行う場合、「カートに入れる」という処理がありますが、これを毎回カートという箱を用意してその中に商品を入れるというソースコードを書くのは大変です。そこで、カートという箱を用意してその中に商品を入れるという関数を1度作っておけば、その後は関数を呼び出すだけで、「カートに入れる」という処理を何度も実現できます。
このように何度も同じ処理を書くのは無駄ですので1つにまとめてしまおうというのが関数の良いところになります。
kotlinで関数を作成するにはfunという接頭辞が必要になります。試しに足し算を行うsum関数というものを作ってみましょう。
fun sum(a: Int, b: Int): Int {
return a + b
}
sum(a: Int, b: Int): Int という部分に注目してください。()の中はaとbというInt型の変数が定義されていて、これは2つのInt型の変数を受け取ることができるよ、という意味になります。
また、: Intの部分ですが、こちらはsum関数はInt型の値を返しますよという意味になります。試しにmain関数からsum関数を呼び出してみましょう。
ここではsum(5,7)を実行していますが、12と表示されています。5と7というInt型の数字がsum関数に渡されて、sum関数内では5+7を計算した結果をmain関数に返す(return)という処理を行っているため、println(12)という状態になり12が表示されているということになります。
また、関数は引数の数や返り値の型を変更することができ、sum関数では引数が2個でしたが、0個でも10個でも作ることができます。 返り値の型も今回はInt型でしたが、Double型やBoolean型など自由に変更可能です。
Kotlin : クラスとインスタンス
Kotlinはオブジェクト指向型言語ですので、クラスとインスタンスという概念が存在します。クラスとインスタンスの説明は下記サイトを見て頂けるとより理解が深まると思いますが、簡単に言うと
クラスは設計図、インスタンスは設計図から作成された物(オブジェクト)になります。
例えばスマートフォンという設計図(クラス)を作るとして、この設計図にはCPU、メモリ、ストレージという箱を持っているとします。この設計図を元に各メーカーがOS(AndroidやiOS)を決めたり、ソフトウェアを開発したりして、オブジェクト(物)を作成していき、作られたものがインスタンスと呼ばれます。
実際にKotlinではどのように作っていくか見ていきましょう。今回は例題としてRectangle(長方形)というクラスを作ってみましょう。長方形は縦の長さと横の長さが必要なので、引数にheightとlengthという変数を定義します。heightが縦の長さ、lengthが横の長さとなります。
またクラスの中では、perimeter(長方形の周囲)という変数を作成しておき、計算しておきましょう。これで長方形のクラスが出来ました。
class Rectangle(var height: Double, var length: Double) {
var perimeter = (height + length) * 2
}
続いて作った長方形クラスから実際にインスタンスを作成してみましょう。今回は縦が5.0、横が2.0の長方形を作りたいので以下コードをmain関数に記述してください。
val rectangle = Rectangle(5.0, 2.0)
println("四角形の周囲は${rectangle.perimeter}")
実行してみると、「四角形の周囲は14.0」と表示されていると思います。長方形というクラスから実際に縦5.0、横2.0の長方形が作られていることが分かりますね。
このように長方形というクラスを作った後に、Rectangleクラスを呼び出してインスタンスを作成することでたくさんの長方形が作ることができます。
また、長方形クラス(設計図)が1つあるので、あらゆるサイズの長方形がインスタンスとして何個も作ることができるようになります。冒頭にも説明したようにクラスとは設計図のことでインスタンスとは実際に作成した物になりますので、クラスとインスタンスの概念は覚えてください。
Kotlin : コメント
続いてコメントの書き方です。ソースコードを書くときは、複数人で開発することが多いので、わかりにくいコードや関数には必ずコメントで意味や背景を書いておくようにしましょう。
Kotlinではコードを書くときにコメントを書く方法として、2種類あります。1つ目は「//」で、1行のみコメントを書くことができます。2つ目は「/*」と「*/」で囲う事により複数行をコメントとすることができます。試しに下記コードで確認しておきましょう。
Kotlin : Null Safetyについて
Nullとは「何もない」ことを意味しています。例えば変数を作ったとしても変数に値が存在しない場合は、その変数はnullになっているということです。Kotlinではnull状態に対していくつか制約が決められており、守る必要があります。
基本的にnullにすることはできない
Kotlinでは変数にnullを代入することを禁止しています。これをNull Safety(Null安全性)と呼びます。例えば下記のようなコードを記述すると、aにnullを代入している時点でコンパイルに失敗してしまいます。不必要にnullにさせないことでバグの要因となるコードを減らすことが出来ます。
一方Web APIなどから取得した情報でnullになり得る場合は、次の?の方法で対処していきます。
var a: String = "abc"
a = null // コンパイルエラー
「?」をつけるとnullが可能になる
変数に?をつけるとnullを許容することができます。しかし基本的な考え方として、KotlinではNull Sefetyという考え方が用いられており、nullにすべきでない変数に「?」をつけてnullを許容するのはしないほうが良いでしょう。
var b: String? = null
nullが入りそうな変数を利用するときは「!!」をつける
「?」がついている変数はnullの可能性があるので、この状態で呼び出すことはできません。Kotlinではnullの可能性がある変数を呼び出すときは、「!!」をつけることが必要です。Rectangleクラスの例で言うと、下記のように呼び出す必要があります。
rectangle!!.perimeter
Kotlin : まとめ
今回はKotlinの基本の型と変数、関数、クラスなどを説明しました。Kotlinを利用するためにはif、for、when、whileなどの文法も学ぶ必要がありますので、こちらは以下記事で学んでみてください。