iOSDC Japan 2022 トーク一覧

採択 2022/09/10 17:15〜 Track B レギュラートーク(40分)

PiPを応用した配信コメントバー機能の開発秘話と技術の詳解

_naru_jpn 千吉良 成紀 _naru_jpn

WWDC21 が開催されていた昨年の6月、AVKit に追加されたひとつの機能に社内がざわつきました。
PiP(ピクチャ・イン・ピクチャ)の機能を応用して、Android の画面オーバーレイのようにアプリ外に自由なコンテンツを描画できる期待感を経験のあるエンジニアは感じていましたが、既存のアプリに機能を組み込むまでには R&D 的な開発やパフォーマンスとの戦いがありました。

このトークでは、ゲーム配信アプリミラティブに実装され多くのユーザーに利用されている、視聴者からのコメントや各種配信情報をアプリ外で表示する「配信コメントバー」機能の開発の裏側と技術の詳細、また更なる応用についてご紹介します。

・「配信コメントバー」機能の概要
・実装の解説
・R&D 開発の勘所
・パフォーマンスの解決
・PiP と AVAudioSession との関係
・PiP のカスタマイズ性
・更なる応用

23
採択 2022/09/10 17:15〜 Track C レギュラートーク(40分)

Swiftで我が家をより便利に、安全に!

u5_03 すぎー u5_03

我が家にはたくさんのIoTガジェットがあって、カーテンや玄関の鍵を開け閉めしたり、大活躍です。
しかしエンジニアという人種は、既存の機能では満足できず、カスタムして、色々作り込みたくなるものです!
そこで日頃お世話になっているSwift、我が家に余ってたラズパイ、そしてiPhoneの力を借りて、より便利で安全なスマートホームを目指した取り組みを共有します。
具体的には…
●ラズパイでのSwiftやServerSideSwiftフレームワークのセットアップ
●iPhoneのセンサー情報をServerSideSwiftのAPI経由でラズパイのDBに書き込む方法
●ラズパイと既存のIoTガジェットの連携方法
●SwiftでラズパイのGPIO経由でセンサーやLEDを操作する方法
などをデモを交えて紹介する予定です。

ぜひ皆さんもSwiftを使った自宅のスマートホーム化、電子工作を楽しみましょう!

26
採択 2022/09/10 17:15〜 Track D レギュラートーク(40分)

SwiftUI Navigation のすべて

kalupas226 アイカワ kalupas226

SwiftUIのNavigation APIは「Tab, Alert, Sheet, Navigation Link...」など様々な種類が存在し、OSによるインターフェースの変化も激しいです。
また、これらのAPIを利用して画面遷移を実現する際には多くの選択肢があり、画面遷移が増えれば状態管理も複雑になります。

このトークでは、そんなSwiftUI Navigationについて以下の内容で発表します。

・SwiftUIのシンプルな画面遷移と状態駆動型の画面遷移について俯瞰
・状態駆動型の画面遷移の利用時に起きる状態の不整合、不要な状態の管理を改善するswiftui-navigationの手法

本トークではPoint-Free製のswiftui-navigationを深掘ることによって、よりSwiftUIのNavigationについて理解できるようになることを目指します。

採択 2022/09/10 18:10〜 Track A レギュラートーク(20分)

SwiftPMのプラグイン機能をiOSアプリ開発に活用する

usamik26 宇佐見 公輔 usamik26

iOSアプリ開発にSwift Package Manager(SwiftPM)を活用するパターンを見かけるようになってきました。アプリ内のモジュール分割をSwift Packageを使って実現するパターンです。

この際、Swift 5.5以前のSwiftPMはビルド時に(SwiftGenなどで)コード生成する、などの処理を記述できませんでした。そのため、Xcodeプロジェクトのビルドスクリプト機能を使う必要がありました。
しかし、Swift 5.6でSwiftPMにプラグイン機能が追加されたことで、Xcodeのビルドスクリプト機能に頼る必要がなくなりました。

本トークでは、SwiftPMのプラグイン機能について解説し、iOSアプリ開発でSwiftPMをより一層活用するためのプラクティスをお話しします。

採択 2022/09/10 18:10〜 Track B レギュラートーク(20分)

CICD構築・自動化入門

kuroruri くろるり kuroruri

プログラマーの三大美徳の一つと言われる怠惰さを一番発揮しやすい場所はどこでしょうか?
それはCICDを含む自動化の仕組みの構築にあると思います。

