5 ポイント 投稿者 GN⁺ 2026-05-10 | 1件のコメント | WhatsAppで共有
  • Go言語で作ったシンプルな開発者向けユーティリティをmacOSに配布しようとして、コード署名とApple Developer Programの壁にぶつかった個人開発者の体験談
  • LinuxとWindowsでは比較的簡単に配布できるが、macOSでは隔離(quarantine)ポリシーのため署名されていないバイナリがブロックされる
  • Apple Developer Programの年間サブスクリプション費用は小規模なユーティリティでは収益で賄えない水準で、本人確認の過程もMacBookのWebカメラの低い画質のせいで何度も失敗
  • バルト地域のSmartIDやeParakstsといった政府系電子署名サービスなら数十秒~1分で処理できることを、数十億ドル規模の企業のシステムがまともにこなせていない状況
  • Windowsのコード署名も年間209ユーロ以上かかるなど、コード署名エコシステム全体がLet’s Encrypt登場前のTLS証明書並みに不合理に高価

Macソフトウェア配布で露呈した障壁

  • Claude Codeのプロファイル管理を簡単にする小さな開発者向けユーティリティを作る中で、Goツールチェーンを使えば複数プラットフォーム向けの静的実行ファイルを簡単にビルドできた
  • 最初のリリースはccode.kronis.devItch.ioページで確認でき、ビルド済みバイナリのダウンロード・購入やソースコードの確認が可能
  • 現在のコードは未署名の状態で、ユーティリティはまだ初期段階のため、まず無料で試してみて役に立てば後で支払う方式を勧めている
  • Linuxではchmod +xの後に問題なく動作し、Windowsでは.exeを作成でき、SmartScreenの警告も同じポップアップ内で回避できる
  • macOSではダウンロードしたソフトウェアに隔離(quarantine)が適用されて実行がブロックされ、Nextcloudで自分自身に共有したファイルでも同じ問題が起きる
  • ターミナルで手動で隔離を解除するよう案内することはできても、開発者なら受け入れられるとしても良いユーザー体験ではなく、不審に思われる可能性もある

Apple Developer Programの加入費用と経済性

  • 問題を解決するためApple Developer Programに加入して実行ファイルに署名しようとしたが、年間サブスクリプション費用が小さなユーティリティの配布規模に見合わなかった
  • 配布しようとしているユーティリティはItch.ioで約7ドルのpay-what-you-wantモデルで提供する予定で、想定ダウンロード数は多くても12~24人程度と見込んでいた
  • 大半は0ドルを選べるうえ、VATとItch.ioの手数料を差し引くと約50ドルの売上から25ドルほどしか残らず、Apple Developer Programの約3か月分の費用しか賄えない
  • 公開配布のためにバイナリを提供するだけでお金がかかる構造は趣味開発者に不利で、ソフトウェア開発の経済性を収益化中心へ押しやってしまう
  • デスクトップソフトウェアにはHomebrewがあるが、この経路を使うと数ドルでも支払いを受けにくくなったり、Itch.ioのダウンロードページにmac-homebrew-install-instructions.txtのような別案内を置く必要があって不自然
  • 費用をなくせばスパムのような別の問題が生じる可能性は認めるが、非公開またはソース公開レベルのソフトウェアであってもバイナリ配布に費用がかかる構造は負担になる
  • macOS/iOSアプリはWindowsやLinuxではコンパイルすらできず、すでに高価なMacBookを買わなければならないというベンダーロックインの問題もある

本人確認プロセスの摩擦

  • Apple Developer Programの加入手続きで本人確認自体は理解できるが、MacBookのWebカメラで身分証の写真を撮ることを要求された点が大きな問題だった
  • M1 MacBook Airの内蔵カメラでは照明を変えても身分証の写真品質が十分に出ず、何度試しても書類を適切に認識できなかった
  • 同じローカルネットワークにiPhoneが接続されていても、それをカメラとして使うよう案内されず、約10回試している間ずっと失敗した
  • その後メインのWebカメラを接続して試したが、近くにかざした書類を撮るためのオートフォーカスがなく、やはり十分ではなかった
  • スキャンした書類をアップロードする選択肢は提供されず、失敗するたびに一般的なエラーが出て、加入手続きを最初からやり直さなければならないことが繰り返された
  • iPhoneにアプリを直接インストールすると最初の試行で成功したが、iPhoneや高性能なWebカメラを持たないユーザーにとってはさらに大きな障壁になりうる
  • 支払いは正常に処理され、すぐに開発者アカウントが有効化されたように見えたが、アプリはメールを待つよう表示し、デスクトップアプリは加入を試みた事実を認識しないまま手続きを最初からやり直すよう表示した
  • バックグラウンド処理や結果整合性の問題かもしれないが、ユーザーの立場ではアプリごとに加入状況が違って見えるもどかしい流れになる

