[iOS 8] Android脳に効く!新言語「Swift」超入門 #1 変数の宣言と型

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

はじめに

先日、Appleが新しい言語「Swift」を発表しました。今後iOS開発はSwiftでの開発に移行していくことでしょう。そんな中で「Android開発者もSwift読めなくちゃねっ!」ということで、Android開発者になじみのあるJavaと照らし合わせながら新言語Swiftの概要を解説していきたいと思います。

注:本シリーズで言うJavaとは[Java 6]を対象としています

こんな人にオススメです

  • Android開発者で新しい言語も出たしiOS開発ちょっとやってみようかなと感じた人
  • Java初心者でSwiftに興味がある人
  • とりあえずSwiftの雰囲気を感じたい人

とりあえず覚えておくといいこと

Swiftは…

  • 文の終わりにセミコロンをつけなくてもいい(つけてもいい)
  • 一行に複数の文を書く時は文の終わりにセミコロンをつけて区切る

Swift Code

// セミコロン(;)なくても大丈夫
var str = "HelloSwift"

// 一行に複数の文を書く時にはセミコロン(;)が必要
// 実際にはあまり使わないと思いますが覚えておくといいでしょう
println(str);println(str)

変数・定数の宣言

まずはじめは、プログラミング言語の最も基本の部分である変数・定数の宣言についてです。
変数・定数についての詳しい説明は必要ないと思いますが、ここでポイントとなるのが「Swiftには型推論がある」ということです。Javaには型推論はありません。型推論を聞いたことがない人はなんだか難しそうに感じるかもしれませんが、決してそんなことはないので順番に見ていきましょう。

変数の宣言

Javaでの変数の宣言は次のようにしていました。

Java Code

String str = "Hello, World"; // 文字列

int numInt = 10; // 整数

double numDouble = 10.5; // 小数

はじめに変数の型を指定して、その後に識別子、値と記述します。
Swiftではどうなるでしょうか。

変数宣言の文法

var_syntax

Swiftで変数の宣言を行うには「今から変数を宣言する」と明示する必要があります。それがvarです。
識別子に続くは、省略可能です。を省略した場合は型推論により自動的に変数のが決まります。

まず、変数を宣言するにはvarを記述します。型推論が可能であれば型の省略ができ、変数の宣言に型は登場しません。明示的に変数の型を指定する時は識別子の後にコロン(:)を付けて型を指定します。

実際にはこのように変数の宣言をします。

Swift Code

var str: String = "Hello, Swift" // String型を指定

// 型推論
var name = "classmethod" // String型

var numInt = 10 // Int型

var numDouble = 10.5 // Double型

// このように宣言するとnumはDouble型として扱われます
var num: Double = 20
println( num ) // 20.0

定数の宣言

Javaでの定数の宣言は次のようにしていました。

Java Code

final String STR = "Hello, World"; // 文字列

final int NUM_INT = 10; // 整数

final double NUM_DOUBLE = 10.5; // 小数

考え方は変数の宣言と同じですが、final修飾子がつきます。
Swiftではどうなるでしょうか。

定数宣言の文法

let_syntax

Swiftで定数の宣言を行うには変数の宣言と同じように「今から定数を宣言する」と明示する必要があります。それがletです。型推論の考え方は変数の宣言と同じです。

varと書いていれば変数の宣言、letと書いていれば定数の宣言を意味します。当然ながら、定数には宣言時の初期化後の代入はできません。

実際にはこのように定数の宣言をします。

Swift Code

let str = "Hello, Swift" // String型の定数を宣言

// 再代入はできません
let numInt = 10 // Int型

numInt = 20 // コンパイルエラー

CHECK!
Javaでは、定数の識別子を大文字のスネークケースで書くのが一般的ですが、Swiftでは変数と同じくキャメルケースで書くのがいいようです。

データ型

Swiftの主なデータ型を紹介します。Javaと比較すると、多少表現に違いはあるもののどれも見慣れたもので抵抗なく理解できるでしょう。

真偽型

Bool 2値型。trueまたはfalseどちらかの値をとる

数値型

符号付き整数型

Int8 -128〜127 の整数
Int16 -32,768〜32,767 の整数
Int32 -2,147,483,648〜2,147,483,647 の整数
Int64 -9,223,372,036,854,775,808〜9,223,372,036,854,775,807 の整数
Int 32ビット環境ではInt32、64ビット環境ではInt64と同じ範囲の整数値をとる

符号無し整数型

UInt8 0〜255 の整数
UInt16 0〜65,535 の整数
UInt32 0〜4,294,967,295 の整数
UInt64 0〜18,446,744,073,709,551,615 の整数
UInt 32ビット環境ではInt32、64ビット環境ではInt64と同じ範囲の整数値をとる

浮動小数点

Float 32ビット浮動小数点。Doubleほどの精度を必要としない場合に使用する
Double 64ビット浮動小数点。小数点を扱う場合は主にこちらを使用する

文字列・文字型

String Unicode文字を連ねた文字列を格納する可変長文字列型
Character Unicode文字を1文字格納する文字型

配列型

Array〈T〉 Genericsとして定義されているため T の型で縛られる
Array〈Any〉 配列内に複数の型が混在する複合型配列

辞書型

Dictionary〈T, S〉 T 型のキーと S 型の値を持つ連想配列

まとめ

今回は、変数・定数の宣言とデータ型についてでした。データ型はもうおなじみといった感じですが、変数・定数については少し違和感を感じるかもしれません。
まずは、varletさえ覚えておけばいいでしょう。きっとすぐ慣れます。

次回は、Swift最初の難関「Optional」の基礎について書きたいと思います。

バックナンバー

[iOS 8]Android脳に効く!新言語「Swift」超入門 #1 変数の宣言と型
[iOS 8]Android脳に効く!新言語「Swift」超入門 #2 Optional基礎
[iOS 8]Android脳に効く!新言語「Swift」超入門 #3 制御構造
[iOS 8]Android脳に効く!新言語「Swift」超入門 #4 関数とクロージャ
[iOS 8]Android脳に効く!新言語「Swift」超入門 #5 クラスとストラクチャ