要旨:
SwiftUIを既存のUIKitベースのプロジェクトへの導入は容易ではありません。私たちVoicyの開発チームもその困難を体験しました。このセッションでは、我々が直面した問題、解決策、そして導入後の成果について具体的に話します。
内容:
1.VoicyプロジェクトとSwiftUI導入の背景:
2.SwiftUIとUIKitの共存問題
3.カスタマイズの困難性
4.本番で発生した問題を晒す
5.SwiftUIの基本をおさえる
6.UIKitと一緒に生きていく
7.VoicyプロジェクトにおけるSwiftUI導入の成果と学び
ビルド時間は、アプリケーション開発において大きなフラストレーションとなります。
特に大規模なプロジェクトでは、ビルド時間の増加は効率性を損ない、生産性を低下させる可能性があります。
とはいえ大抵のプロジェクトではある程度ビルドの最適化を行なっている現状もあり、大幅に遅くなることはあっても、早くなることは少ないです。
本セッションでは、新規のプロジェクト作成してXcodeのビルド時間をいろいろな方法で遅くしていきます。
具体例を交えてビルド時間の推移を見ていくことで、アンチパターンとしてビルド時間を遅くしない手助けになればと思います。
ネイティブアプリからWeb APIを利用するとき、なんらかの認証・認可の仕組みが必要になることがほとんどです。こんなとき典型的なアイデアは、OAuth 2で認可すること。でもOAuth 2って、10年も前に標準化された規格だし、RFCもたくさんあるし、なんだかとっつきにくいですよね。
ということで本トークでは、OAuth 2がどういうもので、どういう問題を解決し、あるいは解決しないのか、その全てを説明します。特にネイティブアプリにはアプリならではのポイントがあり、正しく実装することでセキュリティリスクを軽減させられます。
トークの内容は、自社のアプリの認証をOAuth 2に移行させるため、認可サーバーとリソースサーバー、自社アプリ向けのSwift SDK、そしてアプリの実装まで手がけた私の経験に基づきます。
最近、自社サービスアプリの認可方式をOAuth 2に置き換えました。
私たちのアプリは、10年以上前から基本的には同じ認証方法を採用していました。単純である一方で、現代のニーズに合わない部分が目立つようになっていました。
サービスプラットフォームチームに所属する私は、サービス基盤機能の改善の一環で、この問題に取り組むことにしました。様々な方法を検討して、OAuth 2による認可を採用すると決め、認可サーバーとリソースサーバー、アプリ向けのSDKを開発し、ついにアプリを改修しました。
本トークでは、私がこのプロジェクトに関して検討し、実装していく過程を、OAuth 2の基本的な知識とともに紹介します。このトークによって、認可方式についてどのようなことに注意するべきか学ぶことができます。
皆さん、ライブラリは日頃から更新していますか?iOSの毎年のアップデートに追従する皆さんであれば、もちろんライブラリや各種エコシステムにも追いつこうとしているはずですよね!?しかし、それは楽な作業ではないのもまた事実。せめて更新を自動的に教えてくれたり、自動的にプルリクエストを作成してテストを回してくれたら……
そんなことを実現してくれるのがMend社の提供するRenovateです!Renovateは数十のパッケージマネージャー・データソース、GitHubやGitLabなど複数のプラットフォームにも対応したライブラリの自動更新ツール・サービスであり、OSSとして開発されています。本LTではRenovateのコントリビューターとして "Valuable contributions" にもノミネートされた筆者が、iOS開発におけるRenovateの設定や活用方法を簡潔にお伝えします。
iOSに限らず、アプリを使っているとエラーはつきものです。
そんなエラーを回復するために、ユーザーに引き続きアプリを使ってほしい一心で一律エラーに対しリトライなどを行なっていると、
ネットワーク通信で絶対に成功しない同じリクエストを送り続け、400エラーや500エラーに対して延々とリトライしてしまうことになります。
そんなErrorですが、protocolとしてRecoverableErrorというものが用意されているのはご存知でしょうか?
これは本来はmacOSなどで使うよう設計されているものですが、iOSをはじめとした他プラットフォームでも使えるものになっています。
本セッションではRecoverableErrorの使い方とiOSでの有効性について検証します。
みなさん、海外旅行は好きですか?対策緩和で少し海外に行きたいと思う方も増えてきたのではないでしょうか。我々はすべての方に海外旅行をより簡単でおトクに選べて安心なサービスを作るために日々「NEWT」を開発・改善し続けています。そこで必ず必要になるのが「パスポート」です。海外旅行においてパスポートは入力を間違えると最悪の場合、出発・入国ができないなどのトラブルに見舞われてしまいます。そんなお客様のトラブルを限りなくゼロに近づけるためにパスポートの読み込みにOCRの導入を行いました。その際に検討した内容や実際に導入・決定している方針などを踏まえて以下の内容をお話しします。
最近、アクセシビリティという言葉をよく聞くようになりましたが、実際に導入、考慮をしているアプリはまだまだ少ない現状です。
身近なもので言うと、文字サイズの対応もアクセシビリティの一つです。
※この概要でのアクセシビリティとは、「身体の状態や能力の違いによらず様々な利用者がアプリやサービスを円滑に利用できること」と定義します。
アクセシビリティを考慮することによるメリットは多くあります。 (例) 利用できる人が増える...
今回のトークで話す内容
このトークの後には、明日から導入できるような話をしますので、アクセシビリティ考慮をしたいと思っている方の力になれたらなと思います!
FlutterエンジニアをやっていてSwiftにも挑戦してみたい! iOSエンジニアをやっていてFlutterに挑戦してみたい!ってことありませんか?
今回の登壇で話す内容
今回の登壇は、現役大学生が長期インターンなどの実際の現場で経験した話に基づいてお話しさせていただきます。
FlutterからiOSエンジニア、iOSからFlutterエンジニアに移行する際に、不安や障壁の解消をしたいと思います!!
Core Dataを用いると、背後のデータベース(SQLite)の知識がなくとも、簡単にデータの永続化を行うことができます。しかし、SQLiteの基本知識があればより高性能で安定したアプリを構築できるでしょう。今後、他のSQLiteベースのデータフレームワークを使用する際にも、これらの知識は非常に役立つはずです。
以下のようなトピックに興味がある方は、ぜひ一緒に探求しましょう!
残りはトークで!
位置情報は現代のアプリケーションで不可欠な要素の一つであり、Apple Watchにおいても例外ではありません。しかし、watchOSにおける位置情報の取得はバッテリーの消費という課題に直面します。そのため、watchOSとMapKitを連携させ、適切な頻度で精度良く位置情報を取得する一方で、バッテリーを極力消費させない方法が求められます。
本トークでは、位置情報収集の基本、MapKitの詳細な機能、watchOSの消費電力管理の仕組み、そしてこれらが相互にどのように影響を及ぼすか、バッテリー消費最小化と取得精度向上のテクニックについて解説します。位置情報の取得精度とバッテリー消費は一見トレードオフの関係にあるようにみえますが、watchOSの仕様を理解し、MapKitの使用方法を最適化することで、この二つのバランスを適切に維持することを目指します。
MapKitとGoogle Maps SDKは、地図機能を提供するアプリケーションにとって重要なフレームワークです。それぞれに独特な機能やパフォーマンスがあり、使用状況や要件によって最適な選択は異なります。
本トークでは、これら二つのフレームワークを徹底的に比較し、それぞれの独自性、長所、短所、そして適用シーンの詳細や実際のアプリケーション開発での具体的な事例を解説します。フレームワーク選択の際に影響を及ぼす可能性のある要素、例えばアプリのユーザーインターフェース、パフォーマンス要件、開発の複雑さ、コストなどを考慮することで、アプリケーションの要件と目標に最適なフレームワークの選択をサポートします。
このトークを通じて、フレームワーク選択のプロセスをより理解し、現時点での最適な選択を提示します。
SwiftUIは素晴らしいと思いますが、実際の開発現場では、Storyboard,InterfaceBuilder,UIKitを用いての開発の方が、生産性を上げると感じています。
SwiftUIはわかりやすく、コードでの構築になりますので、実装のしやすさを考慮して設計されており、難易度だけでいうと、UIKitを用いて、コードでの実装をするよりは簡易であると感じます、また読みやすさでもSwiftUIでの実装は優れておりますが、やはりコーディングを行うという事は避けられません。
Storyboardでしたら、D&D💪🏿でマウスでレイアウトを構築できます。
また、レイアウトも、Autolayoutを用いてマウスで構築できます。
その点を鑑みますと、読んで構築するUIより、見て構築するUIの方が楽ではないでしょうか?
Flutterを使っていて、UIの構築する際に、SwiftUIぽい書き方をしたいと思いませんか?
最近の海外でFlutterをSwiftUIぽい書き方をするのが流行っています。その導入方法からメリット・デメリットを解説していきたいと思います。
今回はSwiftUI経験者、FlutterでSwiftUIぽい書き方を導入してみたい人向けの内容です。
FlutterでSwiftUIぽい書き方をするメリット
このトークがSwiftUIの障壁、Flutterの障壁をなくすことができたら幸いです。
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付きのより魅力的なものにしましょう。
このトークでは以下のことをお話をします:
このトークを聞くと以下のことができるようになります:
Hapticsとは、iPhoneを操作しているときに「ポコッ」と振動するアレです(「ポポポポ」とか「ブーーーン」とかもあります)。
UXを向上させたりアプリのらしさを演出したりできる強力なフィードバックツールですが、その扱い方は公式ドキュメントを軽く読むだけでは理解できないほど難解です。
このトークを聞いて、あなたのアプリをhaptics付きのより魅力的なものにしましょう。
このトークでは以下のことをお話をします:
このトークを聞くと以下のことができるようになります:
昨年のiOSDC JapanではARKit 6のLocation Anchorをはじめとする“Visual Positioning Service/System”のVPSの世界を紹介しました。
その後、Geospatial Creatorが登場したことにより、VPSを生かしたコンテンツ作りがより身近に、よりお手軽になりました!
文字通り街中をキャンバスとして、現実世界とバーチャルな世界を統合できます!
VPSの最新動向にあわせて、Geospatial Creatorの基礎からVPSコンテンツの具体的な制作方法までお伝えします。百聞は一“体験”にしかずなので、iOSDC Japanの会期中は、実際に会場付近などでGeospatial Creatorを使ったVPSコンテンツをお試しいただけます!
iOSDC Japan 2020、2021で発表してきた『iOSではじめるWebAR』シリーズの最新版です!
先日のWWDC23でVision Proが発表されましたが、あわせてSafariのレンダリングエンジンであるWebKitがWebXR Device APIに対応することも公開情報として発表されました。
これまでSafariがWebXR Device APIへの対応を明言してこなかったことも、3Dモデルを表示するAR Quick Lookやmodel要素もすべてはこのVision Proを見据えてのものだったと今ならわかります。
Safariが歩んできたWebXRのこれまでと現状、そしてきたるべきSpatial Webの世界を見据え、想定されるWebXRのこれからをお伝えします。
Xcode Previewでは静的なUIだけでなく、実際にUIを操作して簡単な動作確認ができます。
Xcode Previewを本格的に使うにはDependency Injection(DI)をする必要がありますが、SwiftUIのViewへのDIはアプリのトップレベルから依存をパスする、所謂バケツリレーが必要で、実装コストが大きくなってしまいます。
一方@Environment(Object)だとバケツリレーせずにDIできますが、コンパイラの力を借りることができず、Xcode Previewへのハードルが上がります。
そこでこのトークでは、Xcode Previewのことを最優先に考え、開発者が「いつでも」「気軽に」「安全に」Xcode Previewを利用できるDI戦略を紹介します。
このトークを通じて、みなさんがもっと気軽にXcode Previewを使い倒せることを目指します。