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

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

Sponsored · Your Podcast. Everywhere. Effortlessly. Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.

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

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チーム内に閉じる設計 ⚠ ボ トムアップでエスカレーションするのは現実的じゃない