Upgrade to Pro — share decks privately, control downloads, hide ads and more …

誰も頼んでない機能を出荷した話

Sponsored · SiteGround - Reliable hosting with speed, security, and support you can count on.

 誰も頼んでない機能を出荷した話

Avatar for Hidetaka Toriyama

Hidetaka Toriyama

May 21, 2026

Other Decks in Programming

Transcript

  1.  💡 OS固有機能は、ユー ザ ー体験を直接強くする 操作ステップが減る 例:ロック画面で見える アプリを開かなくていい プラットフォームの 体験と地続きになる

    Dynamic Island, ウィジェット, App Intents 新機能は そのまま 差別化になる OSの新機能 = 全アプリにとって 平等な競争スタート地点
  2.  00 はじめに - このLTについて 💡 新卒が 誰も頼んでない機能を 出荷してみた件 ター

    ゲ ット iOS新機能を「いつか入れたい」と思っている人 LT結論 学べること 提案 → 実装 → リリース までのリアル ボトムアップ提案は、コツで再現性がある ※ 今回技術の話は少なめです🙇
  3.  ϓϥοτϑΥʔϜݻ༗ػೳ 01 アイ デ ア提案 - PDMへの直談判 ˢ 🏢

    普通の案件(5段階) ✨ 今回(2段階)
  4.  01 アイ デ ア提案 - PDMへの直談判 DL進捗の表示 配信作品の予定を表示 レンタル期限切れの表示

    DL進捗度合いを ロック画面でも確認可能 公開が近い作品を カウントダウン表示 レンタル作品の 期限切れをLAで通知 ライブアクティ ビ ティを前提に提案 作品名 作品名
  5.  01 アイ デ ア提案 - PDMへの直談判 DL進捗の表示 配信作品の予定を表示 レンタル期限切れの表示

    DL進捗度合いを ロック画面でも確認可能 公開が近い作品を カウントダウン表示 レンタル作品の 期限切れをLAで通知 ライブアクティ ビ ティを前提に提案 作品名 作品名
  6.  01 アイ デ ア提案 - 選定の振り返り ✅ 採用された理由 DL進捗の表示

    ・Safariで実装されている(Apple公認) ・他配信プラットフォームがやっていない ❌ 採用されなかった理由 配信作品の予定、レンタル期限切れを表示 ・サーバ連携が必要で工数増 ・仕様の制約でリーチが限定的 ・LAの正しい使い方か、断言できない 3案出してから採用基準が見えた   → 提案前に意思決定者に評価軸を聞いていれば、それに沿った提案で工数を減らせた
  7.  01 アイ デ ア提案 - まとめ 💡 やってみてわかった、アイ デ

    アを通しやすくする型  ̎  Apple公認での安心感 × 競合未対応 を見つける → Apple純正アプリにあるが、競合にない機能 ユー ザ 動線が増える機能を選 ぶ → ロック画面/ウィジェット など。ユーザ導線が増えてマイナスなアプリなし 提案前に評価軸をヒアリン グ する → 意思決定者がアプリに大事にしている軸を正しく認識する
  8.  02 技術実装 - LAの制約 BGに入るとサークルが進まず ユーザ視点急にDLが完了する ⚙ アニメーションの制約 DLの進捗に合わせて

    サークルが進む想定だった… Widget の省電力制御で 連続アニメ不可 (Lottieなども止まる)
  9.  02 技術実装 - LAの制約 ⚙ アニメーションの制約 設計判断 ・複数件DLの場合は  件数の終了数をサークルで表示

     (アニメーションの更新が少ない) 結果 サークルUIの利点が少ないLAに😭
  10.  02 技術実装 - LAの制約 📡 アプリが BG では LA

    を「新規作成」できない Activity.request() 日本語訳
  11.  02 技術実装 - LAの制約 📡 アプリが BG では LA

    を「新規作成」できない ユーザがDLを複数件する ↓ LA は FG でしか「生まれない」 ↓ キューに入った DL は BG でも始まる ↓ "既にある LA" を 使い回すしかない 複数件のDLのケース
  12.  02 技術実装 - LAの制約 📡 アプリが BG では LA

    を「新規作成」できない 設計判断 ・FG にいる間に create ・DL件数の増加のUI変更は update で対応 結果 UI/UX 表現は 大きく変えられない (update で更新可能な範囲に縛られる)
  13.  02 技術実装 - LAの制約 ⚙ アニメーション ・Widget の省電力で 連続アニメ不可

    ・Lottie も BG では止まる 📡 ライフサイクル ・BG では 新規 create 不可 ・明示的に アクティビティの end が必要 + stale date での制御が必要 ・最大表示時間: 8h (Dynamic Island) / 12h (Lock Screen) 🛠 LA採用前に、知っておきたい独特の制約 🎨 UI実装 ・Dynamic Island対応なら、4つ全部実装しないといけない compactLeading / compactTrailing / minimal / expanded ・データ量 4KB
  14.  02 技術実装 - まとめ 💡 やってみてわかった、 ボ トムアップ実装の現実 

    ̎  最新OS機能の挙動は、 要実機検証 → BG・ライフサイクルは、Widget Extension独自の制約がある 情報の少なさを工数見積もりに織り込む → 最新機能は記事が出てこない、AIも学習してない。手探りで時間かかる ボ トムアップ提案の見積もりは普段より慎重に行う → こちらから「やります!」した仕様変更は心理的・承認コストが高い
  15.  03 デザ インフェー ズ 反省 🤔 何がいけなかったのか? サークルUI を採用した時の判断

    ・大きくUI方針を変更したくなかった ・DMM TV感のデザインを保ちたかった ・自分のコンテキストを前提にしてた でも、HIG的には── ・LA は「ひと目で状況が伝わる」が原則 ・「視覚要素より「明確な情報」  ὎ コンテキストフリーで成立する設計
  16.  03 デザ インフェー ズ - まとめ 💡 iOSエンジニアが デザ

    インするなら  ̎ HIG を信仰する = 誤解のないUIを学 ぶ → より「ひと目で伝わる」 第三者の目 を仕組みで入れる →「最小工数」「巻き込まない」  を意識しすぎた Tips イメージ共有は Claude で工数削減
  17.  04 まとめ - 持ち帰り ▼ アイ デ アを通しやすくする型 Apple公認

    × 競合未対応 ユーザー動線が増える機能 提案前に評価軸ヒアリング ▼ ボ トムアップ実装の現実 最新機能の挙動は信用しない 情報の少なさを見積もりに織り込む 見積もりミスは提案フェーズに戻る ▼ エンジニアが デザ インするなら HIGを信仰する(誤解のないUIを選ぶ) イメージ共有はClaudeで工数削減 第三者の目を仕組みで入れる 💡 今日の持ち帰り 9つ
  18.  04 補足 - ボ トムアップの壁 ❌ 新OS機能はKPI貢献を証明しにくい → 時間がかかるものであれば、他案件より優先度が下がってしまう

    つまり エスカレーションしなくても良い短期工数で進めるしかない → 今回で言うと4人日以下   最小スコープでiOSチーム内に閉じる設計 ⚠ ボ トムアップでエスカレーションするのは現実的じゃない