世界を動かす技術を、日本語で。

Appleは、バグが修正されていないことを「確認」しない限り、バグ報告をランダムにクローズします

概要

Apple Feedback Assistantへのバグ報告を続ける理由と、その苦悩を解説。 Appleのバグ対応に対する不満と、報告者に対する扱いの問題を指摘。 バグ修正の実態や、ベータ版検証依頼の理不尽さを具体例で紹介。 Appleのバグ報告管理の問題点と社内体制への疑念を提起。 ベータ版の存在意義に対する疑問で締めくくり。

Apple Feedback Assistantにバグ報告を続ける理由

  • Apple Feedback Assistant へのバグ報告をやめられない心理
    • 狂気、もしくは依存症という自嘲的な動機
    • 報告をやめる期間と、再び報告を始めてしまう期間の繰り返し
  • ボイコット運動 の試み
    • 他の開発者を巻き込んで改善要求リストを作成
    • しかし、運動は広がらず失敗
  • バグ報告を続ける動機
    • 一部のバグが実際に修正される 実績の存在

Appleのバグ報告対応に対する主な不満

  • 最大の不満は「未修正」ではなく、 報告者や報告内容への軽視
    • 報告者の時間や労力を当然視し、感謝や配慮が感じられない対応
  • Appleの態度
    • ユーザーがAppleに奉仕する義務があるかのような姿勢
    • 報告者の時間を意図的に浪費させる対応

具体的なバグ報告事例と対応

  • FB12088655「Privacy: Network filter extension TCP connection and IP address leak」
    • 2023年3月に詳細な再現手順とXcodeプロジェクト付きで報告
    • 3年間Appleから一切返信なし
    • 最近になり「macOS 26.4 beta 4で再現するか検証して更新せよ」と要請
  • ベータ版検証の困難
    • 毎年6月のWWDCベータはインストールするが、9月以降は未使用
    • 年間を通じて無償テスターになる余裕や端末がない 現実
    • 過去にも「修正されていないバグの検証依頼」を受けてきた経験
  • Appleの対応
    • 「beta 4で修正されたか」直接質問するも、 曖昧な回答と2週間以内の強制クローズ警告
    • Little Snitch開発者に確認したところ、 beta 4でもバグ再現
    • 公開版macOS 26.4でもバグがそのまま残存

Appleのバグ管理体制への疑念

  • FB22057274「Pinned tabs: slow-loading target="_blank" links appear in the wrong tab」
    • 100%再現可能なバグにも関わらず「調査完了 - 現情報では診断不可」と一方的に終了
    • 追加情報提供を申し出るも、Appleからは一切追加要求なし
  • Apple内部のバグ報告クローズ方針への疑念
    • 未修正でもクローズを奨励するインセンティブ の存在を推測
    • 表向きのバグ件数を減らし、品質問題がないように見せかける社内指標

ベータ版の存在意義への疑問

  • iPadOS 26.4ベータで 新たなSafariクラッシュバグ を報告
    • Appleは修正せずに公開版リリース
  • ベータ版の目的 に対する根本的な疑念
    • バグ報告者を煩わせるだけで、実質的な改善につながらない現状

Hackerたちの意見

公平に言うと、これはどのバグジラでもよくある春の大掃除だよね。

よくあることだけど、やっぱり良い慣習とは言えないね。

まさに「誰かがこれで問題ないって言う前にコメントしに来た」って感じで、最初のコメントが「これで問題ない」って言ってるのには驚いたよ。ソフトウェアの人たちがローカルオプティマムを最適化してる感じがする。プログラマー版の「重要なら連絡が来るだろう」みたいなもので、こういう方針の現実的な影響を完全に無視してる。

ユーザーの立場から見るとイライラするのはわかるけど、その気持ちも理解できる。すべてのバグが簡単に再現できるわけじゃないし(ユーザーには100%再現できても、開発者にはそう簡単じゃないこともある)。それに、関連する部分でコードを変更したと思っても、最も「効率的」なのはユーザーに再テストをお願いすることだったりする。アクションが取れない古いバグを閉じるときは、ちょっと気が引けるけど、実際に何もできないのにバグを開けておくのも悪いかもしれない。

