Swift Packageは、依存配布の最適な手法です。
しかし、Xcodeのパッケージ管理では、キャッシュが揮発しやすく、膨大な依存関係を持つプロジェクトではビルド速度の維持が難しいです。
パッケージの利便性と、速度を両立する手法はないでしょうか
そこで、新しいビルドツールScipio (https://github.com/giginet/Scipio)を使って、パッケージを効率的にキャッシュする手法と、実際に大規模プロジェクトに導入するケーススタディをお伝えします。
このトークでは、以下についてお話しします
SwiftPMの深い部分に触れてみましょう!
弊社のモバイル開発チームは、2020年に組織化された若手中心の新しいチームです。それゆえ、チームでは様々な解決すべき課題があります。中でも「技術力向上」「開発効率化」はチームの中でも優先度が高い課題です。背景には、開発中のアプリでは明確なアーキテクチャが存在せず、機能拡張がしにくいといった課題があったため、開発の生産性がなかなか伸ばしにくい状況でした。これらの課題に対するアプローチとして「アプリアーキテクチャの明文化」を行い、実装方針の整備を進めることで、生産性の向上にアプローチすることができ、生産性を20%向上させることができました。本セッションでは、アーキテクチャガイドラインとして具体的に明文化した内容と、弊社で採用したオブジェクト指向型のアーキテクチャを中心に生産性改善のノウハウを紹介したいと思います。
昨今、iOSの標準アプリではUIKitで提供されていないUIコンポーネントが多く使われ、それらを再現することは難しいと言えます。
さらにSwiftUIは実際のビューを隠してしまうため、我々は与えられたUIに囚われています。
本トークでは、美しいUIを再現するために必要なリバースエンジニアリングの基礎知識について解説します。
まず、画面から分かることについて説明し、UIの階層構造を覗く方法を紹介します。
また、プライベートAPIを使うことでUIの内部情報を取得する方法についても触れます。
これらのテクニックをマスターすることで、美しいUIを再現するだけでなく、UIの設計思想や技術的な側面を理解することができます。
より多くのユーザーがアプリを利用できるようにアクセシビリティ機能の実装は必須になってきてます。
アクセシビリティ開発を特定のユーザーのための手間がかかる開発ではなく、より便利になるための通常のUI開発の延長として考えて進めていくことにしましょう。
そのためには開発においてより効率的な開発方法を導入してモチベーションをあげる必要があると思います。
まずAccessibility Inspetorを利用してアクセシビリティ適用の現状を動的に把握して改善していく方法から
SnapshotテストをベースにしているAccessibilitySnapshotを利用してアクセシビリティ要素を可視化することでより効果的な実装・テストが方法であることを話します。
最後にWWDC2023に新しく公開されたXCUIApplicationを使ってアクセシビリティ検証機能を利用する方法をお見せします。
弊社のウェブサービスでは ChatGPT の API が公開されたタイミングでテスト的に AI アシスタント機能の実装を進めていました
これを全ユーザーに適用するタイミングで、アプリでも公開しようということになりました。
AI アシスタント機能の特徴としては AI が考えるように、ストリーミングで文字列が表示されることが大きいです。
ここでは上記を含めてアプリでどのように UX を実現するかを考えながら実装を進めたかをお話しします。
ノートアプリは2022年12月にリブランディングを実施しました。
わかりやすいものだとアイコンがガラッと変わったのですが、それに合わせて内部で利用している色を全体的に調整しました。
デザイナー・フロントエンドではデザインシステムを導入し、ウェブページに段階的に適用して行きましたが、アプリでもその追従を始めました。
まだ、途中段階ではありますが、ここでは既存のシステムがどうなっていて、どのように変更に追従したかをお話しします。
皆さんが開発しているプロジェクトではアプリのビルド時間にどれぐらい時間がかかっていますか?
最近始めたプロジェクトでは数秒で終わるかもしれませんが、何年も運営しているプロジェクトでは何分もビルドに時間がかかるなんてこともざらにあります。
ビルドに時間がかかるということは、それだけ開発をすることための時間が削られてしまうということです。
弊社のアプリのプロジェクトではクリーンビルド時に110秒ほどかかっていましたが、これを60秒以内に縮めることができました。
ここでは時間がかかっている箇所を特定し、ビルド時間を縮めるための考え方とその手法についてお話します。
iOS8から登場したUITraitCollectionは、iOSアプリケーションのユーザーインターフェースのレイアウトや表示に関する情報を含むオブジェクトです。
例えば、iPhoneの画面サイズが変更された場合、UITraitCollectionは自動的に更新され、アプリケーションは新しい画面サイズに応じたレイアウトを適用することができます。
これからのアプリ開発で重要になるUITraitCollectionですが、まだまだ活用されているアプリが少ない印象があります。
このトークではUITraitCollectionの概念を振り返り、SwiftUIとの関係性や具体的な利用ケースを紹介します。
また、iOS17から追加されたCustom UITraitCollectionを活用して出来ることを解説します。
Swift Package Manager(SPM)ではC++ライブラリもパッケージとして管理することができます。また、WWDC23ではC++ interoperabilityが紹介されSwiftからC++を利用することが一層簡単になりました。
一方で、C++ライブラリを利用したいシーンの多くではライブラリは巨大であることが多いです。実運用しているプロジェクトでそうしたライブラリを運用するにあたってSPM管理に置き換えたりするには多くのハードルあります。
本稿では、まず実際のC++ライブラリをSPM管理下に置く方法を解説します。また、外部ファイルを読み込んで設定に反映させることでPackage.swiftの肥大化を防ぐ方法を示します。最後に、これら以外で注意が必要なXCodeの設定等を示すことでC++ライブラリのSwiftプロジェクトでの運用時の問題を解決します。
iOS15以前では、画面の向きを制御するために shouldAutorotate
を設定したりUIDevice.current.setValue
を使用して強制的に値をセットする方法が取られていました。iOS16では shouldAutorotate
が非推奨になり、
公式から setNeedsUpdateOfSupportedInterfaceOrientations
という新しいメソッドが登場しました。本発表では、以下のような注意すべき点・変更が必要な点を主に解説した上で、このメソッドを使って新しい画面の向き操作について紹介します。
Info.plist
の書き方の違い現在、iOS1人・Android2人の少数チームで新規動画配信アプリを開発しています。
技術選定やアプリのアーキテクチャ設計に際しての工夫点やハマり所、そしてTCA, KMMを活用した開発Tipsについてお話します。
これから新規アプリ開発を予定している方々にとって、技術選定やアーキテクチャ設計の参考としていただければ幸いです。
キーワード:
・iOS Deployment Target 16.0+での新規iOSアプリ開発
・swift-composable-architecture (TCA)
・Kotlin Multiplatform Mobile (KMM)
・kotlin-inject
画像ファイルや多言語対応などのリソース管理を簡潔にするツールとしてR.swiftやSwiftGenを使っているプロジェクトは多いと思います。pixivアプリではR.swiftを使用していましたが、設定の柔軟さやSPM対応からSwiftGenへと移行しました。また、リリース時のリスクや検証のリスク、レビュアーのレビューコストを極力減らすことを目標に、R.swiftとSwiftGenの併用期間を設けながら段階的に移行を行いました。本発表では、分割されたxcassetsファイルの扱いやxibの対応などSwiftGenに移行するにあたって躓いた点、リスクを極力減らすために併用期間を設けて部分的にリリースをした運用方法などを紹介します。
SwiftUIの導入と既存の不完全なMVVM改修による課題を解決するため、新しいアーキテクチャとしてSVVSを開発しました。
SVVSはStore、View、ViewStateから構成され、複雑な依存関係と大規模なリファクタリングの問題を解決する設計として採用しました。SVVSはSingle Source of Truthを考慮してMVVMにStoreを追加し、現代的なiOSアプリ開発においてシンプルでオーソドックスな構成を実現します。特にSwiftUIとの相性が良く、すぐに取り入れることができ、学習コストも低く、サードパーティのライブラリやフレームワークに依存しない点が魅力です。本トークでは、SVVSを他のアーキテクチャやフレームワークと比較しながら、実際に業務で取り入れた実例を交えて紹介していきます。
WWDC23ではDesign with SwiftUIというセッションが公開されAppleがデザイナーのSwiftUI習得を公式に推奨するようになり、またvisionOSの登場によりSwiftUI自体の使い道も広がりました。
もちろん、デザイナーがSwiftUIを書けるようになることは協業という面でも理想的な世界ですが、一方でそれはエンジニアの役割がなくなるということではありません。
デザイナーのデザインをエンジニアが実装するにしろ、デザイナーと同じSwiftUIのコードベースを触るにしろ、今後よりエンジニアのデザイン理解度の重要性は高まってくると思います。
そこで本トークではSwiftUIを通してデザインの基本的な知識や考え方、エンジニアが知っておくべきことなどを紹介することで、エンジニアとデザイナーの協業をスムーズにし、より高品質なアプリを開発できるようになることを目指します。
XcodeはiOS開発の標準IDEですが、ことコードの編集においてはテキストオブジェクトやドットリピート等のコード編集に特化した強力な機能を備えたVimを使いたい場面が多々あります。
しかし、アプリの開発ではXcodeが備えるコード補完や定義元ジャンプなどのIDEの機能が必要です。このコード編集の際に便利なIDEの機能はLSPと呼ばれる仕様に沿う事で他のエディタでも使えるようになります。iOS開発に使うSwiftも例外ではなく、SourceKit-LSPと呼ばれるLSPの実装があります。
これらをふまえ、今回の発表ではNeovim(Vim)からSourceKit-LSPを使用して、Swiftを快適に書く方法を紹介したいと思います。LSPの概要を把握しつつVimを使用する事で、両方の良さを享受できるようにしましょう。
iOSアプリで提供しているサービスの内容や機能を、法改正施行のタイミングとともにパッと切り替える必要があったとしたら…
そんなことを考えたことはありますか?私たちのサービスではそれが必要となりました。
施行前後でサービスの利用条件は変わります。どう変わったのかユーザにわかりやすく伝えて、安心安全にサービスを利用してもらいたい。混乱を少なくしたい。サービスも可能な限り止めたくない。
そんな要求や想いを実現するために、考えたことや計画し実行したことをお話しします。
SwiftUIを利用したアプリが増えている中、開発中に以下のように思ったことがある方は多いのではないでしょうか?
TCAは状態管理のためのツールと捉えられがちですが、TCAを正しく理解して利用すれば、SwiftUIを使った開発にありがちだと思われる上記のような課題を意識することなく、機能開発に集中できます。
本トークでは、課題ごとにTCAを一つの解決策として紹介することで、明日からTCAの導入を検討できる状態になることを目指します。
自分や同僚の作ったメソッド、何が起きるか分かりづらい…コードが読みにくい…そんな経験ありませんか?
本トークでは、SwiftのAPI Design Guidelines(ADG)が示すAPIの理想像を整理したうえで、実際のコード例をもとに
を繰り返し、API設計での大事な観点をまとめます。
ADGに沿ってAPIを改善する過程とその効果を体感し、今後のコーディングやコードレビューにご活用ください。
メソッド名から引数ラベル、返り値型に至るまで、APIの構成要素すべてを洗練させ、簡潔明瞭で美しいAPIをデザインしましょう!
こんな方におすすめ:
やらないこと:
WWDC23でApple Vision Proが発表されました。Vision Proでは手の動きや音声でUIを魔法のように操作していました。しかし高精度なカメラやセンサーがなくとも手元のMacと標準フレームワークだけでも同様のことは可能です。
皆さんもご存知の通り、Swiftには画像認識、音声認識などが簡単に行えるフレームワークが充実しています。これらを使いユーザの行動を認識しそれに応じてCGEventを発生させることで「非接触でMacを操作する」といったことが実現できます。
本LTでは以下のようなフレームワークを使いMacを非接触で操作する技術を実際のデモを交えながら紹介します。今日から皆さんのMacも未来に近づくこと間違いなしです。
・Visionフレームワーク
・Speechフレームワーク
・Core Motionフレームワーク
フリマ・スマホ決済事業を提供するメルカリは、サービスローンチから今年で10周年を迎えることができました。
この10年間、Objective-C での開発から始まり、Swift での Re-architecture、 SwiftUI での作り直しと、数年に一度、そのタイミングでのメルカリにとってベストであろう技術選定を行い、刷新を行ってきました。UI/UXにおいても、下タブ化、 Design System、UXモニタリングシステムの構築など、メルカリはより使いやすいサービスを提供するため、技術の進化に Go Bold に挑戦を続けています。
このトークでは、メルカリのiOS開発10年の歩みを様々な観点から振り返り、どのような課題に向き合い、技術的チャレンジを行ってきたかをご紹介します。