iOSDC Japan 2022 トーク一覧

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

あなたの知らない AR の可能性を空間レベルで拡げる VPS の世界

ikkou HEAVEN chan / ikkou ikkou

SnapのCustom Landmarker、ARCoreのGeospatial API、NianticのLightship、そしてARKit 6のLocation Anchor、他にもありますが、これらはすべてVPSと呼ばれるものです。

ここで言うVPSは“Virtual Private Server”ではなく“Visual Positioning Service/System”です。

緯度経度をもとにするGPSとして馴染み深い“Global Positioning System”に対し、画像による空間情報をもとに自己位置推定する技術がVPSです。

本セッションでは、今後のARに関する要素技術として重大な位置づけになると考えられる “VPS”そのものとその周辺技術、実際のユースケースや概況に加え、いずれかのVPSソリューションを用いた「実際に動作するデモ」を交えて解説します。

採択 スポンサーセッション 2022/09/11 12:00〜 Track C スポンサーセッション(20分)

iOSライブラリをセルフサービスで生成する仕組み

junkpiano Yusuke Ohashi junkpiano

弊社では様々な自動化の仕組みに取り組んでいますが、その中でiOS/Androidのライブラリ、特にAPIクライアントについて、セルフサービスで生成する仕組みについて話したいと思います。

ほぼ全てのアプリで欠かせないのがRESTを主としたAPIサーバーと対話するネットワーキングの実装だと思いますが、APIごとに毎回同じような開発をするのは非効率的です。そこで目をつけたのがOpenAPIでした。

OpenAPIとはAPI設計を行う仕様のことですが、このトークでは、OpenAPIを元にしたコード自動生成からデプロイまでを開発者が1行もコードを書かずに生成できるようにした過程を紹介します。
また、中〜大規模チームでのOpenAPI導入の背景やメリットに触れると共に、開発者の要望に応じて、生成されるコードをどうカスタマイズしたかなどもお話ししようと思います。

採択 スポンサーセッション 2022/09/11 12:00〜 Track D スポンサーセッション(20分)

Kotlin Multiplatform Mobile でiOSとAndroidの実装差異を無くす

hal8563 新田 陸 hal8563

iOSアプリと一緒に、Androidアプリを作成することはよくあります。
2つのアプリを同時に開発すると問題がよく起きます。「iOSとAndroidで動きが違う」と。
実装するエンジニアの認識のズレ、言語仕様の違い、例えどれだけ念入りにやったとしてもこの問題はいつか必ず発生することでしょう。

そのような問題をKMM(Kotlin Multiplatform Mobile)を用いて解決します。
アプリのビジネスロジックをコードレベルから共通化し、OS間での差異が起こらないような開発ができる上に、ビジネスロジック部分の記述はKMM一つで済むようになります。

このセッションでは、基本的なKMMの概念の説明から、実際にiOSのプロジェクトへのKMM導入し動作させるまでを、弊社での取り組みを交えて解説いたします。

採択 スポンサーセッション 2022/09/11 12:00〜 Track E スポンサーセッション(20分)

React NativeからNativeアプリへ ~スタートアップ企業における「機能開発と保守性担保」の両立への挑戦~

GoS_67 ShogoSaito GoS_67

ビットキーは「テクノロジーの力であらゆるものを安全で、便利で、気持ちよく繋げる」をミッションに掲げるスタートアップ企業です。
自社プラットフォームからハードウェア、ソフトウェアまで開発している弊社ですが、
本セッションではReact Native製iOSアプリworkhubを取り上げます。

workhubは"働く空間において人と仕事の間のあらゆるものを繋げ、新しい働き方に即した体験を提供する"アプリです。
スタートアップにおいて求められる"機能開発のスピード感"と、決して無視できない"保守性の担保"をいかに両立するか?をテーマに、
1年半の間取り組んだNative化をご紹介します。

・スタートアップにおけるソフトウェア開発に求められるもの
・なぜReact NativeアプリをNative化するに至ったか
・Native化の方法論
・Native化により得られたもの / 難しかった点

19
採択 2022/09/11 13:00〜 Track A レギュラートーク(20分)

UIKit ベースの大規模なプロジェクトへの SwiftUI 導入

kuritatu18 久利龍義 kuritatu18

タクシー配車アプリ「GO」では、UIKit ベースで実装しており、ViewController の数は300近くあります。
2019年の WWDC で発表された SwiftUI の機能を徐々に活用していき、2021年に iOS 12 のサポートを終了したタイミングでプロダクションに SwiftUI で作った画面を展開していきました。
本トークでは、大規模なプロジェクトにおいて、どのように SwiftUI を導入し活用しているかをご紹介します。