Appleみたいな会社なら、バグ発生時のシステム状態を完璧にキャッチできる複雑なツールがあるべきだよね。

実際に何もできないのにバグを開けておくのも悪いかもしれない これを他の人からも聞いたことがあるけど、その考え方が本当に理解できない。バグを開けておくことに何の害があるの?

それがどう悪いの? 開いたままにしておくと、検索してる人にはまだ問題があるってわかるじゃん。アクティブなバグのフィルターにも引っかかるし。修正せずに閉じると、状況がわかりづらくなるだけだよ。実際に問題があるなら、「Issues (1)」のままにしておくのは何も損しないし(プライドを除いて?)。

キャリアの別の部分で、MacをActive Directoryに接続する仕事をたくさんしてたんだ。その実装に関するバグについてAppleからよく聞いたフレーズは「17.x.x.xで動く!」ってやつ。ジョークは、Appleがインターネット上の17.x.x.xクラスAの範囲を持っているってこと(早くに取得したから、第二のクラスBも持ってたし、昔は第二のクラスBも持ってたけど返した)。エンジニアたちが本当に言いたかったのは、Appleが設定したADシステムでは再現できなかったってことなんだ(多くの場合、ADが.localドメインで設定されていたからで、これは本当にダメなことだったんだけど、当時はMicrosoftのトレーニング資料に例として載ってたんだよね…)。

すべてのバグが簡単に再現できるわけじゃない。Appleは再現できないとは言ってないし、修正したとも言ってない。ただ「macOS 26.4 beta 4で確認して」って言うだけだった。 それに、ユーザーにとっては100%再現できても、開発者にとってはそう簡単じゃない。 ユーザーにとっても簡単じゃないよ!ブログにも書いたけど、普段ベータ版は使わないから、このバグをテストするためにmacOS 26.4 beta 4をインストールするのは大変だった。むしろ、Appleがベータを開発してる時の方がテストしやすいんじゃないかな。 一番「効率的」なのは、ユーザーに再テストをお願いすることだね。Appleから見れば効率的だけど、バグ報告者からしたらめちゃくちゃ非効率だよ。 現実的には、これに対して何もできない。 今回は、AppleにサンプルのXcodeプロジェクトと再現手順を提供したから、実際にはそれを試すこともできたはずだよ。

作者は企業向けソフトウェアで働いたことがないんじゃないかな。これは典型的な手法で、開発者がバグの作者に「再現できないから、最新バージョンで確認してくれる?」って言って、実際には何もしないんだよ。そして確認されなければ「ユーザーエラー」か「再現不可」として閉じられる。これに対抗する唯一の方法は「はい、確認しました」って言うことだけど、実際には確認してない。

マイクロソフトの(有料)サポートの経験から言うと(5件チケット出したけど、いつも違うチームに回されるし、チケットを内部で移動させるのは負け犬のやることらしい)、再現の証拠を求められるよ。で、彼らは責任を押し付けるチャンスを逃さないんだ。「ああ、ログにアンチウイルスが動いてるのが見えるから、そっちにチケット出して。閉じるね」みたいな。

著者は企業向けソフトウェアで働いたことがないんだろうな。オープンソースプロジェクトとも。クソったれのスターボット。

大企業のソフトウェア業界のベテランなら、毎週または隔週でPMが設定するミーティングがあることはみんな知ってるよね。PMはJIRAのチケットを見て、「これまだ起こってる?」って聞くだけ。デフォルトの答えは「いいえ」、つまり「再現する時間すらないと思うけど、試す気ある?」って感じ。腰抜けのQA担当者のデフォルトの答えも「まだ試してない」だし。それで、PMがチケットを閉じる。リモートで、開発者が君の悪いポーカーフェイスの嘘を見抜けないなら、「はい、確認しました」って言う方がずっと楽だよ。

