1 ポイント 投稿者 GN⁺ 2024-08-29 | 1件のコメント | WhatsAppで共有
  • Oral-BのiOSアプリは290MBのうち、233MBがasset catalogによるもので、アプリ容量の大半を複数の歯ブラシモデル向けPDFアセットが占めている
  • Oral-Bで最大のアセットはSonos_M9_roseの7.8MBで、多くのPDFには歯ブラシ全体ではなくハンドルとボタンだけが含まれている
  • Comino.bundleには20class_seqlen26_6p5h_20200302-095627_comino_android_productionのようなファイルが入っており、モデル重みに見える
  • Colgate Smileアプリは378MBとさらに大きく、Unityフレームワーク125MBと削除されていないバイナリシンボルが主な肥大化要因となっている
  • Colgateはメインバンドルとウィジェット拡張にアセット・ローカライズファイル60MBを重複して含めており、少なくとも120MBが機能的価値なしにアプリ容量を押し上げている

Oral-Bアプリ容量の大半はPDFアセット

  • Oral-Bアプリは合計290MBのうち、233MBがasset catalogで発生している
    • 全体容量の**80%**に相当する
    • その大半は異なる歯ブラシモデルを表すPDFアセットである
  • 最大のPDFアセットはSonos_M9_roseで、7.8MB
  • 多くのPDFには歯ブラシ全体の画像ではなく、ハンドルとボタンだけが含まれている
  • もう1つ目立つ項目は15MBのComino.bundle
    • 20class_seqlen26_6p5h_20200302-095627_comino_android_productionのようなファイルを含む
    • これらのファイルは一種のモデル重みに見える

Colgate Smileのより大きな問題は削減可能な肥大化

  • Colgate Smileアプリの容量は378MB
  • アプリは「guided brushing」機能のためにUnityを使っているように見える
    • Unityフレームワークは125MB
    • その機能に価値があるなら、Unityの採用自体は納得できる選択とも言える
  • より大きな無駄は、プロダクションアプリでバイナリシンボルを削除していないこと
    • バイナリシンボルはシンボリケーションに使われる
    • DSYMをクラッシュレポーターにアップロードするなら、プロダクションアプリ内に含める必要はない
    • バイナリシンボルを削除するだけで、合計**約60MB、15%**削減できる
  • もう1つの肥大化要因は重複同梱
    • Colgateはメインバンドルとウィジェット拡張に、アセットとローカライズファイル60MBを重複して含めている
    • 赤いノードが重複項目として表示されている
  • Colgateアプリでは、少なくとも120MBがユーザーに機能的価値を何も提供しない容量として計算される
  • 関連記事:

