iOSDC Japan 2022 トーク一覧

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

Bluetoothでレゴをリモートプログラミングしよう

ooba 大庭 慎一郎 ooba

プログラミング可能なロボットキットである「LEGO BOOST」の発売以降、Bluetoothによるリモートプログラミングに対応しているレゴのセットがたくさん発売されています。その数はなんと20以上!

その中にはプログラミングできることをアピールしていないセットも多くあります。プログラミング=マインドストームではありません。あなたがお持ちのセットも実はプログラミング対応しているかもしれませんよ?

本トークでは、レゴ社が公開している「LEGO Wireless Protocol」を中心に、どんな種類のレゴブロックがどんな感じでプログラミングできるかについてお話しします。あなたのレゴ作品をiPhoneやApple Watchとつなげて、思う通りに動かしましょう!

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

挑戦!ISUCON de Server-side Swift 〜タイムゾーンには気をつけろ〜

___freddi___ freddi ___freddi___

皆さんは ISUCON をご存知でしょうか?ISUCON は 課題として提供されるWebサービスを「いい感じにスピードアップ」するコンテストです。

さて、ここに3人のiOSエンジニアが勝負を挑みました。この3人、持ち前の iOS 開発で培った Swift 力で、シビアな制限時間の中、課題をSwift にフルスクラッチで書き換えようとします。果たして優勝を勝ち取り、iOS開発、そしてSwift言語の威厳を他の参加者に知らしめることはできたのでしょうか。

このトークを通じて、iOS、macOS アプリケーションの開発者の皆さんがどのようにしてサーバーサイドSwiftに取り組めるか、そして本格的なアプリを実装できるかを学べるやもしれません。 iOS クライアントだけでなく、サービス全てをSwiftにしたい方、必見です!

19
採択 2022/09/11 16:05〜 Track A LT(5分)

独自の共通認証基盤を用いているサービスでアカウント削除機能を提供したときの道程

boc_sho ShoMasegi boc_sho

Review Guideline 5.1.1(v) - Account deletion requirement がついに6月30日に施行されました。
これからアカウント作成が出来るアプリは、アカウント削除機能を提供する必要があります。
アカウント削除機能はあまり優先して開発されない(しづらい)機能の一部であり、マネーフォワードクラウド確定申告でも提供出来ていなかった機能でした。

このLTでは、急遽宣言されたAccount deletion requirementに対して、共通ID基盤の提供・数多くのサービス展開による弊害、1ユーザーが複数のグループに属せるというサービスとしての難しさ、確定申告シーズンにぶち当たった必須化スケジュールを乗り越えて、マネーフォワードクラウド確定申告がアカウント削除機能を提供したときの苦悩の道程を紹介します。

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

Exposure Notification Privacy-preserving Analytics Architectureの仕様について

itaru_sugimoto 杉本 至 itaru_sugimoto

COVID-19のパンデミックに対する解決策としてAppleとGoogleが設計したExposure Notification Privacy-preserving Analytics (ENPA) Architectureについてトークします。
ENPAは、最新のプライバシー保護技術および暗号化技術を活用して、個人データを一切開示せずにデータを収集することを可能にするものです。
強力なプライバシー原則を維持しながら、収集された測定基準の信頼をどのように保護したのか、どのような仕組みを利用して情報を収集したのかをExposure Notification Privacy-preserving Analytics White Paperから解説いたします。

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

バックポートして学ぶ新APIの仕組み

yutailang0119 Yutaro Muta yutailang0119

Appleプラットフォームのアップデートは、一部を除き、最新OSのみに提供されます。
せっかく待望の新機能が登場しても、サポートOSポリシーによっては、使えるのは数年後...
ならば、自分で作って、来たる日に備えましょう。
実現する上での難易度は高いものかもしれませんが、多くは既存の仕組みを組み合わせることで、ソフトウェアとして解決できるはずです。
自分でバックポート実装を作ってみれば、新API、その周辺の仕組みについて熟知することができます。

このトークでは、2021年に登場したSwiftUI.AsyncImageを、すべてのSwiftUI環境にバックポートした経験を題材に、知見を話します。

  • 新APIの調べ方
  • バックポート実装のTips
  • メンテナンスする上での難点
採択 2022/09/11 16:20〜 Track A LT(5分)

UIStackView逆引きレシピ

tokorom 所友太 tokorom

