まず、Objective-C向けの製品やクラス、トレーニングプログラムが勢いを失い始めるはずだ。Swiftが広範に普及するとしたら、その犠牲になるのはObjective-Cだろう。したがって、現在Objective-Cのトレーニング製品を提供している人は、その製品が数年以内に保守フェーズと開発終了フェーズに達することを覚悟しておいた方がいい。
その一方で、Swift関連の教材を、同じく書籍、トレーニングサービス、教育プログラムといった形で作成する新たな機会も広がる。900万人の開発者がいるため、市場が存在することは間違いないが、教えるコンテンツの内容には変更を加える必要があるだろう。
Swiftはなぜそれほど特別なのか
最初に、ほとんどのiOS(とほとんどの「Mac」)プログラミングはObjective-Cで行われてきたことを理解しておく必要がある。Objective-CはC言語の変種で、Appleが独自に開発した。Cは当時としては洗練されていたが、設計されたのは、コンピュータソフトウェアが現在よりはるかに簡素だった1970年代前半のことである。
それから10年後、C++とObjective-Cが開発され、それぞれ異なるアプローチで、コードの大規模化や再利用といった同様の問題をある程度解決した。誰もが知るように、AppleはNeXTの買収によってObjective-Cを手に入れ、Objective-CはAppleソフトウェアの主要な開発言語になった。
筆者は2012年、「True confessions of a former iPhone developer」(元「iPhone」開発者の真実の告白)という記事で、Objective-Cのことを「誰かが2つのプログラミング言語を結合したが、継ぎ目を目立たなくするのを忘れたという印象が強い」と説明した。
その理由は、Objective-CがCにもたらしたメッセージパッシング拡張は、周辺のほかのCコードと異なるシンタックスの記述になっていることだ。Objective Cのコードを記述すると、2つの全く異なる言語の間を行ったり来たりしているように思えるコードがたくさんできる。美しくもないし、洗練もされていないコードだ。
筋金入りのAppleプログラマーの多くはObjective-Cを賛美するだろう。Objective-Cが役割を果たすことも間違いない。しかし、この言語にはお粗末な要素があることも確かだ。
>AppleはSwiftを「Objective-C without the C」と表現した。この2つの結合されたプログラミング言語の枠組み(Cの関数ベースのモデルとObjective-Cのメッセージパッシングモデル)についてわかっていることを基に考えると、Swiftの本質がメッセージパッシングになることは間違いなさそうだ。
プログラマーでない人は、その意味について深く考える必要はない。全体性を高める方法でコードを合理化できれば、生産性と保守性が必ず向上する、ということを理解しておけば大丈夫だ。
この記事は海外CBS Interactive発の記事を朝日インタラクティブが日本向けに編集したものです。