11.6K Views
July 10, 24
スライド概要
昨今のAIの急激な進化によりiOSにはApple Intelligenceという「脳」がついに搭載されることになりました。iPhoneはカメラやマイク、スピーカーといった「目」「耳」「口」としての機能を当初から備えており、脳を手に入れた今こそ必要なのが「手足」ではないでしょうか。自身で動くことができないのです。そんなiPhoneの最後のミッシングパーツを埋めるのがDockKitです。本LTではDockKitについて、何ができるのか、どう実装するのかを解説し、デモを行います。
---
Sansanモバイル勉強会 vol.1での発表資料です。
https://sansan.connpass.com/event/321996/
フリーランスiOSエンジニア 「エンジニアと人生」コミュニティ主宰
iPhoneに手足を生やす 堤 修一 (@shu223)
自己紹介 • 堤 修一 • @shu223 (GitHub, Zenn, Qiita, note, Docswell, 𝕏, YouTube, Podcast, etc...) • 書籍(商業出版4冊、個人出版多数 @BOOTH):
DockKitの話をします • 被写体を自動追尾するドック(を機 能させるiOSフレームワーク) • iOS 17で登場(2023年9月リリー ス) • 対応デバイスが出たのは2024年
『あー そういうデバイス あるよね』
そう、たくさんある
なんなら友人と自作したこと もある(2018年) • ハードとアプリはBLEで連携
そんな(既製品が多くあり自作もできてしまうような)ものを なぜ今更Appleが...?
時代は大生成AI時代 • GPT-4o • Llama 3 • Claude3.5 Sonnet • Gemini • Apple Intelligence
マルチモーダルAIの主戦場は スマホ • いつでもどこでも使える • みんな持ってる • マイク・カメラ完備
スマホはAIにとっての「身体」 • AI → 脳 • カメラ → 目 • マイク → 耳 • スピーカー → 口
• AI → 脳 • カメラ → 目 • マイク → 耳 • スピーカー → 口 • ? → 手足
• AI → 脳 • カメラ → 目 • マイク → 耳 • スピーカー → 口 • ? → 手足 「動き」を司る身体性を獲得できていない
スマホにとっての手足とは?
• 手:ロボットアーム? • 足:車?
標準でサポートするものではない • ロボットアームが一般家庭に置かれるか? • スマホは走らせるものじゃない
「ドック」の絶妙さ • スマホにとってのドックは、従来から使われている形態 • c.f. 「ウェアラブル」デバイスもメガネや時計といった従 来からある形態をモチーフにしたものが残っている → スマホに生やす外付けデバイスとして無理がない
「ドック」の絶妙さ 動きはパンとチルトだけ
「ドック」の絶妙さ 動きはパンとチルトだけ・・・だが実は用途が広い • カメラとの連携 • 顔、人体、手、動物、バーコード/QRコード、モノ、 etc...のトラッキング
「ドック」の絶妙さ 動きはパンとチルトだけ・・・だが実は用途が広い • カメラとの連携 • 音声との連携 • UWB (Ultra Wide Band) との連携 • 位置情報やコンパスとの連携 • AirPodsとの連携
• カメラとの連携 • 音声との連携 • UWB (Ultra Wide Band) との連携 • 位置情報やコンパスとの連携 • AirPodsとの連携 「何らかの位置をセンシングするあらゆる機能」 や、「動きのトリガーとなる機能」と組み合わせて使える
さまざまな分野に応用可能
たかがドック、されどドック DockKitはスマホの可能 性を大きく広げる
いったんまとめ • DockKitは自動追尾ドックをサポートするフレームワーク • AI+スマホの最後のミッシングパーツ「動き」を担う • シンプルだが用途が幅広くスマホの可能性を大きく広げる
実装方法
実装手順
何もしなくてOK!
AV Foundationフレームワーク内でDockKitを サポートしてくれている 普通に撮影機能を実装していれば勝手にDockKit対応になる
デモ • 個人開発アプリ「TOTOC」 • AIで人やペットを認識して自動で 動画を撮影開始/停止する 2 • DockKit対応の実装は一切なし 2 子供が突然やる仕草やおしゃべり、撮りたいと思ってカメラをかまえても大抵 もう遅いので、全部撮っておきたいな〜と思ったのが着想のきっかけ
これぞ「標準」ならではの強み!
とはいえいろいろ実装したい
DockKitのカスタムコントロール
カメラ視野のコントロール • フレーミングモードの指定 • 自動フレーミングの左、 中央、右の配置を選択 try await dock.setFramingMode(.right) • Region of interestの指定
カスタム推論 • トラッキング対象をデフォルトの顔・体から別のものに • Visionが便利: • Observationをそのまま 渡せる • Create ML/Core MLを利用 した独自モデルでもOK
その他 • カスタムモーター制御 • 「どの方向にどれぐらい動かす か」をコードから制御できる • デバイスアニメーション • ビルトイン:Yes, No, Wakeup, Kapow • カスタム
カスタムコントロールまとめ • カメラ視野のコントロール • カスタム推論 • カスタムモーター制御 • デバイスアニメーション Integrate with motorized iPhone stands using DockKit (WWDC23) → 要約記事
WWDC24でのアップデート
Tracking summaryの取得 トラッキング状態の情報をアプリ側からも取得できるようにな った • 顕著性ランク • 発話確信度 • カメラを見ている可能性の スコア
Tracking summaryを用いた実装例 アクティブなスピーカーを常に追跡する • 80%以上の信頼度で発言しているすべての人物を取得 • このリストをselect subjects APIに渡す let activeSpeakers = trackedPersons. filter { $0. speakingConfidence > 0.8 } let activeSpeakerIDs = activeSpeakers.map ‹ $0.identifier } self.dockAccessory?.selectSubjects(activeSpeakerIDs)
Intelligent Subject Tracking • 高度なアルゴリズムと機械 学習を用いて、リアルタイ ムでシーンを分析 • 動きや話し方、カメラとの 近さetc.の要因に基づいて 追跡すべき被写体を決定
その他の新機能 • DockKitアクセサリーのボタンサポート • ジンバル型デバイス • 標準カメラアプリでのサポート拡大 What’s new in DockKit (WWDC24) → 要約記事
もはや「TrackingKit」と呼んでも過言ではない • DockKit = ドック型の外付けハードウェアを制御するフレー ムワーク • DockKit = スタンド型やジンバル型の外付けハードウェア + AIやアルゴリズムのソフトウェアでスマホに最高のトラッキ ング性能を与えるフレームワーク 1 Appleが言ってるわけではなく持論です 1
まとめ • DockKitは「なぜいまさら?」と思いきや、実はなかなか絶 妙なミッシングリンクを埋める位置づけ • 他フレームワークとの相性も良く、用途も広い • コードを1行も書かなくても自動的に対応 • カスタムコントロール手段もいろいろある • iOS 18でさらに高度なトラッキングが可能に
ご清聴ありがとうございました!