C言語の万能性・汎用性は未だ強し
組み込みやオープンソースソフトウェアの世界に目を向けると、Swift登場に伴うObjective-Cの廃止は現実的にあり得ないと思えてきます。なんだかんだ言ってObjective-CはC言語なのです。Mac以外の全OSでもSwiftが使えるような時代が10年以上前から存在していれば話は別だったも知れません。
またクロスプラットフォームの重要性は未だかつてないほどに高まっています。C/C++の知識と経験が活かせ、C/C++製のSDKやライブラリとシームレスにやり取りができるObjective-Cの利点は今後も活きてゆくでしょう。
Cの切り捨ては熟練エンジニアの切り捨て
そもそもObjective-Cを切り捨てるということはC言語世代の熟練エンジニアを一時的に切り捨てるということですから、そう簡単にできることでもありません。AppleがOSXやiOSの既存資産を今後も活用していきたいという方針を持っているのなら、Objective-Cが消えることも無いでしょう。Windows10プラットフォーム構想の件もありますし、今が一番大事な次期ですから、Swift強制移行でObjective-C勢のパワーを削るような真似はApple側もしないはずです。
Objective-Cが自然消滅することはあっても、Appleが自らObjective-Cの首を切ることは無いのです。
しかしSwiftの魅力は圧倒的
とはいっても、Swiftはかなり魅力的な言語ですから、開発環境が実用レベルに達すれば、Objective-C勢の中でも大半の人はSwiftに移行してしまうはずです。逆に初心者や元Webエンジニア的な人達は今すぐにでもSwiftに移行すべきです。C言語の学習コストに比べればSwift移行による一時的な消耗なんて大したものではありません。(Swiftの言語仕様は年々複雑化・肥大化しており、また従来のプログラミングと異なるパラダイムも多く取り入れらています。場合によってはC言語由来言語(PHP, JavaScript, Java)の知識や経験が活かせる、Objective-Cのほうが学習コストは少なくなる場合もあります)
Objective-Cは変人向け言語の地位に
今後はObjective-CはAppleデベロッパの中でも変わり者や上級者向け言語という地位に落ち着くと思います。それはプログラミング業界におけるLisp的な立ち位置に近いかもしれません。
次世代フレームワーク登場の可能性は?
SwiftはObjective-Cの動的特性を抑え、より高速で処理効率の高い言語として生まれ変わった言語です。ただし、現状のGUIアプリ開発では既存のObjC製のフレームワークに頼らざるを得ない状況にあり、Swiftのポテンシャルを100%引き出せる環境にないのが現状です。
ならば、Swiftに最適化された次世代のフレームワークが出てきてもおかしくはないのではないかと期待したくなるところですが、果たしてそんな事は起こり得るのでしょうか。
現実的には起こりえないでしょう。今日のOSX/iOS業界の発展ぶりを考えるとインパクトがあまりにも大きくなりますし、むしろ既存フレームワークをブラッシュアップし、徐々に次世代の要素を取り入れてゆく方が現実的で混乱も少なくなるはずです。
現にAppleは近年AppKitとUIKitとの擦り合わせを強く意識しているように思います。これはおそらく両プラットフォーム間でのコード再利用性やUXKitのリリースを見越して両プラットフォーム間の整合性を高める意図があるのでしょう。仮にそうであれば、Cocoa/Cocoa Touchフレームワークは今後も次世代の要素を徐々に取り入れつつ発展を続けていくことでしょう。
しかしObjective-Cが共に発展し続けるとは限りません。元にFoundation Kitには既にSwift版が存在します。現段階ではLinuxやAndroid、Windows上での利用を想定したライブラリという側面が強いですが、将来的にApple側のライブラリもこれらに置き換わる可能性が考えられます。Cocoa/Cocoa Touchフレームワークを含めて全面的にSwift化する事態もまた想定しておく必要があるでしょう。将来的にObjective-Cランタイムがお払い箱となる可能性が考えられます。
もし仮にSwiftに最適化された新たなUIフレームワークが出てくるとすれば、その頃になるのでは無いでしょうか。
Swiftオープンソース化
なお、Swiftオープンソース化により今後、Mac/iOS以外のプラットフォームでもSwiftを使った開発が盛んになると思われます。いままでC/C++で実現していたコード再利用性をSwiftで実現できる時代がやってくるわけです。そのような時代を見越して今のうちからSwift移行しておくという考えはありかもしれません。
Objective-C廃止時の対応
もし仮にObjective-Cの廃止が決まったとしても完全廃止ではなく、きちんと互換性を担保した上での非推奨という形に落ち着くかと思います。元Carbon APIのような生かしも殺しもしない状態です。既に社会インフラとなっているOSの影響力を考えれば当然の対応と言えるでしょう。コンパイラ側のObjCサポートが続く限りは、既存アプリが急に使えなくなる/保守出来なくなるといった事態にもならないはずです。
いずれにせよ、Objective-C廃止は段階的にまた最小限の負担で行えるようになるはずです。オプショナルやジェネリクス、その他Swift由来の仕様や、より厳格な命名規則をObjective-C側に取り込み、Objective-CからSwiftへの安定的なコード変換の土台を徐々に整備し始めるはずです。SwiftとC++の連携機能も正式に出てくるかもしれません。それらの土台が出来上がった頃には皆笑顔で「動く城」と化したObjective-Cを切り捨てることでしょう。
なお、最新のXcodeではジェネリクスやNullabilityアノテーションのサポートが決まっています。
そもそも「Objective-C to Swift」のコード変換は可能なのかという疑問があります。言語コンセプト上それが困難になるようであれば、SwiftとObjective-Cの共存は永遠に無くならないのではないかとも思えてきます。そもそも、既存のコードを変換するという考えはあまり現実的ではなく、技術者たちの不安を助長してしまう恐れがあります。
WinObjCの足音
「Windows Bridge for iOS(WinObjC)」はiOS向けに開発したコードをWindowsプラットフォームでも動かせるようにするためのバックエンド技術で、ライバル社のMicrosoftが開発しています。これによりObjective-Cの潜在価値が高まりました。逆にSwiftの発展には今後大きな足かせとなることでしょう
Windowsプラットフォームへのアプリ流入・技術者流入を食い止めるためにAppleがSwiftへの移行を今以上に推し進め、Objective-Cの影響力を弱めようとする可能性が出てきます。Apple側の対応として考えられるのはObjective-C開発の非推奨化です。しかしそれは現実的な対応とは言えません。
ちなみにWinSwiftが出てくればこれらの話は無意味なものとなります。
Swiftはまだ実用レベルに達していない
Swiftを業務利用する所は今でも少数だと思います。 言語仕様の変更が明らかに多すぎますし、開発環境もまだまだ実用レベルに達していません。
Swift開発環境はまだ弱い〜Objective-C環境と比較して気づいた問題や不満〜
Objective-C経験者に限って言えば、そのような言語を実戦投入して得られるメリットはほとんど無く、むしろ消耗やリスクのほうが大きいと思われます。
また近年ではジェネリクスやNullabilityなど、Swiftの安全性やテスト効率等の利点をObjective-C側にも取り入れようとする流れが見られます。わざわざ自発的にSwift移行する必要はなさそうです。
今日のSwiftブーム・Swift推しはすこし行き過ぎている
SwiftはAppleというブランドだけが先行してしまった言語という印象を受けます。 支持者によって過剰に祭り上げられてしまった言語と言えるでしょう。
パワーブロガー達がこぞって取り上げたり、ネットで話題になりすぎたゆえに、それがあたかも世の中の主流になってるだろうと錯覚してしまった人たちが多いのもまた事実です。
Swiftに対して慎重な意見を主張した人たちがほとんどいなかったことは実に残念なことです。
現段階でのSwiftはAppleの将来性や新規参入を促すためのパフォーマンス、言わば政治の道具でしかありません。もっとも長期的に見れば、Swiftの発表はアプリ業界・IT業界を次のフィールドへと進める優れた決断であったと賞賛できるでしょう。
まだまだ発展段階の言語
Swiftはおそらく「Write once, run anywhere」を意識した言語になり、将来的にはC/C++の一歩手前に位置する言語になるはずです。Webの世界ではJavaの代替となるでしょう。
しかし当面は車輪の再開発が必要になります。Swiftのオープンソース化にはデファクトスタンダード化の意図だけでなく、車輪の再開発を促す意図があるのでしょう。
Swiftは趣味で扱う分にはとても魅力的な言語ですが、これを実際の現場で使うとなれば話は別です。まだまだ発展段階の言語である点をきちんと意識しておく必要があります。
まとめ
- いきなりObjective-Cが無くなることはない
- おそらくObjective-CはC/C++人気に支えられ当分は生き続ける
- Swiftはまだまだ発展段階の言語
- わざわざ自発的にSwift移行する必要はない。時期が早すぎる
- 周りに流されてSwiftで消耗しないように
ピンバック: プログラミング言語の未来 ~Swift移行がなかなか進まない理由~ | MaryCore