採択
2023/09/01 16:40〜
Track A
レギュラートーク(20分)

タクシーアプリの多言語対応・ローカライズにおける課題と解決策

h1d3mun3 h1d3mun3

タクシーアプリ『GO』では、現在大規模な英語への対応作業を進めています。
日々追加される案件開発や差し込みでの対応と並行しながら、既に存在する大量の画面をPdM・デザイナーと適切に連携を取りながら複数言語に対応させていく作業はかなり難易度の高い作業です。
現在タクシーアプリ『GO』では外部文言ツールとGitHub Actionを組み合わせた文言管理を行っていますが、現在の運用に方法を採用するまでには様々な課題が有りました。
そこで本セッションでは、多言語対応に本格着手した際に発生した課題や問題点に対してどのように対応してきたか、及び現在の運用にしてどのような問題が解決されたのかなど、多言語対応にどのように開発チームが対応してきたのかをお話いたします。

採択
2023/09/01 16:40〜
Track B
レギュラートーク(20分)

モーダルの遷移を理解する

yaso_san 八十嶋祐樹

SheetやAlertなどのモーダルは、どこのViewやUIViewControllerからでも呼び出して遷移することができますが、それゆえに遷移の実装が無秩序に散らばってしまいがちです。本来のモーダルの構造を考慮せず状態を管理できていない場合、ユーザー操作以外で画面遷移をしなくていけなくなったりすると、確実に動作させることは難しいでしょう。

また、以前のSwiftUIの遷移は不完全なところがあり、UIKitを使う判断をすることも多かったかもしれませんが、最近では改善されてきて遷移を宣言的に管理することも現実的になっています。

モーダルに関わるUIの様々な問題点や最新のAPIの動向を把握し、より最適なモーダル遷移の実装を考えてみましょう。

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

ステートマシンを活用したWebView-ネイティブ間連携へのアプローチ

marcy731 marcy731

「外部のECサイトをアプリに組み込んで、会員情報・認証情報をアプリと同期させたい」
上記は「STORES ブランドアプリ」で実際に行ったEC連携の事例ですが、WebViewとネイティブ間のデータ連携は珍しくない要件だと思います。
このような場合、WebView内の特定アクションや遷移をネイティブ側でフックする必要があります。
登録・ログイン・SNS連携などの挙動ごとのハンドリングに加え、バックエンドとの連携も重なると、とても複雑な状態管理が求められます。

このトークでは、WebView-ネイティブ間連携を必要とする多くのアプリの複雑な状態管理の荒波を、ステートマシンという羅針盤を駆使することで乗り越える指針を示します。

内容:

  • WebView-ネイティブ間連携の基礎知識
  • WebView-ネイティブ間の認証同期の課題
  • ステートマシンを活用した状態管理
  • 具体的な実装方法
採択
2023/09/01 18:45〜
Track B
レギュラートーク(20分)

watchOS開発最前線

0si43

今年2023年でついに10周年を迎えるwatchOS。そんな年に私は個人開発でカウンターアプリWristCounterをリリースしました。その経験を元に、watchOS開発の最新事情とハマりどころについて話します。

  • Apple Watch単独アプリにするかの選択
  • SwiftUIのwatchOS環境での振る舞い
  • navigationTitleが表示されない問題
  • watchOSアプリでXcode Cloudを使う際の詰まりポイント
  • watchOS 10でのアップデート
採択
2023/09/01 18:45〜
Track C
レギュラートーク(20分)

SharePlayの歴史と進化 - そしてvisionOSへ

tokorom 所 友太

iOS15で登場したSharePlayについては iOSDC Japan 2021でも紹介しました。

そして先日のWWDC23で念願のApple Vision Pro/visionOSが発表され、SharePlayの一連の仕様はこのためだったのか!と全てが繋がりました。
このトークセッションではSharePlayを未知のかたでもわかるようSharePlayの歴史を振り返り、SharePlayについて簡単に復習した後、後半のメインディッシュはApple Vision ProでSharePlayはこう使われる/使える!という部分にフォーカスし、SharePlayについて堪能する20分をお届けします。

  • SharePlayの歴史
  • SharePlayを復習
  • Apple Vision ProとSharePlay
  • visionOSアプリでSharePlayを使ってみよう!
採択
2023/09/01 19:20〜
Track A
レギュラートーク(20分)

Swizzling Swizzling Swizzling

r_plus taiki komaba