・SwiftUI の導入
・UIKit ベースのプロジェクトでの SwiftUI 利用
・Xcode Previews の活用
・SwiftUI 利用したことで得られたメリット
・ここが辛いよ SwiftUI
・SwiftUI 利用のこれから

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

Swift 5.7で変わる正規表現を試してみよう

ainame ainame ainame

現在swift-evolutionでは大量のproposalと共に長年Swift上で不便だった正規表現関連の実装を刷新する流れが続いています。実際にWWDC 22でもSwift 5.7のリリースとともにRegexBuilderと正規表現リテラルが導入されることが発表されています。

このトークではNSRegularExpressionやNSStringにおける課題がどのように解決されているかをswift-evolutionの各proposalをもとに振り返り、iOSやサーバーサイドでのアプリケーションや文字列処理が生きてくる書き捨てのスクリプト(例えばログ解析など)でどれぐらい実用的に利用できるのかをベンチマーク結果を添えて検証していきます。

特に普段Rubyなどで書くことが多い書き捨てスクリプトを置き換えるポテンシャルがあるのかどうかに個人的に興味があります!!いかに!?

42
採択 2022/09/11 13:00〜 Track C レギュラートーク(20分)

CoreGraphicsでドット絵を描こう

noppefoxwolf noppe noppefoxwolf

このトークを通して、ドット絵を描くアプリを作ってみましょう。
ドット絵は、イメージの最小単位であるピクセルを塗ることで描くことが出来ます。
CoreGraphicsの世界を通してピクセルを見ることで、普段意識しないイメージがどのようにしてメモリ内に格納されているかを知ることもできます。
また、CGContextを直接操作することでCGContextに存在しない描画APIの開発もしてみましょう!
このトークはドット絵エディタEditormodeの開発者がお送りします。
https://apple.co/3GJyqRF

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

既存サブスクリプション商品にアップグレード・ダウングレード商品を追加しよう

BOBG1018Vi ぼぶ BOBG1018Vi

本トークでは、既存サブスクリプション商品にアップグレード・ダウングレードを追加する方法についてご説明します。

具体的には、

アップグレード・ダウングレード・クロスグレードについて

  • サブスクリプショングループとは
  • レベルの設定
  • レシートはどうなるのか

上記を公式ドキュメントを織り交ぜながらご説明します

運用しているサブスクリプションにアップグレード・ダウングレードを追加するには

  • 新規商品を申請するために注意すべき箇所は何か
  • SandBoxで検証する際のtips
  • SandBoxで確認できない範囲の検証結果

導入しづらい運用ケースとは

  • 複数のサブスクリプショングループを運用している場合
  • クレジットや他プラットフォームでの決済手段がある場合

を予定しております。

採択 2022/09/11 13:00〜 Track E 企画(110分)

スタートアップへの挑戦

理工学術院 教授 朝日透 ほか5名

13:00-13:20 Greater Tokyo Innovation Ecosystem (GTIE)の紹介 理工学術院 教授 朝日透
13:20-13:30 Urth CEO 田中大貴
13:30-13:40 amulapo CEO 田中克明
13:40-13:50 レイワセダ CEO 畠山祥
13:50-14:05 休憩
14:05-14:15 Ubiq CEO 日野真幸
14:15-14:25 StatHack CEO 松葉亮人
14:25-14:35 EAGLYS CSO 丸山祐丞
14:35-14:45 TBD

3
採択 2022/09/11 13:35〜 Track A レギュラートーク(20分)

入門 SwiftUI Alignment Guide

monoqlo monoqlo monoqlo

SwiftUIは細かく指定しない限り簡潔にレイアウトを記述できることも多い一方で、
Auto Layoutでは簡単にできていたことが意外と難しかったり、そもそも実現が困難なケースもあります。

このトークでは、VStackやHStackで単にleadingやtopなどを指定するだけでは
実現が難しいレイアウトを攻略するために有効なAlignment Guideについて、次のステップで学ぶことができます。

  1. Alignmentの概念および挙動についての基礎
  2. alignmentGuide(_:computeValue:)の理解と利用方法
  3. Custom Alignmentの実践的な使い方と制約

想定する対象者

  • SwiftUIをなんとなく書けるようになってきた人
  • alignmentGuideやCustom Alignmentを使ったことがないor使い方がよくわからない人
52
採択 2022/09/11 13:35〜 Track B レギュラートーク(20分)

