はじめに
ゆとり世代の中野です。
さっそくチャレンジについて書いていきます。
チャレンジする背景
- 約半年ハマってた問題を解決したので忘れないように振り返りをする
チャレンジ内容
- ハマったことの洗い出し
- それぞれどうやって解決したのか
やったこと
前提
- WEBしか知見がない
- Expoを使ってProductを開発している
- ExpoGoだけでは検証できないものがでてきた
何がしたかったの?
- ビルドしたアプリを実機やシュミレーターにインストールして検証できる
どんな問題が出てきたの?
- Expoのビルドなんもわからん
- ビルド周り調べてみると以下の方法がある
eas build
やexpo build
など複数のビルドする方法がある- EASのベストプラクティスな使い方がわからん
- iOSやAndroidで色々要求されてるけど何やコレ状態
- GithubActionsとEASを組み合わせた時の環境変数とSecretの使い方
- アプリケーション内でCI経由でSecretをどうやって参照すればいいのかわからん
- EAS経由でビルドした場合のみアプリが落ちる原因がわからん
- 外的要因でビルドやデプロイが失敗する
どうやって解決していったのか
- 一言で言えば「ひたすら愚直に仮説検証をぶん回した」です
それぞれの解決方法
- Expoのビルドなんもわからん
- ちゃんと調べると
expo build
からeas build
を使えと言われてる - どうやら既存のProductでは
eas build
がうまくいかないので作り直した - 新しく作り直した方ではサクッと動いた(死ぬほど時間無駄にした)
- EASのベストプラクティスな使い方がわからん
- 証明書周り
- iOSとAndroidのビルド周りの記事読みまくった
- このへんiOSにしばかれまくった
- 色々証明書求められ作ったりしてなんとか形にしようとしてたので記憶があいまい
- ここにEASが絡んできて頭パンクしてたけど結果的にEASの指示にしたがった
- ProjectとSecret
- ProjectごとにSecretを持てることを色々触ってるうちに気づいた
- これが原因で既存のProject全部消して作り直すことにした
- GithubActionsとEASを組み合わせた時の環境変数とSecretの使い方
- actionとEASのProjectを紐付けた
- workflow側のenvに環境を定義してEASのProjectと同じ名前で紐付けることで連動させるようにした
- アプリケーション内でCI経由でSecretをどうやって参照すればいいのかわからん
eas build
を使うと自動でEASの該当するProjectのSecretをビルドのタイミングで注入してくれる- 最初githubのSecretに定義してアプリケーション側に反映されなくてハマった
- EAS経由でビルドした場合のみアプリが落ちる原因がわからん
- 今までの仮説検証でSecret登録したり削除したりして設定した気になっていた
- 環境周りでおかしいときは環境変数をちゃんと疑おう
- 自分を信じてはダメだ!
- 外的要因でビルドやデプロイが失敗する
- firebaseのアップデートで生まれたバグをたまたま踏み抜いた
- 寝て待てば修正されてた
- actionsでnpxでeas-cliのバージョンをロックしてなかったのでマイナーアップデートで無事死亡したためバージョンを指定して解決
反省点
- 誰かに聞ける相談できる環境作りは必要だった
- コミュニティに質問するやConferenceなどで質問するなど方法はあったと思う
- 関連のある技術についてもアンテナは張っておきたい
- いつそれを使うことに必要になるかはわからんので
- 1つの問題を解決する中でいくつもの問題に直面した結果まとめて解決しようとする愚行を行った
- もう少し俯瞰して問題を切り分けて順番に対応すればよかった
- 完了の定義を細かく定義したほうがよかった
- 自分を何も信じるな
- 環境変数を設定したこと思ってた
- 作業はすべてチケット化する
- 手作業は何も信じてはいけない
- コードだけを信じろ!!
- 外部に依存するな
- ビルド要件などはロックする
よかった点
- EASとExpoの知見が深まった
- 技術的な妥協をしなかった
結論
- 無事実機検証できるようになりました!
さいごに
- 英語大事(N回目
yutanakano
WEBエンジニア
大阪生まれのゆとり世代です
趣味はバイクでツーリングに行くこと
愛車は Ninja ZX-25R SE KRT EDITION
Expoでプロダクトを作っています