

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

# AWS Device Farm でのリモートアクセス
<a name="remote-access"></a>

 リモートアクセスでは、機能をテストして顧客の問題を再現するために、ウェブブラウザを使用してリアルタイムでデバイスのスワイプ、ジェスチャ、および操作を行えます。特定デバイスを操作するには、そのデバイスとのリモートアクセスセッションを作成します。

Device Farm でのセッションは、ウェブブラウザでホストされている実際の物理デバイスとのリアルタイムインタラクションとなります。セッションは、そのセッションを開始するときに選択した単一のデバイスを表示します。ユーザーは一度に複数セッションを開始できますが、同時に操作できるデバイスの総数は、お持ちのデバイススロットの数によって制限されます。デバイススロットは、デバイスファミリー (Android か iOS デバイス) に基づいて購入できます。詳細については、「[Device Farm 料金表](https://aws.amazon.com/device-farm/pricing/)」を参照してください。

Device Farm では現在、リモートアクセステスト用のデバイスのサブセットを提供しています。デバイスプールには随時新しいデバイスが追加されます。

Device Farm は各リモートアクセスセッションのビデオをキャプチャし、セッション中にアクティビティのログを生成します。これらの結果には、セッション中に提供するすべての情報が含まれます。

**注記**  
セキュリティ上の理由から、リモートアクセスセッション中に、アカウント番号、個人用ログイン情報、他の詳細などの機密情報を提供または入力しないことをお勧めします。可能であれば、テストアカウントなど、テスト専用に開発された代替手段を使用してください。

**Topics**
+ [

# AWS Device Farm でのリモートアクセスセッションの作成
](how-to-create-session.md)
+ [

# AWS Device Farm でのリモートアクセスセッションの使用
](how-to-use-session.md)
+ [

# AWS Device Farm でのリモートアクセスセッションの結果の取得
](how-to-access-session-results.md)

# AWS Device Farm でのリモートアクセスセッションの作成
<a name="how-to-create-session"></a>

リモートアクセスセッションの詳細については、「[セッション](sessions.md)」を参照してください。
+ [前提条件](#how-to-create-session-prerequisites)
+ [リモートセッションを作成する](#how-to-create-remote-session)
+ [次の手順](#how-to-create-session-next-steps)

## 前提条件
<a name="how-to-create-session-prerequisites"></a>
+ Device Farm でプロジェクトを作成します。「[AWS Device Farm でのプロジェクトの作成](how-to-create-project.md)」の指示に従ってから、このページに戻ります。

## リモートセッションを作成する
<a name="how-to-create-remote-session"></a>

------
#### [ Console ]

1. [https://console.aws.amazon.com/devicefarm](https://console.aws.amazon.com/devicefarm) で Device Farm コンソールにサインインします。

1. Device Farm ナビゲーションパネルで、**[モバイルデバイスのテスト]** を選択して、**[プロジェクト]** を選択します。

1. 既にプロジェクトがある場合は、リストから選択します。それ以外の場合は、「[AWS Device Farm でのプロジェクトの作成](how-to-create-project.md)」の手順に従ってプロジェクトを作成します。

1. **リモートアクセス**タブで、**リモートアクセスセッションの作成**を選択します。

1. セッション用のデバイスを選択します。使用可能なデバイスのリストから選択するか、リストの上部にある検索バーを使用してデバイスを検索します。

1. *(オプション)* セッションの一部としてアプリと補助アプリを含めます。これらは、新しくアップロードされたアプリでも、過去 30 日間にこのプロジェクトで以前にアップロードされたアプリでもかまいません (30 日後、アプリのアップロードは[期限切れになります](data-protection.md#data-protection-retention))。

1. **[セッション名]** にセッションの名前を入力します。

1. **[セッションを確認して開始]** を選択します。

------
#### [ AWS CLI ]

*注意: これらの手順は、リモートアクセスセッションの作成のみに焦点を当てています。セッション中にアプリをアップロードして使用する方法については、[「アプリのアップロードの自動化」を参照してください。](api-ref.md#upload-example)*

まず、[最新バージョンをダウンロードしてインストールして、AWS CLI のバージョンが](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html)up-to-dateであることを確認します。

**重要**  
このドキュメントに記載されている特定のコマンドは、古いバージョンの AWS CLI では使用できません。

次に、テストするデバイスを決定できます。

```
$ aws devicefarm list-devices
```

これにより、次のような出力が表示されます。

```
{
    "devices":
    [
        {
            "arn": "arn:aws:devicefarm:us-west-2::device:DE5BD47FF3BD42C3A14BF7A6EFB1BFE7",
            "name": "Google Pixel 8",
            "remoteAccessEnabled": true,
            "availability": "HIGHLY_AVAILABLE"
            ...
        },
        ...
    ]
}
```

次に、選択したデバイス ARN を使用してリモートアクセスセッションを作成できます。

```
$ aws devicefarm create-remote-access-session \
  --project-arn arn:aws:devicefarm:us-west-2:111122223333:project:12345678-1111-2222-333-456789abcdef \
  --device-arn arn:aws:devicefarm:us-west-2::device:DE5BD47FF3BD42C3A14BF7A6EFB1BFE7 \
  --app-arn arn:aws:devicefarm:us-west-2:111122223333:upload:12345678-1111-2222-333-456789abcdef/12345678-1111-2222-333-456789abcdef \
  --configuration '{
      "auxiliaryApps": [
          "arn:aws:devicefarm:us-west-2:111122223333:upload:12345678-1111-2222-333-456789abcdef/12345678-1111-2222-333-456789abcde0",
          "arn:aws:devicefarm:us-west-2:111122223333:upload:12345678-1111-2222-333-456789abcdef/12345678-1111-2222-333-456789abcde1"
      ]
  }'
```

これにより、次のような出力が表示されます。

```
{
    "remoteAccessSession": {
        "arn": "arn:aws:devicefarm:us-west-2:111122223333:session:abcdef123456-1234-5678-abcd-abcdef123456/abcdef123456-1234-5678-abcd-abcdef123456/00000",
        "name": "Google Pixel 8",
        "status": "PENDING",
        ...
}
```

これで、オプションでセッションの準備が整うまでポーリングして待機できます。

```
$ POLL_INTERVAL=3
TIMEOUT=600
DEADLINE=$(( $(date +%s) + TIMEOUT ))

while [[ "$(date +%s)" -lt "$DEADLINE" ]]; do

  STATUS=$(aws devicefarm get-remote-access-session \
    --arn "$DEVICE_FARM_SESSION_ARN" \
    --query 'remoteAccessSession.status' \
    --output text)

  case "$STATUS" in
    RUNNING)
      echo "Session is ready with status: $STATUS"
      break
      ;;
    STOPPING|COMPLETED)
      echo "Session ended early with status: $STATUS"
      exit 1
      ;;
  esac

done
```

------
#### [ Python ]

*注意: これらの手順は、リモートアクセスセッションの作成のみに焦点を当てています。セッション中にアプリをアップロードして使用する方法については、[「アプリのアップロードの自動化」を参照してください。](api-ref.md#upload-example)*

この例では、最初に Device Farm で利用可能な Google Pixel デバイスを検索し、そのデバイスを使用してリモートアクセスセッションを作成し、セッションが実行されるまで待機します。

```
import random
import time
import boto3

client = boto3.client("devicefarm", region_name="us-west-2")

# 1) Gather all matching devices via paginated ListDevices with filters
filters = [
    {"attribute": "MODEL",        "operator": "CONTAINS", "values": ["Pixel"]},
    {"attribute": "AVAILABILITY", "operator": "EQUALS",   "values": ["AVAILABLE"]},
]

matching_arns = []
next_token = None
while True:
    args = {"filters": filters}
    if next_token:
        args["nextToken"] = next_token
    page = client.list_devices(**args)
    for d in page.get("devices", []):
        matching_arns.append(d["arn"])
    next_token = page.get("nextToken")
    if not next_token:
        break

if not matching_arns:
    raise RuntimeError("No available Google Pixel device found.")

# Randomly select one device from the full matching set
device_arn = random.choice(matching_arns)
print("Selected device ARN:", device_arn)

# 2) Create remote access session and wait until RUNNING
resp = client.create_remote_access_session(
    projectArn="arn:aws:devicefarm:us-west-2:111122223333:project:12345678-1111-2222-333-456789abcdef",
    deviceArn=device_arn,
    appArn="arn:aws:devicefarm:us-west-2:111122223333:upload:12345678-1111-2222-333-456789abcdef/12345678-1111-2222-333-456789abcdef",  # optional
    configuration={
        "auxiliaryApps": [  # optional
            "arn:aws:devicefarm:us-west-2:111122223333:upload:12345678-1111-2222-333-456789abcdef/12345678-1111-2222-333-456789abcde0",
            "arn:aws:devicefarm:us-west-2:111122223333:upload:12345678-1111-2222-333-456789abcdef/12345678-1111-2222-333-456789abcde1",
        ]
    },
)

session_arn = resp["remoteAccessSession"]["arn"]
print(f"Created Remote Access Session: {session_arn}")

poll_interval = 3
timeout = 600
deadline = time.time() + timeout
terminal_states = ["STOPPING", "COMPLETED"]

while True:
    out = client.get_remote_access_session(arn=session_arn)
    status = out["remoteAccessSession"]["status"]
    print(f"Current status: {status}")

    if status == "RUNNING":
        print(f"Session is ready with status: {status}")
        break
    if status in terminal_states:
        raise RuntimeError(f"Session ended early with status: {status}")
    if time.time() >= deadline:
        raise RuntimeError("Timed out waiting for session to be ready.")
    time.sleep(poll_interval)
```

------
#### [ Java ]

*注意: これらの手順は、リモートアクセスセッションの作成のみに焦点を当てています。セッション中に使用するアプリをアップロードする方法については、[「アプリのアップロードの自動化」を参照してください。](api-ref.md#upload-example)*

*注: この例では AWS SDK for Java v2 を使用し、JDK バージョン 11 以降と互換性があります。*

この例では、最初に Device Farm で利用可能な Google Pixel デバイスを検索し、そのデバイスを使用してリモートアクセスセッションを作成し、セッションが実行されるまで待機します。

```
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.concurrent.ThreadLocalRandom;
import software.amazon.awssdk.regions.Region;
import software.amazon.awssdk.services.devicefarm.DeviceFarmClient;
import software.amazon.awssdk.services.devicefarm.model.CreateRemoteAccessSessionConfiguration;
import software.amazon.awssdk.services.devicefarm.model.CreateRemoteAccessSessionRequest;
import software.amazon.awssdk.services.devicefarm.model.CreateRemoteAccessSessionResponse;
import software.amazon.awssdk.services.devicefarm.model.Device;
import software.amazon.awssdk.services.devicefarm.model.DeviceFilter;
import software.amazon.awssdk.services.devicefarm.model.DeviceFilterAttribute;
import software.amazon.awssdk.services.devicefarm.model.GetRemoteAccessSessionRequest;
import software.amazon.awssdk.services.devicefarm.model.GetRemoteAccessSessionResponse;
import software.amazon.awssdk.services.devicefarm.model.ListDevicesRequest;
import software.amazon.awssdk.services.devicefarm.model.ListDevicesResponse;
import software.amazon.awssdk.services.devicefarm.model.RuleOperator;

public class CreateRemoteAccessSession {
  public static void main(String[] args) throws Exception {
    DeviceFarmClient client = DeviceFarmClient.builder()
        .region(Region.US_WEST_2)
        .build();

    String projectArn = "arn:aws:devicefarm:us-west-2:111122223333:project:12345678-1111-2222-333-456789abcdef";
    String appArn     = "arn:aws:devicefarm:us-west-2:111122223333:upload:12345678-1111-2222-333-456789abcdef/12345678-1111-2222-333-456789abcdef";
    String aux1       = "arn:aws:devicefarm:us-west-2:111122223333:upload:12345678-1111-2222-333-456789abcdef/12345678-1111-2222-333-456789abcde0";
    String aux2       = "arn:aws:devicefarm:us-west-2:111122223333:upload:12345678-1111-2222-333-456789abcdef/12345678-1111-2222-333-456789abcde1";

    // 1) Gather all matching devices via paginated ListDevices with filters
    List<DeviceFilter> filters = Arrays.asList(
        DeviceFilter.builder()
            .attribute(DeviceFilterAttribute.MODEL)
            .operator(RuleOperator.CONTAINS)
            .values("Pixel")
            .build(),
        DeviceFilter.builder()
            .attribute(DeviceFilterAttribute.AVAILABILITY)
            .operator(RuleOperator.EQUALS)
            .values("AVAILABLE")
            .build()
    );

    List<String> matchingDeviceArns = new ArrayList<>();
    String next = null;
    do {
      ListDevicesResponse page = client.listDevices(
          ListDevicesRequest.builder().filters(filters).nextToken(next).build());
      for (Device d : page.devices()) {
        matchingDeviceArns.add(d.arn());
      }
      next = page.nextToken();
    } while (next != null);

    if (matchingDeviceArns.isEmpty()) {
      throw new RuntimeException("No available Google Pixel device found.");
    }

    // Randomly select one device from the full matching set
    String deviceArn = matchingDeviceArns.get(
        ThreadLocalRandom.current().nextInt(matchingDeviceArns.size()));
    System.out.println("Selected device ARN: " + deviceArn);

    // 2) Create Remote Access session and wait until it is RUNNING
    CreateRemoteAccessSessionConfiguration cfg = CreateRemoteAccessSessionConfiguration.builder()
        .auxiliaryApps(Arrays.asList(aux1, aux2))
        .build();

    CreateRemoteAccessSessionResponse res = client.createRemoteAccessSession(
        CreateRemoteAccessSessionRequest.builder()
            .projectArn(projectArn)
            .deviceArn(deviceArn)
            .appArn(appArn)       // optional
            .configuration(cfg)   // optional
            .build());

    String sessionArn = res.remoteAccessSession().arn();
    System.out.println("Created Remote Access Session: " + sessionArn);

    int pollIntervalMs = 3000;
    long timeoutMs = 600_000L;
    long deadline = System.currentTimeMillis() + timeoutMs;

    while (true) {
      GetRemoteAccessSessionResponse get = client.getRemoteAccessSession(
          GetRemoteAccessSessionRequest.builder().arn(sessionArn).build());
      String status = get.remoteAccessSession().statusAsString();
      System.out.println("Current status: " + status);

      if ("RUNNING".equals(status)) {
        System.out.println("Session is ready with status: " + status);
        break;
      }
      if ("STOPPING".equals(status) || "COMPLETED".equals(status)) {
        throw new RuntimeException("Session ended early with status: " + status);
      }
      if (System.currentTimeMillis() >= deadline) {
        throw new RuntimeException("Timed out waiting for session to be ready.");
      }
      Thread.sleep(pollIntervalMs);
    }
  }
}
```

------
#### [ JavaScript ]

*注意: これらの手順は、リモートアクセスセッションの作成のみに焦点を当てています。セッション中にアプリをアップロードして使用する方法については、[「アプリのアップロードの自動化」を参照してください。](api-ref.md#upload-example)*

*注: この例では、AWS SDK for JavaScript v3 を使用しています。*

この例では、最初に Device Farm で利用可能な Google Pixel デバイスを検索し、そのデバイスを使用してリモートアクセスセッションを作成し、セッションが実行されるまで待機します。

```
import {
  DeviceFarmClient,
  ListDevicesCommand,
  CreateRemoteAccessSessionCommand,
  GetRemoteAccessSessionCommand,
} from "@aws-sdk/client-device-farm";

const client = new DeviceFarmClient({ region: "us-west-2" });

// 1) Gather all matching devices via paginated ListDevices with filters
const filters = [
  { attribute: "MODEL",        operator: "CONTAINS", values: ["Pixel"] },
  { attribute: "AVAILABILITY", operator: "EQUALS",   values: ["AVAILABLE"] },
];

let nextToken;
const matching = [];

while (true) {
  const page = await client.send(new ListDevicesCommand({ filters, nextToken }));
  for (const d of page.devices ?? []) {
    matching.push(d.arn);
  }
  nextToken = page.nextToken;
  if (!nextToken) break;
}

if (matching.length === 0) {
  throw new Error("No available Google Pixel device found.");
}

// Randomly select one device from the full matching set
const deviceArn = matching[Math.floor(Math.random() * matching.length)];
console.log("Selected device ARN:", deviceArn);

// 2) Create remote access session and wait until RUNNING
const out = await client.send(new CreateRemoteAccessSessionCommand({
  projectArn: "arn:aws:devicefarm:us-west-2:111122223333:project:12345678-1111-2222-333-456789abcdef",
  deviceArn,
  appArn: "arn:aws:devicefarm:us-west-2:111122223333:upload:12345678-1111-2222-333-456789abcdef/12345678-1111-2222-333-456789abcdef", // optional
  configuration: {
    auxiliaryApps: [ // optional
      "arn:aws:devicefarm:us-west-2:111122223333:upload:12345678-1111-2222-333-456789abcdef/12345678-1111-2222-333-456789abcde0",
      "arn:aws:devicefarm:us-west-2:111122223333:upload:12345678-1111-2222-333-456789abcdef/12345678-1111-2222-333-456789abcde1",
    ],
  },
}));

const sessionArn = out.remoteAccessSession?.arn;
console.log("Created Remote Access Session:", sessionArn);

const pollIntervalMs = 3000;
const timeoutMs = 600000;
const deadline = Date.now() + timeoutMs;

while (true) {
  const get = await client.send(new GetRemoteAccessSessionCommand({ arn: sessionArn }));
  const status = get.remoteAccessSession?.status;
  console.log("Current status:", status);

  if (status === "RUNNING") {
    console.log("Session is ready with status:", status);
    break;
  }
  if (status === "STOPPING" || status === "COMPLETED") {
    throw new Error(`Session ended early with status: ${status}`);
  }
  if (Date.now() >= deadline) {
    throw new Error("Timed out waiting for session to be ready.");
  }
  await new Promise((r) => setTimeout(r, pollIntervalMs));
}
```

------
#### [ C\$1 ]

*注意: これらの手順は、リモートアクセスセッションの作成のみに焦点を当てています。セッション中に使用するアプリをアップロードする方法については、[「アプリのアップロードの自動化」を参照してください。](api-ref.md#upload-example)*

この例では、最初に Device Farm で利用可能な Google Pixel デバイスを検索し、そのデバイスを使用してリモートアクセスセッションを作成し、セッションが実行されるまで待機します。

```
using System;
using System.Collections.Generic;
using System.Threading.Tasks;
using Amazon;
using Amazon.DeviceFarm;
using Amazon.DeviceFarm.Model;

class Program
{
    static async Task Main()
    {
        var client = new AmazonDeviceFarmClient(RegionEndpoint.USWest2);

        // 1) Gather all matching devices via paginated ListDevices with filters
        var filters = new List<DeviceFilter>
        {
            new DeviceFilter { Attribute = DeviceAttribute.MODEL,        Operator = RuleOperator.CONTAINS, Values = new List<string>{ "Pixel" } },
            new DeviceFilter { Attribute = DeviceAttribute.AVAILABILITY, Operator = RuleOperator.EQUALS,   Values = new List<string>{ "AVAILABLE" } },
        };

        var matchingArns = new List<string>();
        string nextToken = null;

        do
        {
            var list = await client.ListDevicesAsync(new ListDevicesRequest
            {
                Filters = filters,
                NextToken = nextToken
            });

            foreach (var d in list.Devices)
                matchingArns.Add(d.Arn);

            nextToken = list.NextToken;
        }
        while (nextToken != null);

        if (matchingArns.Count == 0)
            throw new Exception("No available Google Pixel device found.");

        // Randomly select one device from the full matching set
        var rnd = new Random();
        var deviceArn = matchingArns[rnd.Next(matchingArns.Count)];
        Console.WriteLine($"Selected device ARN: {deviceArn}");

        // 2) Create remote access session and wait until RUNNING
        var request = new CreateRemoteAccessSessionRequest
        {
            ProjectArn = "arn:aws:devicefarm:us-west-2:111122223333:project:12345678-1111-2222-333-456789abcdef",
            DeviceArn  = deviceArn,
            AppArn     = "arn:aws:devicefarm:us-west-2:111122223333:upload:12345678-1111-2222-333-456789abcdef/12345678-1111-2222-333-456789abcdef", // optional
            Configuration = new CreateRemoteAccessSessionConfiguration
            {
                AuxiliaryApps = new List<string>
                {
                    "arn:aws:devicefarm:us-west-2:111122223333:upload:12345678-1111-2222-333-456789abcdef/12345678-1111-2222-333-456789abcde0",
                    "arn:aws:devicefarm:us-west-2:111122223333:upload:12345678-1111-2222-333-456789abcdef/12345678-1111-2222-333-456789abcde1"
                }
            }
        };

        request.Configuration.AuxiliaryApps.RemoveAll(string.IsNullOrWhiteSpace);

        var response = await client.CreateRemoteAccessSessionAsync(request);
        var sessionArn = response.RemoteAccessSession.Arn;
        Console.WriteLine($"Created Remote Access Session: {sessionArn}");

        var pollIntervalMs = 3000;
        var timeoutMs = 600000;
        var deadline = DateTime.UtcNow.AddMilliseconds(timeoutMs);

        while (true)
        {
            var get = await client.GetRemoteAccessSessionAsync(new GetRemoteAccessSessionRequest { Arn = sessionArn });
            var status = get.RemoteAccessSession.Status.Value;
            Console.WriteLine($"Current status: {status}");

            if (status == "RUNNING")
            {
                Console.WriteLine($"Session is ready with status: {status}");
                break;
            }
            if (status == "STOPPING" || status == "COMPLETED")
            {
                throw new Exception($"Session ended early with status: {status}");
            }
            if (DateTime.UtcNow >= deadline)
            {
                throw new TimeoutException("Timed out waiting for session to be ready.");
            }

            await Task.Delay(pollIntervalMs);
        }
    }
}
```

------
#### [ Ruby ]

*注意: これらの手順は、リモートアクセスセッションの作成のみに焦点を当てています。セッション中に使用するアプリをアップロードする方法については、[「アプリのアップロードの自動化」を参照してください。](api-ref.md#upload-example)*

この例では、最初に Device Farm で利用可能な Google Pixel デバイスを検索し、そのデバイスを使用してリモートアクセスセッションを作成し、セッションが実行されるまで待機します。

```
require 'aws-sdk-devicefarm'

client = Aws::DeviceFarm::Client.new(region: 'us-west-2')

# 1) Gather all matching devices via paginated ListDevices with filters
filters = [
  { attribute: 'MODEL',        operator: 'CONTAINS', values: ['Pixel'] },
  { attribute: 'AVAILABILITY', operator: 'EQUALS',   values: ['AVAILABLE'] },
]

matching_arns = []
next_token = nil
loop do
  resp = client.list_devices(filters: filters, next_token: next_token)
  resp.devices&.each { |d| matching_arns << d.arn }
  next_token = resp.next_token
  break unless next_token
end

abort "No available Google Pixel device found." if matching_arns.empty?

# Randomly select one device from the full matching set
device_arn = matching_arns.sample
puts "Selected device ARN: #{device_arn}"

# 2) Create remote access session and wait until RUNNING
resp = client.create_remote_access_session(
  project_arn: "arn:aws:devicefarm:us-west-2:111122223333:project:12345678-1111-2222-333-456789abcdef",
  device_arn:  device_arn,
  app_arn:     "arn:aws:devicefarm:us-west-2:111122223333:upload:12345678-1111-2222-333-456789abcdef/12345678-1111-2222-333-456789abcdef", # optional
  configuration: {
    auxiliary_apps: [ # optional
      "arn:aws:devicefarm:us-west-2:111122223333:upload:12345678-1111-2222-333-456789abcdef/12345678-1111-2222-333-456789abcde0",
      "arn:aws:devicefarm:us-west-2:111122223333:upload:12345678-1111-2222-333-456789abcdef/12345678-1111-2222-333-456789abcde1"
    ].compact
  }
)

session_arn = resp.remote_access_session.arn
puts "Created Remote Access Session: #{session_arn}"

poll_interval = 3
timeout = 600
deadline = Time.now + timeout
terminal = %w[STOPPING COMPLETED]

loop do
  get = client.get_remote_access_session(arn: session_arn)
  status = get.remote_access_session.status
  puts "Current status: #{status}"

  if status == 'RUNNING'
    puts "Session is ready with status: #{status}"
    break
  end

  abort "Session ended early with status: #{status}" if terminal.include?(status)
  abort "Timed out waiting for session to be ready." if Time.now >= deadline
  sleep poll_interval
end
```

------

## 次の手順
<a name="how-to-create-session-next-steps"></a>

Device Farm は、リクエストされたデバイスとインフラストラクチャが利用可能になり次第、通常は数分以内にセッションを開始します。セッションが開始するまで、「**デバイスがリクエストされました**」ダイアログボックスが表示されます。セッションリクエストをキャンセルするには、**[リクエストをキャンセル]** を選択します。

選択したデバイスが使用不可またはビジーの場合、セッションステータスは**保留中デバイス**と表示され、デバイスがテスト可能になるまでしばらく待つ必要があることを示します。

アカウントがパブリック計測デバイスまたは非計測デバイスの同時実行数の制限に達した場合、セッションステータスは**保留中の同時実行数**として表示されます。計測されていないデバイススロットの場合、[デバイススロットをさらに購入](how-to-purchase-device-slots.md)することで同時実行数を増やすことができます。従pay-as-you-goデバイスの場合は、サポートチケットを通じて AWS に連絡して、[サービスクォータの引き上げを](limits.md)リクエストしてください。

セッション設定が開始されると、まず**進行中**ステータスが表示され、次にローカルウェブブラウザがデバイスへのリモート接続を開こう**と**している間に接続中ステータスが表示されます。

セッションが開始された後、セッションを停止せずにブラウザまたはブラウザのタブを閉じた場合、またはブラウザとインターネット間の接続が失われた場合、セッションは 5 分間アクティブなまま維持されます。その後、Device Farm はセッションを終了します。アカウントにはアイドル時間に対しても課金されます。

セッションが開始されたら、ウェブブラウザでデバイスを操作するか、[Appium](appium-endpoint.md) を使用してデバイスをテストできます。

# AWS Device Farm でのリモートアクセスセッションの使用
<a name="how-to-use-session"></a>

リモートアクセスセッションを通じた Android および iOS のアプリケーションのインタラクティブなテストの実行については、「[セッション](sessions.md)」を参照してください
+ [前提条件](#how-to-use-session-prerequisites)
+ [Device Farm コンソールでセッションを使用する](#how-to-use-session-console)
+ [次の手順](#how-to-use-session-next-steps)
+ [ヒントとコツ](#how-to-use-session-tips)

## 前提条件
<a name="how-to-use-session-prerequisites"></a>
+ セッションを作成します。「[セッションの作成](how-to-create-session.md)」の指示に従ってから、このページに戻ります。

## Device Farm コンソールでセッションを使用する
<a name="how-to-use-session-console"></a>

リモートアクセスセッションをリクエストしたデバイスが利用可能になるとすぐに、コンソールにデバイスの画面が表示されます。セッションの最大長は 150 分です。セッションの残り時間は、デバイス名の近くにある **[残り時間]** フィールドに表示されます。

### アプリケーションのインストール
<a name="how-to-use-session-install-app"></a>

セッションデバイスにアプリケーションをインストールするには、**[アプリケーションをインストール]** で **[ファイルを選択]** を選び、インストールする .apk ファイル (Android) または .ipa ファイル (iOS) を選択します。リモートアクセスセッションで実行するアプリケーションは、テスト計測またはプロビジョニングを必要としません。

**注記**  
アプリケーションをアップロードするときに、アプリケーションが利用可能になるまでに遅延が発生することもあります。アプリが正常にインストールされたかどうかを知らせる確認メッセージが表示されます。

### デバイスの制御
<a name="how-to-use-session-control-device"></a>

実際の物理デバイスと同じように、コンソールに表示されるデバイスとやり取りするには、マウスまたは同等のデバイスによるタッチ、およびデバイスの画面上のキーボードを使用します。Android デバイスの場合は、Android デバイスの **[ホーム]** または **[戻る]** ボタンと同じように機能するボタンが **[表示コントロール]** にあります。iOS デバイスの場合は、iOS デバイスのホームボタンと同じように機能する **[ホーム]** ボタンがあります。**[最近のアプリケーション]** を選択して、デバイスで実行されているアプリケーションを切り替えることもできます。

### 縦向きモードと横向きモードの切り替え
<a name="how-to-use-session-switch-between-portrait-landscape-mode"></a>

使用しているデバイスの縦向きと横向きを切り替えることもできます。

## 次の手順
<a name="how-to-use-session-next-steps"></a>

Device Farm は、手動で停止するかまたは 150 分間の時間制限に達するまでセッションを続行します。セッションを終了するには、**[セッションを停止]** を選択します。セッションが停止すると、キャプチャされたビデオと生成されたログにアクセスできます。詳細については、「[セッション結果の取得](how-to-access-session-results.md)」を参照してください。

## ヒントとコツ
<a name="how-to-use-session-tips"></a>

一部の AWS リージョンでは、リモートアクセスセッションでパフォーマンスの問題が発生する可能性があります。この原因のひとつは、一部のリージョンにおけるレイテンシーです。パフォーマンス問題が発生した場合は、リモートアクセスセッションが追いついてから、次のアプリケーション操作を行うようにします。

# AWS Device Farm でのリモートアクセスセッションの結果の取得
<a name="how-to-access-session-results"></a>

セッションの詳細に関しては、「[セッション](sessions.md)」を参照してください。
+ [前提条件](#how-to-access-session-results-prerequisites)
+ [セッション詳細の表示](#how-to-view-session-details)
+ [セッションのビデオやログのダウンロード](#how-to-access-session-files)

## 前提条件
<a name="how-to-access-session-results-prerequisites"></a>
+ セッションを完了します。「[AWS Device Farm でのリモートアクセスセッションの使用セッションの使用](how-to-use-session.md)」の指示に従ってから、このページに戻ります。

## セッション詳細の表示
<a name="how-to-view-session-details"></a>

リモートアクセスセッションが終了すると、Device Farm コンソールには、セッション中のアクティビティの詳細を含むテーブルが表示されます。詳細については、「[ログ情報の分析](how-to-use-reports.md#how-to-use-reports-console-log)」を参照してください。

後でセッションの詳細に戻るには:

1. Device Farm ナビゲーションパネルで、**[モバイルデバイスのテスト]** を選択して、**[プロジェクト]** を選択します。

1. セッションを含むプロジェクトを選択します。

1. **[リモートアクセス]** を選択し、点検するセッションをリストから選択します。

## セッションのビデオやログのダウンロード
<a name="how-to-access-session-files"></a>

リモートアクセスセッションが終了すると、Device Farm コンソールでは、セッションのビデオキャプチャとアクティビティログにアクセスできます。セッション結果で、セッションのビデオとログへのリンクのリストを表示するには、**[ファイル]** タブを選択します。これらのファイルは、ブラウザで表示したり、ローカルで保存したりできます。