プロプライエタリサードパーティSDKの挙動をカスタムしたい!でもそのためのインターフェースがない!しかし変更したい!
フィーチャーリクエストを送るが返信は返ってこない、しかし変更したい!

そんなあなたが手を出すであろうMethod Swizzlingについて
このトークでは基本から調査方法、高難度となるSwiftや最近のObjective-C機能についてお話します。

  • Swizzlingの基本
  • 最近のObjective-C (objc_direct)
  • C function
  • Swift method
採択
2023/09/01 19:20〜
Track B
レギュラートーク(20分)

UIKit ベースの Custom UIContentConfiguration API を用いた複雑なカスタムセルの作り方

shimastriper shimastripe

iOS 14 からUICollectionViewのセルのカスタマイズ方法にConfigurationというAPIが追加されました。

これまでカスタムセルはサブクラスを作成して実装していました。Configurationにより、セルレイアウトと外観を分離し再利用しやすいComposableなAPIの管理ができます。

また縦方向のリスト形式の例では削除や並び替えといった機能と滑らかな表示体験が提供でき、安全にOSの機能を考慮した複雑なカスタムセルが実装できます。

本セッションでは日本経済新聞社の紙面ビューアーアプリで実際に導入したUIKitベースのカスタム例を紹介します。
UIKitベースのパターンは実装例が比較的少ない一方、依然として重要な選択肢です。SwiftUIベースでは困難な制約やリスト表示のパフォーマンス観点などを踏まえ、仕組みからUIKitとSwiftUIの理解を深めます。

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

TextKit 2 時代の iOS のキーボードとテキスト入力と表示のすべて

niw Yoshimasa Niwa
niw

iOS は一見、テキスト入力や表示のような基本的実装はとても簡単に思えますが、実際には一度はその動作に頭を悩ましたことがあるでしょう。

iOSDC 2020 では「iOS のキーボードと文字入力のすべて」と題してこれらの問題について詳細に検討しました。
そして、この3年間で iOS は大きく変化し、SwiftUI が広く使われるようになり、全く新しいAPI、TextKit 2 が登場しました。
TextKit 2 は大きく変化しおり、互換性に関して注意すべき点が多くあります。
このセッションでは、過去の事例と比較して、多くのユーザが使う iOS アプリにおけるリッチテキストの実装などを踏まえて、
キーボードの挙動や SwiftUI、そして TextKit 2 によって変わったテキスト処理について実装例を用いて検討していきます。

対象とする方: iOS アプリ開発の経験がある中・上級者

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

法改正を乗り越えるiOSアプリのリリース戦略

slightair Tomohiro Moro

iOSアプリで提供しているサービスの内容や機能を、法改正施行のタイミングとともにパッと切り替える必要があったとしたら…
そんなことを考えたことはありますか?私たちのサービスではそれが必要となりました。
施行前後でサービスの利用条件は変わります。どう変わったのかユーザにわかりやすく伝えて、安心安全にサービスを利用してもらいたい。混乱を少なくしたい。サービスも可能な限り止めたくない。
そんな要求や想いを実現するために、考えたことや計画し実行したことをお話しします。

  • 施行日に向けたリリースのきざみ方
  • スムーズに法改正後にサービスを利用してもらうための工夫
  • アプリ内の表示や機能切り替えの実現方法
採択
2023/09/02 11:00〜
Track C
レギュラートーク(20分)

PushToTalkで作るトランシーバー

coffeegyunyu 日向強

みなさん、トランシーバーってご存知でしょうか?
同じ機器を持っていれば、音声を離れたところへ伝えることができるアイテムです。
人によっては懐かしいと思う方もいるかもしれません。
そんな懐かしいトランシーバーを作る仕組みが、現行最新のiOS 16の機能として追加されているのをご存知でしょうか?

そんなiOS 16の新機能「PushToTalk」を使ってトランシーバーを実現してみようと思います。
PushToTalkはどのような機能を提供してくれるのか?
アプリ側ではどのようなものを用意すればいいのか?サーバーは?
あまりフォローされていない音声の録音部分も含めてご紹介するトークとなります。

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

iOSエンジニアがいなくても泣かない!配信サービスのiOSアプリにおけるオブザーバビリティの実装と改善

TAKA_0411 加我 貴志

私達はTVerという動画配信サービスを開発・運営しており、昨年4月に一部システムを内製化しました。
しかしモバイルアプリケーションについてはほぼ全ての開発をパートナーのお世話になっており、自社のiOSエンジニアはまだ1人もいません。

