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

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

entaku_0818 entaku

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

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

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

kamekiti Yosuke Imairi

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

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

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

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

etc..

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

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

Izu

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

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

採択
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対応の際に考慮すべき事項や、対応リリース後のモニタリングの想定など、来るべき日に備えた準備の知見をお話しします。

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

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

iganin_dev 伊賀 裕展

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

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

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

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

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

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

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

oishi oishi

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

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

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

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

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

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

imaizume 今泉智博

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

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

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

aomathwift あおい

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

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

SwiftUI in UIKit で開発する世界

hcrane14 Hiromu Tsuruta

【概要】
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 續橋 涼

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 たまねぎ

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

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

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

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

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

juginon Ogijun

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

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

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

サーバーと同期してリアルタイムに更新する画面を実装する

rizumi_jp izumi

アプリで画面を更新するためのトリガーとしてポピュラーなものは

  • Pull-to-refreshなどのユーザーの明示的なアクション
  • サーバー上などのデータが更新されたタイミング

の2種類に大きく分類できます。

ユーザーの明示的なアクションで画面更新する場合は比較的シンプルに実装することが可能ですが、サーバー上のデータが更新されたタイミングに同期して画面更新を行う場合、更新通知を受け取る方法やUI更新方法など、考慮することが増えて実装が複雑になりがちです。

そこでこのトークでは、リアルタイムでの更新が必要となる具体例を紹介した後に、サーバー上のデータをリアルタイムで同期するための設計/実装について、Firebaseを用いる手法、Push通知を用いる手法、WebSocketを用いる手法など、複数の手法の比較を行い、いかにしてリアルタイムで更新する画面を実装するかの解説を行います。

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

OSSのアプリケーションを開発「し続ける」ための哲学

1024jp 1024jp

自分達のアイデアを形にして新しいサービスをラウンチするのは興奮するものですし、さらにそれを軌道にのせてマネタイズするまでのノウハウは開発者の成功の証として世に溢れています。一方、アプリケーションの開発を「続ける」ことは、そのような華々しさとは縁遠く、かつフリーウェアとなれば生計を立てる外でそれを実行する必要があります。
発表者は2014年にOSSのmacOSアプリケーションCotEditorの開発を引き継ぎ、以来おおよそ月に1回のリリースを8年以上続けています。OSS開発を続けるということはどういうことなのか、どうモチベーション維持をするのか、このトークではそんなCotEditorプロジェクトを続けている哲学を紹介します。以下のような話を含みます:
・開発の基本方針
・開発を続けるモチベーション
・ユーザからのフィードバックとの付き合い方

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

シーンに応じた使いやすいQRコード読み取り機能を実装しよう

jollyjoester jollyjoester

iPhoneが登場して以降、QRコードを読むという行為はありふれた行為となりました。

iOSにおいては

  • 古くからカメラからのインプットを扱えるAVFoundationを用いて
  • 新しくは画像解析フレームワークであるVisionを用いて
    QRコードを読むという機能は比較的簡単に実現できます。

しかし、QRコードを読み込むシーンというのはアプリによって様々です。

例えば

  • 1つのQRコードをしっかり読み込みたい
  • リッチな表現でQRコードを読み込みたい
  • 夜や倉庫の中といった暗い場所でもQRコードを読み込みたい
  • 連続で複数のQRコードを読み込みたい
    などなど。

本セッションではシーンに応じてQRコードを気持ちよく読み取るためにした工夫をお話します。
頻繁に使う機能だからこそ体験の良いQRコード読み込みを実現していきましょう!

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

モバイルアプリのオブザーバビリティを向上させるプラクティス

近年、SRE(Site Reliability Engineering)の手法をアプリケーションにまで拡大しようといった動きが盛んです。

しかし、実際にモバイルアプリの可観測性≒オブザーバビリティを向上させるためには、ネイティブエンジニアの専門性が求められる場面が多く、あまり実際に効果のあった事例が共有されていないように感じます。

このトークでは

  • アプリ内で計測される指標を用いてSLI / SLOを構成する
  • アプリ内でのレスポンスのパースエラー検知
  • 問い合わせ調査のオブザーバビリティ向上
  • 外部SNSの認証サービスの障害検知
  • App Store Connect API 、MeticKitの活用

といった実際にチームで効果のあったプラクティスを紹介したいと思います。

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

モバイルアプリの行動ログの「仕込み」を快適にする

yujif_ Yuji Fujisaka

ここでの「行動ログ」とは、特定の画面の表示、ボタンのタップなど、ユーザー操作を起点に送信するものを指します。集めた行動ログは、サービス開発上の分析や実態把握に役立ちます。

アプリ開発者は、そのログを仕込む役割を担いますが、しばしば課題にぶつかります。

  • いざ分析するとき「ログが足りない!」
    • 「QA時にログ送信、網羅した?」
    • そもそもログ要件が十分に練られていない……
  • ……

本セッションでは、行動ログにまつわる悩みの種のうち、ログ実装の「仕込み」にフォーカスして、ミスを防ぐ仕組みや工夫の事例をご紹介します。

トピック

  • ドキュメントをベースにした型安全なログ実装コード自動生成
  • iOS 14以降で使いやすくなった Logger APIの活用
  • QA作業を踏まえたログ実装網羅チェッカー

など

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

目からビームでヴィランをやっつける 〜ARKitの知られざる並走機能〜

na9ain nagain

ARKitが持つ多くの機能の中でも、みなさんはフロントカメラとバックカメラを同時に使用することによるフェイストラッキングとワールドトラッキングの並走機能をご存知でしょうか?実はこの機能、Human Computer Interaction(HCI)の研究者たちの注目を集めたアツい機能なんです。この機能により、視線を向けるだけで目の前のコーヒーメーカーがコーヒーを淹れてくれるような、これまでにスマートフォン1台ではできなかった体験を実現することが可能となりました。
本トークでは、この並走機能に新たな可能性を感じた私が実際に作ったいくつかのサンプルアプリの紹介やそこで得られた知見の共有をします。

・視線を向けるだけで電気を点けたり、コーヒーを淹れられるアプリ
・目からビームを発してヴィランをやっつけるアプリ
・ユーザが暗い表情をしていると、辺りに花が咲きほこるアプリ

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

iOS15からのCommunication NotificationとSiri

mtj_j まつじ

iOS15からユーザー間でのやりとりのための新しい通知、Communication Notificationが導入されました。
そうです、通知にユーザーのアイコンが出るあの通知です。

UIが変わったり、通知の要約を突破できたりと普通の通知よりも便利なこともある一方、Siriに関する知識が必要になってきます。
しかしSiriに関してはドキュメントも知見も少なく、その割に設定する項目も多く、敷居が高いイメージもあるのではないでしょうか?
そもそもなぜ通知の実装にSiriが出てくるのでしょうか?

このトークではCommunication Notificationの実装方法、Communication Notificationを実装する上でのSiriの知識、及びよくやってしまいがちなCommunication Notificationのアンチパターンなどを紹介していきます。