Expoプロジェクト転送なんて怖くない——手順をスクショ付きで解説

先日、Expoのプロジェクト3つを別のアカウントへ転送(移行)する機会がありました。
公式ドキュメントにはさらっと書いてあるだけです。やってみた系の記事も全然なくて転送前にすごく不安だったので、備忘録として残しておきます。

※対象はExpoプロジェクトの転送のみです。 Apple DeveloperやGoogle Play Consoleのアカウント移行はやっていないので扱いません

## 転送の全体像

先にざっくりとした全体像です。

  • アカウントの作成と招待
  • Expoの画面から転送
  • アプリのコードの書き換え
  • 確認

公式ドキュメント:App transfers - Expo Documentation

## 下準備

まずはアカウントの準備について。

### 転送元アカウントでの準備

まず、転送元アカウントの種類を確認します。

MembersCreate a new organizationみたいのが表示されてたら「個人アカウント」、表示されなければ「組織アカウント」です。

Members画面

#### 個人アカウントの場合

アカウント準備は不要です。

#### 組織アカウントの場合

今ログインしているアカウントがOwner権限か確認してください。

Ownerならそのまま。Ownerじゃないならアカウントを切り替えてください。

### 転送先アカウントの準備

転送先のアカウント・organization(組織)が未作成なら作ります。

### 転送先に招待

転送先のorganizationにて、転送元のアカウントをAdmin権限で招待してください。

## Transferの実行

いよいよ実際にプロジェクトを転送します。

ボタンはPROJECT SETTINGS > General > Transfer projectにあります。

Transferの場所

Start transferを押すと詳細画面が出てきます。
転送先となるアカウントを選択します。ここで転送先アカウントが表示されない場合、「転送元」のアカウントの権限が間違ってます。

実際にTransferする画面

Transfer projectボタンを押し、パスワードを入力したら転送スタートです。30秒くらい立つと次のように成功画面になります。

Transfer成功の表示

### 失敗した場合

筆者は3つほどプロジェクトを転送したのですが、そのうちの1回だけ次のようなネットワークエラーになりました。

NetworkError when attempting to fetch resource. (api.expo.dev)

再度ボタンを押してトライしたら今度は普通に成功しました。

## コードの書き換え

コードも一部書き換えが必要です。

### app.jsonの更新

app.json(プロジェクトによってはapp.〇〇.jsonapp.config.tsなど)のownerを新しいアカウント名に書き換えます。

{
"expo": {
"owner": "新しいオーナー名",
}
}

一方で、次の箇所は書き換え不要でした。

  • expo.slug
  • expo.extra.eas.projectId
  • expo.updates.url

## 一応確認

これで転送自体は終わりですが、念のためコマンドやビルドしてみて確認します。

### eas project:infoで転送を確認

プロジェクトに紐づくアカウントを確認しておきましょう。
プロジェクトのリポジトリで次のコマンドを実行してみます。

Terminal window
eas project:info

アカウント名が転送先になっていることを確認できればOKです。

fullName @アカウント名/slug
ID プロジェクトID

### ビルドの確認

実際に普段のようにビルドして、何もなければOKです。転送先のアカウントの権限も持っている場合は再ログイン不要です。

ちなみに筆者はAppleアカウントのログインで規約チェックしてなくて引っかかりました。転送自体とは無関係ですが、時間に余裕無い人は「Apple Store Connectに接続して規約の警告が無いか」をあらかじめチェックしておきましょう。

### OTAアップデート確認

可能であればOTAアップデートも開発版アプリとかでやっておくと安心です。

## 転送チェックリスト

チェックリスト作っておきました。

- [ ] 転送元の権限確認
- [ ] 転送先アカウント作成
- [ ] アカウント招待
- [ ] 転送実行
- [ ] app.jsonのowner更新
- [ ] eas project:infoで確認
- [ ] ビルド確認
- [ ] OTAアップデート確認

以上、Expoのプロジェクトを別のアカウントに転送する手順でした。こういった移行系の作業は、ユーザーに影響の無い作業とはいえ緊張しました。