iPhoneに手足を生やす - DockKitのAPI解説とデモ

4.7K Views

July 10, 24

スライド概要

昨今のAIの急激な進化によりiOSにはApple Intelligenceという「脳」がついに搭載されることになりました。iPhoneはカメラやマイク、スピーカーといった「目」「耳」「口」としての機能を当初から備えており、脳を手に入れた今こそ必要なのが「手足」ではないでしょうか。自身で動くことができないのです。そんなiPhoneの最後のミッシングパーツを埋めるのがDockKitです。本LTではDockKitについて、何ができるのか、どう実装するのかを解説し、デモを行います。

---

Sansanモバイル勉強会 vol.1での発表資料です。
https://sansan.connpass.com/event/321996/

profile-image

フリーランスiOSエンジニア 「エンジニアと人生」コミュニティ主宰

シェア

またはPlayer版

埋め込む »CMSなどでJSが使えない場合

関連スライド

各ページのテキスト
1.

iPhoneに手足を生やす 堤 修一 (@shu223)

2.

自己紹介 • 堤 修一 • @shu223 (GitHub, Zenn, Qiita, note, Docswell, 𝕏, YouTube, Podcast, etc...) • 書籍(商業出版4冊、個人出版多数 @BOOTH):

3.

DockKitの話をします • 被写体を自動追尾するドック(を機 能させるiOSフレームワーク) • iOS 17で登場(2023年9月リリー ス) • 対応デバイスが出たのは2024年

4.

『あー そういうデバイス あるよね』

5.

そう、たくさんある

6.

なんなら友人と自作したこと もある(2018年) • ハードとアプリはBLEで連携

7.

そんな(既製品が多くあり自作もできてしまうような)ものを なぜ今更Appleが...?

8.

時代は大生成AI時代 • GPT-4o • Llama 3 • Claude3.5 Sonnet • Gemini • Apple Intelligence

9.

マルチモーダルAIの主戦場は スマホ • いつでもどこでも使える • みんな持ってる • マイク・カメラ完備

10.

スマホはAIにとっての「身体」 • AI → 脳 • カメラ → 目 • マイク → 耳 • スピーカー → 口

11.

• AI → 脳 • カメラ → 目 • マイク → 耳 • スピーカー → 口 • ? → 手足

12.

• AI → 脳 • カメラ → 目 • マイク → 耳 • スピーカー → 口 • ? → 手足 「動き」を司る身体性を獲得できていない

13.

スマホにとっての手足とは?

14.

• 手:ロボットアーム? • 足:車?

15.

標準でサポートするものではない • ロボットアームが一般家庭に置かれるか? • スマホは走らせるものじゃない

16.

「ドック」の絶妙さ • スマホにとってのドックは、従来から使われている形態 • c.f. 「ウェアラブル」デバイスもメガネや時計といった従 来からある形態をモチーフにしたものが残っている → スマホに生やす外付けデバイスとして無理がない

17.

「ドック」の絶妙さ 動きはパンとチルトだけ

18.

「ドック」の絶妙さ 動きはパンとチルトだけ・・・だが実は用途が広い • カメラとの連携 • 顔、人体、手、動物、バーコード/QRコード、モノ、 etc...のトラッキング

19.

「ドック」の絶妙さ 動きはパンとチルトだけ・・・だが実は用途が広い • カメラとの連携 • 音声との連携 • UWB (Ultra Wide Band) との連携 • 位置情報やコンパスとの連携 • AirPodsとの連携

20.

• カメラとの連携 • 音声との連携 • UWB (Ultra Wide Band) との連携 • 位置情報やコンパスとの連携 • AirPodsとの連携 「何らかの位置をセンシングするあらゆる機能」 や、「動きのトリガーとなる機能」と組み合わせて使える

21.

さまざまな分野に応用可能

22.

たかがドック、されどドック DockKitはスマホの可能 性を大きく広げる

23.

いったんまとめ • DockKitは自動追尾ドックをサポートするフレームワーク • AI+スマホの最後のミッシングパーツ「動き」を担う • シンプルだが用途が幅広くスマホの可能性を大きく広げる

24.

実装方法

25.

実装手順

26.

何もしなくてOK!

27.

AV Foundationフレームワーク内でDockKitを サポートしてくれている 普通に撮影機能を実装していれば勝手にDockKit対応になる

28.

デモ • 個人開発アプリ「TOTOC」 • AIで人やペットを認識して自動で 動画を撮影開始/停止する 2 • DockKit対応の実装は一切なし 2 子供が突然やる仕草やおしゃべり、撮りたいと思ってカメラをかまえても大抵 もう遅いので、全部撮っておきたいな〜と思ったのが着想のきっかけ

29.

これぞ「標準」ならではの強み!

30.

とはいえいろいろ実装したい

31.

DockKitのカスタムコントロール

32.

カメラ視野のコントロール • フレーミングモードの指定 • 自動フレーミングの左、 中央、右の配置を選択 try await dock.setFramingMode(.right) • Region of interestの指定

33.

カスタム推論 • トラッキング対象をデフォルトの顔・体から別のものに • Visionが便利: • Observationをそのまま 渡せる • Create ML/Core MLを利用 した独自モデルでもOK

34.

その他 • カスタムモーター制御 • 「どの方向にどれぐらい動かす か」をコードから制御できる • デバイスアニメーション • ビルトイン:Yes, No, Wakeup, Kapow • カスタム

35.

カスタムコントロールまとめ • カメラ視野のコントロール • カスタム推論 • カスタムモーター制御 • デバイスアニメーション Integrate with motorized iPhone stands using DockKit (WWDC23) → 要約記事

36.

WWDC24でのアップデート

37.

Tracking summaryの取得 トラッキング状態の情報をアプリ側からも取得できるようにな った • 顕著性ランク • 発話確信度 • カメラを見ている可能性の スコア

38.

Tracking summaryを用いた実装例 アクティブなスピーカーを常に追跡する • 80%以上の信頼度で発言しているすべての人物を取得 • このリストをselect subjects APIに渡す let activeSpeakers = trackedPersons. filter { $0. speakingConfidence > 0.8 } let activeSpeakerIDs = activeSpeakers.map ‹ $0.identifier } self.dockAccessory?.selectSubjects(activeSpeakerIDs)

39.

Intelligent Subject Tracking • 高度なアルゴリズムと機械 学習を用いて、リアルタイ ムでシーンを分析 • 動きや話し方、カメラとの 近さetc.の要因に基づいて 追跡すべき被写体を決定

40.

その他の新機能 • DockKitアクセサリーのボタンサポート • ジンバル型デバイス • 標準カメラアプリでのサポート拡大 What’s new in DockKit (WWDC24) → 要約記事

41.

もはや「TrackingKit」と呼んでも過言ではない • DockKit = ドック型の外付けハードウェアを制御するフレー ムワーク • DockKit = スタンド型やジンバル型の外付けハードウェア + AIやアルゴリズムのソフトウェアでスマホに最高のトラッキ ング性能を与えるフレームワーク 1 Appleが言ってるわけではなく持論です 1

42.

まとめ • DockKitは「なぜいまさら?」と思いきや、実はなかなか絶 妙なミッシングリンクを埋める位置づけ • 他フレームワークとの相性も良く、用途も広い • コードを1行も書かなくても自動的に対応 • カスタムコントロール手段もいろいろある • iOS 18でさらに高度なトラッキングが可能に

43.

ご清聴ありがとうございました!