ソフトウェアの開発においてCICDはもはや必須です。
ではCICDで得られるものはなんでしょうか?
それは我々が余分な仕事をしなくて済む時間です。
例えば、アプリをビルドするのに自分のPCを何十分も専有され、その間コードは一行も触れないなんてのは嫌なのです。
そんな時間があるなら我々はもっと他にやりたいことがあるのです。
面倒なことは機械が勝手にやって欲しいのです。

本セッションでは今まで面倒な仕事を勤勉にこなしてきた人が明日から怠惰に過ごせるよう、普段の仕事を自動化していくための考え方と進め方についてお話します。
そして導入した仕組みをコスト的に効率良く運用するためにどうすればいいか、導入した後の改善法についてもお話します。

採択 2022/09/10 18:10〜 Track C レギュラートーク(20分)

MLOps for Core ML

shu223 堤 修一 shu223

MLOpsはML Operationsの略で、データ収集・前処理・学習・デプロイ・監視といった機械学習のライフサイクルの継続的な運用を効率化するための考え方や手法を総称してこう呼ばれています。たとえば、蓄積したデータを用いたモデルの再学習を定期的に自動実行し最新データに合うようモデルを改善し続ける仕組み、モデルを本番システムに自動デプロイする仕組み等が含まれます。機械学習をビジネスで本番運用するために不可欠な考え方として昨今ホットなトピックとなっています。

一方で、Core MLモデルの世界ではMLOpsという考え方はまだそれほど広がっていないように思います。多くの場合は一度学習したモデルを利用し続けるか、手運用で再学習等を行っているのではないでしょうか。Core MLにMLOpsの考え方を導入しするとどのように継続的な運用を効率化できるのか、そのパターンを解説します。

採択 2022/09/10 18:10〜 Track D レギュラートーク(20分)

Dive into Mac Catalyst

sonson_twit 吉田悠一 sonson_twit

Mac Catalystは,iOS/iPad OSと共通のプロジェクト,コードでmacOS Nativeアプリケーションも提供できるフレームワークです.さらに,Mac Catalystには,iOS/iPad OSでしか扱えないHomeKit.frameworkなどのフレームワークを使ったアプリを開発できるなどの開発効率以上の価値をもたらす側面も持ちます.しかしながら,それを使った開発には,AppKitのAPIを利用できない,起動時に勝手にウィンドウが表示されてしまうなどの課題もあります.本セッションでは,Mac Catalystでアプリを開発する上で必須のテクを筆者が公開しているオープンソースのアプリをベースに紹介します.

26
採択 2022/09/10 18:10〜 Track E レギュラートーク(20分)

PWAの今とこれから、iOSでの対応状況

i_kinopee 木下郁英 i_kinopee

ネイティブアプリと同様の機能をウェブアプリに追加できる技術、それがProgressive Web Apps (PWA)です。iOSでも近年、徐々にPWAの機能が追加されています。これらの流れは、ユーザービリティに重きを置く昨今の潮流に即しているように感じます。

この発表では、PWAの現状とその可能性についてお話しします。

  • PWAとは?
    • ウェブアプリのリーチと、ネイティブアプリの機能性を併せ持ったアプリ
  • PWAの各機能
    • ホーム画面へのアイコンの追加
    • キャッシュによるオフラインでの利用
    • カメラなどのハードウェアの利用
    • プッシュ通知 など
  • iOSでの対応状況
    • 各バージョンでの対応の歴史
    • プッシュ通知実装などの今後の対応
  • PWAの事例とこれから
    • アプリストア内外でのインストール
  • PWAを使うべきタイミング
採択 2022/09/10 18:45〜 Track A レギュラートーク(20分)

20分間で振り返るIn-App Purchaseの歴史

inokinn inokinn inokinn

iOSにおけるIn-App Purchase(アプリ内課金)はiOS 3から利用可能であり、その歴史は10年以上に及びます。
この長い歴史の中で、Ask to BuyやUpgrade / Downgrade、お試しオファーなどの多くの仕組みが追加され、やれることが格段に増えました。
アプリ内課金をサポートするための仕組みも、Store Kit 2による実装方法の変更やアプリ内での返金機能をはじめ、Server NotificationsやTransaction Receiptのフォーマットの変更など、新しいものが次々にリリースされたり、StoreKit Testingによって自動テストが出来たりSandbox環境がアップデートされたりなど、課金のテストにまつわる状況も大きく変わりました。
本トークでは、20分間でIn-App Purchaseの激動の歴史をじっくり振り返っていきます。

44
採択 2022/09/10 18:45〜 Track B レギュラートーク(20分)

量子情報工学への招待 〜iOSアプリ開発を通して学んでみよう〜

