レギュラートーク(40分)

Reduxアーキテクチャ、選ぶべきフレームワークはどれ?

kudokai00 くどかい

iOSにおけるReduxアーキテクチャのフレームワークであるReMVVM、SwiftRex、ReactorKit、ReSwiftを比較します。開発者が正しいアーキテクチャを選択することはプロジェクトの成功に大きな影響を与えます。本セッションでは、各フレームワークの特徴や利点、制約を対比し、iOS開発者が最適な選択を行うための情報を提供します。比較観点は開発効率、保守性、柔軟性、テスト容易性などです。具体的な実装例を通じて、各フレームワークの利点と制約を明確に説明し、Reduxアーキテクチャの選択する上でのポイントをお届けします。

こんな人におすすめ:

  • 状態管理のアーキテクチャに興味がある方
  • 単方向データフローに興味がある方
  • Reduxアーキテクチャの選択に迷っている方
4
レギュラートーク(40分)

Xcode Cloud:入門から応用まで

lovee 星野恵瑠

Appleがついに公式CI/CDサービス:Xcode Cloudを打ち出しました。アップル謹製なので、早速移行したいと考えた方も多くいるのではないかと思います。

でもいざ使ってみたら、既存のサービスと比べて癖が強いですよね…

実は去年リリース直後から、個人アプリや会社のダミープロダクトでいろいろ確認してみたので、そこで得た知見をご紹介したいと思います。

このセッションの内容:

  • なぜXcode Cloudを使おうと思ったか
  • Xcode Cloudを実際に使ってみたメリットやデメリット
  • Xcode Cloudをセットアップする方法
  • 実プロダクトに使えるワークフローのパターンをいくつか紹介

Xcode Cloudに興味あるが迷ってる人、とりあえず移行してみたいけどやり方がわからない人、すでに移行したけどもっと効率的に活用したい人にぜひおすすめしたいセッションです。

2
レギュラートーク(40分)

Swiftへの貢献を楽しもう!Swiftへコントリビュートするための実践的な手法とテスト技法

ojun_9 ojun

本トークでは、私のSwiftへのコントリビュート経験を元に、Swiftを単なるユーザーではなく、その成長を後押しするコントリビューターとして関わる方法を探求します。

まず、SwiftのOSSプロジェクトへの貢献の価値を理解するための考察から始め、そこから誰でも挑戦できるような実践的なコントリビュート手順について具体的な手法を紹介します。
これにより、初めてのコントリビュートでも効率的に進めることができるようになります。

さらに、高品質なコードを維持するためのテスト技法に踏み込みます。
LLVMのテストツール「lit」の活用方法を学び、それがSwiftのコード品質を高める役割について説明します。

このトークを通じて、Swiftを使用するだけでなく、Swiftの進化に直接貢献する体験を提供します。
Swiftを用いる全ての開発者が、Swiftへの貢献の道を開く一歩となれば幸いです!

4
レギュラートーク(40分)

優雅にユーザーを待たせる

Li Jierong

ネットワーク通信、データベース操作などによりユーザーを待たせる場面は様々です。
そのような状況で、いかにユーザーにストレスを与えず、優雅に待たせられるかは、無数にあるアプリの中で際立った存在になるためには重要なキーになります。

本トークでは、以下のトピックについて紹介します。

  • 待機時間を可能な限り無くす重要性
  • 待たせてないように見せる:操作や処理結果の予想
  • ユーザーの時間を独占しない:待つスコープの縮小
  • プログレスインジケータの表示を優雅に:適切な場所、タイミングと形を見極める

想定する対象者

  • なんとなくプログレスインジケータを表示する人
  • 競合のアプリと差をつけたい人
3
レギュラートーク(40分)

これから始める人のためのpasskeys(パスキー) 〜 passkeys対応推進のために技術要素・メリット・実装を理解する

kotetu 栗山 徹

「passkeys」は、パスワード認証の欠点(使い回しや情報漏洩の問題等)に対応し、パスワード認証を置き換えるべく開発された新しい認証技術です。

Googleのログインシステムがpasskeysに対応したことで、今後、より多くのサービスでpasskeysを採用する可能性が拡がってきました。

passkeysに対応することで、セキュリティだけでなくアカウント作成やログインの手間軽減といったユーザビリティ面でのメリットがありますが、メリットだけでなくpasskeysの仕組みを理解することで、より効果的な導入推進が行えるようになるのではないでしょうか。

