2019/02/06
→【Kotlin編】ゼロからはじめる一番やさしいAndroidアプリ開発入門
sponsored link
もくじ
KotlinがAndroidの正式開発言語に
[速報]「Kotlin」がAndroidの正式な開発言語に。ということで、超巨大プラットフォームAndroidの開発言語という絶対的地位からJavaがいよいよ本当に降ろされることになりそうです。
Oracleは何やってんでしょうか?今のGoogleに見放されたら終わりですよ。せっかく花形ポジションに座らせてもらったというのに。
まあ、時代は変わるもんですね。とりあえず新たに花形ポジションに着くことになったKotlinについてまとめてみました。
Kotlinの基本情報
Kotlinは普通に「コトリン」と読むようです。なんかかわいい。
Kotlinを開発したのは、あの統合開発環境InteliJ IDEAの開発元であるJetBrains社です。今はオープンソース化されてます。
→GitHub – JetBrains/kotlin: The Kotlin Programming Language
Javaと同じコンパイル言語。Javaと同等のコンパイル速度らしい。
KotlinはJVM上で動作し、Javaとの互換性を保ちつつも、Javaではできないモダンな書き方ができるようになってるのが大きな特徴です。
KotlinとJavaの違い
Kotlinの文法について、Javaとの違いに着目しながら説明したいと思います。
mainメソッドはクラスの外
Javaではmainメソッドはpublicなクラスのstaticメンバとして書く必要がありましたが、Kotlinでは、いきなりmainメソッドを書くことができます。この方が自然でいいですね。
Kotlin
fun main(args: Array){ println("Hello Kotlin") }
Java
public class Main{ public static void main(String[] args){ System.out.println("Hello Java"); } }
セミコロンレス
Javaでは文末のセミコロンが抜けるといちいち怒られますが、Kotlinでは改行するだけで文末と見なされます。
一行に複数の文を書きたい場合はセミコロンが要ります。
基本データ型(プリミティブ型)は無し
Javaではintやfloatやcharなどの基本データ型が用意されていますが、Kotlinではありません。
その代わり、同じように扱えるクラス(オブジェクト)が用意されています。
型 | 説明 |
---|---|
Double | 64ビット浮動小数点数 |
Float | 32ビット浮動小数点数 |
Long | 64ビット符号付き整数 |
Int | 32ビット符号付き整数 |
Short | 16ビット符号付き整数 |
Byte | 8ビット符号付き整数 |
Char | 1文字を表す文字型 |
Boolean | 真偽値(trueまたはfalse) |
String | 文字列 |
それぞれ頭文字は大文字なので注意。
型の宣言不要
Kotlinは型推論が備わっており、変数の宣言時に初期化(値の代入)を行う場合は型を書く必要はありません。
その代わり、変数の宣言時にはvarかvalを付ける必要があります。varは普通の変数、valは定数となり再代入不可になります(Javaのfinalと同じ)。
Kotlin
var num1 = 0 //変数 val key = "abcd" //定数 key = "efgh" //定数に再代入はコンパイルエラー var num2 //その場で初期化しない場合は型を明示しないとコンパイルエラー
型を明示的に指定したい場合には以下のようにコロンに続けて書きます。
var num: Byte = 10
変数名の後ろに型が来るのは、慣れないうちは読みにくいと思います。
関数(メソッド)の定義の仕方
関数はクラスのメンバである必要はなく、トップレベルで宣言することが出来ます。
関数を宣言する際にはfunを頭に付けます。
仮引数は型を明示する必要があります。
戻り値がある場合は( )の後ろにコロンを付けて書き足します。戻り値が無い場合は何も書きません。
Kotlin
fun plus(num1: Int, num2: Int): Int{ return num1 + num2 } fun main(args: Array<String>){ println(plus(1, 2)) } //=> 3
Java
class Main{ public static voi main(String[] args){ System.out.println(plus(1, 2)); } static int plus(int num1, int num2){ return num1 + num2; } } //=> 3
引数のデフォルト値を設定できる
Kotlinでは引数のデフォルト値を設定することが出来ます。
Kotlin
fun hello(name: String, language: String = "en"){ //引数のlanguageによって言語を変えて、挨拶する処理 } fun main(args: Array) { hello("田中", "ja") //普通に引数を2つ渡して呼ぶ hello("Alex") //第二引数を省略してデフォルト引数を使う hello("Michel", language="fr") //引数名を指定して渡すこともできる hello(language="es", name="Alonso") //引数名を指定する場合、渡す順番は自由 }
配列はArrayオブジェクト
Kotlinではいわゆる配列はありません。その代わりにArray
Arrayオブジェクトを作る際には、arrayOfメソッドを使います。
要素にアクセスする際は普通に[ ]でインデックスを指定することが出来ます。
Kotlin
var array = arrayOf(1, 2, 3)
array[0] = 5
println(array[0])
//=> 5
Java
int[] array = new int[]{1, 2, 3}; array[0] = 5 System.out.println(array[0]); //=> 5
コレクションは読み込み専用or書き込み可
KotlinのコレクションはList、Map、Setの3つのクラスが用意されています。
それぞれ基本的には読み取り専用になっていて、要素を一度入れたら書き換えることが出来ません(値を変更するメソッドが用意されていない)。
書き込み(要素の変更)もしたい場合は、それぞれMutableList、MutableMap、MutableSetクラスを使う必要があります。
newは無し、コンストラクタはinit
インスタンス化する際のnewは要りません。
コンストラクタは、init{ }で定義します。コンストラクタに渡したい引数はクラス名の後ろに( )をつけてそこに書きます。
Kotlin
fun main(args: Array) { var human = Human("Nobuo") println(human.name) } class Human(name: String){ val name: String init{ this.name = name } }
Java
public class Main{ public static void main(String[] args) { Human human = new Human("Nobuo"); System.out.println(human.name); } } class Human{ final String name; Human(String name){ this.name = name; } }
プロパティは自動でセット可能
コンストラクタに渡した値をそのままプロパティに代入したいようなパターンがよくあると思います。上記の例もまさにそうです。
そういうのがすごい簡単に書けます。
コンストラクタが受け取るべき仮引数を定義する際に、varかvalを書いて宣言することで、その変数をそのクラスのプロパティ(インスタンスフィールド)として宣言したことになり、しかも、そのプロパティへ代入する処理をコンストラクタに書かなくてもいいんです。
Kotlin
class Human(val name: String){ //コンストラクタ無し } fun main(args: Array) { var human = Human("Nobuo") println(human.name) } //=> Nobuo
文字列の中に変数を入れる
ダブルクォーテーションで囲った文字列リテラルの中に変数を放り込むことができます。
変数名の頭に$を付けて放り込むだけです。
Kotlin
num = 3
print("好きな数字は$num")
#=> 好きな数字は3
ただしこの場合、変数名の後ろに文字が続く場合、境目をうまく区切ってくれないことがあります。
Kotlin
var num = 3
print("好きな数字は$numです。")
#=> コンパイルエラー Unresolved reference: numです
${ }を使えば明示的に変数部分を指定できます。
Kotlin
var num = 3
print("好きな数字は${num}です。")
#=> 好きな数字は3です。
というか、${ }の中は普通に計算とかも出来ます。
Kotlin
var num = 3
print("好きな数字は${3+4}です。")
#=> 好きな数字は7です。
詳しくは
以上、とりあえずJavaとの大まかな違いをリストアップしてみました。もちろん違いはまだまだ沢山あります。
詳しくは、30分で覚えるKotlin文法 – QiitaとかはじめてのKotlin。Javaと比較してみたとかで調べてみてください。
それと、ブラウザ上で実際コードを書いて動かしてみることができる便利なサイトがあるので、いろいろ試してみてください。
ゼロから丁寧に教えてもらいたい人はUdemyの【Kotlin編】ゼロからはじめる一番やさしいAndroidアプリ開発入門がおすすめ。キャンペーン価格で今のうちに買っておけばいつでも見れます!
今だけ→転職できなければ全額返金の「エンジニア転職保証コース」
絶対エンジニアになる!→テックエキスパート
フリーランスエンジニアの収入例を見てみる→レバテックフリーランス