**なぜ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プラットフォームアプリの構築・拡張・保守に不可欠な技術です。

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 秒未満でクリーンに構築します。

同じ日のほかのニュース

一覧に戻る →

2026/03/03 7:32

メタ社のスマートグラスの裏側にいる作業員は、全てを見渡すことができます。

## Japanese Translation: > Metaの新しい「Meta Ray‑Ban」メガネは、仕事・旅行・リアルタイム翻訳・プライバシー制御を一つのAIアシスタントとして位置付けられています。EssilorLuxotticaと共同で製造され、スウェーデンで販売される予定で、2023‑24年に200万台から2025年秋には700万台へと売上が急増する見込みです。このデバイスはサーバー側で処理を行う必要があり、ローカルでの対話は不可能です。アプリは電話にインターネット接続がなくても、常にMetaサーバーにアクセスします。 > Metaのプライバシーポリシーでは、ユーザーが明示的にオプトインしない限り、音声・テキスト・画像・動画を自動的に取得することが許可されています。すべてのコンテンツはAIによって自動または手動でレビューされる可能性があり、オプトアウトの選択肢はありません。プライバシー専門家は、ユーザーがしばしばメガネのカメラがAIアシスタントに話しかけた際に録画していることを認識していない点を指摘し、透明性の欠如を強調しています。 > データ注釈作業はサブコントラクター(例:ナイロビのSama)に委託されており、従業員は極めてプライベートな資料(例:トイレ訪問、セックスシーン、銀行カード情報など)をレビューすることがあります。匿名化は不完全であり、照明が悪い場合には顔が見えてしまう可能性があります。Metaの利用規約では保存場所や詳細な取り扱いについて具体的に示されておらず、ヨーロッパの幹部はGDPR準拠がサーバー所在地よりもデータ保護基準に依存していると指摘し、法的責任はMeta Irelandに帰属すると述べています。 > スウェーデンのプライバシー保護機関はまだ製品をレビューしていないため、ユーザーが自分のデータがAIモデルのトレーニングや広告ターゲティングにどのように使用されるかを十分に理解できていないという懸念があります。MetaはクラウドベースのAI処理を維持しつつメガネの販売を継続する計画であり、これがGDPR監視の強化につながり、企業や消費者がウェアラブルAIデバイスにおけるより明確なオプトインデータポリシーを要求する動きを促す可能性があります。

2026/03/03 6:09

Macintoshへようこそ(お帰りなさい)。

## Japanese Translation: --- ## Summary 著者は、最近の macOS リリース―特に不安定な「macOS Tahoe」―が継続的なバグと頻繁な UI 変更に悩まされており、システムの安定性やユーザー体験を侵食していると主張しています。主要な問題点は次の通りです: - **Time‑Machine バックアップ** は古いスナップショットが削除されない限り失敗します。 - **Spotlight** のタグインデックスは不完全な結果しか返さず、インデックスを再構築したり Finder を再起動しても部分的にしか解決しません。 - **Finder** は Spotlight クエリ中や検索結果の更新時にハングします。また、外部ファイルが作成された後にフォルダ内容を更新できず(*Go To Folder* やパスオートコンプリートといった回避策も限定的で、しばしば Finder の再起動が必要になります)。 - **AirPods Pro** は約 1 秒後に音声の不具合を起こし、ファームウェアや OS アップグレードでは問題は解決されません。 - **全画面ウィンドウ** は Cmd + Tab で切り替えるとフォーカスが失われ、キーボードショートカットが機能せず、ウィンドウをクリックするまで Safari のビデオコントロールに影響します。 これらの問題は複数の macOS リリースおよび Mac モデル(著者自身の M1 Max 2021 を含む)で継続しており、Apple 自身のコンポーネントに起因することを示しています。著者は、アイコン変更やダークパターン UI の微調整といった Apple の迅速な美観修正が長期的信頼性を損ねる可能性があると警告しています。将来のアップデートでバグが対処されることは期待できるものの、安定性よりも視覚的洗練を優先することへの懸念があります。 **Rosetta 2 の段階的廃止** は ARM64 Linux コンテナサポートに依存している開発者にとってさらに悪影響を及ぼし、アプリケーションの互換性を脅かす恐れがあります。総じて、著者は Apple に対し、短期的な美観更新よりもソフトウェア安定性、謙虚さ、および長期的利用価値に再集中するよう訴えています

2026/03/03 5:30

ブリティッシュコロンビア州、時刻変更を廃止し一年中サマータイムを採用

## Japanese Translation: ### 改訂要約 ブリティッシュコロンビア州は、2026年11月1日付で「太平洋時間(Pacific Time)」と呼ばれる夏時間を永久に採用し、それ以降の時刻変更をすべて終了します。デービッド・エビー首相は月曜日にこの決定を発表し、3月8日(最後の春先進調整)が最終的な移行となると述べました。この動きは、2019年の公衆意見調査で回答者の93%が健康・安全上の理由から永久夏時間を支持したことに続くものです。エビー氏は子供やペットの睡眠不足、二度の時刻変更による車両事故増加を強調しました。歴史的に、BC州は1918年以降に時刻を切り替えてきました(法務長官ニキ・シャルマ氏が指摘)。州政府は最終変更前に住民に8か月の調整期間を設け、カリフォルニア州、オレゴン州、ワシントン州といった米国隣接州にも同様の法案採択を促しています。東部BC地域(例:デイソンクリーク)はすでに年間を通じて山岳標準時を観測しているため除外されます。新制度下では、バンクーバーの永久夏時間で最も早い日の出は6月5:06 AM、最も遅い日は12月9:08 AMです。夕暮れは12月5:14 PMから6月9:22 PMまで変動します。この変更は生活品質の向上、事故リスクの低減、およびイエローナイフ州と同じ年間を通じて夏時間を採用することでBC州を調和させることを目的としています。

**なぜ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プラットフォームアプリの構築・拡張・保守に不可欠な技術です。 | そっか~ニュース