さようならObjective-C

こんにちはSwift

Appleさんから新しいプログラミング言語が発表されたそうだ。
名前をSwiftというらしい。

こいつはどうも汎用言語ではなく、iOSOS X専用のプログラミング言語らしい。まあ、その点はObjective-Cにしたって似たようなものだ。プログラマとして必要ならば習得するまでである。

どういう理屈なのか分からない*1が、Appleの発表によると、Objective-CよりもSwiftの方が、バイナリの実行速度が高速だとのこと。幸いなことに、Objective-Cとの互換性はある(ということは、C, C++とも互換性がある)ようだし、Cocoaの内部まで設計し直しているわけではないようなので、Objective-CからSwiftに移行するのはそれほど難しくはなさそうである。


SwiftのドキュメントはiTunesで無料公開されている。

ePub形式
https://itunes.apple.com/us/book/swift-programming-language/id881256329

Web
https://developer.apple.com/swift/


ざっと見たところ、CやC++よりはJavaScriptRubyに近い印象を受けた。

Objective-Cのコードを初めて見たときよりは、遥かに取っ付きやすそうなイメージである。

私の周囲にも、

iPhone開発には興味があるけど、Objective-Cはちょっと・・・」

という人はいたが、Swiftの発表はそういったプログラマに対する集客の意味もあるのかもしれない。まあ、気持ち悪さの点は、慣れてしまえば、どちらもそれほど大差はないんじゃないのかな、と私は思う。問題は慣れやすいかどうか、なのだろう。


ちょっと気づいた点、感じたところなど

・変数と定数を明確に区別する
定数の宣言時にvarの代わりにletを使うので、ぱっと見で定数だとわかりやすいってのがあるのかな。少なくとも、サンプルコードを見る限り、Objective-C時代のconstに比べて、Swiftではletが多用されているように見える。varは、本当に変更する必要のある変数にのみ使っているイメージ。

型推論、できます
いいね。Javaと逆側、C++と同じ側の型推論なので、こっちのが個人的には好き。

・関数が第一級オブジェクト
最近っぽい。個人的には別にブロックやselectorでもよかった。

・ミスしにくく設計されているようだ(安全第一)
変数の初期化を強要する、デフォルトでnilを許容しない、switch文のcaseはデフォでbreak、1行ifでも中括弧省略NG、オーバーライド時に明示的指定が必要、などなど。まあ、概ね、普通か。

・タプルが使える
いいね。

・デフォルト引数が使える
好き。

ジェネリクスが使える
これはなにげにObjective-Cに対する大きなアドバンテージかもしれない。とはいえ、アプリプログラマにとってどれほど恩恵があるのかは微妙か。

Javaのような、クラスとしてのEnum
いくつかのメソッドが用意されているし、自分でメソッドを定義することもできる。こちらもObjective-Cにはなかった。Enumは多用するのでありがたい。

・多重継承なし、プロトコルは健在
まあ、そうだろうな。

他、クラスの定義方法はRuby風に見えた。


と、だいたいこんな感じ。


Swiftは、Xcode6のベータ版で使えるそうな。
きっと、そのうちObjective-Cは廃れて、Swiftがスタンダードになるのだろうから、気が向いたら、ぼちぼち予習はしておこうと思う。

*1:Objective-Cのメッセージ送信のボトルネックがないというのが1つの要因だと思う。他、詳細は調べていないので不明。