本セッションでは、passkeysに興味のある方やこれから導入したいとお考えの方を対象に、passkeysを構成する技術要素(WebAuthn、公開鍵認証など)の紹介から、導入のメリット、アプリやサーバーでの対応方法についてご紹介します。

5
レギュラートーク(40分)

状態管理アーキテクチャとスナップショットテスト

417_72ki 417.72KI

アプリ開発ではMVPやMVVMといったアーキテクチャのプロダクトが多いですが、SwiftUIの登場によってReduxやTCAといった状態管理ベースのアーキテクチャも浸透しつつあります。
そんな状態管理アーキテクチャですが、スナップショットテストと相性がいいのはご存知でしょうか?

本トークでは、自社で採用しているアーキテクチャを例として以下の内容を話します。

  • スナップショットテストを導入した背景
  • 他アーキテクチャと比較したスナップショットテストとの相性
  • UIKitにおけるスナップショットテストとSwiftUIにおけるスナップショットテスト
  • 定期的なリリースにおけるテスト戦略
    • ユニットテスト、スナップショットテスト、QA(人力)テストの責務

見た目のテストをしたいと思いつつUIテストはそのコストから手を出しづらいという方の手助けになれば幸いです。

4
レギュラートーク(40分)

Reactから使えるSwiftモジュールをビルドする!

iceman5499 Iceman

Swiftはいいぞ!
WebAssemblyによって、SwiftはWeb開発にも利用できるようになりました。
JavaScriptKitによってSwiftからJSをフルに活用できますが、SwiftをメインにWebアプリを開発するのはまだまだ敷居が高いです。
Swiftの活用を広めるにはTypeScriptをメインにSwiftをライブラリとして添え、既存のWeb資産と融合していくべきだと考えました。

このトークでは、SwiftライブラリをReactから用いる手順と、それを使って実際にどのようなアプリケーションが開発できるかを紹介します。

  1. Swift関数をexportする
  2. exportされたSwift関数にTypeScriptの型をつける
  3. SwiftのクラスオブジェクトをTypeScriptから操作可能にする
  4. Swiftクラスの状態をReactのstateと同期する
4
レギュラートーク(40分)

Fluid Interfaces - 理論と実践

akihiro_kokubo Akihiro Kokubo

Fluid InterfacesはAppleの提唱するデザイン思想で、iOSの世界では避けては通れません。
“Fluid” でない体験は、摩擦を生み、ユーザの信頼を損ねます。
Appleは “とにかく作ってみること” を強調しているため、ここでは実際に作ることを重視します。
このトークでは、デモアプリが配信され、デモを交えて理論と実践を行き来して、”Fluid” な世界に足を踏み入れます。

このトークで話す内容

  • Fluid Interfacesとは何か
  • 何がインターフェースを “Fluid” にするのか
  • なぜFluid Interfacesが重要なのか
  • 5つの事例と背後にあるデザインの理論
  • Fluid Interfacesを実践する際の心得
  • 独自に実装した3つの “Fluid” な体験のデモ・考察・議論

対象者

  • インターフェースの追求に楽しさ・喜びを感じる人
14
レギュラートーク(40分)

お互いの特徴を見比べ見極めながらiOS&Androidアプリを並行開発するヒントを見つけるプロセスと解法

fumiyasac 酒井文也

iOS/Androidのネイティブアプリを並行開発時には、考え方の違いをネガティブに捉えず、共通点や相違点等から理解のヒントを得る事が重要だと考えています。
本発表では、いわゆる「1粒で2度美味しく」取り組む際の「Positiveに壁を越えて楽しむ」過程や着眼点を紹介する予定です。

【UI実装やLayout処理観点の違いを見極める】

  • 類似したUI表現をする際の要点
  • iOSでのUI表現をAndroidアプリではどう考えるか
  • 画面遷移処理と連動するUI表現事例

【iOS/Androidでの共通点や類似点を探し出す】

  • 実装は異なるが考え方自体は近い点
  • 頻出表現におけるアプローチと共通点

【明確に違いがある部分を知る】

  • DI機構
  • 端末固有機能部分
  • API非同期通信処理
  • Webサイト経由での画面遷移
2
レギュラートーク(40分)

Swift Concurrency×KMMを活用したリアーキテクチャ戦略

oskmr_ miseri

Kotlin Multiplatform Mobile(KMM)を導入するにあたってこのような課題を感じたことはありませんか?

  • どこまでロジックを共通化した設計にすればいいのかわからない
  • Objective-Cのコードが挟まれるから、新しいSwiftの技術が使えないのでは?

