採択
LT(5分)

二次元コードの読み取りにおけるフリッカー現象の影響

marcy731 marcy731

「二次元コードがアプリで読み込めません!」 

ある日舞い込んだお問い合わせ。
聞いたところ、ある店舗に設置してあるQRコードだけが読み込めないらしい。
他のお店や手元の環境では全く再現しない。
現地に行って試してみると、確かに読み込めない。
気になる点はというと、どうも画面がチカチカしている。
試しに他社の二次元コードリーダーのあるアプリで試してみても、多くのアプリで同様に読み込めない。
これはなんだろう…

上記は実際に運用中のプロダクトで遭遇した、フリッカー現象の事例になります。
このトークでは、FrameRateとフリッカー現象について説明し、二次元コードのスムーズな読み取りのためのFrameRateの設定を提案します。

内容:

  • FrameRateとフリッカー現象
  • 各デバイス端末におけるFrameRateと、フリッカー現象への対策
8
採択
パンフ記事(4ページ)

輝け俺のViewController 〜フレモンと秘密の部屋(サーバールームじゃないよ!)〜

___freddi___ freddi

iOSの業界をネタにし尽くした、ネタ切れ、というか、もう正直このプロポーザルを書いてる時点でネタがない!打ち切り覚悟のfreddi先生最新作。ファットビューコントローラークリエイター・フレモンによるドタバタコメディ、第3弾です!今からネタ考えるのでもうここに書くこと無いんですよね、さて、今年はどういうネタにしようかな。TwitterでちょっとバズったMVVMタ◯ピーのオマージュを引っ張るのも考えたし、いっそウ◯ニャ路線で行くか、迷うな。あ、そうだ、あの人に聞いてみよう。今年よかったらマンガに登場しませんか?...

???「ええで」

乞うご期待!

採択
パンフ記事(4ページ)

Apple Silicon のためのアセンブリ入門

AkkeyLab akkey
  • 怖くないニーモニック
  • 文字出力と演算
  • Swift とアセンブリ

Apple Silicon、皆さんはどれくらい使い倒していますか?
現代の令和においても、我々は CPU と非常に近い距離で対話する手段を持っています。それがアセンブリです。
アセンブリは機械語に非常に近い低水準言語であり、CPU アーキテクチャによって記述方法も異なります。Swift などの高水準言語では記述方法が言語のバージョンアップ以外で変わることは少ないため、この特性に疑問を持つ人もいるかもしれません。

本稿では、アセンブリを通じて Apple Silicon を操作する方法を紹介します。初めは仕事に直接活かせないように思えるかもしれませんが、Apple Silicon と近い距離で対話することは意義深いものです。きっと Apple Silicon がさらに魅力的に感じられるでしょう!

3
採択
ポスターセッション

研究iOS!個人アプリのソースコードぜんぶ見せる大作戦

the_uhooi uhooi

私は以下の構成で個人アプリを開発しています。

  • UIの実装: SwiftUI
  • アーキテクチャ: MVVM
  • ソース管理: Swift Package

サードパーティ製のフルスタックフレームワークは使わず、SwiftUIを純粋に使ってきれいなコードになるよう心掛けています。
アーキテクチャはAndroidの公式ドキュメントを参考に設計し、可読性やコードを書くときの迷わなさを高めています。
Viewの分割も読みやすい粒度で適切に行っているつもりです。

ただ自分のコードが本当に読みやすいかは、実際に他の人に読んでもらわないとわかりません。
そこで 個人アプリのREADMEとソースコードをできる限り印刷して公開します

持てる限りの知見を共有するので、みなさんはぜひゴリゴリにコードレビューしてマサカリをぶん投げてください。
よりよいコードを作り上げ、一緒に成長しましょう。

18
採択
パンフ記事(2ページ)

iOSアプリ開発あるある4コマ〜2023年版〜

the_uhooi uhooi

iOSアプリ開発でよくあること(俗にいう「あるある」)を4コママンガでめちゃくちゃ面白く表現します。
過去3年間Xcodeがインストールできていないので、今年こそインストールを完了して実際の開発のあるあるが言いたいです。

9
採択
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 17:15〜
Track A
レギュラートーク(40分)

Swift Packageを使った巨大な依存グラフのキャッシュ戦略

giginet giginet

Swift Packageは、依存配布の最適な手法です。
しかし、Xcodeのパッケージ管理では、キャッシュが揮発しやすく、膨大な依存関係を持つプロジェクトではビルド速度の維持が難しいです。
パッケージの利便性と、速度を両立する手法はないでしょうか

