採択
2021/09/19 14:50〜
Track C
レギュラートーク(40分)

Swift Package中心のプロジェクト構成とその実践

d_date Daiki Matsudate

Swift Package Manager(以下Swift PM)はXcodeに統合された公式のパッケージマネージャーです。
CocoaPodsやCarthageのように、他の方が作ったライブラリを導入・管理することができます。

しかし、Swift PMが管轄するのはライブラリに留まりません。
Xcodeと組み合わせることにより、アプリのプロジェクト構成を柔軟に変更することができます。
特別なツールを利用することはありません。これまで開発者を苦しめていたXcodeプロジェクトファイルのコンフリクトを解消するだけでなく、
マルチモジュールにおけるFrameworkの参照やリンクといった、手動で設定するには面倒な項目も簡単にセットアップできます。

このトークでは、まず、Swift PMをまだ利用したことがない方に向けてSwift PMの基本的な事柄をお話しし、Swift PMでのライブラリ管理をお手元のプロジェクトで利用できるようにします。
次に、Swift PMをアプリ開発のプロジェクトに導入することで、Assetsやローカライズファイルを含むほとんどのソースコードの管理をSwift Packageに移管する方法をお話しし、Xcode Projectの責務を軽くします。
そうして身軽になったXcode Projectを、今度は複数作ってみて、マルチプロジェクト・マルチモジュールな構成を実現します。
この構成により得られる素敵な特典と移行のやり方についてもお話しし、明日からみなさんのプロジェクト構成をアップデートしてもらうことを目指します。

採択
2021/09/19 14:50〜
Track D
レギュラートーク(40分)

オフライン編集もできる複雑なデータ構造を端末間で同期するために

496_ rokuroku

皆さんも開発をしていて端末間のデータ同期システムが必要になったことはありませんか。
この発表ではオフライン編集可能なテキストエディタのバックエンドとして作った、テキストファイル同期システムの設計やその構成、開発環境についてお話しします。
同期システムはiOS / Android / WebだけではなくWindowsなどのデスクトップOSへの展開も見据え、iCloudに依らない実装が必要でした。また作成するアプリの特性上、同期の仕組みをユーザーに十分説明できるように同期の仕組みを全て実装することにしました。

  • サーバー構成と開発環境(今回はAzure Functionsを中心に設計したのでその話)
  • 採用したシステムとFirestoreを使った場合の比較
  • 複雑な系において、アプリのCIにもDockerなどでサーバーを立てるメリット
  • オフライン編集を前提とした同期のためのデータベース設計のコツ(ローカル・サーバー両方)
  • iOSのファイルアプリに同期対象のファイルを露出させる方法などプラットフォーム固有の話