本トークでは、「タップル」アプリにおけるKMMとSwiftを相互に活かすための大規模なリアーキテクチャについて以下の内容を中心に紹介します。

  • どのような新アーキテクチャを設計したのか
  • Swiftを活かして共通化するための抽象クラスやprotocolの設計
  • KMM化を適用する画面としない画面の基準とは
  • SwiftUIとSwift Concurrencyをどのように活用するか

このトークを通じて皆様のKMM導入を考えるきっかけとなれば幸いです。

10
採択
2023/09/03 13:00〜
Track D
レギュラートーク(40分)

作って学ぶBluetoothの基本攻略〜スマートキーアプリを作ってみよう〜

oka_yuuji oka

「iPhoneで他のデバイスを操作したい」と思ったことはありませんか?
Bluetoothを使用すれば、容易に行えますが、「ペリフェラル」や「セントラル」などの専門用語が難しく理解し辛い方もいると思います。
本トークでは、そんな方々を主な対象に、Bluetoothの基礎から話し、スマートキーの作成方法を必要な材料の選定、Core Bluetoothを用いたコーディング、そして実動の様子まで紹介したいと思います。
上記の内容にて、Bluetoothの基本的な知識から実践的な「スマートキーを作る」部分まで、わずか40分で学ぶことができます。
本トーク終了後には、あなた自身でスマートキーを作り、Bluetoothを用いたデバイスの設計・制作への第一歩となるでしょう。

レギュラートーク(40分)

coremltoolsにコントリビュートして、色々な深層学習モデルをiOSで動かせるようにしよう!

fukafukatani 深谷亮祐

深層学習の進化とApple siliconの性能向上により、これまでにない深層学習アプリの実現が可能になってきています。
多くの深層学習モデルはPyTorchなどのフレームワークで公開されており、これをcoremltoolsでCoreML化することで、iOS上で最適なパフォーマンスで動作させることができます。
しかし、時にはcoremltoolsですんなりCoreML化できないモデルもあります。
こんなときは、coremltoolsのエンハンスという形でのOSSへのコントリビュートチャンスともいえます。
本セッションでは、実際のエンハンス事例を下にcoremltoolsコントリビュートの勘所をお話します。

  • coremltoolsの概要
  • coremltoolsの機能が足りないときの修正箇所の見つけ方と修正方法の考え方
  • 深層学習の計算グラフの変換を理解しよう
レギュラートーク(40分)

iOS×マイコンで実現する水耕栽培の自動化を目指して〜全ての家庭で水耕栽培ができる未来を見据えて〜

oka_yuuji oka

いきなりですが、普段私たちが口にする食べ物について自分で作ってみたいと考えたことはありませんか?
昨今農場従事者が減る一方、水耕栽培を利用した農場ファームが広がり、大規模で自動化された生産が主流となりつつあります。
そんな自動化された栽培が家庭でもできたらいいなと思い、始めた「iOSとマイコンで実現する水耕栽培自動化の検証」について紹介したいと思います。
本トークでは水耕栽培の基本的な話しから必要なセンサーや選定に至った経緯を踏まえ、どのようなマイコンを使いそれらとiOSをどのように紐づけて自動化を検証したか紹介したいと思います。
これであなたもきっと水耕栽培を始めてみたいと思うはず。

4
レギュラートーク(40分)

詳解!Swift Playground Book

nirazo Kenzo Nirasawa

学習指導要領の改訂に伴い、プログラミング教育は2020年度からついに必修化されました。
AppleからSwift Playground Bookを使った中学校向けの教材もリリースされています。

教材として利用できるPlayground Bookですが、実際に作ったことのある開発者は少なく、どのように作成すればいいか全くわからない、という方も多いのではないでしょうか?

本トークではXcodeでPlayground Bookを作る方法を詳細に解説します。
実際にコード見ながら、Playground Bookが完成するまでの道のりを一緒に体験しましょう。

作り方やBook内での表現方法のみならず、Playground Bookでできることとできないこと、ユーザの入力がどのようにプレビューに反映されるのかなど、
Playground Bookについてより詳細に知れる40分です。

2
レギュラートーク(40分)

UICollectionViewで気持ちよいリスト体験をつくる

shimastriper shimastripe

UICollectionViewには、複雑なレイアウトを実現する多くのアップデートがあります。
特に、iOS 14でListsというUITableView相当の機能がサポートされ、より柔軟に実装できる環境が整いました。