UIStackViewとても可愛いですよね!SwiftUI時代になれば使わなくなると思いますが、現状はまだまだUIStackViewを活用する機会は多くあると思います。
このLTでは、私が愛してやまないUIStackViewについて、こんなケースではUIStackViewでどう解決する?というのを逆引きレシピ形式で紹介できればと思います。

  • ある条件ではこのボタン消えてスペースを詰めいないといけない!トルツメ制御めんどうすぎ!
  • 画面を回転させたときにレイアウトが大きく変わっちゃう!助けて!
  • デザイナーさんから「ここは10、でもここは15」と細かくマージン指定されてる!どうしたらいい?
13
採択 2022/09/11 16:25〜 Track A LT(5分)

手で触れずにアプリを動かす技術

coffeegyunyu 日向強 coffeegyunyu

iPhoneがスマートフォンと称されてはや数年。
巨大なタッチスクリーンを備えたiPhoneはその操作性でたくさんの人に受け入れられてきました。
でも、ちょっと待ってください。タッチしないと動かないって、いまいちスマートじゃなくないですか?

そんなわけで、iPhoneを触らずともアプリをなんとか動かすことができないか、様々な技術を駆使してアプリを動かせないかを検討してみます。
例えバッキバキに割れたiPhoneでも、見事動かしてみせましょう。

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

SwiftUIのハマりどころとその回避策

moguaiyuki 大塚 悠貴 moguaiyuki

AirインボイスのiOS開発チームは、AirインボイスiOSアプリをSwiftUIで開発しています。

WWDC2022でiOS16が発表され、iOS14以上をサポートとすることができるアプリが増えたことで、本格的にSwiftUIの導入を検討している方も多いと思います。しかし、最新のOSのみをサポートするのではなく、iOS14系や15系もサポートするとなると、そこには数多くのハマりどころが存在します。また、要件によってはSwiftUIでの実現に工夫が必要なポイントも数多く存在します。

本トークでは、iOS14以上を対象としたAirインボイスiOSアプリにおいてSwiftUIを用いてさまざまな要件を実現するにあたり、はまったポイントやそれらをどのように回避したかを共有します。

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

レガシーなプロダクトからドメイン層を再設計する

石井 潤、高橋 陽太郎

タウンワークiOSアプリは、10年以上開発が続いています。度重なる機能追加や仕様変更によって、プロダクトは徐々に複雑に、レガシーになっていきました。そのため、Clean Architectureの導入によるレガシーからの脱却を図りました。

Clean Architectureに則りドメイン層を分離してみましたが、いくつか不明な点があり、技術顧問の和田卓人氏に相談したところ、そもそも我々のモデリングにたくさんの改善点があることがわかりました。

そこから、チームの中で既存コードからドメインモデルを発掘し、再設計する旅が始まりました。

このセッションでは、ドメイン層が何をするかよくわからない、設計に困っている人に向けて、アプリにとってのドメインとは何か、どのように見つけ出し設計すればよいか、そして評価の方法について私たちの経験を交えてお話します。

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

大規模イベントアプリを支える技術〜長岡花火公式アプリを作った話〜

Izu

大規模なイベントアプリを支える技術のお話です。
新潟県長岡市で開催される長岡花火の公式アプリを開発して、運用しています。コロナ禍では開催出来ませんでしたが、今年は久しぶりに開催される見込みです(6月現在)
毎年開催期間合計で100万程度が来場する長岡花火に対して、どのような技術でアプリを運用して、長岡花火を支えているのか、お話できればと思います。
意外なあれが役に立っています。

普通のアプリとは異なり、イベントアプリは固有の課題があるため、イベントアプリを運用している方、今後イベントアプリを開発する方などの参考になればと思います。

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

Xcode が遅い! とにかく遅い!! 遅い Xcode をなんとかする方法

niw Yoshimasa Niwa niw

Xcode が遅い。とにかく遅い!! あああ!!!

皆さんはそんな経験ありませんか...?

iOS アプリの開発にはなくてなはならないツール、それは Xcode です。
しかし、Xcode がとにかく遅いのです。
アプリが成長し、ワークペースが巨大になり、多くのターゲットができるにつれてどんどん遅くなり、最後にはハングして終了すらできなくなってしまいます。
このセッションではそんな遅い Xcode を使えるように頑張った経験をもとに、Xcode のビルドの仕組み、そして Bazel などほかのビルドツールについても検証したいと思います。

