# ガイド

## 実装上の注意

### 必ず connect を呼び出したら disconnect を呼び出す

Sora Python SDK は C++ で実装されています。そのため、必ず connect を呼び出したら disconnect を呼び出さないとセグメンテーション違反が発生する場合があります。

できるだけ `with` を使うようにしてください。 `with` を利用する際は `__enter__` で `connect` を呼び出したけど、接続が上手くいかない場合に、例外を発生させる時は必ず `try/except` を使ってキャッチして、 `disconnect` を呼び出してください。

### その他

- Sora Python SDK のコールバックメソッドは、Python ランタイムのスレッドではなく、 C++ で実装された処理を実行するために別に立てたスレッドから呼び出されるため、以下の点に注意する必要があります:- コールバックの中で例外を使う場合には、必ずコールバック内でキャッチして外に漏らしてはいけません （例外が外に漏れると Python プログラムが異常終了します）
  - コールバック処理の中にブロックする処理を記述してはいけません （コールバック時呼び出しスレッド上では WebRTC 通信を実現する諸々の処理も走っているので、ブロックするとそれらの実行を阻害してしまう）
- 一度切断された Sora インスタンスを使い回して、新しい接続を始めることはできません