1件のコメント

 
GN⁺ 2024-08-29
Hacker Newsのコメント
  • そもそも、なぜOral-BアプリやColgateアプリが存在するのか分からない

    • 顧客にマーケティングと広告を行うためにデータを収集したいから
    • どの歯をちゃんと磨けたか、つまり十分な時間をかけたか、どの歯を磨き忘れたか、あるいは早く通り過ぎすぎたかをアプリが教えてくれることはある
      個人的には一度使って削除したけれど、歯磨きが効率的か確認したい人には役立つかもしれない。いずれにせよ完全に任意で、アプリの存在を無視して歯ブラシだけ使ってもよい
    • AI搭載歯ブラシまで出てくる理由と同じ。毎年歯ブラシを作り変え続ける競争の中で、新しい差別化要素、新しいマーケティングの切り口、高い販売数を作ろうとしているだけ
    • コーラやMcDonald’sの広告と似ている。新しい情報を与えるのではなく、ロゴ、ブランド、名前を視聴者やユーザーの頭の中に繰り返し刷り込むことが目的
      そうすれば他の「知らない」ブランドより親しみを感じ、そのブランドを買う可能性が高まる。アプリも同じで、使うたびにロゴとブランドを目の前に突きつける。結局のところデータを売る必要すらない
    • 自動車保険会社がデータ記録装置やアプリを使うと安全運転割引を提供するように、健康保険会社がまだ「ちゃんと歯磨きする人」割引を始めていないのが意外
  • 悲しい現実として、App Store > Your Accountで更新を確認すると、100MB未満のアプリは数えるほどしかない。自分の場合、ほとんどのアプリが300MBで、しかもこれはアップデートの話だけ
    Androidと比べると、あちらのアプリはずっと軽い。昔のObjective-Cアプリはもっとスリムだったが、SwiftアプリはABIができた後でも大きくて重い傾向がある。開発者の怠慢も一因だし、Appleのツールがいまひとつなのも一因。コンパイル済みのCocoaPodsやSwiftパッケージではツリーシェイキングやデッドコード除去がない。Appleはあまり気にしておらず、むしろ容量の大きい新しい端末やiCloudサブスクリプションを売れるので歓迎していそう

    • これはGoogleで取り組んでいたこと。現代的なAndroidアプリ配布形式は、ユーザーがその時点で必要な最小限だけをダウンロードしてインストールするよう、アプリを細かく分割することに完全に最適化されている
      リソース、アーキテクチャ、言語は必要なときにだけダウンロードされ、ゲームアセットのテクスチャ圧縮形式のような領域別要素にまで及ぶ。だから端末は必要なテクスチャだけを受け取り、開発者は複数形式で配布して、ユーザーが自分の端末でサポートされる最良のオプションを受け取れるようにできる。オンデマンドでコードモジュールをダウンロードしてインストールすることも可能。たとえば登録手続きを別モジュールに切り出して最初だけインストールし、ユーザー登録後に削除してインストールサイズを減らせる。ある開発者は、顧客サポート用の数MBのVOIPモジュールを、サポート画面を開くまで実際にはダウンロードもインストールもしないようにしていて、その結果ほとんどのユーザーにはまったくインストールされない
      [0]: https://developer.android.com/guide/playcore/asset-delivery/...
    • Appleにもそういうツールはある。動的ライブラリにも適用できる新しいツールを追加した
  • https://xcancel.com/emergetools/status/1828490449881047401

    • これまで見たTwitterプロキシの中で最悪。「このページを見るにはx秒待て」という馬鹿げた画面が出て、そのあと「ページを再読み込みしろ」と言ってくる
      違法ストリーミングを見ようとしたときに出てくるスパム中間ページみたい。無関係の人がこれを投稿していたなんて信じられないほどひどいツール
  • データブローカー向けのユーザーデータ収集があまりにも価値ある商売になってしまったのが腹立たしい。大企業が良い製品ではなくデータを吸い上げるアプリを作り続け、数字が伸びるのを見て喜んでいるのは納得できない
    「昔は良かった」とぼやくようになった時点で、もう公式に中年を過ぎたのだろうが、冷蔵庫、食洗機、歯ブラシにまでアプリとは。食洗機が自分で皿を入れる日が来たら、そのときには快楽的物価調整を受け入れる

    • データを吸い上げる効率に見合うだけ広告の質も上がってほしい。運転免許も持っていないし交際中なのに、自分の端末のパーソナライズ広告のかなりの割合が出会い系サイトと自動車ディーラーの広告
  • 結局、異なるモデルの画像をPDFで馬鹿みたいに大きく同梱していただけなのか? 予想外だった。むしろ後で出てきたColgateアプリみたいな方向かと思っていた

    • ありえない。そんなものは100%必要なときに取得すべき
    • Webブラウザの「PDFとして印刷」機能でPDFを作ったのか気になる。Chromeが作るPDFは容量がとても大きい
    • Unreal Engineを使っているのかと思った。最後に確認したときは最小アプリでも200MBを超えていた
  • Oral-Bアプリは数年前はかなり軽く、最新の世界ニュースフィードを表示し、Apple Healthにデータを記録し、連続歯磨きを促して楽しかった
    ところがアプリ全体を書き直した結果、ほぼすべての機能を失い、アップグレード後の初回起動以来一度も開いていない。TestFlightのように昔のバージョンをインストールできるiOS App Storeがあればいいのに。残念ながらTestFlightも最大90日まで。そろそろBLEスニファーを引っ張り出す時かもしれないが、使い捨ての無認可一時アプリにHealthKit権限を与えるのは無理そう

    • 「最新の世界ニュースフィード」って、えっ? Oral-Bが? 世界ニュースフィード
    • プロトコルはすでにリバースエンジニアリングされている。Home AssistantとBluetoothを使っているが、近所のOral-B歯ブラシが1本見えている
    • そのバージョンの開発に関わっていた。この先の議論では静かにしておく
  • サイズそのものよりさらに恥ずかしいのは、歯ブラシのモードを変えるのにアプリが必要な点だと思う。本当に許されるべきではないが、どう強制すべきかはよく分からない

    • どのモデルを使っていて、どのモードを変えようとしているかによるだろうが、Oral-B Pro 5000ではアプリなしでも「Daily Clean」「Sensitive」のようなクリーニングモードや先端のLED色を変更できた
      ディスプレイはブラッシング時間タイマーを表示し、歯ブラシ側で必要なトラッキングはその程度で十分だ。他にボタンからアクセスできないモードがあるのかもしれないが、私は知らない
    • 第一の課題は、設計上の欠陥がある製品を市場から排除する法的権限を持つ消費者保護機関を設けることだ
      第二の課題は、何を許可し何を禁止するかを正確に定義することだが、企業が顧客を困らせるために思いつける愚かなことがあまりにも多すぎるので、良い中核原則に基づいて評価・判断するなら、そのような機関にかなり広い裁量を与えてもよいと思う。たとえば「コンパニオンアプリなしで実装できる機能は、コンパニオンアプリを要求してはならない」といった原則だ
    • なぜこんなところまで立法が必要なんだ? その歯ブラシを買わず、製品が自然に消えていくに任せればいい
    • うちのIOでは歯ブラシ側でモードを切り替えられるが、切り替え対象のモード一覧はアプリで選ぶ。ただ、デフォルトは「全部」のようなので、アプリを一度も起動しなくてもまだ使える
  • 本当の疑問は、そもそもなぜ歯ブラシにアプリが必要なのかということだ

    • 顧客データをできるだけ多く集め、匿名化できることを期待しながら束ねて、データブローカーに売り、顧客基盤からさらに金を搾り取ろうとしているのだ
      しかもそのすべてが「同意」のもとで行われる。アプリをインストールし、利用規約やプライバシーポリシーを受け入れている可能性が高いからだ。製品とやり取りした時間や頻度を数えたり、使うよう促したりするサービスという名目もつく。まともに生活している大人なら元からやっていたことで、ただ精度が低かっただけかもしれないのに
    • 仮の例として、「デンタル」ガムの会社は、人々の歯磨き習慣を人口統計や地理データと掛け合わせた情報に大金を払うかもしれない
      ある都市や郡で人々が一般人口より25〜50%歯を磨いていないというデータが出れば、その地域の広告費を増やすのはかなりもっともらしい。あまり歯を磨かない人のほうが、ダメージを埋め合わせるためにデンタルガムを買う可能性が高いと考えられるからだ
    • 各歯の前面、上面、裏面に十分な時間を使ったかを表示してくれる。電動歯ブラシは手動歯ブラシとは使い方が違い、前後に動かすものではない
    • 正直、私も同じことを考えていた。ブラッシング統計や歯ごとの時間みたいなものかなと
    • 私がアプリを使ったことがある唯一の理由は子どものためだ。歯を磨いている間アニメーションを流し、統計を維持し、ごほうびとしてアバターの色のようなものを選ばせてくれる
  • 展開版: https://unrollnow.com/status/1828490449881047401

    • こちらでは動かない

      Connection failed: User 'u327838624_unroll' has exceeded the 'max_connections_per_hour' resource (current value: 500)

    • HNのトラフィックでやられたようだ

      Connection failed: User 'uxxxxxxx_unroll' has exceeded the 'max_connections_per_hour' resource (current value: 500)
      これはMySQLエラーか?

  • 正気の人がどんな理由で歯ブラシアプリをダウンロードするんだ?

    • じゃあ歯ブラシのファームウェアはどうやって更新するんだ? 冗談であってほしいが、PhillipsはSonicare向けのファームウェア更新を年に何度か出しているようだ