この発表では、Single Page Application (SPA) において Google Analytics 4 (GA4) を効果的に活用するための基礎知識から、実際の問題解決策までを解説します。
Webアプリを運用している方や、アプリエンジニアで新たにWebアプリの計測を行いたい方の参考になると幸いです。
GA4について
SPAにGA4を導入する方法
拡張イベント計測機能について
イベント計測の実用例
アプリ開発において、ユーザーの認証機能は重要です。セキュリティ上の脅威に対して、堅牢かつ安全に認証基盤を構築することが求められます。
Google CloudのIdentityPlatformは、幅広いセキュリティ機能を持った認証機能を提供するサービスです。多要素認証やOAuth、OpenIDConnectなどの認証プロトコルをサポートしておりiOSアプリのよりセキュアな認証機能の開発に活用することができます。
本トークでは、実際のiOSアプリ開発プロジェクトで、IdentityPlatformを活用したユーザー認証機能の開発を行い、そこで得られた知見や実践的なノウハウを共有いたします。
また悪意のあるユーザーからの攻撃に対してどのようなセキュリティ対策を取ることができるかを具体的にご紹介します。
Rettyアプリではアプリの開発体験・生産性向上に向けてGraphQLの導入を進めています。
私たちが抱えていた技術負債やGraphQL導入に至るまでの経緯や導入に関わる実装についてご紹介します。
Rettyのシステムについて
Rettyの全体的なシステム構成や、アプリとBFFに関する技術的負債など
REST APIの辛さとGraphQLの導入について
GraphQLの導入
apollo-iosによるアプリケーション実装・モジュール設計・XcodeCoudでのCIの実装について
これからのGraphQLを導入した今後の展望
GraphQLの導入とともに、SPMによるマルチモジュール化なども同時に進めています。
現在はGraphQLを段階的に導入している段階ですが、今後のアーキテクチャの変化など、チームで議論している展望についてお話しします。
「passkeys」は、従来のパスワード認証の欠点(使い回しや漏洩の問題等)に対応し、パスワード認証を置き換えるべく開発された新しい認証技術です。
passkeysは、セキュリティ面だけでなく、ユーザビリティ面でも導入のメリット(パスワード入力が不要、端末間での認証情報の共有、など)があります。
2023年の5月にGoogleのログインシステムがpasskeysに対応したことで、今後、より多くのサービスでpasskeysを採用する可能性が拡がってきました。
本セッションでは、passkeysに興味のある方やプロダクトでのpasskeys対応を検討している方を対象に、passkeysの概要、セキュリティ・ユーザビリティ面での対応のメリット、アプリ側・サーバー側それぞれの対応方法についてご紹介します。
本セッションを通じ、多くの方がpasskeysに興味を持っていただけたら幸いです。
SwiftUIのListはUITableViewで実装していたUIをより直感的に書き直すことが可能で、SwiftUI導入の効果が最も感じられるコンポーネントの一つです。
しかし、我々が真に実現したいUIはチュートリアルのようなシンプルな構造のものばかりではなく、公式で用意されているものでは実装が難しい場合があるでしょう。
SwiftUIでもアコーディオンUIを実現するためにDisclosureGroupが用意されていますが、アコーディオンを開閉するためのボタンの位置や表示をカスタマイズできないなど、なかなかかゆいところに手が届かない場合があります。そんな場合でもListの基本機能とSwiftUIのアニメーションを用いて独自のアコーディオンUIを構築することができました。
本トークでは実プロダクトへの導入事例に沿って、その実装を解説します。一見困難なUI構築の際のヒントとなれば幸いです。
弊チームの開発するアプリでは、Flutter Add-to-app を2020年に導入し、ネイティブの実装と Flutter での実装を共用して開発・運用を行っていました。
しかし、メンバーの入れ替わりや、Flutter 起因の不具合などの理由から、Add-to-app をやめ、iOS ネイティブで再実装するに至りました。
本トークでは、Add-to-app の導入時、運用時の良かった点や良くなった点を振り返ります。
そして、ネイティブで再実装する際に Flutter から Swift への書き換えや安全に移行するために行ったことをお話します。
本トークを通じて、Add-to-app が適するタイミングや規模感、メリット・デメリットを実感してもらい、皆さんの技術選定の手助けになる情報を提供します。
対象者: Flutter Add-to-app に興味がある方・チーム
こちらのトークでは簡単な例をもとにパイプライン演算子を自作します。
メソッドの結果を受け取り、その結果をメソッドの引数にわたし、さらにそのメソッドの結果を受け取って...
を繰り返すような処理を行いたいときに、ローカル変数が必要以上に増えてしまったり、入れ子が多くなり読みずらいなといった経験はありませんか?
このような問題をパイプライン演算子という演算子を用いれば、コードの読む順番を処理順にすることができ、可読性の向上が見込めます。
しかし、残念ながら、Swiftにパイプライン演算子は定義されていません。
定義されていないので、自作してみましょう!
さらに、オブジェクト指向プログラミングでよく用いられるメソッドチェーンとも比較し、それぞれのメリットとデメリットを紹介します。
こちらのトークが皆様の演算子の理解のきっかけになれば幸いです。
iOS開発者なら一度は使ったことのあるUserDefaultsですが、実は外部から閲覧・書き換えをすることができてしまいます。
クレジットカード番号やパスワードなどセキュアな情報をUserDefaultsで管理してませんか?
App Store Reviewガイドラインにもあるようにユーザーのプライバシーの保護は重要視されています。
このセッションではローカルにデータを保存したいときにどのように実装すれば良いのかを解説します。
・UserDefaults
・Keychain
・Core Data
データを扱う方法は複数ありますが、それぞれの特徴や選び方を説明します。
このセッションを通して安全なアプリづくりを目指しましょう!
Unity as a Libraryは、Unityで書いたコードをライブラリとしてiOSアプリケーションに組み込むことができる仕組みです。
この仕組みによってUnityを用いた3D表現を取り入れつつもSwiftUI / UIKitを用いたネイティブUIの提供を実現することができます。
Unity as a Libraryは強力な仕組みですが、ビルド時間増加や実機 / シミュレーター切り替えが容易にできず開発体験が低下してしまう問題や、ネイティブとUnity間でのデータの取り回しやUnityからネイティブ機能を利用したい場合の課題など、様々な課題が存在します。
このトークでは、Unity as a Libraryの概要を説明した後に、実際にUnity as a Libraryを利用しているアプリを開発している中で直面した課題とその改善について紹介します。
モジュール分割していてもアプリの成長とともにプロジェクトの複雑さは増加し、依存関係を把握しきれず、さらに依存関係の改善を後回しにしたり放置することもあるのではないでしょうか。
そこで開発したのがSwift製ツール「XcodeTargetGraphGen」で、GitHub上で公開しています。これは.xcodeprojからモジュールの依存関係を抽出しマーメイド記法で可視化します。開発者はこのツールにより全体像掴みアーキテクチャの改善点を特定でき、もちろんGitHub ActionsによりPR時の自動化も可能です。
このセッションでは.xcodeprojについて解説し、導入方法とCI実行によるユースケースを通じ依存関係の自動可視化がどのようにプロジェクトの理解に役立つか実演します。
依存関係に頭を悩ませている方、あるいは大規模なプロジェクトを手掛ける方へ役立つ情報となるはずです。
iOSアプリを担当することになって、何から手をつけていいかわからない経験はありませんか?
このセッションでは、チーム開発で役立つ実用的な5つのツールを
実際の導入手順や基本的な設定、注意点などを説明します。
効率的な開発と円滑なチームコラボレーションの両方を実現するために、5つのツールの活用方法とチーム開発の重要性を探求しましょう。
SheetやAlertなどのモーダルは、どこのViewやUIViewControllerからでも呼び出して遷移することができますが、それゆえに遷移の実装が無秩序に散らばってしまいがちです。本来のモーダルの構造を考慮せず状態を管理できていない場合、ユーザー操作以外で画面遷移をしなくていけなくなったりすると、確実に動作させることは難しいでしょう。
また、以前のSwiftUIの遷移は不完全なところがあり、UIKitを使う判断をすることも多かったかもしれませんが、最近では改善されてきて遷移を宣言的に管理することも現実的になっています。
モーダルに関わるUIの様々な問題点や最新のAPIの動向を把握し、より最適なモーダル遷移の実装を考えてみましょう。
iOSDC Japan 2020、2021で発表してきた『iOSではじめるWebAR』シリーズの最新版です!
先日のWWDC23で、SafariのレンダリングエンジンであるWebKitがWebXR Device APIに対応することが発表されました。
Spatial Webを見据えた“これから”を考える布石として、iOS 15.4から“限定的に”対応しているWebXR Device APIの最新状況の他、AR Quick Lookやmodel要素といったiOSにおけるWebARの“現状”をコンパクトにお伝えします。
Swift Concurrencyの登場から2年が経過し、実際のプロダクトでもRxSwiftからSwift Concurrencyへの移行が進んでいることでしょう。
しかしいきなり脱RxSwiftしようとすると得てして想像以上に影響範囲が広くなるため、影響範囲を抑えるべくミニマムなリプレースから始めていくことになります。
本トークでは、どんなシンプルなアプリでも非同期処理から逃げられない通信周りの処理について、RxSwiftによる実装からSwift Concurrencyによる実装へ最小工数で移行したプロセスについて説明します。
deprecated
を使った未移行箇所の特定方法Apple は今年の WWDC で Vision Pro を発表しました。AR の将来がとても期待できます。皆さんも AR の開発に興味が湧いていると思います。
AR コンテンツを開発するとき、プログラミングの部分だけでなく、3D に関する知識も必要になります。しかし、ゲーム開発をやったことない、3D を触ったこともないから、どこから勉強すればいいかわからないことがありませんか。今回、Animoji を通じて、AR コンテンツの作り方を一緒に体験しましょう。
Animoji は、カメラで撮影した人の顔の動きを検知し、キャラクターがリアルタイムで同じ表情を表現するものです。今回は、Blender を使用したモデルの準備から、ARKit の実装まで、最初から一つの AR コンテンツを完成します。この流れを体験したら、将来 AR コンテンツを作りたい時参考になるでしょう。
Fluid InterfacesはAppleの提唱するデザイン思想で、iOSの世界では避けては通れません。
“Fluid” でない体験は、摩擦を生み、ユーザの信頼を損ねます。
Appleは “遊び心” と “とにかく作ってみること” を強調しているため、ここでは遊び心を持って実際に作ってみます。
このトークをきっかけに、”Fluid” な世界に足を踏み入れてみましょう。
このトークで話す内容
対象者
持ち物
ネイティブアプリのロジック共通化にKotlin Multiplatform Mobile(KMM)を導入するアプリが増えてきました。
しかし、KMMでiOSのロジックを共通化するにあたっての設計や、Swiftで使いたい技術との共存など、より便利に使うためのベストプラクティスはまだまだ未知数な部分が多いのではないでしょうか。
私たちのアプリではKMM活用した新アーキテクチャを設計し、大規模なリアーキテクチャを進めています。
そこで本トークでは「タップル」アプリにおける新アーキテクチャについて紹介し、
についてお話しします。
SaaS モバイルアプリケーション開発のための共通基盤としてKotlin Multiplatform Mobile(KMM)を使用する事例を紹介します。特にSaaSドメインでは、モバイルデバイス管理(MDM)のサポートが必須となります。そのため、UI以外を共通化し、複数のプラットフォーム(iOS、Androidなど)で効率的な開発を可能にするKMMは、この要件を満たすのに適しています。このセッションでは、開発効率、コードの再利用、テスト/CI、そしてメンテナンス性に焦点を当て、KMMの活用によるこれらの要素の改善方法を示します。また、このプロセスで遭遇した課題やそれらの解決策についても詳しく説明します。このセッションは、複数のプラットフォームでの効率的なアプリ開発を目指す開発者や、SaaS環境でのKMMの活用を探しているテクノロジーリーダーにとって、手助けとなる情報を提供します。
iOS 14より、Accessibilityフレームワークが登場しました。
Accessibilityフレームワークが初めて導入されたiOS 14では、カスタムコンテンツをUIコンポーネントに含めるなど、アクセシビリティの向上につながる機能が追加されました。
時は進み、現在のAccessibilityフレームワークではカスタムコンテンツのみならず、さまざまな機能が含まれるようになりました。
当トークでは、Accessibilityフレームワークの機能を俯瞰し、アプリ開発者に対し、iOS上でどうアクセシビリティ向上が図れるのかを見ていくトークとなります。
近年、ARやVRが注目を集め、それに伴い空間感のある映像表現の需要は高まり続けています。
私が撮影スタジオ作業に携わる中で、空間内位置情報取得とカメラトラッキングデータ取得の準備と手間に大きな課題を感じていました。
そこでiPhoneを活用することでその課題を解消した制作ワークフロー実現が期待できます。
ソースコードの解説と、データ取得からAR動画書き出しまでのデモにより、分かりやすく説明します。
このトークを聞くことで、AR表現や空間データの面白さと可能性を実感していただけることを願っています。
この分野に興味がある方は、ぜひ一緒にARの未来を切り拓きましょう。