Swift Concurrency時代のリアクティブプログラミングの基礎理解

banjun ばんじゅん🍓 banjun

リアクティブプログラミングは非同期プログラミングの手段として使われることがありますが、本来は非同期データストリームをうまく扱うためのものです。Swift Concurrencyが導入された今こそ、Combineなどの具体的なライブラリから一歩距離を置いて、リアクティブプログラミングそのものを学習しておきましょう。

このトークでは、リアクティブプログラミングがデータフローの記述方式であるということを基本からおさらいします。リアクティブプログラミングを図的に理解でき、UIや通信のイベント配送設計も自在にできるようになります。

非同期はリアクティブプログラミングの外の世界と接続するときや内部実装には必要です。両者のポジションの違いを整理し、Concurrencyの機能をそのまま使うべきところと、リアクティブプログラミングでデータフローを記述すべきところが、よく分かるように説明します。

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

音声配信アプリにおけるiOSを使った音声配信の全てと裏側

entaku_0818 entaku entaku_0818

Voicyでは日々パーソナリティさんという音声投稿者による音声配信がされております。
iOSにおいて音声配信をする上で欠かせないAVFAudioを利用しております。
AVFAudioには多種多様な機能がありますが、実際サービスを扱っていく上で一体どんなことに注意し何を必要があるのか?がわからないことが多いです。
本トークでは音声配信をiOSで実装する上でどのように考え実装するべきなのかを全てと裏側という形でお伝えしたいと思います

  • AVFAudioを利用した音声の取り扱い
    • 音声収録
    • 音声配信
    • etc
  • Voicyで利用している音声配信の提供方法
    • 収録配信
    • リアルタイム配信
  • 課題や今後の展望
34
採択 2022/09/11 13:35〜 Track D レギュラートーク(20分)

タクシーアプリ「GO」から学ぶ Google Maps SDK 活用術

kamekiti Yosuke Imairi kamekiti

タクシーアプリ「GO」は地図をベースとしたアプリです。地図には Google Maps SDK が利用されています。

Google Maps SDK で提供される機能を駆使して、さまざまな情報を地図上で表現しています。
その実装は難しいこともあり、あらゆる工夫を凝らして実現されているものもあります。

「GO」での実例を元に、実装上のハマりポイントや苦労して実現したところ、開発時に遭遇した不思議な現象などを紹介します。

・地図上を走るタクシーの動態表示
・近くの道路に自動的に引き込ませる機能
・ルートのグラデーション表示
・タクシーを配車できないエリアを明示する
・地図の中心点を変えずに、複数の地点が収まる形にズームレベルを調整する
・地図のパフォーマンスを下げて省電力で動作させる
・カラースキームで地図の雰囲気を変える
・Google Maps における緯度経度の不思議

etc..

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

詳解 Core NFC - NFC を用いた iOS App 開発のてびき

treastrain treastrain / Tanaka Ryoga treastrain

NFC とは駅・空港での自動改札機やお店での電子マネー決済、社員証や学生証をかざした入退出管理など、日常でよく見かけるアレを叶える技術です。

iPhone に搭載されている NFC を私たちの App で使うためには Core NFC を用います。これは iOS 11 から利用可能になり、iOS 13 のタイミングで大きくアップデートされました。昨今の情勢から非接触技術が注目されたり、eKYC に利用できたりと、現在進行形でさまざまな App で利用が広がっています。

私は iOS 13 のときから3年間、この Core NFC を使った App の個人開発を続け、関連する OSS も公開してきました。それによって得た iOS 固有の NFC 利用まわりの知見や、これから Swift Concurrency + Core NFC を活用する App を開発する際の流れ・例を紹介します。

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

SwiftUIとUIKitを仲良くさせる

auramagi Apurin Mikhail auramagi

SwiftUIが発表されてからすでに3年が経ちました。
しかしいまだに開発現場から採用が難しいという声が聞こえてきます。
UIKitとSwiftUIの併用も可能ですが、実際に採り入れてみるとさまざまな問題が発生しました。
このセッションではそれらの問題を解決する手法を紹介します。

  • レイアウト・プレビュー
    • UIView / UIViewControllerをSwiftUIの中で使うとき
      • RepresentableKitの紹介
    • ViewをUIKitで使うとき
  • Appライフサイクル
    • UIApplicationDelegateとUISceneDelegateを引き続き使う
    • Appでまだ取得できないイベントをSwiftUIに伝える
    • iOS 13の交互性を考慮する
  • 状態管理
    • 共通の状態をどうするか
    • 依存の受け渡し
