# クイックスタート

この章では、 Sora Android SDK を使った、
シンプルなクイックスタートアプリケーションを実行するまでの流れを紹介します。

- メディアデータ (映像と音声) の送信と受信
- 送受信する映像の描画
- 端末のカメラとマイクの使用

ソースコードは次のリポジトリで配布しています。

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

## 用意するもの

- WebRTC SFU Sora バージョン 2025.2.0 以降
- Android 5 以降 (シミュレーターは不可)
- Android Studio バージョン 2025.3.1 以降

Sora については、ここでは次の条件での運用を仮定します。
詳しくは Sora のドキュメントを参照してください。

- Sora のホスト名: "sora.example.com"
- 開発者ツール: 有効
- WebSocket の接続に WebSocket over TLS を使用
- チャネル ID: sora

以下、アプリケーションのダウンロード、依存ライブラリのダウンロードと配置、
アプリケーションの設定と起動の順に説明します。

## Android Studio のセットアップ

[Android Studio](https://developer.android.com/studio/index.html) をダウンロードし、
[インストール方法](https://developer.android.com/studio/install.html)
に従いセットアップしてください。

## クイックスタートアプリケーションのダウンロード

クイックスタートアプリケーションのソースコードは [sora-android-sdk-quickstart](https://github.com/shiguredo/sora-android-sdk-quickstart) リポジトリで配布しています。

```bash
$ git clone https://github.com/shiguredo/sora-android-sdk-quickstart.git
$ cd sora-android-sdk-quickstart
$ git checkout <branch>
```

> **注釈**
>
> 最新版（2026.1.0）を利用する場合は `master` ブランチをチェックアウトしてください。

## SDK への依存設定

本アプリケーションは Sora Android SDK への依存を持ちます。
以下、設定方法を記します。GitHub からクローンしたコードベースには
これらの設定は入っているため、あらためての設定は不要です。

### JitPack リポジトリの追加

Sora Android SDK は [JitPack](https://jitpack.io/) から取得できます。
そのため、 `settings.gradle.kts` の `dependencyResolutionManagement` で JitPack のリポジトリを追加します。

```
dependencyResolutionManagement {
    repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
    repositories {
        google()
        mavenCentral()
        // 以下の行を追加します
        maven("https://jitpack.io")
    }
}
```

### Sora Android SDK のバージョン設定

バージョンカタログに使用する SDK のバージョンを定義します。
`<version>` には使用する SDK のバージョンを指定してください。最新版は 2026.1.0 です。

```
# gradle/libs.versions.toml
[versions]
sora-android-sdk = "<version>"

[libraries]
sora-android-sdk = { module = "com.github.shiguredo:sora-android-sdk", version.ref = "sora-android-sdk" }
```

この定義は次の implementation 依存の追加で参照します。

### Sora Android SDK への依存を追加する

次に Sora Android SDK への依存を追加します。
SDK を利用するモジュールのビルド設定ファイル(ここでは `quickstart/build.gradle.kts` )に
以下の設定を追加します。バージョンカタログは `libs` エイリアス経由で参照できます (`sora-android-sdk` は `libs.sora.android.sdk` としてアクセスできます)。

```
dependencies {
    // 以下の行を追加する
    implementation(libs.sora.android.sdk)
}
```

以上で SDK を利用するための依存設定は完了です。

## アプリケーションの設定

クイックスタートアプリケーションの実行には Sora の URL を設定する必要があります。
Sora の URL を `gradle.properties` に設定します。

`gradle.properties.example` を元に `gradle.properties` を作成します。

```
$ cp gradle.properties.example gradle.properties
```

このファイルでは、接続する Sora のシグナリングエンドポイント URL `signaling_endpoint`
を指定します。環境に応じて設定してください。
好みでチャネル ID `channel_id` の指定も可能です(そのままでも結構です)。

`gradle.properties`:

```
# Setting Sora's signaling endpoint and channel_id
signaling_endpoint = wss://sora.example.com/signaling
channel_id         = sora
```

以上でアプリケーションの設定は完了です。
クローンしたディレクトリを Android Studio で開き、アプリケーションの起動を行ってください。

## アプリケーションの起動

Android 端末をマシンに接続します。Sora Android SDK はシミュレーターに対応していません。実機を利用してください。
そして、接続した Android 端末を選択してビルド・実行します
(メニュー "Run" > "Run (quickstart)")。

起動したアプリケーションの画面で、 START ボタンをタップすると映像、音声の送受信処理が開始されます。

### カメラとマイクの権限許可を取得する

Sora Android SDK で映像の送受信を行うにはカメラ(android.permission.CAMERA) と音声(android.permission.RECORD_AUDIO)の権限許可が必要です。

クイックスタートアプリケーションでは上記の権限を取得するために、接続開始時に
`Manifest.permission.CAMERA` と `Manifest.permission.RECORD_AUDIO` の権限をリクエストします。

### Sora に接続する

起動したアプリケーションの画面で、 START ボタンをタップすると Sora に接続します。
このとき、「写真と動画の撮影」と「音声の録音」の許可を求めるダイアログが表示されるので許可してください。

接続に成功するとカメラ(利用可能な場合は前面カメラを優先して使用)の映像が表示されます。

接続できなかった場合は Sora のエンドポイント URL やネットワークの状態を確認してください。

このアプリケーションでは、次のパラメータで Sora に接続しています。

- Sora への接続- [マルチストリーム](https://sora-doc.shiguredo.jp/MULTISTREAM)
- 映像コーデック: VP9
- 音声コーデック: OPUS

双方向でビデオチャットするには、例えば、PC ブラウザから Sora DevTools でマルチストリーム接続
を行うと、クイックスタートアプリケーションに相手側の映像が表示されます。
もちろん、Android 端末をもうひとつ用意して本アプリケーションをインストール、起動しても
よいですし、iOS アプリケーションとのビデオチャットも可能です。

## 参考

- PC ブラウザからのアクセス: [Sora 開発者ツール](https://sora-doc.shiguredo.jp/DEVTOOLS)
- Sora iOS SDK: [Sora iOS SDK のドキュメント](https://sora-ios-sdk.shiguredo.jp/)