量子コンピュータや量子情報、量子暗号といった言葉を聞いたことがある人は多いと思います。これらには量子力学という物理の学問が使われています。
そんな量子力学が作り出す不思議な世界へiOSアプリ開発、Xcodeのシュミレータを用いてご説明します。
物理学の専門性がない方にもご理解いただけるように難しい話はしません。量子力学の面白さ、不思議さを知ってもらうためのトークです。

40
採択 2022/09/10 18:45〜 Track C レギュラートーク(20分)

ChaChaPoly and You, CryptoKit Explained

monolithic_adam Adam Henry monolithic_adam

「え、CryptoKitを使いたいけど、いつ、何を使うべきかわからない。。。」の方はもう心配いらない。このトークで一緒にCryptoKitの謎を解きましょう!

ユーザーのデータを暗号化しないといけない開発案件が出てきて「CryptoKitを使うチャンス!」を思って調べてきました。それでみんなにそのKnowledgeを共有したいと思っています!みんなCryptoKitマスターになりましょう!

Content

  • CryptoKitでできること
  • CryptoKitを使った対象鍵暗号(Symmetric Encryption)について
  • いつそのEncryptionを使うべきか
  • 実装方法

データセキュリティーのために知っておきましょう!

24
採択 2022/09/10 18:45〜 Track D レギュラートーク(20分)

令和時代のXML処理を考える 〜もしあなたが巨大なXMLと相見える(あいまみえる)ことになったら〜

coffeegyunyu 日向強 coffeegyunyu

アプリがネットワークなど外部サービスを通じてデータをやり取りすることはもはや当たり前になっています。
そのデータの代表的な形式としてJSONがあり、これはSwiftではCodableを通して簡易に変換することができます。

しかしデータ形式というものはJSONに限らず様々なものがあり、例えばXMLもその一種です。
「iOSにはXMLParserというものが用意されているから、ドキュメント見ながら実装すれば余裕っしょ」
もし、そのドキュメント通りに動作しなかったらどう思いますか?

このトークは、XMLを処理するにあたって、XMLParserを中心に、iOSでできること、できないことを洗い出していかに効率的に処理ができるかを突き詰めるトークとなります。

採択 2022/09/10 18:45〜 Track E レギュラートーク(20分)

広まれSafari Web Extensions!Safari Web Extensions の始め方

base_front matsue base_front

iOS 15 から Safari の拡張機能である Safari Web Extensions の開発が出来るようになりました。
すでに素晴らしい拡張機能がいつかかリリースされているものの、まだまだその数が少ないように感じます。
そこで今回は Safari Web Extensions の開発が広まるように、その始め方を紹介します。
具体的には、Safari Extension App のテンプレートの中身を解説しつつ、ある要素をHTMLから削除する拡張機能を作るまでの手順を紹介します。
Safari Web Extensions の持つ可能性を感じて頂ければと思います。

28
採択 スポンサーセッション 2022/09/10 19:20〜 Track C スポンサーセッション(20分)

「問題はソースコードではない!?」長生きするアプリの「品質低下」の謎

andrekandore アンドレカンドレ andrekandore

アプリを一から作り直したことはありますか?

ソースコードがごちゃごちゃで可読性が低かったり、
修正が難しいバグが多かったりして「一旦作り直し」と
判断されたこともあるかもれません。

作り直したものも最初はピカピカだったが、時間と共に
汚くなり、またバグの多いごちゃごちゃした
ソースコードになり、開発が難しい状態に戻ってしまいます。

そしてまた、作り直すか、大規模なリファクタをするか、
我慢してごちゃごちゃなまま開発を継続するかの選択が
迫られます。

どの選択も非常にコストがかかります。

どうしてこういうことが起きるのでしょうか?

今回は

  • なぜ多くのアプリは長生きするとごちゃごちゃになるのか
  • なぜ作り直しても同じ問題が再発するのか
  • これらの問題を避けることができるのか
    について話したいと思います。

ヒント: 問題はソースコード以外のところにあるかもしれません!

44
採択 スポンサーセッション 2022/09/10 19:20〜 Track D スポンサーセッション(20分)

医師がつくったテックカンパニー メドピアを紹介します

arihh 平川弘通 arihh

メドピア VPoEから会社の紹介をさせてください!

2
採択 スポンサーセッション 2022/09/10 19:20〜 Track E スポンサーセッション(20分)

メタバースを支えるエンジニアの生態について

kurain 倉井 龍太郎 kurain