そこで、新しいビルドツールScipio (https://github.com/giginet/Scipio)を使って、パッケージを効率的にキャッシュする手法と、実際に大規模プロジェクトに導入するケーススタディをお伝えします

このトークでは、以下についてお話しします

  • SwiftPMを利用したXCFrameworkの構築手法
  • リソースバンドルなど、標準機能のサポート
  • Library Evolutionについて、現在の制限と回避策
  • リモートキャッシュシステムの構築

SwiftPMの深い部分に触れてみましょう!

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

Appleにおけるプライバシーの全容を把握する

akatsuki174 akatsuki174

今年のWWDC然り、Appleはプライバシー保護に力を入れています。ますます複雑化するiOSのプライバシー事情を皆さんは十分に把握しているでしょうか?プライバシーに関する審査ガイドラインを把握し、リジェクトリスクを取り除けているでしょうか?

このトークでは以下の内容をカバーします。

  • 設定アプリの「プライバシーとセキュリティ」を眺めてみる
    • 主要項目の概要と実装方法
  • 近年のプライバシー関連のアップデート
    • 概要、実装方法
  • プライバシーに関連する審査ガイドライン

これからiOSアプリ開発をする人、プライバシー関連の知識に自信がない人にぜひ聞いてほしいです。
※WWDC23の内容については公開情報以上のことは話しません。

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

カンファレンスでネットワークの低レイヤーを学ぶ with Swift

S_Shimotori_pub S_Shimotori

iOSエンジニアにとってネットワークは縁遠いものです。
実物や設計を見る機会がなく、教科書を読んでもイメージがつかない方が多いのではないでしょうか。

ちょっと待ってください!実物が目の前にあるじゃありませんか。こんな貴重な機会はありません。
本トークではカンファレンスネットワークを題材にネットワークを学びます。死活監視アプリを作りiOSDC Japanネットワークのふるまいを観察しましょう。

話すこと

  • L1〜L3の基本
  • 1000〜2000人規模のカンファレンスネットワークの勘所
  • iOSDC Japan 2023ネットワークの見どころ
  • Swiftを活かして死活監視のコマンドラインツールとアプリを作る

対象

  • 普段ルータを買ってくるだけの人
  • アプセトネデブってなんですかの人
  • iOSDC JapanでWi-Fiやニコ生配信を使う予定の人 つまり参加者全員!
採択
2023/09/01 18:10〜
Track A
スポンサーセッション(20分)
スポンサーセッション

SwiftUIの進化についていくためにやったこと

motoshima1150 中島 元成

WWDC 2019 で発表されたSwiftUIですが、毎年たくさんの機能アップデートがありAPIも合わせてドラスティックに変化しています。
「スタディサプリ 中学講座」では、iOS 14 以降を対象としてフルSwiftUIを目指して開発をしてきました。(現在は iOS 15 以降対象)

SwiftUIが進化していく一方で運用する上では以下のような課題がありました。

  • 利用できる環境は iOS 16 以上など、サポートバージョンの兼ね合いですぐに取り入れられない
  • API仕様の変更によって既存の実装が非推奨となり、最適なコードと言えない状態となってしまう

このセッションでは「スタディサプリ 中学講座」の運用を通して、進化していくSwiftUIの仕様にどのように対処しているかお話しします。

採択
2023/09/01 18:10〜
Track B
スポンサーセッション(20分)
スポンサーセッション

Infra App としての取り組み

Hama

ここ数年でPayPayはとても大きく成長することができ、現在登録ユーザー数は5,800万人を突破(2023年6月時点)する事ができました。
多くのユーザーがPayPayを利用してくださり、大変ありがたいと感じています。
しかし、私たちは全ての国民がストレスなくPayPayを利用できる環境を提供する責任を感じています。
そこで、毎週リリースしている様々な取り組みを通じて、より使いやすいInfra Appを目指しています。
今回はそんなPayPayの取り込みについてご紹介していきます。

  • フォントサイズ対応
  • 言語対応
  • 低スペックユーザー / 低インターネットコネクションユーザー向けにキャッシュを効率化させ、起動時間や表示時間の効率化
  • Voice over対応
  • 障害時の簡易版表示
    etc
採択
2023/09/01 18:10〜
Track C
スポンサーセッション(20分)
スポンサーセッション

「出会い」の体験を向上させるために、私たちが向き合っていること 〜Core Bluetooth,Core ML,SwiftUIの活用事例〜

tanibeta 谷口 尚

Sansan株式会社では、SansanとEightの2つのモバイルアプリを提供しています。

Sansanは営業DXサービスとして、100万件を超える「企業情報」を提供し、ユーザーの営業活動を加速させています。
モバイルアプリで企業情報を活用してもらうために、SwiftUIを用いたグラフ描画に向き合いました。
また、Eightでは今年4月にCore Bluetoothを活用し、
Eightユーザー間で非接触で名刺交換を行える機能がリリースされました。
これらの機能の紹介とともに、開発を支えた技術について紹介します。
そして、名刺管理のための名刺撮影で活用されているCore MLについても紹介します。

このセッションを通じて、参加者の皆さんに、
Sansan株式会社のモバイルアプリエンジニアが日々向き合っていることをお伝えします。

採択
2023/09/01 18:10〜
Track D
スポンサーセッション(20分)
スポンサーセッション

グループ企業を横断するGENDAにおけるアプリ開発の最大効率化手法

nato_ring Kohei Natori

株式会社GENDAは純粋持株会社でありながらエンジニアが在籍し、グループ企業各社のプロダクト開発を行っています。

私たちモバイルエンジニアの使命はどのプロダクトにおいてもスピーディかつ堅牢で高品質なアプリ開発を行うことです。
しかしながらプロダクトによって使用する技術、歴史、文化、成長フェーズなどが異なる中でこれを実現することは容易ではありません。

本セッションでは、グループ企業を横断した少人数で効率的な開発を実現するために、弊社モバイルエンジニアのこれまでの取り組みとその成果をご紹介します。

採択
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 アプリ開発の経験がある中・上級者