ピッピーー!iOSエンジニアのみなさん!プライバシー対応してますか?👮
WWDC23では、プライバシーに関する大きな変更が発表されました。最も大きい変更は、Privacy ManifestsというアプリやSDKが扱うプライバシーデータを管理するplistの追加です。加えてSDKの対応事項も追加され、最大4つの対応が必要になります。
注目すべきは、2024年の春までに対応しなければ審査でリジェクト対象になりうることです。
やるべきことは増えますが、より正確にプライバシーデータの扱いを示すことができます。それによりユーザーからアプリへの信頼が増します。長く使い続けてもらうために必須の対応、それがプライバシー対応です。
本トークでは、iOSアプリ開発において必須のプライバシー対応の基礎を振り返り、来年までの具体的な対応方法や引っかかるポイント、今後の展望(の推測)についてお伝えします。
AndroidのJetpack Composeと、iOSのSwiftUI。
どちらも宣言的UIという共通点もあり、片方が使えればもう一方も想像以上にスムーズに実装できます。
両方の実装経験をもとに、iOSエンジニアのみなさんに共通点を踏まえて実装方法をお伝えしていきます!
【トピック詳細】
・SwiftUIとJetpack Composeの相似点と相違点
SwiftUIの知識を持つ皆さんに、Jetpack Composeの基本概念とシンタックスの共通点と違いを解説します。
・AndroidアーキテクチャとJetpack Compose
SwiftUIに慣れた皆さんに、Jetpack Composeのアーキテクチャとその特徴を紹介します。
・ハプニング対策マニュアル
Jetpack Composeでの開発においてよく遭遇するハプニングや落とし穴について、予防策と対処法をお伝えします。
要旨:
SwiftUIを既存のUIKitベースのプロジェクトへの導入は容易ではありません。私たちVoicyの開発チームもその困難を体験しました。このセッションでは、我々が直面した問題、解決策、そして導入後の成果について具体的に話します。
内容:
1.VoicyプロジェクトとSwiftUI導入の背景:
2.SwiftUIとUIKitの共存問題
3.カスタマイズの困難性
4.本番で発生した問題を晒す
5.SwiftUIの基本をおさえる
6.UIKitと一緒に生きていく
7.VoicyプロジェクトにおけるSwiftUI導入の成果と学び
ビルド時間は、アプリケーション開発において大きなフラストレーションとなります。
特に大規模なプロジェクトでは、ビルド時間の増加は効率性を損ない、生産性を低下させる可能性があります。
とはいえ大抵のプロジェクトではある程度ビルドの最適化を行なっている現状もあり、大幅に遅くなることはあっても、早くなることは少ないです。
本セッションでは、新規のプロジェクト作成してXcodeのビルド時間をいろいろな方法で遅くしていきます。
具体例を交えてビルド時間の推移を見ていくことで、アンチパターンとしてビルド時間を遅くしない手助けになればと思います。
最近、自社サービスアプリの認可方式をOAuth 2に置き換えました。
私たちのアプリは、10年以上前から基本的には同じ認証方法を採用していました。単純である一方で、現代のニーズに合わない部分が目立つようになっていました。
サービスプラットフォームチームに所属する私は、サービス基盤機能の改善の一環で、この問題に取り組むことにしました。様々な方法を検討して、OAuth 2による認可を採用すると決め、認可サーバーとリソースサーバー、アプリ向けのSDKを開発し、ついにアプリを改修しました。
本トークでは、私がこのプロジェクトに関して検討し、実装していく過程を、OAuth 2の基本的な知識とともに紹介します。このトークによって、認可方式についてどのようなことに注意するべきか学ぶことができます。
みなさん、海外旅行は好きですか?対策緩和で少し海外に行きたいと思う方も増えてきたのではないでしょうか。我々はすべての方に海外旅行をより簡単でおトクに選べて安心なサービスを作るために日々「NEWT」を開発・改善し続けています。そこで必ず必要になるのが「パスポート」です。海外旅行においてパスポートは入力を間違えると最悪の場合、出発・入国ができないなどのトラブルに見舞われてしまいます。そんなお客様のトラブルを限りなくゼロに近づけるためにパスポートの読み込みにOCRの導入を行いました。その際に検討した内容や実際に導入・決定している方針などを踏まえて以下の内容をお話しします。
Core Dataを用いると、背後のデータベース(SQLite)の知識がなくとも、簡単にデータの永続化を行うことができます。しかし、SQLiteの基本知識があればより高性能で安定したアプリを構築できるでしょう。今後、他のSQLiteベースのデータフレームワークを使用する際にも、これらの知識は非常に役立つはずです。
以下のようなトピックに興味がある方は、ぜひ一緒に探求しましょう!
残りはトークで!
位置情報は現代のアプリケーションで不可欠な要素の一つであり、Apple Watchにおいても例外ではありません。しかし、watchOSにおける位置情報の取得はバッテリーの消費という課題に直面します。そのため、watchOSとMapKitを連携させ、適切な頻度で精度良く位置情報を取得する一方で、バッテリーを極力消費させない方法が求められます。
本トークでは、位置情報収集の基本、MapKitの詳細な機能、watchOSの消費電力管理の仕組み、そしてこれらが相互にどのように影響を及ぼすか、バッテリー消費最小化と取得精度向上のテクニックについて解説します。位置情報の取得精度とバッテリー消費は一見トレードオフの関係にあるようにみえますが、watchOSの仕様を理解し、MapKitの使用方法を最適化することで、この二つのバランスを適切に維持することを目指します。
MapKitとGoogle Maps SDKは、地図機能を提供するアプリケーションにとって重要なフレームワークです。それぞれに独特な機能やパフォーマンスがあり、使用状況や要件によって最適な選択は異なります。
本トークでは、これら二つのフレームワークを徹底的に比較し、それぞれの独自性、長所、短所、そして適用シーンの詳細や実際のアプリケーション開発での具体的な事例を解説します。フレームワーク選択の際に影響を及ぼす可能性のある要素、例えばアプリのユーザーインターフェース、パフォーマンス要件、開発の複雑さ、コストなどを考慮することで、アプリケーションの要件と目標に最適なフレームワークの選択をサポートします。
このトークを通じて、フレームワーク選択のプロセスをより理解し、現時点での最適な選択を提示します。
Xcode Cloudは、2022年夏にリリースされたAppleのCI/CDです。
これまでCircle CIで行っていたテストやApp Distribution、AppStoreConnectへの配信を全てXcode Cloudに移行しました。
移行したことで、アプリのテストや配信がよりスムーズになりました。
さらに、アプリの配信をTestFlightに移行し、効率化のためのAppStore Connect APIを使うスクリプトも作成しました。
しかし、スナップショットテストやdSYMのアップロードなど、移行には一筋縄で行かない点もたくさんありました。
他のタスクで使用しているCIについても触れながら、Xcode Cloudのメリットについてお話しします。
Xcode Cloudを使いこなして、より安価でスムーズな開発を実現しましょう!
Hapticsとは、iPhoneを操作しているときに「ポコッ」と振動するアレです(「ポポポポ」とか「ブーーーン」とかもあります)。
UXを向上させたりアプリのらしさを演出したりできる強力なフィードバックツールですが、その扱い方は公式ドキュメントを軽く読むだけでは理解できないほど難解です。
このトークを聞いて、あなたのアプリをhaptics付きのより魅力的なものにしましょう。
このトークでは以下のことをお話をします:
このトークを聞くと以下のことができるようになります:
Xcode Previewでは静的なUIだけでなく、実際にUIを操作して簡単な動作確認ができます。
Xcode Previewを本格的に使うにはDependency Injection(DI)をする必要がありますが、SwiftUIのViewへのDIはアプリのトップレベルから依存をパスする、所謂バケツリレーが必要で、実装コストが大きくなってしまいます。
一方@Environment(Object)だとバケツリレーせずにDIできますが、コンパイラの力を借りることができず、Xcode Previewへのハードルが上がります。
そこでこのトークでは、Xcode Previewのことを最優先に考え、開発者が「いつでも」「気軽に」「安全に」Xcode Previewを利用できるDI戦略を紹介します。
このトークを通じて、みなさんがもっと気軽にXcode Previewを使い倒せることを目指します。
iOS 16で登場したGridは、VStackやHStackを使用した従来の2次元のUIレイアウト手法に比べ、より柔軟かつ効率的なUIの実装を可能にします。特に異なるデバイスや画面サイズでの表示において力を発揮するでしょう。しかしながら、VStackやHStackを使用した実装で十分対応できているのにあえてGridを使う必要があるのか?既存の実装をわざわざGridに置き換える価値があるのか?という疑問を抱くかもしれません。
本トークでは、Gridを使用して実現できる様々な可能性、それぞれの実装方式におけるメリットとデメリットについて、同じデザインを従来のVStackやHStackの実装とGridを用いた実装で実現し、比較しながら考察していきます。
最近コロナの影響もあって最近話題の家庭菜園ですが、私もベランダで小規模に始めました
しかしいざ挑戦してみると以下の課題に直面しました
①水やりなどの管理が大変
②生育状況が把握しにくい
そんな困った時はテクノロジーで解決するのがエンジニアです!
今回はAppleの株だけでなく、Apple(りんご)の苗木まで買ってしまったiOSエンジニアがSwiftをベースにラズパイを使ったAppleなどの作物の家庭菜園IoT化への取り組みを共有します
具体的には…
①ラズパイを使って、対象の作物の画像を撮影する
②ラズパイで取得したセンサー情報を取得する
③作物への水やりの省力化
④ラズパイからFirebaseにデータを保存する
⑤作物の生育状況をiOSアプリ上から、Chartsなどを使用して、確認できるようにする
ぜひ皆さんもこれを機にiOS開発だけでなく、家庭菜園にもチャレンジしてみましょう!
新規事業を開始する際、技術選定は重要な意思決定の一つとなります。アプリ開発において、選択した技術は事業の成果を大きく左右する可能性があります。この記事では、昨年リリースした「クラシルリワード」のiOSアプリ開発における技術選定の過程を紹介します。
技術選定は新しい技術の採用可能性、チームメンバーのスキルセットなど様々な要因により変動します。今回のトークを通して我々の経験が、皆様の新規事業開発やアプリ開発における技術選定に役立てば幸いです。
OpenAPIを利用することでAPIの設計・ドキュメント化・テストなどを効率的に管理することが可能です。WWDC2023でのswift-openapi-generatorの登場により、iOS開発におけるOpenAPIの活用に新たな可能性が広がりました。このトークでは、実際のプロダクト開発におけるOpenAPIの利用事例として、API ClientのConcurrency化やRequestとResponseの自動生成などを取り上げます。また、swift-openapi-generatorの登場によって、Swift Package Pluginを使用したクライアント側のコード生成の自動化など、開発プロセスの変化についても解説します。
KotlinMultiplatformForMobileの導入によりアプリ開発者はビジネスロジックの差異という問題を乗り越える事が出来ましたが、一方で独自の問題も待ち構えています。
KMM内でerrorがthrowされそれがKMM内で適切にハンドリングされなかった場合にアプリはクラッシュし、おまけにそのクラッシュはkonan::abort()という一つのクラッシュに纏められてレポートされます。
どの処理でクラッシュしたか詳細なStackTraceは提供さておらず、この状態からクラッシュを解消するための道筋を立てる事は困難でしょう。
本セッションではそのような原因不明な闇のクラッシュに対し、起きる前後それぞれで出来ることを考えていきます。
ここ数年でCombineやSwift Concurrencyが登場し、WWDC2023ではObservationの発表もありました。
現在RxSwiftに代わる様々な選択肢があります。
一方で実際のプロダクトへの導入となるとOSバージョンの制約や学習コストなどの課題もあります。
CombineまたはSwift Concurrencyだけで対応する、何かと何かを併用する、そもそもリアクティブプログラミングが必要かなど結局どうすべきか悩んでいる方も多いのではないでしょうか。
このセッションでは、最新のトレンドや今後の展望を踏まえながら選択肢を比較し、スキルマーケット『ココナラ』アプリにおける具体的な導入方針についてお話します。
移行先の選択肢や考え方・テスト設計について具体的な例を学ぶことで、既存プロジェクトにおける移行や新規プロジェクト・個人開発でどの技術を用いるかの判断材料を得られます。
ついにSwift5.9からMacroが使用できるようになります。
SwiftのMacroはCのプリプロセッサマクロのように単純な文字列置換ではなく、ASTを元に任意のコードを展開することができるものです。
Macroの登場により、ボイラーテンプレートは消えさり、あなたのSwiftライフはより快適になること間違いなしでしょう。
そこで本トークでは、Macroを実装するのに必要なSwiftSyntaxの基礎をはじめ、さまざまなMacroの案を考え、実装していきます。
内容:
バグのない安全なプログラムであることを確認する方法の一つに、UnitTestがあります。
適切に構築されたUnitTestがあれば、安全なプログラムであることを何度でも高速に確認することができます。
昨今ではXcode CloudなどのCI/CDツールの導入が容易になり、Unit TestをCI上で実行することでプロダクトの品質を高く保ったまま開発を進めることができます。
UnitTestはiOSエンジニアであれば比較的気軽に始められる一方、UnitTestでどこをテストしなければならないのかなど、テストに関する考え方を抑えておかないと適切にUnitTestが構築できない場合があります。
本セッションでは適切なUnitTestの構築のために必要なテスト戦略と、UnitTestの考え方についてお話し、実装について触れます。
皆様がUnitTestに少しでも興味を持っていただければ幸いです。