iOS-factor は高品質の Web サービスを作成するための方法論である twelve-factor app framework にインスパイアされました。iOS-factor は同じ構造とよく似た原則を使い、それらは iOS アプリ開発プロセスに書き換えて適用されています。

背景

ここ10年で iOS アプリ開発のプロセスは劇的に変わりました。

  • 1つのデバイスのサポートから iOS 対応の iPhone や iPad など多種多様なデバイスと tvOS や watchOS のようなさまざまなプラットフォームのサポートへ
  • git のサブモジュールとしての手動追加から依存関係マネージャーの利用へ
  • 大部分がローカルのデバイス上で実行される iOS アプリからバックエンドサービスに大きく依存するアプリへ
  • iOS アプリのレビューが2週間以上から1日以内へ
  • iTunes を使った iPhone へのインストールから公式の TestFlight を通じてのアプリ配布へ
  • iTunes Connect に言語ごとに5個のスクリーンショットをアップロードから、言語ごとに110個のスクリーンショットだけでなくアプリプレビューもアップロードへ
  • 単純な Objective-C/C++ アプリから、JavaScript を含むさまざまな言語の組み合わせへ
  • いつ何かが準備ができているとしてもゆっくりしたリリースから、毎週のリリースへ
  • フルリリースから A/B テスト、ゆるやかなロールアウト、自動的なあと戻り検出へ

iOS-factor とは何か?

iOS-factor とは2018年5月に始まった実験的なプロジェクトです。高品質の iOS アプリ構築するためのベストプラクティス集を提供することを目指しています。それぞれのトピックは iOS アプリ開発プロセスのカテゴリがあるべき理想的な状態を表す factor でカバーされています。

(Xcode が macOS 上でしか動作しないように)いくつかの制約のためにすべてを満たすことはできません。このプロジェクトは、私たちが直面している課題のいくつかを解決するためのベストな最新のアプローチだけでなく目標を定義することを目指しています。

iOS-factor は大局的な iOS アプリの開発プロセスやアーキテクチャーの意思決定がすべてであり、言語特有の課題は扱いません。

これは iOS デベロッパーコミュニティによってメンテナンスされている生きたプロジェクトです。GitHub で完全なソースを手に入れて、既存のページを更新したり新しいファクターを追加することができます。


The iOS factors

I. Dependencies

明示的に依存関係を宣言して分離する

II. Config

コードに設定を書かない、デフォルト設定で出荷、OTA アップデートを許可する

III. Dev/prod parity

開発、テスト、プロダクションはできるだけ同じにする

IV. Deployment

デプロイを自動化すればどのマシンからでもリリースできる

V. Prefer local over remote

できるだけバックエンドなしで動作するように iOS アプリをスマートに保つ

VI. Backwards compatible APIs

すべてのユーザーが最新バージョンにアップデートすることを前提としない

VII. App versioning

一貫性を保つためにアプリのビルド番号とバージョン番号を自動採番する

VIII. Rollbacks

Reverting a build that causes issues

IX. Persistence of data

データを保存する際は Apple のガイドラインに従う