Appleエコシステムに対する蓄積した不満

  • Appleハードウェアのビルド品質とMシリーズチップは高く評価しており、高性能モデルを買える人にとっては素晴らしい開発マシンになりうる
  • iPhone SE 2022も満足して使っていたが、Appleが廉価版シリーズを廃止し、新しいeシリーズはより高価で、側面の消音モードトグルTouchIDを削除したことが、次のスマートフォンでAndroidに戻る理由になっている
  • macOSを自分の望む形で使うにはAutoRaiseRectangleDiscreteScrollのようなツールが必要
  • 複数モニター間でウィンドウのフォーカスを移すときに追加クリックが必要で、AutoRaiseは便利だがやや攻撃的に動作することがある
  • Finderには「Cut」オプションがなく、キーボードショートカットがなじみにくく、Control/Commandキーの構成がリモートデスクトップソフトウェアまで壊してしまう問題がある
  • プログラムを閉じても実際には終了しないというアプローチも不便で、8GB RAMのMacBookでAppleの閉じたエコシステムの中で開発しなければならない状況と相まって負担が増している
  • アプリ開発をAppleエコシステムに縛り付け、ソフトウェア署名に費用を要求し、ハードウェアカメラの品質のせいで書類提出が妨げられ、iPhoneアプリ使用後も加入状態が明確に反映されない流れが最大の不満につながっている

より良い本人確認と電子署名の事例

  • 地元の食料品店でエナジードリンクを買うとき、SmartIDで約20秒で本人確認と年齢確認ができる
  • eParakstsを使えば、政府発行のIDカードとカードリーダー付きPC、またはスマートフォンアプリで約1分で文書に電子署名できる
  • 生成されるものはEDOCコンテナ(ASIC-E)に付加される、またはPDFファイルに直接埋め込まれる適切な暗号学的署名になる
  • 他の国にも本人確認、年齢確認、文書署名、デジタルサービス向けの類似サービスがある可能性はあり、すべての国が同じではなく、決済インフラにも制約がある
  • それでもバルト地域のいくつものソフトウェアパッケージが巨大テック企業の手続きよりうまく動いている状況は納得しがたい

Windowsコード署名とより広いコスト問題

  • これはAppleだけの問題ではなく、Windowsのコード署名も費用負担が大きい
  • Certumコード署名は比較的安価な選択肢の1つに見えるが、年間約209ユーロが必要
  • Azure Artifact SigningBasicティアが月額8.54ユーロなのでより良さそうだが、Azureアカウントを設定してみると、米国・カナダ以外の個人は証明書に署名できず、EUでは組織しかコード署名できない
  • 現在のコード署名の領域は価格が過度に高く、TLS証明書がLet’s Encrypt以前には年間100ユーロ級の費用を要求していた状況に似ていると感じられる
  • Let’s Encryptは多くのレントシーキング的な構造を置き換えたが、代替や競合が多くないため、巨大な単一障害点へ向かうリスクも同時に存在する
  • 政府発行のIDカードでコード署名できるべきであり、コード署名の分野にもLet’s Encryptのような革新が必要