内製であれ外部への委託であれ、サービスを提供する以上は私達がサービスへの責任を全て負う必要があります。
本トークではiOSアプリケーション開発への専門知識が無いSREの私がNew Relicを導入し、動画配信サービスならではのサービス品質可視化と改善を行っている話をします。

聴講対象

・ オブザーバビリティの導入を検討しているiOSエンジニアおよびSRE

お話すること

・ TVerにおけるiOSアプリ開発の課題
・ オブザーバビリティの実装と効果
・ 動画プレイヤーの観測

お話しないこと

・ TVerにおける具体的なiOSアプリの実装

採択
2023/09/02 13:55〜
Track A
レギュラートーク(20分)

macOSで自分のカメラを作ってみよう - Core Media IO Extension

shmdevelop 服部 智

ITエンジニアならば仮想カメラを自作したいですよね?

2022年に、旧来のDAL(Device Abstraction Layer)プラグインに代わるものとしてCore Media IO Extensionを使った実装方法が用意されました。
旧方式はセキュリティ上の懸念から非推奨になっています。

このセッションではシンプルな実装から始まり、コントロールアプリと連動させる方法、カメラ映像を使う方法、それにオーバーレイ画像を合成する方法まで解説します。
機能拡張として音声認識入力機能も追加してみます。

このセッションを通してmacOSの仮想カメラの概要と実装について一通り理解できるようになります。

Zoomや各種アプリで自作仮想カメラを使ってみませんか!

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

旅行アプリでより正確にパスポートを読み込む技術 ~ MLKit / Vision / CoreNFC

tomosan_dev Takahashi Tomoki

みなさん、海外旅行は好きですか?対策緩和で少し海外に行きたいと思う方も増えてきたのではないでしょうか。我々はすべての方に海外旅行をより簡単でおトクに選べて安心なサービスを作るために日々「NEWT」を開発・改善し続けています。そこで必ず必要になるのが「パスポート」です。海外旅行においてパスポートは入力を間違えると最悪の場合、出発・入国ができないなどのトラブルに見舞われてしまいます。そんなお客様のトラブルを限りなくゼロに近づけるためにパスポートの読み込みにOCRの導入を行いました。その際に検討した内容や実際に導入・決定している方針などを踏まえて以下の内容をお話しします。

  • MLKit/Vision..etcで文字認識を行うための技術選定
  • CoreNFCによる読み込みでさらに確実なデータとして読み込む
  • その他、読み込み失敗時にリカバリーする施策作り
採択
2023/09/02 13:55〜
Track D
レギュラートーク(20分)

出前館におけるApple Pay運用Tips

kuroFront46 Shinji Kurosawa

Apple Payは2016年に日本で使用できるようになり、多くのユーザに使用されています。
フードデリバリーアプリ「出前館」でも2016年よりApple Payを導入しています。

Apple Payを運用していくためには、いくつかの証明書などを管理する必要がありますが
これらの証明書にはAppleのドキュメントを読むだけでは理解が難しい制約が多く、運用時に注意が必要です。

また、2016, 17年時点のApple Pay導入の記事は見かけますが、継続的にApple Payを運用するための記事は少なく、試行錯誤しながらApple Payの運用方針を確立しました。

本発表では出前館でApple Payを安定的に運用するための実践的な苦労話を中心に、Apple Payに関連するAPIの話や、iOS/WebでApple Payを実行するためのTipsをお話しする予定です。

採択
2023/09/02 14:30〜
Track A
レギュラートーク(20分)

ActorでCoreDataをスレッドから解放しよう

himeshi_tech ひめし

CoreDataはクライアントでデータベースを利用する際に欠かせないものです。
しかし、NSManagedObjectはスレッドセーフではなく、NSManagedObjectContext内で原則操作を行う必要がある等、スレッドを意識しながら利用する必要があります。
一方、Swift Concurrencyの普及が進み、データ競合はActorによって制御することが一般的になりました。CoreDataを利用する際も、実行スレッドを考慮することなく全てasyncで安全に操作したいものです。
しかし、CoreDataを実際にそのように利用した例は多くありません。
そこで本トークでは、CoreDataをスレッドを意識することなく利用するための設計方法を解説します。本トークによって、Swift Concurrencyを活用したより安全なCoreDataの利用方法を理解できるようになるでしょう。

採択
2023/09/02 14:30〜
Track B
レギュラートーク(20分)

UIのブラックボックスを探る

noppefoxwolf noppe

