Objective-C淘汰の風潮について思うこと


「メソッド名が長い」「括弧がキモイ」「センスがない」「学ぶ価値がない」「今すぐ捨てるべき」等、Objective-Cに対するヘイトはSwift登場以前からありましたが、最近はそのような嫌悪感を以前よりも多く見かけるようになりました。Swiftの登場でAppleデベロッパへの新規参入者が増えたことも影響しているのかもしれません。

サヨナラObjective-C

そういえば近頃「サヨナラObjective-C」という趣旨のキャッチコピーをお見受けいたしました。何処のサイトであったかは忘れてしまいましたが、書店で見かけたような記憶もございます。最近、記憶が曖昧なのです。いずれにせよこのキャッチコピー、Objective-Cを少しでも噛じったことのある身としては凄くいたたまれない気持ちになるのです。

サヨナラの意図も不明瞭でなんとももどかしい。サヨナラゲーム的に勝者敗者の関係を意識しているのでしょうか。はたまた「おさらば」寄りなニュアンスを含めているのでしょうか。解りかねます。

そもそもAppleの成長を支えていらした大言語殿にさよならなどという安直な言葉を添えるのはいささか敬意に欠けるような気もいたします。Objective-Cに敬意を表すならばむしろ「お元気でObjective-C」「ごきげんようObjective-C」「左様ならばこれにて失礼つかまつるObjective-C」程度の敬服を示してもらいたいものです。

Objective-Cに敬意を表する

最近はSwiftを取り扱うブログ等でObjective-Cを邪険に扱う風潮がありますが、Objective-Cはあれでよく出来た言語だと思います。Swiftは確かに良い言語ですし、なによりも未来が感じられます。個人的にはC++の代替として注目しています。幅広い分野で今後の主流になるのは間違いないでしょう。ですが、Swift推しのためにObjective-CやC言語を負の歴史みたいに扱うのは少し違うのではないでしょうか。

慣れれば読みやすい

説明的で長ったらしいメソッド名も逆にコメントを書く手間がなくなりますし、メッセージ式特有の角括弧は丸括弧を用いるC言語の関数やマクロとの住み分けに一役買ってます。あと角括弧は丸括弧よりも入力しやすいですね。コードをドキュメント的に記述することが出来るため非常に見通しの利く言語であると言えます。SwiftがMarkdownならObjective-CはWiki記法と言えるでしょう。

nilは哲学

nilの挙動は軽量言語的で面白いと思います。むしろ軽量言語に数あるイカした仕様のほぼ全てを凌駕していると言っても過言ではありません。これはもはや仕様ではなく哲学なのではないでしょうか。

Cは人生

Objective-CはC言語をベースとする言語であるため、どうしても癖が強く扱いも難しくなります。それゆえC言語をまともに理解できなければObjective-Cを正当に評価することも難しいのです。

逆にC言語で悟りを開いた者にとってObjective-Cほど面白い言語は他にないと思います。LL言語並のスピード感でもってC言語をコーディングするという感覚はまるで異次元にいるかのようです。これはスーパーカブにロケットエンジンを積んで走っているようなものです(少し危険)。

また、Objective-Cの面白いところは、その本質がC言語そのものであるという点に尽きます。CでできることはObjective-Cでも出来るため、100人のプログラマがいれば100通りのコードが出来上がります。これがPythonやJavaのような縛りの強い言語になると、似たようなコードばかりになってくるのですが、C言語は自由度が高いが故に書き手の性格がそのままコードに現れるのです。CやObjective-Cで書くコードはある意味の自身のコーディング人生そのものであると言えます。

Objective-Cは一眼レフ

Objective-Cは結局、業務用一眼レフみたいなものなのです。一般人にはただの厳ついカメラにしか見えず、デカくて重くて使いづらそうにも思えるわけですが、プロにとってはあれが一番力量に合った使いやすい機材なのです。Objective-Cもそれと同じで、ある程度の次元に行くとObjective-Cの真の価値が見えてくるのだと思います。私も最初に感じたObjective-Cへの印象と今の印象はだいぶ違っています。Swiftに受け継がれていった仕様やスタイルも多いですし、本当はよく考えられた凄い言語なのです。

なのでこれからSwiftを初める人はあまり無闇にObjective-Cを叩かないほうが良いと思います。Objective-Cバッシングばかりしていると上級者やObjective-C経験者から色眼鏡のアマチュアと思われかねません。

最後に

Objective-Cへの評価は綺麗に二分しているように思います。そしてその違いはおそらくC言語で育ってきたローレイヤー世代と、Web業界から流入してきた軽量言語世代のギャップから生まれているのではないかと思います。

C世代はObjective-Cに対してあくまでも「Cの拡張」という意識を強く持っていますが、JS世代はC言語への理解が浅いがために全体像が汲み取れず、ただただカオスな言語にしか見えません。

結局のところObjective-Cへの評価は、世代やその人の経験によって大きく変わるものなのです。

Objective-Cへ一言

「アディオス!!Objective-C」

今週の一言

「お前はなにも悪くない。泣きたいなら俺の横で泣いてもいいんだぜ」

Objective-C「いいえ、結構です」

広告