Swift について


WWDC 2014 では、様々な発表が行われましたが、プログラマとして一番魅力的だったのが、Swift という新しい言語です。

これまで iPhoneアプリを作るには、Objective-C という言語を触る必要がありましたが、元が C言語・Smalltalkから派生しているため、敷居が高い感じがありました。

今回発表された Swift は、Objective-C に置き換わる言語として開発されました。
JavaScript などのスクリプト言語を意識した作りになっています。
実際、WWDC でのデモンストレーションでは、その場でプログラムを入力するライブコーディングが行われ、Ruby や Python と同様に、コーディングから即結果が表示される姿を見ることが出来ました。

現在、Apple Developer に登録している開発者に限定して、XCode6 beta が提供されており、こちらで実際に Swfit を触ることができます。

Swift について特徴を上げてみたいと思います。

1. タイプセーフな言語

 変数を定義する際、型を指定します。型推測も可能です。
  var str1: String = "Text1"
  var str2 = "Text2" // 型推測します
  // str2 = 1 // 整数を入れようとするとエラーになります
また、定数 let が使えます。
 let constValue = "can't change"
 constValue = "override" // ここでエラー

2. Dictionary型の指定が簡単

こんな感じで使えます。
 var array = ["one": 1, "two": 2] 

3. ジェネリクス

  <T> が使えます。

4. クロージャ

 例えば、ソートなど、比較ロジックのみ定義したい場合などに使えます
 var array = [3, 4, 2, 1]
 sort(array, { (s1, s2) in s1 > s2 })

5. タプル

複数のオブジェクトをひとまとめにできます。
let valueSet = (“Number”, 123)

6. オプショナル

変数では通常、nil は指定できません。変数にオプションを追加し、nil を許容したりできます。
// var value // これだけでは、nil を代入しようとしてエラーになります
var unknownValue: String? // ? をつけると、Optional として、nil が許容されます

7. アトリビュート

 細かい挙動の指定ができます。例えば Objective-C 側から、Swift側のクラスを参照させたい場合など、@objc という atribute を追加することで、参照可能になります。

8. クラス

 class では、override もほか、コンストラクタ init, デストラクタ deinit
 setter / getter での処理
 willSet / didSet を用いてプロパティの初期化パラメータセットを調整可能です。

9. 構造体・列挙型・プロトコル

 class の他、構造体 struct・列挙型 enum・インターフェース定義 protocol (Java のinterface) があります。
 特に列挙型は大幅に機能が拡張されており、中にファンクションを記載し、細かい挙動を定義できます。(mutatingの指定が必要)

10. Extension

既存のクラスを拡張できる。Int型や、UI*** などへ機能を追加し、使用することができる。

11. いままで通りのメモリ管理

他の言語のいいとこ取りを目指しているように思えますが、メモリ管理だけは gc などの仕組みがなく、ARC (自動参照カウント方式) のままです。
これまで通り、Exception などもなく、weak / strong などを意識した作りをする必要があります。 (self と クロージャの組み合わせでの循環参照を意識し、新たに unowned が追加されてます)

なお、循環参照があった場合、メモリリークするので、これまで通り、注意が必要です。

Swift について Swift について Reviewed by Shunsuke Futakuchi on 11:59:00 Rating: 5
Powered by Blogger.