DeviceFarm調査まとめ（国内向けアプリの動作確認するには）

# はじめに

アプリの動作確認を行うために、実機を手配/管理し様々なデバイスからテストを行うものと思いますがその分実機の管理を行わなければいけませんよね。

Device Farmを活用することで実機の手配/管理業務を無くす事ができ運用がシンプルになりますし、必要な時に必要な端末を柔軟に利用できる事でコストを抑えられるのではないかと考えPoCを始めました。

しかし調べていくうちに国内向けアプリの動作確認を行いたい場合は、通常のリモートアクセス機能のデバイスは利用出来ずプライベートデバイスを利用する必要があることがわかりました。

プライベートデバイスについては調査のみに留まりましたが、様々な学びがあったのでその内容をまとめます:writing_hand_tone2:

# Device Farmとは？
以下、公式ホワイトペーパーによるとAWSを通じてiOS/Androidの実機にアクセスし、アプリケーションをテストしてやり取りすることが出来るサービスです。Device Farmは現在、us-west-2 (オレゴン) リージョンでのみ使用可能です。

https://docs.aws.amazon.com/ja_jp/devicefarm/latest/developerguide/welcome.html

Device Farmの機能としましては以下の２つです。
そのうち②のリモートアクセス機能を活用し、アプリの動作確認を行いたいと思いPoCをはじめました。

> ①さまざまなテストフレームワークを使用したアプリケーションの自動テスト
> ②読み込み、実行、リアルタイムでアプリケーションとやり取り可能なデバイスへのリモートアクセス

# リモートアクセス機能実行までの手順

1. マネジメントコンソールにて「Device Farm」を開き、「New project」をクリックします
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3550351/18e56f46-7556-5821-fae0-79fbebbce01e.png)



2. ProjectNameの入力フォームに、任意の文字列を入力し「Create」をクリックします
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3550351/dd41dc64-7e90-4578-78b6-92c1b543e58d.png)

 3. 「Remote access」タブをクリックし、「Start a new session」をクリックします
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3550351/5755bef3-6574-df3e-87b8-03ef645fe3fd.png)


4. テストしたいデバイスを選択します。(今回は、Apple iPhone14を選択しました）
その後、「Confirm and start session」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3550351/7819c2c9-5d7c-7114-ac30-a0639ebfe5f1.png)


5. デバイスリクエストの画面に切り替わりましたら、約30秒程でリモートデバイスの画面に切り替わります。この画面が表示されましたらデバイス立ち上げは完了です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3550351/8c743659-e1ee-6386-41a8-201c139e0cb9.png)


6. 右下のInstall applications部分からテストしたいアプリのデータをアップロードします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3550351/c1108939-983f-a557-a8c0-0d6312afb76b.png)


7. アップロードに成功しますとデバイスにアプリのアイコンが表示され、アプリを実際に起動することが可能になります。


以上が、リモートアクセス機能の手順になります。

# 今回のPoCで起きたこと

今回のPoCでは、実際に弊社で運営しているスマホアプリのデータを利用し行ったのですが、
動作確認時にアプリ側から日本以外からのアクセスである旨のエラーが表示されました:disappointed_relieved:

このアプリは、国内からのアクセスに限定しており、Device Farmはオレゴンリージョンでのみ利用可能な為USからのアクセスと判定されているようです。

Google先生や、AI先生に質問をして色々調査を行いましたが
あまり事例記事があがっておらず知りたい情報をキャッチできず苦戦していました:cold_sweat:
一旦個人調査は終了し、潔くAWSサポートへの問い合わせを行いました:love_letter:

# 国内からのアクセスに限定したアプリを動作確認したい場合

サポートへ問い合わせた結果、通常利用可能なDevice Farmのデバイスでは実現出来ないため**プライベートデバイス**を利用する必要があることがわかりました。プライベートデバイスの利用でVPN接続が可能となり、疑似的な日本からのアクセスが出来るようになることがわかりました。

プライベートデバイスとは、Amazon データセンターで Device Farm がユーザーに代わってデプロイする物理モバイルデバイスです。**ユーザーのリクエストに合わせてAWSアカウント専用の物理端末を用意してくれます**。つまり、複数の端末から選択する通常の利用とは異なりリクエストした端末でのみテストが可能です。

https://docs.aws.amazon.com/ja_jp/devicefarm/latest/developerguide/working-with-private-devices.html

また利用料は通常の利用とは異なり、**従量課金ではありません**。公式ドキュメントには200 USD/月～と記載されておりますが、利用する場合はDevice Farm専用のサポートへ連絡し見積もりを取るところからスタートになります。

https://aws.amazon.com/jp/device-farm/pricing/#privateDevices

プライベートデバイスについては全く知識がなかった為、一連のサポートとのやりとりは非常に勉強になりました:pencil2:

# 所感

通常のリモートアクセス機能でテストが出来るアプリの場合多種多様なデバイスの選択肢が用意されていることはとても魅力的だと思いました。例えば、アプリの動作不良等の問い合わせがあった際でもユーザーと同じ環境で操作の確認が可能という点は大きなメリットだと感じます。

一方で、プライベートデバイスを利用する場合、１端末のみでも年間にすると$2,400以上発生すると考えると現時点ですと弊社では費用対効果を感じることが難しいと思いました:scream: 今後更にDevice Farmが改良されていくことを願いたいと思います:thinking:


# 弊社では一緒に働く仲間を募集中です:fire::dragon:
現在、様々な職種を募集しております。
カジュアル面談も可能ですので、ご連絡お待ちしております！

募集内容等詳細は、是非採用サイトをご確認ください。

https://engineer.po-holdings.co.jp/