Remote Test Kitの実務での使い方と所感

# はじめに
私が所属する開発チームでは、スマートデバイス向けアプリおよびブラウザ上で動作するサービスを開発しています。

https://apps.apple.com/in/app/company-%E5%B0%B1%E5%8A%B4-%E3%83%97%E3%83%AD%E3%82%B8%E3%82%A7%E3%82%AF%E3%83%88%E7%AE%A1%E7%90%86/id1513285570?platform=iphone

Remote Test Kitは、上記アプリやモバイルブラウザ上で動作するサービスについて、**複数OS×デバイスでの実機テスト**のために社内で実際に利用しています。

あまり派手な使い方はしていませんが、実務でどう使っているの？良い点／改善点は？を現実的な視点で書いていきます。

# そもそもRemote Test Kitとは
公式サイトにある通り、`クラウド上のスマホをレンタルし実機検証が可能なサービス`です。

https://appkitbox.com/testkit/

# Remote Test Kitを利用した実機テストの流れ
主に私が所属する開発チームでの利用の流れについて簡単に記載します。

## （初回のみ）Remote Test Kitソフトウェア版のダウンロード

https://appkitbox.com/testkit/download/

## ログイン
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2366737/6ded4bbc-824b-b158-82f4-c741878aa924.png)
ユーザ名とパスワードを入力しログインします。
`ログイン状態を保持`にチェックを入れることで、2回目以降のログイン処理を省略できます。
また、新規ユーザ登録もここから可能です。


## 端末を借りる
端末の貸出時間を、30分または60分のいずれかから選択します。

### 貸出時間を延長する
貸出時は最大60分までしか借りられませんが、それ以上借りたい場合は貸出後に延長が可能です。
1. レンタル中の端末を選択
1. `レンタル`ボタンクリック
1. 延長時間を30分～240分の間で選択
1. `延長`ボタンクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2366737/54cfcf73-5cb9-ab3d-b37a-72b86dd866e8.png)