対象とする方:

  • Xcode が遅くて辛い方
  • 大きなアプリを作っている方
  • killall XCBBuildService が癖になってしまった方
  • Xcode のビルドの仕組みをちょっと知りたい方

前提とする知識:

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

備えよう。HTTP/3

増住 啓吾

WWDC21の発表にあったように、iOS15でURLSessionのHTTP/3対応が実装されました。
あれからもうすぐ1年経ちますが、2022年6月7日現在HTTP/3対応はデベロッパオプションとして提供されている段階で、大半のiOSデバイスにおいて有効化されてはいません。
しかし、通信のパフォーマンスとセキュリティがより重要になってきていることを考えると、全てのデバイスでHTTP/3のサポートが有効になる日はそう遠くないかと思います。

このトークでは、「そもそもHTTP/3って何?QUICとどう違うの?」「どういう状況でメリットがあるの?」などの疑問にお答えしつつ、運用しているサービスの大半のWebAPIを事前にHTTP/3に対応させた事例から、HTTP/3対応の際に考慮すべき事項や、対応リリース後のモニタリングの想定など、来るべき日に備えた準備の知見をお話しします。

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

iOSにおけるWakeword検知機能の実装

iganin_dev 伊賀 裕展 iganin_dev

株式会社エクサウィザーズが提供する介護記録アプリ「CareWiz ハナスト」は、
フォアグラウンド状態において有効な独自のWakeword検知機能と音声によるアプリ操作機能を備えています。

Wakeword検知を行うためには常時音声を取得する必要性があり、独特な実装を行い問題に対処する必要があります。
本セッションでは、Wakeword検知機能の実装を中心に下記の内容をお伝えする予定です。

Wakeword検知
・Wakeword検知の方法
・アプリでの実装
・SoundAnalysisを用いた精度向上

常時録音に伴う問題と対応
・イヤホンの脱着などの音声インプットの変更
・電話などによる中断

音声によるアプリ操作
・音声とアプリの操作の連携
・Wakewordから自由発話認識への連携

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

ホーム画面を無効化しアプリの切替えを抑止する技術

oishi oishi oishi

iOS端末を業務利用する場面では、ときおり「開発するアプリ以外を使わせたくない」「ホーム画面に遷移させたくない」という要望に出くわすことがあります。例えば、キオスク端末としてiPadを使うような場合です。

本トークでは、そうした要望を満たすiOSの仕組みを3つ紹介します。

  • Guided Access
  • Single App Mode
  • Autonomous Single App Mode (ASAM)

それぞれの前提条件やメリット・デメリット、設定方法や使いどころを比較しながら解説します。3つ目のASAMは、アプリ内から Single App Mode のON/OFFを制御できる興味深いモードで、その実装方法についても紹介します。

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

Feature Flagを使った開発で高速でストレスフリーなデリバリーを実現する

imaizume 今泉智博 imaizume

アプリの新機能開発では「リリースが施策開始時期と合わない」「Mainブランチと差分が広がり競合が発生する」「不具合等で元に戻すには差分を丸ごとRevertする」などの点が開発・デリバリー速度低下の要因となります。
この状況を改善するためRettyではFeature Flagを導入しました。これはコードに分岐を設け機能表出を切り替える手法で、必要差分を予め隠した状態でリリースし、フラグ反転によって瞬時に表出することができます。
Feature Flagによって競合が起きにくくなる他、静的解析で分岐の特定が容易となり、さらに機能停止も手軽に行えます。
このトークでは、RettyでのFeature Flagの実装・運用方法、導入に役に立つライブラリをご紹介します。明日から高速でストレスフリーなデリバリーを実現しましょう!

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

即時通知を導入する際に考えるべきこと

aomathwift あおい aomathwift

iOS 15から、即時通知と呼ばれる新しい通知が導入されました。これは、一定時間内に必ず確認してほしい情報を知らせる際に利用するもので、同じくiOS 15から導入された通知要約や集中モードを突破してユーザーの目に届く強力なものです。便利な反面、乱用するとユーザーに機能そのものをオフにされてしまう可能性があるため、使い所は精査する必要があります。
また、一度プロダクトに導入すると、その便利さ故つい使用箇所を増やしたくなってしまう可能性が高いですが、無論そういうわけにはいきません。安易に強力な通知配信を増やさないためには、開発メンバーの中で同じインプットが必要です。
本セッションでは、一iOSユーザーとして即時通知を受け取ってきて再考する即時通知の使いどころ、実際にプロダクトに即時通知を導入してみて見えてきた、即時通知利用に関して開発メンバーでもつべき共通認識について導入事例と共にお話します。

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