しかし移行を試みると、Registration・Configuration・CompositonalLayoutなど、様々な新しい概念が立ちはだかります。
既存機能の移行にはモダンなAPIのコンセプトなどを俯瞰的に理解する必要があります。

本セッションでは、日本経済新聞社の紙面ビューアーアプリの実例をもとにトピックを包括的に紹介します。前半は、移行に必要となる各種概念やAPI仕様を体系的に整理します。
後半では、実践的に導入する方法を解説します。たとえば、大量の記事を表示、続きを滑らかに読み込む・セルの可変サイズ・スワイプなど、実プロダクトで要となるTipsを扱います。

3
レギュラートーク(40分)

coremltools完全マスター 〜Core MLモデル変換の全技術〜

shu223 堤 修一

PyTorchやTensorFlowで学習したモデルをCore MLモデルに変換する際にはcoremltoolsを利用します。ドキュメントもありその変換手順は一見シンプルですが、しかし、実際のところまず一発ではうまくいかないでしょう。多くの場合はモデルの一部を切ったり置き換えたりといった「手術」が必要となります。

本トークでは、そういったCore MLモデル変換に必要な技術や知識について、よく知られたモデルを題材に実践を通して解説していきます。その中で、「Neural Engineの気持ち」を理解してiOS/macOSデバイスの実力を最大限引き出すコツや、モデルサイズを圧縮する方法等も紹介します。

モデル変換の技術をマスターし、最新のモデルをいち早くiOSで動かして新しいユーザー体験をつくっていきましょう。

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

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

akatsuki174 akatsuki174

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

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

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

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

レギュラートーク(40分)

Depth in Depth 2023 - iOS/visionOS デプス詳解

shu223 堤 修一

最初期は「写真をボケさせる」ユースケースしか認知されていなかったiOSデプスですが、今やLiDAR搭載デバイスも登場し、部屋のスキャンや物体の3Dキャプチャー、ARのオクルージョン、そしてvisionOSのSpatial Computingにおいてもデプスが重要な役割を担っています。

本トークではデプスの基礎から始めて、Cinematic ModeやRoomPlan、Object Captureといった最新のAPIも含めてiOS/visionOSにおけるデプスについて体系的・網羅的に解説します。デモアプリの実装を通して実践的なデプスの取り扱いも解説します。

我々は長く2Dスクリーンの中でアプリを作ってきましたが、生きているこの世界は3次元です。今こそデプスをマスターし、2Dスクリーンの世界から飛び出して「奥行き」が存在する世界で新しいユーザー体験をつくっていきましょう。

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

Mastering SwiftSyntax

k_katsumi kishikawa katsumi

Swift 5.9ではマクロが導入されます。すでにSwiftUIではマクロが広く利用されています。今後はコミュニティ製や自作したマクロを使うこともあります。
マクロはSwiftSyntaxというライブラリを使った構文変換です。これまでSwiftSyntaxはツールを介した間接的な利用がほとんどでした。しかしマクロを書いたりデバッグするには直接SwiftSyntaxを使う必要があります。
SwiftSyntaxを使うコードはかなり見慣れないコードになります。コンパイラで使用されているコードで一般的な用途のコードではないからです。
この講演ではSwiftSyntaxの構文ノードの種類やAPIの使用方法を具体的な用例をもとに解説します。きっとマクロを使っていろいろなアイデアを試したくなります。SwiftSyntaxを理解してマクロはもちろん、コード生成などメタプログラミングを楽しみましょう!

レギュラートーク(40分)

10年以上の歴史を持つプロダクトのRosettaフリー 〜その中で遭遇した問題と解決法を公開します〜

tosh_3 tosh

先日、ZOZOTOWNをRosettaなしで動くようにしました。



ZOZOTOWNの仕組みは複雑で、自社ライブラリや多くのstatic frameworkを抱えていました。なかなか遭遇しないような問題に遭遇しました。そういった複雑な問題たちを紐解いていくことで多くの学びもありました。
そんなZOZOTOWNでのRosettaフリー化の経験を踏まえてこのセッションでは下記について話そうと思います。



- ZOZOTOWNのライブラリ管理構成の当時の状態と今の状態


  • 自社ライブラリのCarthageからCocoaPodsへの移行
    
- ソースコードのないStatic FrameworkのXCFramework化

  • Rosettaフリーを行う上でのモチベーション
  • Rosettaフリー化を戦略的にやるということ
    
- Rosettaフリーで得られた副次的な効果について
1