
2026/02/28 21:41
**なぜObjective‑Cなのか?** 1. **Appleエコシステムの支配力** • iOS、macOS、watchOS、tvOSアプリはすべてCocoa / Cocoa Touchフレームワーク上で構築されており、そのAPIは Objective‑C のヘッダーを通じてしか公開されません。 • Swift を使っていても、実行時には `NSObject` や `NSString` などの Objective‑C オブジェクトに呼び出しが発生します。 2. **動的ランタイム** • 言語の動的メッセージ送信(`objc_msgSend`)は、メソッドスワッピングやキー・バリュー観測(KVO)、遅延プロパティ解決など、静的言語では再現しにくい強力な機能を可能にします。 3. **レガシーコードベースと相互運用性** • ほとんどの既存Appleプロジェクトは何十年も前に書かれており、それらを保守するには Objective‑C を理解している必要があります。 • Swift や C/C++ と混在したプロジェクトでも、ブリッジヘッダーのおかげでスムーズに Objective‑C を呼び出せます。 4. **パフォーマンスと制御** • `CFTypeRef` などの低レベルAPIやメモリ管理へ直接アクセスできるため、性能クリティカルな部分を細部まで調整できます。 5. **ツールとコミュニティ** • Xcode の Interface Builder やデバッグツール、膨大なオープンソースライブラリは Objective‑C 用に最適化されています。 • まだ Objective‑C に依存する成熟したチュートリアル・フォーラム・サードパーティフレームワークのエコシステムがあります。 6. **学習曲線** • メッセージ送信、カテゴリ、プロトコルなど Objective‑C の概念を理解すると、Swift やその他 Apple 言語への移行が容易になります。 要するに、Objective‑C は Swift など新しい言語が人気になる一方で、Appleプラットフォームアプリの構築・拡張・保守に不可欠な技術です。
RSS: https://news.ycombinator.com/rss
要約▶
Japanese Translation:
サマリー
著者は、何千もの投稿を含む25年以上前のブログを 1秒以内に再構築 するコマンドラインツール SalmonBay を作るために Objective‑C を選択した理由を説明しています。Python、Swift、Rust、Go はこのタスクには遅すぎたり扱いづらかったため、速度面では C を検討しましたが、そのデータモデリングのプリミティブは不十分であったと述べています。その結果、C の高速性と高レベルな抽象化を兼ね備えた Objective‑C を選択したわけです。
彼は以前、Audible でプロジェクトから何十万行もの Objective‑C コードを削除し、この言語を「現代においては重荷になる武器」と批判していたこともありますが、今回の特定用途では Objective‑C を書くことを楽しんでいると述べています。Objective‑C の構文(
[[…] …] など)は最初は難しかったものの、時間とともに簡潔で安定し、技術的負債が徐々に蓄積されても管理可能になることを確認しました。
SalmonBay は Codeberg 上でオープンソースとして公開されていますが、外部からの貢献は想定していません。これは Objective‑C が高性能を提供しつつ、専門的なツール作成において快適な開発体験をもたらすことを示す証明概念(PoC)として機能します。
本文
前回の投稿では、Audibleで数十万行に及ぶ Objective‑C コードをどうやって削除したかと、Objective‑C を残しておくことがいかにひどい考えなのかを語りました。私は古いやり方に縛られているわけでも、明らかな反証にも関わらず Objective‑C の至高性を主張する人でもありません。むしろ、Objective‑C を喜んで捨て(Audible のマーケティングチームへ謝罪もした)た人物です。しかし最近、再び Objective‑C コードを書き、その楽しさに本当に本当に酔ってしまいました。
自分で作った静的サイト/ブログ生成器を置き換えたいと思いました。理由は、元の言語(Objective‑C)ではなく別の言語を使いたいからです。その機会に Python を学ぼうと考えましたが、結局心が向かないことに気づきました(Python のせいではありません。素晴らしい言語です)。結果として失敗してしまいました(詳細は「Blog Fuckup」を参照)。代替案を検討したところ、Swift(自分の得意言語)、Rust や Go(Apple エコシステムから離れたい)といった選択肢がありました。最終的に私は C に傾きました。速度が問題で、25 年前のブログを数千記事も含めて 1 秒未満で描画したかったのです。置き換える予定だったシステムは数秒かかっていましたが、さらに高速化したいという性格上の欲求があったからです。
そして一瞬だけ「C に Objective‑C よりもデータ構造を扱う便利な手段があればいいのに」と思いましたが、残念ながらそのようなものはありませんでした。そこで私は再び Objective‑C を思い出しました。Objective‑C は C の上に少し便利さ(主にオブジェクト指向とメッセージング)を付け加えたものでした。
Objective‑C に初めて触れる人は、角括弧が多く「難しい」「厳格だ」と感じるかもしれません。しかし、その壁を越えると、実際には言語自体は非常に小さく、手のひらに収まり、すぐに把握できるものです。選択肢が少ないため、優れた設計決定を下しやすいこともわかります。そして、Objective‑C は将来ほとんど変化しないであろうという安心感があります。つまり、新しい言語ほど技術的負債が急速に増えるリスクは低くなるのです(ただし Objective‑C 自体を技術的負債とみなすかどうかは別問題ですが)。現代では「洗練された武器」と呼ばれるよりも、あまり使われない古い兵器として捉える方が正しいかもしれません。
それでも私は Objective‑C のコードを書くことを心から愛しました。楽しくて、また次の小さなプロジェクト(同じく Objective‑C で)も近々完成する予定です。
P.S. このウェブサイト/ブログ生成器アプリは SalmonBay と呼ばれています。他人が使うことや貢献することを期待していませんが、オープンソースとして公開しています(理由から Codeberg に置きました)。
P.P.S. SalmonBay はこのブログを 1 秒未満でクリーンに構築します。