いずれかの[フラットプラン](https://appkitbox.com/testkit/price/)を利用している場合はあまり気にせず延長すればいいですが、チケットを利用して借りる場合は10分で1チケットが消費されるので計画的に借りましょう。

## （必要な場合のみ）Remote Test Kitで借りた端末のグローバルIPのアクセス制限を解除

社内の開発環境ですと、外部からのアクセス制限がかけられていることがほとんどだと思います。
テストのため、Remote Test Kitで借りている端末から社内環境にアクセスするために、そのグローバルIPアドレスからのアクセス制限を解除しましょう。

1. Remote Test Kitで借りた端末のグローバルIPを調べる
1. 利用している[WAF（Web Application Firewall）](https://www.jbsvc.co.jp/useful/security/what-is-waf.html)の設定で該当端末からのアクセスを許容するよう設定[^WAFの設定変更について]

[^WAFの設定変更について]:各社での設定変更の可否は担当者にご確認ください

### Remote Test Kitで借りた端末のグローバルIPアドレスを調べる方法

グローバルIPを調べる方法としては下記のサイトが便利です。グローバルIPを調べたい端末からアクセスするだけで確認できます。

https://www.cman.jp/network/support/go_access.cgi

### Remote Test Kitで借りた端末のブラウザ上で任意のURLを開く方法
もちろんRemote Test Kitで借りた端末上で上記サイトを検索したりURL直入力してもいいです。
ただ、以下の手順でPC上で開いていたURLをRemote Test Kitでもサクッと開けます。

1. 端末を借りているPC上のURLをコピー
1. Remote Test Kit右上の`URL`アイコンをクリック
1. URLを開くダイアログの中にコピーしたURLを貼りつけ
1. 開くボタンクリック

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2366737/6cd033d2-d5d5-1bf3-f66b-0910d08e6035.png)


## 社内環境にアクセスしテスト

ブラウザ上での動作確認は、[Remote Test Kitで借りた端末のブラウザ上でで任意のURLを開く方法](#Remote-Test-Kitで借りた端末のブラウザ上で任意のURLを開く方法)と同様の方法でURLを貼りつけることで容易にアクセスできます。


# Remote Test Kitを利用してみての所感
## 良い点
### 多様な機種、多様なOSバージョンから選択できる
とにかくこれは大きなメリット。

現在私が担当しているサービスでは、iOSは2バージョン、Androidは3バージョンを、スマホ、タブレットそれぞれでサポートしています。

したがって、特にデザイン面の検証にあたっては

- iOS：2OSバージョン × 2デバイス = 4パターン
- Android：3OSバージョン × 2デバイス = 6パターン

の**計10パターン**の実機が必要です。

頑張って実機を揃えていた頃は、

- iOSでメジャーバージョンアップがあるらしい！端末足りない！
- 古いバージョン検証用のスマホをうっかりバージョンアップしてしまった！

といった問題や事故が起きることもありました。

さらに時代はコロナ禍。リモートワークが一般的な中で、わざわざ実機検証のために連日出社を余儀なくされる、といったことも発生していました。

Remote Test Kitを導入することで、実機での検証が自宅にいながら実施できるようになり、スマートデバイスでのテストのコストやハードルがかなり下がりました。


なお[端末一覧](https://appkitbox.com/testkit/devicelist/?entry=header)を見ると、2022年7月15日現在、**1,123件**の端末が登録されています。
中には追加オプションを購入することで利用できるものもありますが、それ以外でも多種多様な機種があります。少なくとも私が検証で使うときは追加オプションなしの機種の中から選ぶので充分です。


### URLの入力からコピペ可能
ブラウザ上でのテストもあるため、毎回テスト用の環境のURLを入力するとなると相当な手間です。
そのため、URLをPC側からコピペ入力できるのはありがたいです。


### タッチパネル対応PCを利用することでタッチ操作が可能
タッチパネル対応PCを利用することで、Remote Test Kitで借りた端末をタッチ操作可能です。私はSurface pro7を利用していますが、本当にスマートデバイス実機を扱っている感覚に近いです。


### 自身や会社指定のAppleIDやGoogleアカウントを利用してアプリのインストールができる
リモート操作とは言えスマートデバイス実機を借りているわけですから、自身や会社指定のAppleIDやGoogleアカウントを利用してアプリのインストールができます。

アカウント情報やインストールしたアプリについては、端末返却時に初期化されるため、返却時の手間がかからない上にセキュリティ面でも安心です。


### 同時操作機能で効率よく複数端末を操作できる
複数端末を同時で借りている場合、上部の`並列`メニューから選択できる下記4つのメニューを選択することで借りている端末すべてで同一操作を一括実行できます。

- URLを入力してブラウザを起動
- ファイルからアプリをインストール
- キャプチャして保存
- 画面を回転

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2366737/5b84fd94-55e2-1d8d-2b96-ef966789de0c.png)
なおブラウザ起動について軽く動作をみたところ、同時操作が可能なのはURLを入力して起動まで。
それ以降のスクロール操作や別ページへの遷移などは同時操作不可でした。
![RemoteTestKit_Trim.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2366737/d9b3f06e-b42b-aa1b-e468-002117092a46.gif)

ただ、複数端末で都度URLをコピペして起動するのは結構面倒なので、起動テストや同一サービスを開いたりするのにはとても便利だと感じました。


## 改善されたらうれしい点
### 端末を借りるたびにAppleやGoogleのアカウントにサインインするのが面倒
返却時の自動初期化のメリットと表裏一体ですが、やはり複数端末でテストする際に毎回アカウントのサインイン処理を行うのは面倒です。
Remote Test Kitのアカウントに、各アカウントのIDだけでも登録して自動入力できたら便利なのにな～と感じます。

### アプリの終了方法がわからない
[Android](https://novlog.me/android/android-apk-kill/)でも[iOS](https://support.apple.com/ja-jp/HT201330)でもアプリを終了させる方法は存在しますが、Remote Test Kit上でアプリを終了させる方法が見当たりませんでした。

日常的に利用する際はアプリの終了は不要というのは割と有名な話ですが、私が主にRemote Test Kitで扱いたいサービスはテスト中、すなわちリリース前の機能なので、どうしてもアプリを強制終了して再起動したいタイミングって・・・出てきますよね・・・
もしご存じの方教えていただきたいです・・

ちなみに、端末そのものの再起動はできます。私はこれを最終手段として使っています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2366737/df11efc4-eba1-5e73-3f23-e1a4b2e1fdcd.png)


### [iOS] iOS13以上はパスワード入力が激ムズ（だったのが改善された模様です！）
（2022/12/15追記）激ムズだったんですが、クリップボードにコピーしたものをコピーすることでメールアドレスやパスワード欄に貼り付けられるようになっていました！

https://appkitbox.com/news/20220917-483507

上記のアップデートで機能追加された模様。ありがたや～

以下、このアップデートがされる前に記載した内容です。

---
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2366737/e2c4e4ec-1d22-8dc3-49c2-2d1f9771c7ee.png)
iOS13以上の端末を借りる際にこのようなアラートが出ます。
これはiOS自体の仕様によるものなので仕方ないのですが、とにかくパスワード入力が難しい。

[詳細はこちら。](https://appkitbox.com/testkit/doc/ios13_password/)リンクから抜粋すると、以下の制限があります。

> [iOS] iOS13からはiOSの仕様変更により、パスワード欄に入力された文字がスクリーンショットできないよう制限が加わりました。
> それにより Remote testkit の画面表示においても、下記の画面のようにパスワード欄にフォーカスがあたった瞬間から、以下の3点の挙動となります。
> - ソフトウェアキーボードの表示が消える
> - フォーカスが当たっていることを示すカーソル点滅が消える
> - 入力した文字が表示されない（※ 画面要素の構成によってはパスワードが表示される場合もあります）

アプリをダウンロードするためにAppleアカウントへのサインインを試みるとこんな感じ。
- パスワード入力欄にフォーカスしても何も起こらない（ように見える）
- PC側のキーボードからパスワードを入力し始めると、パスワード入力欄のプレースホルダーが消えるため、入力していることはわかるけれど真っ白
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2366737/f0afd6f0-c1bd-9b6b-5a19-792b0e385aea.png)


入力した文字は表示されず、PCのキーボードで入力完了後、（合っていますように・・・！）と祈りながらサインインをタップするしかありません。

そのため、複雑なパスワードを入力する場合は、あまりよろしくはないですが**任意の入力欄にパスワードを入力→カット→パスワード入力欄に貼り付け**という手順を踏んだ方が、入力ミスによるストレスが少ないです。


### [Android] どれがスマートフォンで、どれがタブレットか判別が困難

iOSだとスマートフォン=`iPhone XX`, タブレット=`iPad XX`という名前になっているので一目瞭然ですが、Androidはメーカーも機種名もサイズも多岐にわたっていてとにかくどれがスマートフォンでどれがタブレットなのかわかりづらいです。

検証したいAndroid OSバージョンごとにどの機種がスマートフォンなのか、レンタル時に`レンタル状況：利用可`となっている機種の`機種名`をネットで検索して判断する必要があり手間がかかりました。

以下は`Android 12`で絞り込んだ状態。そのうえで、キャリア列が入っているのはたぶんスマートフォンだろうな～というあたりをつけながら探していました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2366737/684108d6-7fc1-7320-41b2-8b9f50166b38.png)


### [iOS] 動作が重い（感覚値）
iOSは動作が重かったりときどきフリーズしたりするなという印象です。
パスワード入力欄の問題と重なると結構なストレス・・・
AndroidはiOSほど重くならない印象です。
あくまでも個人の感覚ですが、ご参考までに。


# おわりに
以上、特に派手な使い方はしていませんが、実際に業務利用している中でのRemote Test Kitの活用法と所感について記載しました。

現在Remote Test Kitを利用中の方、利用を検討している方の参考になれば幸いです。

## 追記
この記事は、[Qiita Engineer Festa 2022](https://qiita.com/official-campaigns/engineer-festa/2022)の企画・[Remote TestKitを使ってレビューを書こう！](https://qiita.com/official-events/f0e8b25feb05af6326b3)にエントリーしていましたが、このたび**Remote TestKit 優秀賞**をいただきました。

https://blog.qiita.com/qiitaengineerfesta-2022-presents/#remote-testkit-%E5%84%AA%E7%A7%80%E8%B3%9E-1

https://appkitbox.com/testkit/news/20220804-484941

> 受賞理由
実際に利用した際のメリットデメリットなどがわかりやすく伝わってきたため、選出させていただきました。

とのコメントをいただきました。ありがとうございました！