2010年、AppleがiPadを発売した年ですが、注目を集めたのは別の出来事でした。「アンテナゲート」と呼ばれるiPhone 4の問題です。iPhone 4の発売直後、ユーザーが通常の持ち方で電話をかけると、信号強度を示すバーの数が急激に減少することが発見されました。
Appleはこの問題に対し、スティーブ・ジョブズ氏がユーザーに「持ち方が間違っている」と述べるなど、様々な対応を行いましたが、最終的にはわずか20バイトのコード変更で解決されたと発表しました。
残念ながら、iPhone 4はその優れたデザインではなく、大きな論争で記憶されています。Appleは購入者に無料のバンパーケースを提供し、集団訴訟を解決することを余儀なくされました。その後、iPhone 4Sではアンテナが改善されましたが、問題の本質はハードウェアではなくソフトウェアにあったということです。
Appleは当時、信号強度バーの表示に関する計算式に誤りがあったと説明しました。「調査の結果、信号強度を表示するバーの数を計算する式が完全に間違っていることに驚きました。多くの場合、実際の信号強度よりも2本多く表示してしまうことがありました」としています。
ソフトウェアエンジニアのサム・アンリ・ゴールド氏が、Appleが何を変更したのかを解明しました。「両方のファームウェアをダウンロードし、CoreTelephonyフレームワーク内のCommCenterというバイナリを見つけました。ここにバーの計算式があることがわかりました」と述べています。
実際の計算は非常にシンプルで、信号強度をバーに変換する際に、CommCenterがメモリから各しきい値をロードし、適切な範囲を見つけるまで比較します。問題はこのコードではなく、ルックアップテーブルにありました。
4.0.1では、これらの値がよりスムーズになるよう変更されました。グラフにプロットすると、5本から0本に落ちるのに時間がかかることがわかります。5本を見るのは難しいですが、バーが急に減少することも難しくなりました。
ゴールド氏はまた、Appleがバーの高さを増やし、信号強度が1本や2本でも悪く見えないようにしたと述べています。
この出来事はAppleの歴史の一部として興味深いものです。
