WWDC 2014のキーノートプレゼンで発表された新しいプログラミング言語「Swift」を触れてみた。これはWWDCのプレゼンによれば「CのないObjective-C」といったような言語だそうだ。これからSwiftを軽く触ってみたところの個人的な所感を述べたい。
軽く触れてみたところ、全体的にはかなりカオスな言語になっている印象だった。形的にはJavaあるいはC#に似ているが、改行で処理を区切るところはPythonやBASIC、変数及びメソッド定義は意図的に型を指定できるという点を除けばJavaScriptのようなものとなっている。そして引数にラベルを用いているところはObjective-C及びSmalltalkのような感じである。
Objective-Cでは文字列の結合や配列の扱いなどでメソッドを使う必要があり冗長な記述を必要としていた ((Modern Objective-C syntaxで部分的に改善されたとはいえ)) のが、演算子などで対応ができるようになったこと、配列の内容の型を意識する必要がなくなった ((Objective-CではNSObjectあるいはそのサブクラスでなければならなかった)) ことを考えると、その点では記述が楽になったと言える。また、プロパティや引数にnilを許容するか、あるいはそうでないかを明示できるようになった。
一方、「CのないObjective-C」の通り、Swiftのコードは基本的にC言語のコードをファイル内に組み込むことはできない。その代わり、バインディングを用いることによってSwift及びObjective-Cのコードを相互に呼び出すことができるようになっている。また、プロジェクト内に両方のコードを混在させることも可能である。ほか、コンパイラーの最適化あるいはC/Objective-Cと比較して必要なランタイムが少ないのか、動作速度がObjective-Cよりも高速という。
不満点としては、プロパティおよびメソッドのアクセス権について、protectedやprivateなどに指定できないというところである。Objective-Cではヘッダーファイルに書かないことで見た目上隠蔽できたが ((何らかの方法でメソッド名がわかってしまえば実際にはpublicなので呼び出せてしまうが)) 、Swiftではすべてのメソッド及びプロパティが事実上publicということになってしまう。その点で問題となる可能性が想定される。
現時点ではXcode 6がベータ版として公開されており、それを使ってSwiftを体験することができる。ただし、入力補完にバグがある模様で、入力補完をした後にいちいち修正しなければならなくなるところがあるので注意が必要である。
まだよくわからない部分が多いものの、将来的にはObjective-CからSwiftへ移行、もしくは両方を使い分けるというようなことになるのが想定されるため、iOS/OS Xアプリ開発者はSwiftを習得することが強く求められるだろう。
今後、iOS/OS Xネイティブアプリ開発を教えるにはObjective-CとSwiftの両方を教える必要がありそうだ。どちらもCocoaがメインのため、メソッド上はほぼ一緒なのだが。
ウェブマスター。本ブログでITを中心にいろいろな情報や意見などを提供しています。主にスマートフォン向けアプリやウェブアプリの開発を携わっています。ご用の方はコメントかコンタクトフォームにて。