1件のコメント

 
GN⁺ 2026-05-10
Hacker Newsのコメント
  • Gatekeeperが嫌いなユーザーは、ターミナルで sudo spctl —-master-disable を実行すれば 10秒で無効化できる
    大雑把すぎるとか安全ではないと言うことはできるが、何を望むのかは決める必要がある。Gatekeeperが生む摩擦を望むなら有効にしておけばいいし、嫌なら無効にすればいい。開発者がユーザーの代わりに決めることはできないし、自分のデバイスでどんなコードを実行するかはユーザーが決めるべきだ。デフォルトが制限的なのも、何をしているか分かっている人なら簡単に変えられるからだ
    iOSには未署名ソフトウェアをインストールする方法がまったくなく、Androidもまもなくその手順が10秒ではなく24時間かかるようになるらしいが、これは実際に ユーザーの選択権 を奪う話で、ばかげている
    ただし最新のmacOSには無効化できない別の制限も多く、それは本当に腹立たしい。Gatekeeperはその1つではないと思う。Sequoiaからはターミナルコマンドの後に設定でチェックボックスを押す必要があるので30秒くらいかかるかもしれないが、それでも大した問題ではないと思う

    • 自分が欲しいのは 何を信頼するかを選べる能力
      「Appleだけを信頼して他の誰も、さらには自分自身すら信頼しない」か、あるいは文字通り全員を信頼しろ、というのは善意ある実装ではない。Appleは誤った同一視や誤った二者択一で物語を作るのがうまい。かつてのセキュアブート論争でも、Appleは「Appleが暗号鍵を持つか、暗号化しないか」という構図に持ち込み、人々は「なぜ自分のデバイスの鍵を自分で持てないのか」と問うのを忘れてしまった
    • 「完了」と「ゴミ箱に移動」だけでなく、毎回 システム設定 に入らなくても実際に実行できる選択肢をほしい
      しかもセキュリティ機能を無効にせずにだ。この追加の摩擦は自分の安全のためというより、開発者に配布のためAppleへ年会費を払わせるために近く見える。安全にまったく役立たないと言いたいわけではないが、比重は前者に寄っていると思う
    • アプリを右クリックして「開く」を選び、認証ダイアログを経て実行できるようにしてほしい
      以前はこれが可能だったのに、Appleがそれを廃止し、毎回 システム設定 に入らなければならない非常にいら立たしい手順に変えてしまった
    • 正しいやり方は、Appleが無料アプリでアプリ内課金がないなら、配布用の 無料のDeveloper ID を認めることだと思う
      そうすれば良い配布慣行を保ちながら、全体的な好感も得られる
    • アプリを開けないようにするのは摩擦ではなく 完全な遮断
      警告を表示して今回だけ実行できるようにするか、その後は普通に実行できるよう許可すればいいのではないか
  • 20年間、MacとPC向けソフトウェアをインディーで開発してきたが、筆者の気持ちはよく分かる
    Appleは開発者に「我々のプラットフォーム向けにアプリを作らせてもらえることに感謝すべきだ」と考えているように感じられる。記事ではAppleの 後方互換性軽視 には触れていなかったが、Appleは開発者のシステム全体を定期的に絨毯爆撃のように作り直すのが好きだ。10年前に作ったアプリを最新のmacOSで動かしてみれば、おそらく動かない可能性が高い
    Microsoftは後方互換性がはるかに良く、開発者プログラムへの加入も強制しないが、Windows向けAuthenticodeデジタル証明書を更新するたびにひどく金を取られる。デジタル証明書だけでも年99ドルより高く、完全に商売になっている

    • Windows側のほうがずっと高い。DigiCertやSectigoの一般的な OVコード署名証明書 は今や年700〜1000ドル水準だ
      MicrosoftのAzure Artifact SigningはAppleの年会費に近いが、1か月前からこれで署名したインストーラーがSmartScreen警告を頻繁に出す。どちらもMicrosoftが管理しているのにそうなる
      Storeという選択肢も組織向けでは無料ではなく、一度きりの登録料がかかる。さらに悪いのは、簡略化されたライセンス/試用版モデルを強制する点だ。有償アップグレード、年間サポート契約、制御されたアップデート、延長試用版を使うB2Bソフトウェアには普通合わない
      https://github.com/Azure/artifact-signing-action/issues/128#...
    • 後方互換性軽視 というのは本当にその通りだ
      AppleはABIやAPIの安定性を維持する代わりに、毎年新しいiOSバージョンで既存アプリが壊れないよう何千人もの開発者に継続的な保守負担を押し付けている。この時間は、バグ修正、機能追加、新しいアプリ開発のような、もっと生産的なことに使えたはずだ。安定性がエコシステム全体にもたらす乗数効果を考えると、間違ったトレードオフに見える
      AppleはApp Storeの低品質アプリ過多を減らすためにアプリが死ぬことを望んでいるようだが、もっと良い方法があるはずだ。アプリの露出と発見については、今でも人間によるキュレーションだけが信頼できるように見える
      iOSアプリの大半はゲームだが、他のゲームプラットフォームと違ってiOS開発者はゲームを動き続けさせるため毎年アップデートしなければならない。AppleはiOSとmacOSの両方で32ビットゲームを喜んで切り捨て、多くのゲームは64ビットへ移行できなかった。Nintendo DS/DSi/3DSでは2004〜2020年の主要・小規模ハードウェア改訂や数十回のファームウェア改訂を経てもゲームは概ね動き続け、Switchも2017年以降Switch 1と2にまたがって概ねゲームが動いているのと対照的だ
    • ちなみにMicrosoft Store経由で配布すれば無料で、署名費用も払わなくていい
    • 正直、この後方互換性の欠如はある程度支持している
      自分が使う大企業向けアプリの多くはいまだにIntel向けで、多くの性能を捨てている。Rosettaが廃止されれば、結局は変えることになるだろう。オープンソースアプリはすべてネイティブだ
  • 筆者として、記事に素早いアップデートを反映した
    公平を期して言えば、Windows向けに何かを署名しようとしてCertumのような業者の価格を見ると、Appleだけが突出して高いわけではないのかもしれない。みんなそんな感じに見える: https://www.certum.eu/en/code-signing-certificates/
    Windows側をさらに見るとAzure Artifact Signingもあり、月8.54ユーロで安いように見えるが、EUの個人利用者は対象外だ。米国とカナダの個人だけが利用でき、EUでは組織のみ対応している。ここではSIA、つまりLtd.相当の会社を先に作る必要がありそうで、いずれ予定にはあったがAzureを使う上では障害になる: https://azure.microsoft.com/en-us/products/artifact-signing
    口調が苛立っていたかもしれないが、コード署名業界 には何らかの形でLet’s Encryptのような瞬間が必要だ、という点は強く言っておきたい。少なくともAzure Artifact Signingが試みたように一般化され、すべてのプラットフォームで個人開発者にも利用可能であるべきだ。ただ、プラットフォーム側が意図的に囲い込みをしているので実現しそうにない。コード署名そのものが嫌いなわけではなく、正しく実施されれば多くのWebサイトにおけるTLSのように良いアイデアだ

    • Windows SmartScreenでアプリがブロックされないようにするには、追加費用を払って EVコード署名証明書 を買う必要がある。通常のコード署名証明書では不十分だ
      8年前のStack Overflowの議論でも、Microsoft SmartScreen警告を即座かつ恒久的に消す確実な方法は、Microsoft承認の認証局によるEVコード署名証明書を買ってそれでアプリに署名することだと言われている
      こうしたEV証明書は通常、年300〜700ドル程度で、価格比較が必要であり、登録済み事業者にしか発行されない。個人開発者なら個人事業主であり、有効な事業者登録が必要だ
      https://stackoverflow.com/questions/48946680/how-to-avoid-th...
    • わざわざ公平である必要はない。Apple Developer Accountに登録したが数週間かかり、おそらくAppleのスマホで運転免許証をアップロードする際、カメラの照明がホログラムに反射してシステムが受け付けなかったのだと思う
      それでAppleのノートPCで申請手続きを続けたら、さらに深い穴に落ちた。同じ政府発行IDを使い続けていたのに、なぜか競合する2つの申請に分裂し、片方は成功したようで片方は失敗したようだった。良い点は金だけは取られたこと、悪い点は買ったものが渡されなかったことだ。結局、数週間にわたって個人情報を再アップロードする羽目になり、これが後で問題を起こさないはずがない。すべては、自分が作ったvibe-codedな寄せ集めを自分のスマホに入れるためだった
  • エンドユーザーにこうしたバイナリを配布する方法を調べる中で筆者と同じ苛立ちを感じ、正確なやり方を整理した ガイド を書いた
    Appleのドキュメントは驚くほど不十分で、関連ブログ記事も見つからなかったため、試行錯誤とGitHubの人気オープンソースプロジェクトを見ながら、動作の仕組みをリバースエンジニアリングするしかなかった
    https://ofek.dev/words/guides/2025-05-13-distributing-comman...

  • 約1年前に 完全にLinuxへ移行した 最大の理由は、おそらくこれだった
    ソフトウェアを作って人に使ってもらうことができないのにうんざりした。解決策はVS Code風の「この作成者を信頼します」ダイアログ程度かもしれないが、それも少し的外れに感じる。Linuxで作るのは本当に楽しく、macOSで恋しいものはほとんどない。恋しかったものは自分でプログラムにして [1][2] 人に渡した。こんなに難しいことになるなんて誰が想像しただろう
    https://github.com/zackb/tether
    https://github.com/zackb/hyprwat

  • オープンソースや、より広い意味での開発を気にする人がこれを見て「そうだ、これこそ自分が使いたいOSだ」と言えるのか分からない
    多くの開発者が薄いノートPC1台のために、なぜこれほど多くを妥協しようとするのか本気で理解しにくい

    • 多くの開発者はこうした問題にまったく遭遇しないからだ
      G4 PowerBookの時代からMacをメイン開発マシンとして使ってきて、Linuxへ何度か移ろうとしたが、いつもより悪い体験だった。こういう話を見ると、自分たちは本当にコンピューターをかなり違う形で使っているのだと改めて思う
    • MacBookは開発以外のことにも使い、まさにその点で Linuxはしばしば破綻する
      奇妙なハードウェア非互換、ぎくしゃく感、仕事をするよりマシンの保守に時間を使いすぎる。利用者の少ない適当なFOSSアプリを落とすために時々 xattr -d com.apple.quarantine を実行しなければならない程度は、Linuxユーザーが経験することに比べれば大したことではない
    • 薄いだけではない。静かで速く、最高のトラックパッドと decent なキーボードがあり、Touch Barを出してEscapeキーを消した愚かな時期を除けばレイアウトも大きく変わっていない。あらゆる電源状態も毎回きちんと動作する
      この問題については友人の中で2番目に頑固なほうだが、パンデミックの間は数年間デスクトップだけを使い、その後も5年間MacノートPCを避けてきたが、本当にひどかった。結局、新しいM5 MacBook AirはWebブラウジング作業ではより速い可能性が高く、組んだばかりの最新Xeon怪物ビルドとコードコンパイルでも妙に競争でき、しかもファンすらないと気づいて降参した
      自分としてはもう決着がついた。Appleは画面品質を除くあらゆる面で勝った。OLEDに慣れてしまったのは残念で、ノートPCにタッチスクリーンを載せないAppleの立場にも根本的には同意しない。子どもたちと多くの時間を過ごすようになってからは、なおさらそう思う
    • CA/SVの同僚たちの間で「普通の」ノートPCを持ち歩いていたら、ヒップで洗練されているようには見えないだろう
    • 薄さではなく バッテリー駆動時間 が素晴らしいからだ
  • Linuxではツールを実行するのに chmod +x が必要でも気にしないのに、macOSで xattr を実行しなければならないことは、ブログ記事を1本書いて不満を述べるほどのことなのかと思う
    真面目に気になるのだが、Windows 11は本当に信頼されていない .exe を警告なしで実行してくれるのか?

    • 記事全体でこれが一番重要な点だと思う
      これは開発者向けのClaude Codeツールだ。潜在的な利用者は xattr コマンドくらい実行できて当然だと思う。それができないなら、Claude Codeに触るべきではないかもしれない。ここには自分なりの追加的な「門番」意識も少しある
      こういうユーザー向けには、xattr コマンドまで処理する curl -sL [https://github.com/myrepo/installme.sh](<https://github.com/myrepo/installme.sh>;) | bash スクリプトを作ることもできる
      一般的なmacOSエンドユーザーはコマンドラインツールを使わないか、Homebrewのようなものを使う。バイナリ配布の正しいやり方はおそらく pkgインストーラー だろう
    • 基本的にWindows 11は信頼されていない .exe / PEファイルをそのまま実行させない
      Microsoft Defender SmartScreenが管理しており、人を怖がらせるポップアップを出す。以前にやったことがなければ、プログラムを実行するためにクリックして回避する手順も直感的ではない
    • まったく実行できないよう設定することもできるが、デフォルトでは3回クリックさせるメッセージが出る
      深い知識のない人を怖がらせるには十分だ。もちろんこれらはすべて無効にできる
    • 主な違いは、Linuxでは GUIで許可 できる点だ
      ユーザーに「ファイルをプログラムとして実行することを許可」のチェックボックスを押してくれと説明して納得してもらうほうが、xattr のような不透明なコマンドライン命令を教えるよりずっと簡単だ
  • 昨日この 本人確認手続き を通ったが、たぶん8回目の試行くらいでやっと成功した
    本当にひどい設計だ。今はLLCとアカウントを結び付けるために、どこかの第三者と書類のやり取りをしている。ただソフトウェアを書いて配布できればいいのにと思うが、iOS独占は1つしかないのだから、それに合わせて踊るしかない

  • 1年前なら同意していただろうが、今は反対側に立つ
    今のソフトウェアに含まれる マルウェア の量は指数関数的に増えている。悪意があるかないかに関係なく、すべてのソフトウェアに課される痛ましい税であるのは事実だが、より良い仕組みが見つかるまで、この方式は一定割合の悪意ある行為者を諦めさせるだろう。特に料金を払わなければならない点が大きい
    Macユーザーとして、開発者がこのソフトウェアを届けるためにかなりのコストを払ったかどうかを知りたい。自分にとっては有用なシグナルだ。料金も払わずパスポートもアップロードしていないなら、これを実行することで負うリスクをかなり慎重に考えたい

    • 署名され公証されたソフトウェアがユーザーを食い物にした事例は多い
    • 悪意ある行為者でも料金くらい簡単に払える。彼らはビジネスを運営しているか、国家主体のために働いている
  • 身分証アップロード は絶対にしてはいけない
    それがそのプラットフォーム向け開発をしないという意味なら、そのプラットフォーム向けには開発しなければいい

    • 全体的な感情には同意するが、これが大多数の開発者にとって実行可能な解決策だと本気では思えない