iOSアプリ開発者の多くが、あらゆる問題に対する解決策としてOSSライブラリに頼りがちですが、実はFoundation 等の標準APIだけで十分なケースも多いことをご存知でしょうか?
本発表では、44個ものOSSライブラリに依存していたアプリが、いかにしてその数を15個まで削減し、そのプロセスでiOSの標準APIの力を再発見したかを具体的に解説します。
具体的な事例とともに、標準APIで十分に解決可能だった問題や、ライブラリ削減によるアプリのパフォーマン向上について共有します。
さらに、全てのライブラリを排除すべきではないことも強調し、どのライブラリを選択し続け、どのライブラリを削除したのかを明示します。
先日、Firebase Dynamic Links (以下 FDL) が将来的にサービス終了となることがアナウンスされました。 (https://firebase.google.com/support/dynamic-links-faq?hl=ja)
FDLはアプリ流入のための専用のリンクを無料で発行でき、アプリのインストール状況に依らずユーザーをアプリへと連れてくることのできる強力な武器だったわけですが、FDLが無くなると今までFDLを用いて実現していたことはどうすればよいのでしょうか。
このセッションではFDLのサービス終了に備えて知っておきたい、以下のトピックについて紹介する予定です。
・FDLによって実現できていたこと
・アプリ未インストール時にストアを開く挙動を実現する方法
・アプリの初回起動後に特定画面を開く挙動を実現する方法
・FDLのサービス終了への備えと対策
iOS16で発表されたロック画面ウィジェットは、アプリへのアクセスを便利にし、ユーザの定着率向上の可能性を秘めています。しかし、未発達であることから価値や利益の伝え方が難しく、社内アプリへの導入も順調ではありませんでした。導入事例が少なく有効性を示せないため、チームメンバーの納得を得るのは困難です。
これらの課題に対して、目的の方向転換や、WEARアプリに適したアイディアの提案など対策を講じます。このトークでは、ロック画面ウィジェットの技術調査から実装、提案、そしてリリースまでの過程で直面した3つの壁とその対処法をご紹介します。
WWDC23でWindowsゲームをMac向けに移植するためのツールキット「Game Porting Toolkit」を発表しました。
このGame Porting Toolkitを使ってWindowsの人気ゲームをmacOS上で動作させたという報告が続々と寄せられています。
本気でゲーム領域に踏み込んできたなと感じてワクワクして夢中で取り込みました。
このトークでは皆さんが疑問に思う内容をキャッチアップして、どこにハマり、どのように手探りで調べたかということをお話させていただきます。
・英語に自信がないけど、どのように情報入手する
・どのような技術で成り立っているのか?
・開発環境構築は簡単なのか?
・Windowsゲームのパフォーマンスはいかに?!
・日本語環境でも問題ない?
・ゲーム以外Windowsアプリも動作する?
最近のiOSアプリ開発では、UIKitとSwiftUIを併用するパターンが増えています。従来のUIKitをベースにしつつ部分的にSwiftUIを使うことで、開発効率の良さなどの恩恵を得るという考え方です。
しかし、併用のしかたに注意が必要な場合があります。そのひとつがUICollectionViewのセルです。データ表示のパフォーマンス向上のため、セルには再利用の仕組みがあります。ただ、その仕組みの影響で、セルのUIをSwiftUIで実装する場合には注意が必要になってしまいます。
iOS 16で、UIHostingConfigurationが導入されました。これを利用するとセルの実装にSwiftUIが使えます。さらに、ObservableObjectを使ってデータとセルとを直接バインディングできるため、セルをUIKitで実装する場合よりも便利になります。本トークではこれらを解説します。
長年開発しているアプリは、さまざまな問題により開発速度が低下していきます。
日々の開発によりコードの複雑性は増していきます。さらにドメイン知識のあるメンバーの交代、世の中の開発トレンドの変化、言語の進化など、取り巻く環境の変化にも対処しなければ中長期的にアプリを通して価値提供することが困難となります。
本トークでは積み重なり続ける問題の圧に対して、リアーキテクトを行ったチームの話をします。
モダンな技術を取り込むためのモジュール分割、議論を繰り返さないためのADRの採用、新機能開発とリアーキテクトの並行開発方法等
時系列に何が起きたのかストーリー形式でお伝えします。
本トークを通じて、つみ重なる問題の対処方法が分からなかったチームが、リアーキテクトを通してどう変わったのか擬似体験することができます。
これからリアーキテクトを検討している方が未来を想像できるような内容を提供します。
iOS 14でUICollectionViewのリスト形式表示が追加されました。これはCompositional Layoutを使ったもので、UITableViewとほぼ同じ画面を実装することが可能であり、さらに柔軟性や拡張性に優れています。現在はAppleもUITableViewよりはUICollectionViewを使う方を推奨しています。本セッションでは、UITableViewで実装されているコードをUICollectionViewにリファクタリングした際の経験から学んだことについてお話しします。
かつてnoteアプリにはソーシャル連携がありませんでした。メールアドレスとパスワードによる認証のみ。しかしこの半年で、Apple/Google/twitter連携を追加しました。本セッションでは、その経験を元にして、下記の内容を話します。
今年2023年でついに10周年を迎えるwatchOS。そんな年に私は個人開発でカウンターアプリWristCounterをリリースしました。その経験を元に、watchOS開発の最新事情とハマりどころについて話します。
2021年に登場したSwift Concurrency。noteでは2023年に入り、本格的に導入を進めました。
「ゆーてasync/awaitつけるだけでしょ? 余裕、余裕」
そんなことを思いながらSwift Concurrency化したところ、全く動きませんでした……本セッションではnoteアプリへのSwift Concurrency導入の経験から、ベストプラクティスを探っていきます。
AndroidエンジニアがiOS開発に挑戦する際、一つの大きな障害となるのがIDE(統合開発環境)の違いです。慣れ親しんだIDEからの移行は開発者にとって1つの挑戦となります。
本セッションでは、AndroidエンジニアからiOS開発に転向した私がキャッチアップしていくなかで学んだことを、IDEに絞って解説します。
Androidエンジニアに限らずiOSアプリ開発を新たに始めたい方に向けて、iOSアプリ開発のはじめの一歩を力強く、後押しします。
アウトプットはどんなエンジニアにとっても重要で、学びや成長の機会を生み出すものです。
私は今年2月にCode Polarisというコミュニティで技術同人誌の執筆を呼びかけ、合同誌を制作しました。12人で書き上げた技術書の頒布数は185部にも達する大成功となりました。
はじめて出会うメンバーが大半の中で大人数プロジェクトを成功へと導いた裏側を紹介します。
本トークにより「もっとアウトプットをしたい」「技術コミュニティに参加してみたい」と思っていただけたら嬉しいです。
トピック
・執筆者を募る説明会の実施
・自信をつける投票制度
・GitHub Projectsを用いたプロジェクト管理
・GitHub Codespacesによる執筆環境の統一
・テイストを揃える最初の1章
・モチベーションを保つ細かな締切設定
・大量のレビューに対応するルールの構築
・やり抜くメンタルの持ち方
・得られたもの
昨年の「正規表現って結局何なのさ?〜エンジニアのためのコンピューターサイエンス入門〜」では主に理論の面から正規表現が何なのか話をさせて頂きました。
対して今年は実際に正規表現エンジンの実装に関する話をします。
正規表現エンジンの実装ではオートマトン型と仮想マシン型が主流です。
前者は正規表現から決定性有限オートマトンを、後者は、正規表現をバイトコードにコンパイルし仮想マシンを作成する方法です。
いずれの方法でも正規表現からオートマトンや仮想マシンを生成しなければならず、その実装はそれなりに大変です。
しかし正規表現が文字列にマッチするかどうかの判定であれば正規表現を"微分"するという方法があるのです。
本セッションではその原理と簡易的な実装を紹介します。
またオートマトン型、VM型との比較も可能な限りお伝えします。
Swift UIの登場によって、私たちはデータの画面反映に関するロジックの管理から解放されました。
これに加え、複数のAPI結果を画面ごとのStateに変換するまでの処理を、サーバーサイドにまるっと移譲することで、
アプリは最適なUXの提供に専念できるだけでなく、ストア審査やリリースから独立した変更が可能になります。
本トークでは、AirbnbやLyftなどの海外企業で導入されているServer-Driven UI アーキテクチャを、
タップルでSwift UIとBackends for Frontends(BFF)を活用して実現した事例や具体的な運用についてお話しし、
ネイティブアプリの複雑性や開発生産性の向上の悩み解決にむけた新しい手段を紹介します。
タクシーアプリ『GO』では、ライブラリを CocoaPods + プレビルドで管理し、プロジェクトはマルチモジュールを XcodeGen で管理してきました。
SwiftPM が Xcode と統合され、機能追加により様々な場面で利用できるようになりました。
いざライブラリの管理方法やプロジェクト構成を変更しようと試みたものの、普段の開発と並行しながらの移行は非常に困難です。
どうやって時間を確保し、どんな事前準備をしたのか。移行作業で何を行い、どんな課題に遭遇したのかをご紹介したいと思います。
iOSアプリ開発のCI / CD 運用における共通の課題として速度があると思います。
しかし、ひとえに速度といってもビルド時間から、環境構築の速度、不具合に早く気づく工夫など
取り組むべきテーマはそれぞれです。
本トークではそんな様々な「速さ」を追い求めてタップル iOSチームが取り組んできたTipsについてお話しし、
皆さんが明日から改善に取り組めるようになることを目指します。
WWDC21で発表されたApple公式CIサービスXcodeCloudがついに今年から正式サービスを開始しました。
すでに使っている人もいれば、高い関心を寄せていてもまだ使っていない人もいるのではないでしょうか?
既存のプロジェクトにXcodeCloudを入れることははすごく簡単です。
ただしバージョンの管理・様々なビルドツールの利用・Crashlyticsを運用しているプロジェクトでは、考慮しないといけない事項が多いです。
ベータ版の頃から社内のアプリと個人アプリで1年ほど運用し、その過程で学んだことやおすすめの設定、TIPSを紹介します。
今回のトークでは
上記のテーマについてお伝えできればと思っています。
本トークでは、没入型体験の次の革命的なステップであるAppleのvisionOSについて話します。
まず、スマートフォンの世界的な普及に伴うVR技術の進化を比較しながら、visionOSがiOSデベロッパーに提供する様々な可能性に触れ、必要なアプリケーションのエコシステム育成に注目し、他の有名なVR製品の開発状況も徹底的に分析、一般ユーザーへの普及と応用可能性について調査した結果を発表します。
さらに、1年後の実機端末の販売より先行して7月にリリースされるvisionOSのSDKを1か月間試し、簡単なiOSアプリケーションの事例を通して、自分が感じたvisionOSに取り組む際のベストプラクティスや、それにおけるSwiftUIでの基本的な作成方法、加えてMR・3D空間コンテンツ制作を含む開発体験を話します。
コインチェックでは昨年9月にリリースされたiOS 16で追加された機能である Lock Screen Widget を実装した新アプリをiOS 16のリリースの2日後にリリースしました。
新OSのリリースに合わせて新機能を作るというのは初体験で、リリースまでのスケジュール感、エンジニア以外触りにくい新しい機能をデザイナーやアナリストなどにどのように理解してもらうかなど悩みも多く、周りの協力を得ながら手探りで進めていました。
このトークでは新しいOSの機能を早めにアプリどんなことをやって、どんなふうに進めたのかということを以下のような観点からお話をさせていただきます
弊社のモバイル開発チームは、2020年に組織化された若手中心の新しいチームです。それゆえ、チームでは様々な解決すべき課題があります。中でも「技術力向上」「開発効率化」はチームの中でも優先度が高い課題です。背景には、開発中のアプリでは明確なアーキテクチャが存在せず、機能拡張がしにくいといった課題があったため、開発の生産性がなかなか伸ばしにくい状況でした。これらの課題に対するアプローチとして「アプリアーキテクチャの明文化」を行い、実装方針の整備を進めることで、生産性の向上にアプローチすることができ、生産性を20%向上させることができました。本セッションでは、アーキテクチャガイドラインとして具体的に明文化した内容と、弊社で採用したオブジェクト指向型のアーキテクチャを中心に生産性改善のノウハウを紹介したいと思います。