iOSDCに参加のエンジニアのみなさん、メタバースの開発は Unity や Unreal Engine を駆使するような 3DCG エンジニアの担当領域だと思って敬遠していませんか? 私達クラスター株式会社のカジュアル面談でも、よく聞かれる質問の一つは iOS/Andoird/Web/etc… エンジニアでも活躍する場所が有りますか? というものです。実際は iOS/Andoird/Webエンジニアが多数在籍していますし、更には音響技術が得意なエンジニアから機械学習の研究者まで様々な人材が所属しています。また、その出身となった業界もゲームメーカーやWeb系開発会社、金融機関などなど様々です。本公演では、どんなエンジニアがどんな得意分野をもってクラスターに参画してきたかをご紹介するとともに、もう一つのよくある質問である、どんな開発フローで業務を進めているのかについてをお話しします。

18
採択 2022/09/11 11:05〜 Track A レギュラートーク(40分)

アニメーションAPIのすべて

k_katsumi 岸川克己 k_katsumi

iOSにはさまざまなアニメーションAPIがあります。思いつくだけでもUIView.animate()、Core Animation、UIViewPropertyAnimatorがあり、Core Animationが提供するAPIは膨大ですべてを使った人は稀でしょう。物理演算を追加するUIKit Dynamicsもあります。さらにSwiftUIでは.animation()や.withAnimation()というModifierによる手段が提供されています。
これらのAPIがカバーする範囲は重なっていて、同じことを別のAPIでも実現できます。それぞれのAPIをどのように使い分けるのでしょうか?

この講演では各APIの使い方を実用的なパターンの実例を示しながら解説し、どのような判断で使い分けるべきかを示します。すべてを明確に理解し、表現の引き出しを増やして、アニメーションをマスターしましょう!

採択 2022/09/11 11:05〜 Track B レギュラートーク(40分)

Swift Concurrency Next Step

stzn3 shiz stzn3

Swift5.5で登場したSwift Concurrencyは、非同期処理を簡潔で安全に扱える機能です。主な機能は既に追加済ですが、現在も新しい機能の追加や改善が行われています。
今回は、この1年で見られた進化や実装上のTipsなどを紹介します。また、Swift6以降に既存のコードが動かなくなるリスクを最小限に抑えるための段階的導入方法など、ちょっと先の未来についても見ていきます。

例:

  • Swift5.6以降の新機能や変更
  • エラーやキャンセル時の子タスクの挙動
  • Taskのinitとselfの関係
  • Actorが切り替わるタイミング
  • swift-async-algorithmsから見る実装方法
  • iOS frameworkとの連携
  • Swift6で何が起こるのか?

これからConcurrencyをもっと使ってみようと思っているみなさまのお役に立ちましたら幸いです。

採択 2022/09/11 11:05〜 Track C レギュラートーク(40分)

Swift アクターモデルと Elm Architecture の融合

inamiy 稲見 泰宏 inamiy

この発表では、Swift アクターモデルと Elm Architecture を融合したフレームワーク「Actomaton」について、実用例を中心に紹介します。

https://github.com/Actomaton/Actomaton

Composable Architecture では飽き足らないマニア向けの内容を予定しています。

  1. Actomaton の簡単な紹介
  2. アプリの状態管理の基本的な例:「ディープリンク」「タイムトラベル」
  3. 並行タスクキューを用いた副作用管理の例:「並行ダウンローダー」「並行 Web クローラー」
  4. アクター(オブジェクト指向)と Elm Architecture (関数型プログラミング)の両方を用いた計算モデルの親和性について
  5. (時間があれば)やはり圏論。圏論は全てを解決する。
採択 2022/09/11 11:05〜 Track D レギュラートーク(40分)

Unreal EngineとiPhoneを使って始めるリアルタイムAR配信

shmdevelop 服部 智 shmdevelop

ここ数年、格好良いAR表現が付いた映像が増え、皆も色々な所で目にしていると思います。
エンジニアなら自分でも実装して実現したくないでしょうか?

私は昨年からARを本業としてAR表現があるリアルタイム配信をいくつか実施してきました。
Unreal Engineを使いカメラとトラッキング機材を中心に連携し作成していきます。

その実現に必要な要素を解説しスキルを伝授していきます!

  • ワークフロー解説
  • CG原点を置きCGの空間と現実空間を一致させる方法
  • カメラトラッキング方法
  • Unreal Engineを使った基本的なシーン作成
  • iPhoneを使う手法
  • PTZカメラを使う手法

デモと手法解説を軸に、AR表現に興味を持った人がさらに興味を持つようなセッションです。