
# クイックスタート

この章では SoraQuickStart というサンプルアプリを使って、Sora iOS SDK を使ったシンプルな iOS アプリケーションを実行するまでの流れを紹介します。
この iOS アプリケーションを通じて、次の Sora iOS SDK の使い方を学べます。

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

ソースコードは [sora-ios-sdk-quickstart](https://github.com/shiguredo/sora-ios-sdk-quickstart) リポジトリで配布しています。

## 用意するもの

バージョンなどの詳細な条件は [システム条件](setup.html#b80b67) をご確認ください。

- iOS 端末 (Sora iOS SDK はシミュレーターに対応していません)
- Mac OS X と Xcode
- Sora

Sora については、ここでは次の条件での運用を仮定します。
これは [Sora のチュートリアル](https://sora-doc.shiguredo.jp/TUTORIAL) が完了した時と同様の条件です。
詳しくは Sora のドキュメントをご確認ください。

- Sora のホスト名: "sora.example.com"
- デモ機能: 有効
- HTTPS を使用
- WebSocket の接続に wss を使用
- メディアチャネル ID: "sora"

## サンプルアプリケーションをビルドする

コードを書く前に、サンプルアプリケーション SoraQuickStart をビルドして実行してみましょう。

### ソースコードをダウンロードする

サンプルアプリケーションのソースコードは [sora-ios-sdk-quickstart](https://github.com/shiguredo/sora-ios-sdk-quickstart) リポジトリで配布しています。
`master` ブランチをクローンもしくはダウンロードしてください。

### 接続情報を設定する

接続する Sora のシグナリング URL とチャネル ID は `Environment.swift` に設定します。
`SoraQuickStart` ディレクトリ配下の `Environment.example.swift` を元に `Environment.swift` を作成してください。


```
$ cp SoraQuickStart/Environment.example.swift SoraQuickStart/Environment.swift
```

SoraQuickStart の Xcode プロジェクトを開き、接続する Sora のシグナリング URL とチャネル ID を設定します。
接続する Sora が認証メタデータを必要とする場合は signalingConnectMetadata を設定してください。

`Environment.swift`:

```
// 接続する Sora のシグナリング URL
static let url = URL(string: "wss://sora.example.com/signaling")!

// チャネル ID
static let channelId = "sora"

// 認証メタデータ
static let signalingConnectMetadata: Encodable? = ["access_token": "YOUR_TOKEN"]
```

### ビルドして実行する

iOS 端末をマシンに接続します (Sora iOS SDK はシミュレーターに対応していません。実機を利用してください) 。ビルドターゲットのアーキテクチャに接続した iOS 端末を選択してビルド・実行します (メニュー "Product" > "Run") 。

ビルド対象アーキテクチャの選択:

![image](images/quickstart/build_arch.png)

### Sora に接続する

アプリケーションが起動したら、 Connect ボタンをタップすると Sora に接続します。
接続に成功するとカメラとマイクの使用許可を求めるダイアログが表示されます。
許可後、上下のビューにカメラの映像が表示されれば接続成功です。

接続できなかった場合は Sora の URL やネットワークの状態を確認してください。
[Sora に接続できない](trouble.html#f18f06) もご確認ください。

## 実装上の注意点

### 再接続について

Sora と Sora iOS SDK は再接続をサポートしていません。
意図しない接続解除が発生した場合、 Sora iOS SDK が自動的に再接続を行うことはありません。
再度同一のチャネルに接続する必要があれば、新たに接続処理を行うように実装してください。

### カメラのマイクの初期化

カメラとマイクはパブリッシャーの接続時に初期化されます。
Sora iOS SDK では、カメラの映像は `CameraVideoCapturer` が扱います。
([Info.plist にプライバシーの設定を記述しないとアプリケーションが落ちますので注意してください](setup.html#153cee) )。

### 映像データの送信の仕組み

`CameraVideoCapturer` が取得したカメラの映像は、配信ストリームを通じて Sora に送信されます。

## サンプルアプリケーションのポイント

サンプルアプリケーションにて実装されている Sora iOS SDK 開発のポイントを以下に記載します。

- Sora の接続には「 Sora のシグナリング URL 」と「チャネル ID 」が必要です。接続に関する設定を `Configuration` にセットします。
- Sora の接続は `Sora` オブジェクトの `connect(configuration:webRTCConfiguration:handler:)` を呼びます。
- 映像の描画は `VideoView` オブジェクトが行います。 `VideoView` はストリームの `videoRenderer` プロパティにセットします。
- 端末のカメラとマイクはパブリッシャーの接続時に初期化されて使用可能になります。

## その他のサンプルコード

下記のリポジトリでその他の様々なサンプルコードを公開しています。