そうだね。裏側では、これが悪意あるものではないことが多い。あるユーザーが文句を言っていることに時間をかけるか、もっと優先度の高いビジネスのバックログに時間をかけるかの単純なコスト/ベネフィット分析なんだ。自分の仕事でもこれを見たことがあって、ユーザーにとっては悲しいけど、バグ報告を通すのには結構努力が必要なんだよね。

ユーザーが最小限の再現例を考え出さなきゃいけないっていうプレッシャーも嫌だな。これって、ある程度の複雑さのバグは絶対に修正されないってことだよね。だって、いつも数ステップに減らせるわけじゃないし、統計的なものかもしれないし。バグはバグだよ、開発者の意見やバグの複雑さに関係なく。

もちろん、これに対抗する唯一の方法は「はい、確認しました」と言うことだけど、実際には確認しない。嘘はつかないよ。俺はそんな人間じゃない。もしAppleがバグが修正されてないのにバグ報告を閉じたいなら、それは彼らの良心にかかってるね、もし良心があるなら。

ElevenLabsでも同じようなことが起きてる。バグレポートを出して、数日から1週間待って返事が来るんだけど、それもAI生成のことが多い。そして48時間後にボットがそれを古いものとしてマークする。まだ壊れてるか確認してくれって言われるか、直ったと仮定されるって感じ(笑)。

俺のスタートアップ初期のバグ報告で唯一良かったのは、Chromiumチームとの経験だな。専任の再現担当が割り当てられて、数日で手伝ってくれるんだ。報告から修正まで、カナリア版では一週間もかからなかったバグが2件あったよ。

すごいね。俺は数年前にChromiumにバグを一つ報告したことがあるけど、それだけだよ。それはCSSエンジンのバグで、完全な再現用のHTMLファイルも添付したんだ。でも、最初に担当になった人が全然やらなかったせいで、修正されるまで数年かかった。結局その人はGoogleを辞めちゃって、しばらく誰も引き継がなかったんだ。でも、最終的には修正されたから、まあ良かったのかな。編集:スレッド内のこのコメントが俺の経験に近いかな。: https://news.ycombinator.com/item?id=47523107 自分がGoogleにいた時も同じことを見たよ。優先度が低いバグは全然見てもらえなかった。

もしかしたら、Appleが何の努力もせずにバグが魔法のように消えることを祈っていたのかもね。これって一般的なアプローチだと思う。実際、結構うまくいくこともあって、標準的なやり方になってるのかも。俺はもうバグ報告を出すのをやめた。無視されるのが嫌なんじゃなくて、注目されると、無給のシステムエンジニアのQC役になれって言われて、バグが存在することを証明するためにものすごい労力をかけさせられるから。

基本的に、無給のシステムエンジニアのQC担当になれって言われてる。 Microsoftのサポートはこれが特にひどい、特にAzureや365の問題に関して。ごめんだけど、君たちのソフトウェアをデバッグするためにお金もらってないから。報告書はこれだし、問題を再現した証拠とログもある。これ以上は提供しないよ。君たちのソフトウェアなんだから、自分たちでデバッグしてよ。

