iOSDC Japan 2024 ネットワークチーム(NOC)によるLTです
Apple Vision Pro向けに「カレンダーを壁に貼り付ける」というだけのシンプルなアプリを作り始めました。
基本的には「カレンダーを表示する」だけですのですぐに実装できるものと甘くみていました。
しかしOSの言語設定に応じて「カレンダーをローカライズする」という要件を加えた途端、泥沼にハマることになりました...
このLTではカレンダーをローカライズするに際にぶちあたった予期せぬ問題とそれにどう対処し、もしくは諦めたかという苦しい戦いの経緯を赤裸々に語ります。
iOSDC Japan 2023でご好評いただいた「SharePlayの歴史と進化」の続編です。
このLTでは、iOS18でのSharePlayの進化や、今年ついに発売されたApple Vision ProでのSharePlayの利用方法について楽しく解説します。
アップデートされた内容を中心に、SharePlayの歴史と進化についてもさらっと復習する予定です。
具体的な内容は以下の通りです。
本発表ではAgoraを用いた1on1ビデオ通話機能の開発について、その実装方法と品質向上への取り組みを紹介します。
Agoraの基本的な使い方について紹介し、iOSアプリからAgora機能の呼び出し方、映像のViewへの出力などのビデオ通話機能の実装について解説します。
特に、通信環境の不安定さが品質に及ぼす影響と、それをどのように克服するかに焦点を当てます。具体的には、AgoraAPIを活用して通信品質を最適化する方法を紹介します。
さらに、ビデオ通話中に他の作業を同時に行うためのPicture in Picture(PiP)機能の導入についても触れます。PiP機能を利用することで、ユーザーエクスペリエンスを向上させるとともに、作業効率を上げることが可能となります。
このプレゼンテーションを通じて、ビデオ通話機能の開発に関心がある方々に、具体的な開発方法と品質向上への取り組みを理解していただき、それを自身のプロジェクトに活かしていただければ幸いです。
App Store Review Guidelinesは長くて難解だと感じている方はいませんか?この5分のライトニングトークでは、一緒に最新のガイドラインを解読し、重要な変更点を理解しましょう!
このトークでは、以下のポイントに焦点を当てます。
このトークに参加することで、App Review Guidelinesの最新情報を把握し、アプリ開発におけるリスクを軽減する方法を学べます。ぜひ、一緒にApp Review Guidelinesを理解しましょう!
皆さん自動テストやアプリ配布の待ち時間に満足していますか?
その待ち時間をいかに短縮するか?がやはりCI/CD上でのキャッシュ戦略だと思います。
また、今日様々なCI/CDサービスがある中でも、ライブラリ管理やビルド環境の組み合わせは限定されており、
キャッシュ可能なポイントはある程度絞られています。
本トークでは、以下のポイントを含む幅広いユースケースで有効なCI/CD上でのキャッシュポイントとその方法について、5分間で紹介します。
これらの情報を通じて、明日からあなたのCI/CDの実行時間が一分一秒でも短くなる知識を提供します。
SwiftDataを使用して1:Nの親子関係のモデルをPreviewする際にエラーが発生した経験はありませんか?本トークでは、SwiftDataを用いたモックデータの実装方法について解説します。
SwiftDataの基本概念: SwiftDataの基本的な使い方と、1:Nの親子関係のモデルの定義方法について説明します。
モックデータの作成方法: Preview用のモックデータを作成するための具体的な手法を紹介します。
Screen Time APIで利用できる機能の一つに、アプリの利用時間を可視化できるDeviceActivityReport機能があります。iOSの設定画面では棒グラフでのレポートを閲覧できますが、DeviceActivityReport機能を使えば、自身のアプリに任意のSwiftUIベースのレポートを組み込むことが可能です。
このLTでは、DeviceActivityReportを組み込んだアプリを気軽に作れるように、以下の内容をカバーします。
DeviceActivityReportで取得可能なデータ一覧
どのようなデータが取得可能かを具体的に説明します。
DeviceActivityReport有効化に必要な手順
初心者でも分かりやすいように、具体的なステップを順を追って説明します。
DeviceActivityReportの実装時に培った知見
実装過程で得た知見や注意点について具体例を交えて紹介します。
これらの内容を通じて、参加者が自分のアプリにDeviceActivityReportを簡単に組み込めるようになることを目指します。
Xcode Cloud活用していますか?
リリースから2年弱が経ち、Xcode Cloudを利用しているプロダクトも増えてきたと思います。Xcode CloudはAppleが提供するCI/CDツールで、特にiOSアプリの開発において強力なサポートを提供します。
今年1月にリリースされた「恋するAI」アプリでは開発から運用までXcode Cloudのみの環境で開発を行なってきました。
他のツールと比べて若干の癖のあるXcode Cloudですが、SPMやTestFlight Internal Testingを活用することで従来よりも低価格・低コストで新規アプリの開発を進めることができました。
このセッションではXcode Cloudのみの環境で開発するにあたって利用したワークフローや既存ツールとの差異などを中心に以下の内容をお話しします。
2023年9月、swift-https-typesというパッケージの1.0.0がAppleからリリースされました。
このパッケージはHTTPを型安全に扱えるライブラリであり、HTTPクライアントとサーバーの両方を対象に設計されています。
めちゃくちゃ便利なのですが、まだ使っている人が少ないように感じます。
何のライブラリも使わず、標準の URLSession
のみでHTTPクライアントを実装している方にぜひ使ってほしいです。
本LTでは、軽快な音楽と共にswift-https-typesがいかに型安全かテンポよく紹介します。
Don't worry, This is type... (safe!)
SwiftのData型はバイナリデータを扱うための型です。
RandomAccessCollectionなどの便利なプロトコルに準拠しているおかげで、気軽にバイナリデータの読み書きができます。
でも「ほぼUInt8の配列でしょ」と思っているとそんなことはなく、Data型にしかない、面白くも「あぶない」特徴がいくつかあります。
それらを知らないとプログラムをクラッシュさせてしまうこともしばしば。
コードレビューでこの関数をLGTMしてしまいそうになったら、ぜひこのトークを聴いてください。
func getUInt32(from data: Data) -> UInt32 {
switch data.count {
case 0:
return 0
case 1:
return UInt32(data[0])
case 2, 3:
return UInt32(data[1]) * 256 + UInt32(data[0])
default:
return data.withUnsafeBytes { $0.load(as: UInt32.self) }
}
}
SwiftUIの登場により、iOSアプリ開発におけるアーキテクチャ設計は新たな局面を迎えています。宣言的UIというパラダイムシフトの中で、状態管理やデータフローはどのようにあるべきでしょうか?本トークでは、SwiftUIと相性の良いアーキテクチャとして注目を集めるThe Composable Architecture(TCA)について、基礎から実践的な活用方法までを解説します。
対象者
・SwiftUIを用いたiOSアプリ開発に興味があるエンジニア
・従来のアーキテクチャに課題を感じているエンジニア
・The Composable Architectureについて学びたいエンジニア
・SwiftUIでより保守性、再利用性の高いコードを書きたいエンジニア
チーム開発をしていてコードレビューに課題を感じることはありませんか?
私たちのチームでは12人のエンジニアがフルタイムでiOSアプリ開発を行なっており、レビューの属人化やリードタイムがチーム内での大きな課題となっていました。
このセッションではどのようにしてチームのコードレビューを改善したのか以下の点を中心にお話しします。
このセッションを通して皆さんのチームのコードレビューがより良いものになれば幸いです。
iOSアプリのUI設計に慣れているエンジニアでも、visionOSアプリのUI設計には新しい知識が求められます。
特に、iOSとは特性の異なるコンポーネントや独自のデザイン要素に注意する必要があります。
このトークでは、iOSアプリエンジニアの自分が実際にvisionOSアプリのUIデザインと開発をする中で直面した課題や得た知見等をまとめます。
そして、特にiOSアプリエンジニアがvisionOSアプリを開発する前に知っておくべきデザイン原則や、
iOSとは異なる部分、visionOSの罠と制約、実装時に役立つテクニックなどを端的に紹介します。
このトークを聴くことで、美しいvisionOSアプリをスムーズに開発するために、iOSアプリエンジニアにとって必要な知識が簡潔に得られるでしょう。
TipKitはiOS17で導入された新しいフレームワークです。
TipKitを使うことでアプリ内でユーザーに対して柔軟なヒント(Tips)をパーソナライズして提供することや、
アプリ内でのTipsを管理して提供することができるようになります。
今回のLTではTipKitでのできることや、実際のユースケースをまとめて話そうかと思います。
Mobile Actとは、フェンリルのエンジニアが主催するモバイルアプリ開発の勉強会です。以前は定期的に開催されていましたが、コロナ禍や運営メンバーの退職などの影響により、2021年を最後に開催が途絶えてしまいました。
そのような中、新しい運営チームはMobile Actを復活させるべく、様々な取り組みを行いました。
以前の運営メンバーがほとんどいない中で運営ノウハウが少ししか残っておらず、またポストコロナの時代となりリモート参加の需要など状況は以前とは大きく変わっていました。
このため、多くの試行錯誤を繰り返し、2024年5月に無事にMobile Actを再開することができました。
このトークでは、2年半ぶりに復活を遂げたMobile Actの裏側についてご紹介します。運営初心者たちがどのようにしてこの大きな挑戦を乗り越えたのか、そのストーリーをぜひお楽しみください。
アプリにおいてABテストが広く普及していますが、次のステップとして個別最適化が主流になりつつあります。
単に2つの画面を比較するだけでなく、ユーザーの行動パターンに基づいたセグメント分割を行い、ABテストでは拾えなかったユーザーにもアプローチすることでより高い効果を得ることができます。
私たちのアプリではユーザーごとに異なる18パターンの課金画面を提供することで、収益の最大化を目指しました。
このセッションでは、複数パターンの課金UI検証を通じて得た以下の内容についてお話しします。
このセッションを通して、皆さんのアプリでも最強の課金UIを実現しましょう。
最近、私たちは効率的で軽量なアプリを作ることにフォーカスしがちですが、その逆を行ってみたくありませんか?
今回の発表では、「いかに短いコードで、とんでもなく重いアプリを作り上げることができるか」をチャレンジします。
例えば無限ループを使ったり、無駄に多くのデータを一度に処理したりなどでメモリを大量に食い尽くす方法を模索したり
swift compilerから生成されるSILを複雑にできるかを模索したりして、デバイスの悲鳴が聞こえてきそうなアプリを作成します。
コードのシンプルさと、アプリの重さのコントラストをお楽しみいただけるような内容をご期待ください
近年のiOSアプリ開発においてはSwift Package Managerを用いてライブラリを管理する手法が一般的になりつつあります。
しかし、導入しているライブラリの中にはSwift Package Managerに対応していないものも存在します。
私たちのアプリは今年で10周年を迎える大規模アプリでおよそ30弱のライブラリが主にCocoaPodsで管理されています。
このセッションでは歴史ある大規模なアプリのライブラリを全てSPMに移行するにあたっての以下の内容をお話しします。
このセッションを通じて、皆さんのアプリのライブラリ管理の参考になるノウハウを提供します。
Universal Linksとは、SafariまたはWebサイトを経由することなく、アプリ内のコンテンツに直接リンクすることができる機能です。
実装過程で「設定は正しいはずなのにアプリに遷移しない」という経験はありませんか?
このトークでは、iOSアプリでのUniversal Linksの実装過程で実際に業務で直面した落とし穴とその解決方法について簡潔に紹介します。
このトークを通じて、Universal Linksの設定時に直面する典型的な問題を回避するための知識を得ることができます。また、Universal Linksの設定や実装をスムーズに進めるためのヒントとコツを提供します。