SwiftUI in UIKit で開発する世界

hcrane14 Hiromu Tsuruta hcrane14

【概要】
SwiftUIが登場してから3年が経とうとしています。

古いOS対応もあり、すぐに導入できなかったアプリも多かったでしょう。
そんな中、新規のアプリを全てSwiftUIで構成した例も増えてきました。

しかし、現実問題として既存の多くのアプリはUIKitで構成されています。
この資産を活かしつつ、どのようにSwiftUIと歩んでいくのかを考えていく必要があります。

今回はそんな悩みを抱えつつ、私達のプロダクトで行なってきた共存の仕方をご紹介していきます。

【目次】
1.SwiftUIとUIKit
-SwiftUIの強みと弱み
-実装判断の基準
-責務の分け方

2.アーキテクチャー
-既存のアーキテクチャー
-SwiftUIとUIKitのアーキテクチャー共存

3.課題
-共存の向き・不向き
-車輪の再発明
-実装において注意すべき点

※内容が前後する可能性があります

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

動画だけじゃない!iOS 15のピクチャ・イン・ピクチャを使って好きなUIを表示させよう!

tsuzuki817 續橋 涼 tsuzuki817

iOS 14まではピクチャ・イン・ピクチャ(以下PiP)を表示させるには動画コンテンツが必要でした。
しかし、新しくiOS 15でPiPのAPIが追加されたことにより動画コンテンツが無いただのUIViewもPiPとして表示させることが可能になりました!

これまでPiPを利用したアプリを3つリリースしてきた経験から、PiPを利用したアプリの開発からリリースするまでについて話したいと思います。

・PiPに好きなUIを表示させる仕組みと実装
・より良いPiP体験の提供
・PiPでできないこと
・Appleの審査を通過する

PiPを使うことでユーザーにより良い体験を与えることができるアプリはたくさんあると自分は感じています。
ぜひこのセッションで得た情報をもとにPiPを使った良いアプリが増えれば良いと願っています!

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

20分でわかる!速習resultBuilder

_chocoyama たまねぎ _chocoyama

皆さんはresultBuilderを使った事があるでしょうか。
Swift5.4で導入されたこの技術はConcurrencyの発表で少し影が薄くなりましたが、実は複雑な処理をシンプルかつ宣言的なものに置き換えられるとても便利な技術です。
実際、私たちのチームではこれを用いることで、メンテコストの高い実装部分を大幅に改良する事が出来ました。
本トークではresultBuilderとは何なのか、またどういう効果的な利用法があるのかを実際の導入事例を交えてご紹介致します。
21分後にはあなたも1人前のresultBuilder!

コンテンツ
・resultBuilderとは
・仕組みと実装方法
・プロダクション導入の実例やライブラリの紹介
・高度な活用方法

聞き手の想定
・resultBuilderの存在を知らない方
・存在は知っているけど使い方がわからない方
・活用イメージが湧かない方

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

全力疾走中でも使えるストップウォッチアプリを作る

juginon Ogijun juginon

0.01秒が結果を左右する陸上競技の世界ではタイムはとても大切なものであり、日々の練習でもストップウォッチは欠かせません。
iPhoneにもストップウォッチがありますが、陸上競技の現場では画面上にあるボタンを押すことの難しさが致命的な欠点となり、実用に耐えないのが現状です。
そんな問題を解決するために音量ボタンで制御可能なストップウォッチアプリを作成したところ、App Store Reviewガイドライン違反で公開が停止…
どうすれば物理ボタンを使わずに全力疾走中でも使えるストップウォッチが作れるのか?
ストップウォッチのUXを最大限に高めるために検証した様々な対策を陸上競技歴15年の私が紹介します。

目次(予定)
・なぜ物理ボタンを使ってはいけないのか?
・実際に作ってみた
a.近接センサーを使う
b.加速度センサーを使う
c.音を使う
d.etc
・結果:一番良いインタラクションは?

14