ちょっとした話。俺はFacebook(とGoogle)で働いてたことがあって、バグを巡っていろんなゲームがあった。ある時、リーダーシップが高優先度と中優先度のバグに対してSLAを導入したんだ。なんでかっていうと、バグが何年もキューに放置されてたから。結果、SLAの時期にバグの優先度が下がることが多かった。人々は、自分のバグが優先度を下げられたかどうかを確認するために自動化されたルールを作ったりもしてた。もう一つの手法は、通常数ヶ月後にユーザーに戻して、「これまだ問題?」って聞くことだったり、「再現できませんでした」とか付け加えたりすること。多くの場合、返事はなかったり、担当者がチームにいなかったり、会社を辞めてたり、興味を失ったりしてた。素晴らしいね、君の手からは離れたわけだ。十分待てば、「もう関係ない」って言えるし、そのアプリやAPIのバージョンが廃止されたからって理由もつけられる。これも「まだ関係ある?」って戻す良い理由だよ。俺が見た中で一番マキャベリ的な手法は、自分が持ってない似たようなバグと合併させることだった。なんでかっていうと、これを解消するのは難しいし、いつも明らかじゃないから。コールセンターやカスタマーラインを運営してる人ならわかると思うけど、顧客に戻すことで、一定の割合の人が諦めるからね。健康保険会社が事前承認を自動的に拒否するのと似てる。俺は一度、スーパーマーケットのアプリに明確なバグを報告したら、800番号に電話して報告しろって返事が来た。俺のバグ報告は問題を再現するための完全な方法だったのに。何が起こっているのかはわかってた。誰かが単に「解決済み」とマークしたかっただけなんだ。俺は絶対にそんなことしない。エンジニアリングチーム(あるいは、もっと悪いのは個人)がバグを「所有する」ことを信じられない。彼らはそれをやりたがらないから。バグはQAチームやプログラムチームが持って、似たようなバグをまとめて、実際に何かが修正されたか確認するべきなんだ。Googleには独自のバージョンがあった。確か、バグには優先度と深刻度があった(理由はわからないけど、99%の確率で同じだった)0から4の間で。だから、標準的なバグはp2/s2だった。p0/s0が最も深刻で、ユーザーに対する重大な障害を意味してた。人々はよくp2/s2をp3/s3に変えて、「俺はこれをやらないし、二度と見ない」って意味にしてた。俺はバグ報告を出すのをほぼ諦めた。なぜなら、こういうゲームを全部知ってるし、誰かに実際に注目してもらうのが信じられないほど難しいから。これの多くは、バグ解決のSLAやポリシーに関する愚かな組織レベルの指標に帰結するんだ。

Googleには独自のバージョンがあった。確か、バグには優先度と重大度があって、理由はわからないけど(99%の確率で同じだった)0から4の範囲だった。だから、標準的なバグはp2/s2だった。p0/s0が最も重大で、ユーザーに深刻な影響を与える障害を意味してた。人々はよくp2/s2をp3/s3に変更してたけど、これは基本的に「これには絶対に手を付けないし、二度と見ない」って意味だった。うん、俺もやったことある。自動的に古くなったとして閉じるより、ずっと正直だと思うし、報告者に何度も確認させるのも嫌だ。バグが存在する記録は残ってるから。いつか世界が変わって、これに取り組む時間ができるかもしれない。中優先度のバグにSLAを設定したリーダーたちは、多くのバグが低優先度になることを予想してたんだろうね。彼らはトリアージを強制した、それがポイントだ。> 人々は、自分のバグが格下げされたかどうかを確認するために自動ルールを書いていた。この部分は、人々が「通知しない」ボックスを不適切に使っていて、報告者やウォッチャーが格下げに異議を唱える機会を奪っているサインだね。

職場では、古いバグを整理するために同僚とバックログ管理のミーティングを30分もやったよ。ランダムな一発もので、二度と出てこないバグを片付けるっていう、かなり標準的なプロセスだね。

macOSやiOSで変な挙動やバグを検索すると、ほとんどの場合、数年前のバグ報告と関係ない「ワークアラウンド」が見つかるのが好き。これってあんまり珍しくないよね。バグ報告には完全に諦めた。ほとんどの場合、時間の無駄だから。今、二つの異なるベンダーと深刻なパフォーマンス問題で堂々巡りしてる。彼らはログやプロセスリスト、今はリアルタイムデータも欲しがってる。これは複数の人がフォーラムやredditで文句を言ってる問題なんだ。同じことが二つの異なる会社で起こってるっていうのが…

観察:ずっと前に、Microsoftにバグを報告したことがある。その時はまだ新米で、最低限に絞り込まず、100%再現できるシナリオをそのまま伝えた。数ヶ月後に連絡が来て、誰かが見て再現できなかったって。そう、誰かが見た時には、別の何かの一つの現れを見つけてたから、もう修正されてたんだ。修正内容は私のバグとは全然違って見えたけど、今動いてるのを見て、私は象を説明しようとする盲目の人だったんだなって気づいた。