# クイックスタート

この章では、`devtools` を使って `Sora Flutter SDK` の動作を確認するまでの最短手順を説明します。

`devtools` は `Sora` への接続確認や `SDK` の動作検証に使える `Flutter` アプリケーションです。
ソースコードは次のリポジトリで配布しています。

- [sora-flutter-sdk](https://github.com/shiguredo/sora-flutter-sdk)

> **注釈**
>
> アプリケーションをゼロから実装する手順については [実装ガイド](getting_started.html) をご確認ください。

## 用意するもの

- `Dart` `3.11.1` 以上と `Flutter` `3.44.0` 以上がセットアップ済みであること> `Flutter` のセットアップについては [Flutter ドキュメント](https://docs.flutter.dev/) をご確認ください。
- 利用する `Sora` 環境があり、接続できる状態であること> `Sora` については [Sora ドキュメント](https://sora-doc.shiguredo.jp/) をご確認ください。
- 接続先の `Sora` シグナリング URL が分かっていること
- 接続先のチャネル ID が決まっていること

### 動作環境

| プラットフォーム | 要件 |
| --- | --- |
| `Android` | Android 10 (API 29) 以降の実機 |
| `iOS` / `iPadOS` | iOS 16 / iPadOS 16 以降の実機 (シミュレーターは非推奨) |
| `macOS` | macOS 15 以降、Apple Silicon |
| `Windows` | Windows 10 20H2 以降、x86_64 |
| `Linux` | Ubuntu 24.04、x86_64 |

## ソースコードの入手

```bash
$ git clone https://github.com/shiguredo/sora-flutter-sdk.git
$ cd sora-flutter-sdk
$ git checkout develop
$ cd devtools
```

> **注釈**
>
> この手順は `sora-flutter-sdk` の `develop` ブランチを対象にしています。

## 依存関係の取得

以降のコマンドは `SDK` の `devtools` ディレクトリで実行します。

```bash
$ flutter pub get
```

## 接続情報の設定

接続する `Sora` のシグナリング URL とチャネル ID を設定します。
設定ファイルのテンプレートをコピーし、環境に合わせて編集してください。

```bash
$ cp lib/configs/environment.example.dart lib/configs/environment.dart
```

`lib/configs/environment.dart` を開き、`Environment.urls` と `Environment.channelId` を設定します。
`Environment.urls` はシグナリング URL のリストです。

```dart
class Environment {
  static const urls = <String>['wss://sora.example.com/signaling'];
  static const channelId = 'sora-example-channel-id';
}
```

`environment.dart` は `devtools` の `.gitignore` で除外されています。
接続先を設定したこのファイルを `Git` の管理対象へ追加しないでください。

ロール、音声、映像の設定は、起動後に `Connect` ボタンから開く接続設定画面で変更します。
既定値は `Role` が `sendrecv` 、`Connect Audio` と `Connect Video` が `true` です。

## 起動

端末をマシンに接続するか、エミュレーター / シミュレーターを起動した状態で実行します。

```bash
# 接続されているデバイス一覧を確認する
$ flutter devices

# デバイスを指定して起動する
$ flutter run -d <device-id>
```

デバイスが 1 つだけの場合は `-d` を省略できます。

```bash
$ flutter run
```

## Sora に接続する

アプリケーションが起動したら、接続設定を確認して `Connect` ボタンを押すと `Sora` に接続します。

- `Role` を `sendrecv` にすると、音声と映像を送受信します
- `Role` を `recvonly` にすると、カメラとマイクを使わずに受信します
- 音声だけを送信する場合は、`sendrecv` または `sendonly` にして `Connect Audio` を `true` 、`Connect Video` を `false` にします

`sendrecv` で音声と映像を送信する場合は、カメラとマイクが必要です。
実機での確認を推奨します。
エミュレーター / シミュレーターに入力デバイスがない場合は、`recvonly` または映像を無効にした設定で確認してください。
`recvonly` で受信するには、同じチャネルへ映像または音声を送信する別のクライアントが必要です。

- `Android` ではカメラとマイクの権限許可を求めるダイアログが表示されます。許可してください。
- `iOS` / `iPadOS` では初回起動時にカメラとマイクの権限許可を求めるダイアログが表示されます。許可してください。
- `macOS` ではシステム環境設定からカメラとマイクのアクセスを許可する必要があります。

接続に成功すると、画面の接続状態に `State: connected` と表示されます。
映像送信を有効にした場合はローカル映像も表示されます。
接続できなかった場合は `Sora` のシグナリング URL やネットワークの状態を確認してください。

双方向でビデオチャットするには、別のクライアントから同じチャネル ID で接続してください。
`Sora DevTools` や別の `Sora SDK` を使ったクライアントと相互に通信できます。

## 関連ページ

- [実装ガイド](getting_started.html) をご確認ください
- [Sora 開発者ツール (DevTools)](https://sora-doc.shiguredo.jp/DEVTOOLS) をご確認ください
- [Sora ドキュメント](https://sora-doc.shiguredo.jp/) をご確認ください
