

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# AWS Device Farm のツールとプラグイン
<a name="aws-device-farm-tools-plugins"></a>

このセクションには、AWS Device Farm のツールとプラグインでの作業に関するリンクと情報が含まれています。Device Farm プラグインは、[GitHub の AWS ラボ](https://github.com/awslabs/)にあります。

Android 開発者である場合は、「[GitHub の Android 用 AWS Device Farm サンプルアプリケーション](https://github.com/awslabs/aws-device-farm-sample-app-for-android)」も利用できます。このアプリケーションおよびテスト例は、独自の Device Farm テストスクリプトのリファレンスとして使用できます。

**Topics**
+ [Device Farm と Jenkins CI サーバーの統合](continuous-integration-jenkins-plugin.md)
+ [Device Farm と Gradle ビルドシステムとの統合](aws-device-farm-android-gradle-plugin.md)

# Device Farm と Jenkins CI サーバーの統合
<a name="continuous-integration-jenkins-plugin"></a>

Jenkins CI プラグインによって、独自の Jenkins 継続的インテグレーション (CI) サーバーから AWS Device Farm 機能が提供されます。詳細については、「[Jenkins (ソフトウェア)](https://en.wikipedia.org/wiki/Jenkins_%28software%29)」を参照してください。

**注記**  
Jenkins プラグインをダウンロードするには、[GitHub](https://github.com/awslabs/aws-device-farm-jenkins-plugin) にアクセスし、「[ステップ 1: AWS Device Farm 用の Jenkins CI プラグインをインストールするJenkins CI プラグインをインストールする](#jenkins-ci-installing-the-plugin)」の手順に従います。

このセクションには、AWS Device Farm で Jenkins CI プラグインをセットアップして使用する一連の手順が含まれます。

以下の画像は、Jenkins CI プラグインの機能を示しています。

![\[Jenkins CI Hello World アプリケーションとの統合\]](http://docs.aws.amazon.com/ja_jp/devicefarm/latest/developerguide/images/aws-device-farm-jenkins-plugin-continuous-integration-project-hello-world-app.png)


![\[Jenkins CI のビルド後のアクションとの統合\]](http://docs.aws.amazon.com/ja_jp/devicefarm/latest/developerguide/images/aws-device-farm-jenkins-plugin-continuous-integration-post-build-actions.png)


また、このプラグインではすべてのテストアーティファクト (ログ、スクリーンショットなど) をローカルにプルダウンすることもできます。

![\[Jenkins CI のテストアーティファクトとの統合\]](http://docs.aws.amazon.com/ja_jp/devicefarm/latest/developerguide/images/aws-device-farm-jenkins-plugin-continuous-integration-test-artifacts.png)


**Topics**
+ [依存関係](#jenkins-plugin-dependencies)
+ [ステップ 1: AWS Device Farm 用の Jenkins CI プラグインをインストールする](#jenkins-ci-installing-the-plugin)
+ [ステップ 2: AWS Device Farm 用の Jenkins CI プラグインの AWS Identity and Access Management ユーザーを作成する](#jenkins-ci-set-up-iam-user)
+ [ステップ 3: AWS Device Farm で Jenkins CI プラグインを初めて設定する](#jenkins-ci-first-time-configuration-instructions)
+ [ステップ 4: Jenkins ジョブでのプラグインの使用](#jenkins-ci-using-plugin-jenkins-job)

## 依存関係
<a name="jenkins-plugin-dependencies"></a>

Jenkins CI プラグインには AWS Mobile SDK 1.10.5 以降が必要です。SDK の詳細とインストールについては、「[AWS Mobile SDK](https://aws.amazon.com/mobile/sdk/)」を参照してください。

## ステップ 1: AWS Device Farm 用の Jenkins CI プラグインをインストールする
<a name="jenkins-ci-installing-the-plugin"></a>

AWS Device Farm の Jenkins 継続的インテグレーション (CI) プラグインをインストールするには 2 つのオプションがあります。Jenkins ウェブ UI の「**使用できるプラグイン**」ダイアログ内からプラグインを検索するか、`hpi` ファイルをダウンロードして Jenkins 内からインストールできます。

### Jenkins UI 内からインストールする
<a name="installing-jenkins-from-within-ui"></a>

1. **[Jenkins を管理]**、**[プラグインを管理]** を選択し、次に **[使用可能]** を選択して Jenkins UI 内でプラグインを見つけます。

1. **aws-device-farm** を検索します。

1. AWS Device Farm プラグインをインストールします。

1. プラグインが `Jenkins` ユーザーに所有されていることを確認します。

1. Jenkins を再起動します。

### プラグインをダウンロードする
<a name="installing-jenkins-manual-install"></a>

1. `hpi` ファイルを直接 [http://updates.jenkins-ci.org/latest/aws-device-farm.hpi](http://updates.jenkins-ci.org/latest/aws-device-farm.hpi) からダウンロードします。

1. プラグインが `Jenkins` ユーザーに所有されていることを確認します。

1. 次のいずれかのオプションを使用して、プラグインをインストールします:
   + **[Jenkins を管理]**、**[プラグインを管理]**、**[詳細]**、**[プラグインをアップロード]** の順に選択してプラグインをアップロードします。
   + `hpi` ファイルを Jenkins プラグインディレクトリ (通常は `/var/lib/jenkins/plugins`) に配置します。

1. Jenkins を再起動します。

## ステップ 2: AWS Device Farm 用の Jenkins CI プラグインの AWS Identity and Access Management ユーザーを作成する
<a name="jenkins-ci-set-up-iam-user"></a>

Device Farm へのアクセスに AWS ルートアカウントを使用しないことをお勧めします。代わりに、アカウントに AWS 新しい AWS Identity and Access Management (IAM) ユーザーを作成し (または既存の IAM ユーザーを使用）、その IAM ユーザーで Device Farm にアクセスします。

新しい IAM ユーザーを作成するには、「[IAM ユーザーの作成 (AWS マネジメントコンソール)](https://docs.aws.amazon.com/IAM/latest/UserGuide/Using_SettingUpUser.html#Using_CreateUser_console)」を参照してください。各ユーザーのアクセスキーを生成していることを確認し、ユーザーのセキュリティ認証情報をダウンロードまたは保存します。認証情報は後で必要になります。

### IAM ユーザーに Device Farm へアクセスする権限を付与します。
<a name="jenkins-ci-setting-up-permissions"></a>

IAM ユーザーに Device Farm へアクセスする権限を付与するには、IAM で新規アクセスポリシーを作成し、そのアクセスポリシーを次のように IAM ユーザーに割り当てます。

**注記**  
次の手順を完了するために使用する AWS ルートアカウントまたは IAM ユーザーには、次の IAM ポリシーを作成し、IAM ユーザーにアタッチするアクセス許可が必要です。詳細については、「[ポリシーによる作業](https://docs.aws.amazon.com/IAM/latest/UserGuide/policies_manage.html)」を参照してください。

**IAM でアクセスポリシーを作成するには**

1. IAM コンソール ([https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/)) を開きます。

1. **[ポリシー]** を選択します。

1. **[ポリシーを作成]** を選択します。(**開始する]** ボタンが表示された場合は、そのボタンを選択してから、**[ポリシーを作成]** を選択します)。

1. **[独自のポリシーを作成]** の横で、**[選択]** を選択します。

1. **[ポリシー名]** に、ポリシーの名前 (**AWSDeviceFarmAccessPolicy** など) を入力します。

1. **[説明]** に、この IAM ユーザーを Jenkins プロジェクトに関連付けるための説明を入力します。

1. **[ポリシードキュメント]** に、次のステートメントを入力します:

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Sid": "DeviceFarmAll",
               "Effect": "Allow",
               "Action": [ "devicefarm:*" ],
               "Resource": [ "*" ]
           }
       ]
   }
   ```

------

1. **[ポリシーを作成]** を選択します。

**アクセスポリシーを IAM ユーザーに割り当てるには**

1. IAM コンソール ([https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/)) を開きます。

1. **[ユーザー]** を選択します。

1. アクセスポリシーを割り当てる IAM ユーザーを選択します。

1. **[権限]** エリアの **[管理ポリシー]** で、**[ポリシーをアタッチ]** を選択します。

1. 先ほど作成したポリシーを選択します (例: **AWSDeviceFarmAccessPolicy**)。

1. ［**ポリシーをアタッチ**] を選択します。

## ステップ 3: AWS Device Farm で Jenkins CI プラグインを初めて設定する
<a name="jenkins-ci-first-time-configuration-instructions"></a>

Jenkins サーバーを初めて実行するときは、次のようにシステムを設定する必要があります。

**注記**  
 [デバイススロット](how-to-purchase-device-slots.md)を使用している場合、デバイススロット機能はデフォルトで無効になっています。

1. Jenkins のウェブユーザーインターフェイスにログインします。

1. 画面の左側で、[**Manage Jenkins**] (Jenkins を管理) を選択します。

1. [**Configure System**] (システムを設定) を選択します。

1. [**AWS Device Farm**] ヘッダーまで下にスクロールします。

1. [Jenkins CI プラグインのための IAM ユーザーを作成する](#jenkins-ci-set-up-iam-user) からセキュリティ認証情報をコピーして、アクセスキー ID とシークレットアクセスキーをそれぞれのボックスに貼り付けます。

1. **[保存]** を選択します。

## ステップ 4: Jenkins ジョブでのプラグインの使用
<a name="jenkins-ci-using-plugin-jenkins-job"></a>

Jenkins プラグインのインストールが完了したら、次の手順に従って、Jenkins ジョブでプラグインを使用します。

1. Jenkins のウェブ UI にログインします。

1. 編集するジョブをクリックします。

1. 画面の左側にある **[構成]** を選択します。

1. **[ビルド後アクション]** ヘッダーまでスクロールダウンします。

1. **[ビルド後アクションを追加]** をクリックして **[AWS Device Farm でテストを実行]** を選択します。

1. 使用するプロジェクトを選択します。

1. 使用するデバイスプールを選択します。

1. テストアーティファクト (ログやスクリーンショットなど) をローカルでアーカイブするかどうかを選択します。

1. **[アプリケーション]** で、コンパイルされたアプリケーションへのパスを入力します。

1. 実行するテストを選択し、すべての必須フィールドに入力します。

1. **[保存]** を選択します。

# Device Farm と Gradle ビルドシステムとの統合
<a name="aws-device-farm-android-gradle-plugin"></a>

このプラグインによって、AWS Device Farm は Android Studio の Gradle ビルドシステムと統合されます。詳細については、「[Gradle](https://gradle.org)」を参照してください。

**注記**  
Gradle Plugin をダウンロードするには、「[GitHub](https://github.com/awslabs/aws-device-farm-gradle-plugin)」に移動し、[Device Farm Gradle プラグインの構築](#aws-device-farm-gradle-plugin-building)の手順に従います。

Device Farm Gradle Plugin により、Android Studio 環境から Device Farm 機能が提供されます。Device Farm によってホストされる現行の Android 電話やタブレットでテストを開始できます。

このセクションには、Device Farm Gradle Plugin をセットアップして使用する一連の手順が含まれます。

**Topics**
+ [依存関係](#aws-device-farm-gradle-plugin-dependencies)
+ [ステップ 1: AWS Device Farm Gradle プラグインの構築](#aws-device-farm-gradle-plugin-building)
+ [ステップ 2: AWS Device Farm Gradle プラグインのセットアップ](#aws-device-farm-gradle-plugin-setting-up)
+ [ステップ 3: Device Farm Gradle プラグインで IAM ユーザーを作成する](#aws-device-farm-gradle-plugin-generating-iam-user)
+ [ステップ 4: テストタイプの構成](#aws-device-farm-gradle-plugin-configuring-test-types)

## 依存関係
<a name="aws-device-farm-gradle-plugin-dependencies"></a>

**ランタイム**
+ Device Farm Gradle プラグインには AWS Mobile SDK 1.10.15 以降が必要です。SDK の詳細とインストールについては、「[AWS Mobile SDK](https://aws.amazon.com/mobile/sdk/)」を参照してください。
+ Android ツールビルダーテスト api 0.5.2
+ Apache Commons Lang3 3.3.4

**ユニットテストの場合**
+ Testng 6.8.8
+ Jmockit 1.19
+ Android Gradle 1.3.0 ツール

## ステップ 1: AWS Device Farm Gradle プラグインの構築
<a name="aws-device-farm-gradle-plugin-building"></a>

このプラグインによって、AWS Device Farm が Android Studio の Gradle ビルドシステムと統合されます。詳細については、「[Gradle](https://gradle.org)」を参照してください。

**注記**  
プラグインの構築はオプションです。プラグインは、Maven Central を通じて発行されます。Gradle がプラグインを直接ダウンロードするよう許可する場合は、この手順をスキップして、[ステップ 2: AWS Device Farm Gradle プラグインのセットアップ](#aws-device-farm-gradle-plugin-setting-up)に進みます。

**プラグインを構築するには**

1. 「[GitHub](https://github.com/awslabs/aws-device-farm-gradle-plugin)」に移動して、リポジトリのクローンを作成します。

1. `gradle install`を使用してプラグインを構築します。

   プラグインはローカルの maven リポジトリにインストールされます。

次のステップ: [ステップ 2: AWS Device Farm Gradle プラグインのセットアップ](#aws-device-farm-gradle-plugin-setting-up)

## ステップ 2: AWS Device Farm Gradle プラグインのセットアップ
<a name="aws-device-farm-gradle-plugin-setting-up"></a>

リポジトリのクローン作成とプラグインのインストールをまだ行っていない場合は、以下の手順を参照して実行してください。[Device Farm Gradle プラグインの構築](#aws-device-farm-gradle-plugin-building)

**AWS Device Farm Gradle Pluginを構成するには**

1. `build.gradle` の依存関係リストにプラグインアーティファクトを追加します。

   ```
       buildscript {
   
           repositories {        
               mavenLocal()            
               mavenCentral()            
           }
   
           dependencies {        
               classpath 'com.android.tools.build:gradle:1.3.0'           
               classpath 'com.amazonaws:aws-devicefarm-gradle-plugin:1.0'            
           }        
       }
   ```

1. `build.gradle` ファイルのプラグインを構成します。以下のテスト固有の構成がガイドとして役立ちます。

   ```
   apply plugin: 'devicefarm'
   
   devicefarm {
   
       // Required. The project must already exist. You can create a project in the AWS Device Farm console.
       projectName "My Project" // required: Must already exist.
   
       // Optional. Defaults to "Top Devices"
       // devicePool "My Device Pool Name"
       
       // Optional. Default is 150 minutes
       // executionTimeoutMinutes 150
       
       // Optional. Set to "off" if you want to disable device video recording during a run. Default is "on"
       // videoRecording "on"
       
       // Optional. Set to "off" if you want to disable device performance monitoring during a run. Default is "on"
       // performanceMonitoring "on"
       
       // Optional. Add this if you have a subscription and want to use your unmetered slots
       // useUnmeteredDevices()
       
       // Required. You must specify either accessKey and secretKey OR roleArn. roleArn takes precedence. 
       authentication {
           accessKey "AKIAIOSFODNN7EXAMPLE"
           secretKey "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY"
           
           // OR
           
           roleArn "arn:aws:iam::111122223333:role/DeviceFarmRole"
       }
   
       // Optionally, you can 
       // - enable or disable Wi-Fi, Bluetooth, GPS, NFC radios
       // - set the GPS coordinates
       // - specify files and applications that must be on the device when your test runs
       devicestate {
           // Extra files to include on the device.
           // extraDataZipFile file("path/to/zip")
           
           // Other applications that must be installed in addition to yours. 
           // auxiliaryApps files(file("path/to/app"), file("path/to/app2"))
           
           // By default, Wi-Fi, Bluetooth, GPS, and NFC are turned on.
           // wifi "off"
           // bluetooth "off"
           // gps "off"
           // nfc "off"
           
           // You can specify GPS location. By default, this location is 47.6204, -122.3491
           // latitude 44.97005
           // longitude -93.28872
       }
    
       // By default, the Instrumentation test is used.
       // If you want to use a different test type, configure it here.
       // You can set only one test type (for example, Calabash, Fuzz, and so on)
    
       // Fuzz
       // fuzz { }
   
       // Calabash
       // calabash { tests file("path-to-features.zip") }
          
   }
   ```

1. 次のタスク (`gradle devicefarmUpload`) を使用して Device Farm テストを実行します。

   ビルド出力で Device Farm コンソールへのリンクが出力され、テストの実行をモニタリングできます。

次のステップ: [Device Farm Gradle プラグインでの IAM ユーザーの作成](#aws-device-farm-gradle-plugin-generating-iam-user)

## ステップ 3: Device Farm Gradle プラグインで IAM ユーザーを作成する
<a name="aws-device-farm-gradle-plugin-generating-iam-user"></a>

AWS Identity and Access Management (IAM) は、 AWS リソースを操作するためのアクセス許可とポリシーを管理するのに役立ちます。このトピックでは AWS Device Farm リソースにアクセスする権限を持つ IAM ユーザーの作成方法について説明します。

手順 1 と 2 を実行していない場合は、IAM ユーザーを作成する前に完了してください。

Device Farm へのアクセスに AWS ルートアカウントを使用しないことをお勧めします。代わりに、 AWS アカウントに新しい IAM ユーザーを作成 (または既存の IAM ユーザーを使用) し、その IAM ユーザーで Device Farm にアクセスします。

**注記**  
次の手順を完了するために使用する AWS ルートアカウントまたは IAM ユーザーには、次の IAM ポリシーを作成し、IAM ユーザーにアタッチするアクセス許可が必要です。詳細については、「[ポリシーを使った作業](https://docs.aws.amazon.com/IAM/latest/UserGuide/policies_manage.html)」を参照してください。

**IAM で適切なアクセスポリシーを持つ、新しいユーザーを作成するには**

1. IAM コンソール ([https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/)) を開きます。

1. **[ユーザー]** を選びます。

1. **[新規ユーザーを作成]** を選びます。

1. 任意のユーザー名を入力します。

   例えば、**GradleUser**。

1. **[作成]** を選びます。

1. **[認証情報をダウンロード]** を選び、後で簡単に取得できる場所に保存します。

1. **[閉じる]** を選びます。

1. リスト内でユーザー名を選びます。

1. **[権限]** で、右側にある下矢印をクリックして **[インラインポリシー]** ヘッダーを展開します。

1.  **[こちらをクリック]** を選ぶと、「**表示するインラインポリシーはありません」と表示されます。作成するには、ここをクリックしてください**。

1. 「**権限を設定**」画面で **[カスタムポリシー]** を選びます。

1. **[選択]** を選びます。

1. ポリシーに名前を付けます (例: **AWSDeviceFarmGradlePolicy**)。

1. 次のポリシーを **[ポリシードキュメント]** に貼り付けます。

------
#### [ JSON ]

****  

   ```
       {
           "Version":"2012-10-17",		 	 	 
           "Statement": [
               {
                   "Sid": "DeviceFarmAll",
                   "Effect": "Allow",
                   "Action": [ "devicefarm:*" ],
                   "Resource": [ "*" ]
               }
           ]
       }
   ```

------

1. **[ポリシーを適用]** を選びます。

次のステップ: 次は「[テストタイプの構成](#aws-device-farm-gradle-plugin-configuring-test-types)」です。

詳細については、「[IAM ユーザーの作成 (AWS マネジメントコンソール)](https://docs.aws.amazon.com/IAM/latest/UserGuide/Using_SettingUpUser.html#Using_CreateUser_console)」または「[設定](setting-up.md)」を参照してください。

## ステップ 4: テストタイプの構成
<a name="aws-device-farm-gradle-plugin-configuring-test-types"></a>

デフォルトでは、AWS Device Farm Gradle プラグインは[Android および AWS Device Farm のインストルメンテーション](test-types-android-instrumentation.md)テストを実行します。独自のテストを実行、または追加のパラメーターを指定する場合は、テストタイプを構成できます。このトピックでは、利用可能な各テストタイプに関する情報と、使用のための構成に向けて Android Studio で行う必要がある内容について説明します。Device Farm で利用可能なテストタイプの詳細については、「[AWS Device Farm のテストフレームワークと組み込みテスト](test-types.md)」を参照してください。

まだ行っていない場合は、テストタイプを構成する前に手順 1～3 を完了します。

**注記**  
[デバイススロット](how-to-purchase-device-slots.md)を使用している場合、デバイススロット機能はデフォルトで無効になっています。

### Appium
<a name="configuring-test-types-appium"></a>

Device Farm は、Android 向け Appium Java JUnit および TestNG のサポートを提供します。
+ [Appium (Java (JUnit))](https://docs.aws.amazon.com//devicefarm/latest/developerguide/test-types-appium.html)
+ [Appium (Java (TestNG))](https://docs.aws.amazon.com//devicefarm/latest/developerguide/test-types-appium.html)

`useTestNG()` または `useJUnit()` を選択します。デフォルトとなる `JUnit` は、特別に指定する必要はありません。

```
    appium {
        tests file("path to zip file") // required
        useTestNG() // or useJUnit()
    }
```

### Built-in: ファズ
<a name="configuring-test-types-built-in-fuzz"></a>

Device Farm では、ランダムにユーザーインターフェイスイベントをデバイスに送信し、その結果をレポートする組み込み Fuzz テストタイプが提供されます。

```
    fuzz {

       eventThrottle 50 // optional default
       eventCount 6000  // optional default
       randomizerSeed 1234 // optional default blank

     }
```

詳細については、「[Device Farm のビルトイン Fuzz テストの実行 (Android と iOS)](test-types-built-in-fuzz.md)」を参照してください。

### インストルメンテーション
<a name="configuring-test-types-instrumentation"></a>

Device Farm では、Android 向けインストルメンテーション (JUnit、Espresso、Robotium、または任意の実装ベーステスト) のサポートが提供されます。詳細については、「[Android および AWS Device Farm のインストルメンテーション](test-types-android-instrumentation.md)」を参照してください。

Gradle でインストルメンテーションテストを実行する場合、Device Farm では、**[androidTest]** ディレクトリから生成された `.apk` ファイルをテストのソースとして使用します。

```
    instrumentation { 

        filter "test filter per developer docs" // optional

    }
```