昨今、iOSの標準アプリではUIKitで提供されていないUIコンポーネントが多く使われ、それらを再現することは難しいと言えます。
さらにSwiftUIは実際のビューを隠してしまうため、我々は与えられたUIに囚われています。
本トークでは、美しいUIを再現するために必要なリバースエンジニアリングの基礎知識について解説します。

まず、画面から分かることについて説明し、UIの階層構造を覗く方法を紹介します。
また、プライベートAPIを使うことでUIの内部情報を取得する方法についても触れます。
これらのテクニックをマスターすることで、美しいUIを再現するだけでなく、UIの設計思想や技術的な側面を理解することができます。

採択
2023/09/02 14:30〜
Track D
レギュラートーク(20分)

基礎から理解する!来年春までに対応すべきプライバシーの変更点

kamimi_01 kamimi / かみみ

ピッピーー!iOSエンジニアのみなさん!プライバシー対応してますか?👮

WWDC23では、プライバシーに関する大きな変更が発表されました。最も大きい変更は、Privacy ManifestsというアプリやSDKが扱うプライバシーデータを管理するplistの追加です。加えてSDKの対応事項も追加され、最大4つの対応が必要になります。
注目すべきは、2024年の春までに対応しなければ審査でリジェクト対象になりうることです。

やるべきことは増えますが、より正確にプライバシーデータの扱いを示すことができます。それによりユーザーからアプリへの信頼が増します。長く使い続けてもらうために必須の対応、それがプライバシー対応です。

本トークでは、iOSアプリ開発において必須のプライバシー対応の基礎を振り返り、来年までの具体的な対応方法や引っかかるポイント、今後の展望(の推測)についてお伝えします。

採択
2023/09/02 15:40〜
Track A
レギュラートーク(20分)

モバイルアプリの行動ログの運用つらさ解消法

aomathwift あおい

アプリの行動ログの運用が辛いという話は、どのアプリでもよく聞く話だと思います。
では、ログ運用の「辛さ」とは一体何なのでしょう?

たとえばログを分析する人の目線だと、欲しいログが欲しいときに用意されていない状態は辛いと思います。
あるいはログを実装する人の目線だと、毎度命名に悩まなければいけなかったり、パラメータに型がなく実装ミスの可能性があったりする状態は辛いといえるでしょう。
私が携わるアプリもまた例外ではなく、アプリの行動ログの運用がつらい状況のときがありました。

このトークでは、実際に体験した行動ログ運用の辛かったエピソードと、それにどのような対処・対策をしたかをお話します。
この発表で、ログの辛さに悩む人が一人でも元気になるとうれしいです。

採択
2023/09/02 15:40〜
Track B
レギュラートーク(20分)

聴いて話すiOS:現実世界の「音」との連携

_chocoyama たまねぎ

スマートフォンにはさまざまな入出力のチャネルが搭載されています。
その中でも、現実世界の「音」を活用できる技術に関して、実は多数の機能が現在利用できる状況になっています。
本トークでは、一般的なアプリ開発では馴染みの薄い「音」をベースにした体験の構築方法について、基本的な技術の解説をはじめとして、具体的な活用例を交えてご紹介いたします。

コンテンツ

  • 「音」に関する技術の全体感
    • 楽曲特定とコンテンツ同期
    • 音声認識とトランスクリプト
    • 環境音検知
    • 発話やアクセシビリティ対応
  • その他、音声関連技術の紹介
  • 各技術の組み合わせによる体験構築のデモ

聞き手の想定

  • 音に関する技術の最新動向をキャッチアップしたい人
  • 音の活用イメージが湧かない方
採択
2023/09/02 15:40〜
Track C
レギュラートーク(20分)

小さなバグが生んだ悲劇、そこから学ぶ耐障害性の高いアプリ設計

kamekiti Yosuke Imairi

概要

アプリの歴史が積み重なっていくと内部ロジックはどんどん複雑化していきます。

時として、予期せぬバグが生み出され、それが大きなトラブルに繋がることもあります。

突発的に発生しうるトラブルに対して、アプリとしてはどういった仕組みを準備しておけばよいのでしょうか。

我々のアプリで実際に発生した悲劇のエピソードとともに、トラブル時も適切に対処できるような、耐障害性の高いアプリの実現に向けてみなさんと考えていきたいです。

発表内容

  • 小さなバグが生んだ悲劇
  • より良いメンテナンスモードの設計
  • 強制アップデート機能の設計とその勘所
  • どうすれば障害を防ぐことができたのか
    • 目にみえないバグへのアプローチ
  • 現状の課題と今後の展望