採択 2022/09/11 14:10〜 Track D レギュラートーク(40分)

正規表現って結局何なのさ?〜エンジニアのためのコンピューターサイエンス入門〜

ta_ka_tsu ta_ka_tsu ta_ka_tsu

皆さん多かれ少なかれ正規表現を使ったことがあると思います。
コマンドラインツールで、エディタの検索で、そしてNSRegularExpressionで。
単純な文字列検索に比べ、正規表現はとても表現力豊かでパワフルな検索を可能にします。

Swift Evolutionにも正規表現に関する多くのproposalがあり、Regex型やRegexリテラルなどが正式に実装される日も近いでしょう。
しかしこの正規表現とは一体何者なのでしょうか?
どんなものが表現でき、どんなものが表現できないのでしょうか?

多くのメタ文字や演算子記号があるためとても複雑なものと思われがちですが、実際にはたった3つの文字列の演算ルールだけで構成されています。
本トークでは状態遷移図の一種であるオートマトンからスタートして正規表現の原理を紐解きその限界を探っていきます。

39
採択 2022/09/11 15:10〜 Track A LT(5分)

神速iOSDC〜6年分〜

66nylon_y Roku 66nylon_y

みなさんが初めて参加したiOSDCはいつでしょうか。
私が初めて参加したiOSDCは2018年のものでした。

初参加の2018年からiOS・Swift界隈のトレンドや新しい技術は目まぐるしく変化し、私が初めて参加した年からは想像もできないような進化を遂げています。

ところで、iOSDCにはYouTube公式チャンネルがあり、iOSDC2016からのセッション動画をなんと無料で視聴することができます。

このトークではiOSDCチャンネルにあげられている458本の動画を踏まえ、これまで6年分のiOSDCを5分に凝縮し、オフライン開催が戻ってきた今だからこそ、神速で振り返りを行っていきたいと思っています。
このトークを聞くことで、iOS・Swift界隈のトレンドを振り返るとともに、6年分のiOSDCの思い出を一気に蘇らせることを約束します。

採択 2022/09/11 15:15〜 Track A LT(5分)

Apple Watchを使い倒す 〜Watchから取れるデータとその活用法〜

tsuboyan5 tsuboyan tsuboyan5

初代Apple Watchが発売されてから早7年。Apple Watchは進化を続け、圧倒的な世界最多シェアを誇るスマートウォッチとなりました。
そんなApple Watchを自身のアプリ開発にも活用したいところですが、具体的にどう活かせば良いかは悩みどころですよね…。

ということで今回は、

  1. どんなデータをApple Watchから取得できるのか
  2. どんな用途に利用されている・できそうか

これらの観点から整理し、ウォッチを活用したユニークなアプリの開発につながるヒントを共有できれば幸いです。

採択 2022/09/11 15:20〜 Track A LT(5分)

SF Symbolsの無限の可能性に迫る、SF Symbolsアートの世界

littleossa リルオッサ littleossa

SF Symbols 3.3の時点では、3,300を超えるシンボルを備えています。この多種多様なシンボルのおかげで開発者は0からアイコンを作る必要は無く、開発に専念することが出来ます。

でも、どうでしょう?

3,300を超えるシンボルがあるのに、何個のシンボルを使ったことがありますか?実際、日の目を見れていないシンボルたちが沢山あります。

「これ一体いつ使うんだ?」「こんなシンボルまであるんだ!」「これは使えそう!」

個性豊かなシンボルたちが使って欲しそうにこちらを見ています。

このLTでは、そんなシンボルたちを活用したSF Symbolsアートの数々を紹介します。少しでもSF Symbolsのことが好きになっていただければ嬉しいです。

(参考: https://twitter.com/littleossa/status/1516540893142347778)

採択 2022/09/11 15:25〜 Track A LT(5分)

レトロゲームを楽しむ環境を構築する

sam_akada 赤田 進(Sam Akada) sam_akada

ファミコン、スーファミ、ゲームボーイ、64、GC、Wii、PS1、PS2のレトロゲームをiPhone/Macで遊ぶ話です。
Windowsと比べて、Macの情報がなく、令和では手に入りにくい物だったりで、無いものは作りました。
再び、昔懐かしいゲームを楽しみましょう!

当日のLT内容(予定)です。
・違法ダウンロードは絶対ダメ
・ 無いものは作ったゲームソフトの吸い出し機
・ ゲームコントローラーを認識させる
・ レトロゲームをプレイ!

4