PHP用Vonageビデオ移行ガイド
からの移行 opentok/opentok への vonage/video
はじめに
目的
OpenTok PHP SDK はメンテナンス・モードに入っています。 Video SDK に移行したため、OpenTok PHP SDK はメンテナンス・モードです。
スコープ
として vonage/video を使用する。 vonage/client-core ライブラリを使用するための最小要件は PHP8.1 です。しかし、これは8.1未満のバージョンでは動作しないという意味ではありません。特に、コアライブラリではコンストラクタのプロパティプロモーションを多用しているためです。
前提条件
移行を成功させるためには、PHPの事実上のパッケージマネージャであるComposerがどのように動作するのか、そしてPHPの名前空間がどのように動作するのかをしっかりと把握する必要があります。
リソース
Vonage Video SDKソースコード Packagistのソースコード Vonage PHP SDK (ビデオの動作に必要) Video API ドキュメント Video API 仕様
移行計画
影響を評価する
影響を軽減するため、Vonage Video SDKでは、ほぼすべての関数シグネチャが同じままになっています。そのため、関数の呼び出しや引数は変わりませんが、最も影響が大きいのは、クライアントの作成、クライアントの使用、アプリケーションのロジックが正しい方法でレスポンスを消費するかどうかの確認です。
の可否を左右する最も大きな影響力を持つ。 できる migrateは、サポートされていない方法を使用している場合です。現在、サポートされている機能は以下の通りです:
セッション作成 シグナリング 強制ミュート アーカイブ
現在サポートされていない機能は以下の通り:
カスタムS3/Azureバケット SIP相互接続 ライブストリーミング放送 エクスペリエンス・コンポーザー アカウント管理
上記のいずれかを使用している場合は、移行できません。
タイムライン
必要な時間は、アプリケーションの使用量に依存します。APIを呼び出すたびにOpenTokクライアントを作成するのであれば、もっと時間がかかるでしょう。また、OpenTokクライアントの作成方法によっても時間が変わります。例えば、ハードコードされたクレデンシャルは、より多くのリファクタリングを引き起こします。
動画メソッドに渡されるオプションを主に使用しないアプリケーションであれば、移行にかかる時間は長くても数時間程度です。しかし、関数に設定を渡すような複雑な要件がある場合、それを修正するために手作業によるリファクタリングが必要になります。このため、アプリケーションの呼び出し回数に応じて、より多くの時間を割り当てることをお勧めします。
パッケージ・アップデート
ビデオパッケージを更新するには、Composerで以下を実行する:
VideoおよびCore SDKライブラリはSemVerバージョン管理システムを使用しているため、これらのライブラリのいずれかがメジャーバージョンに達すると、そのメジャーバージョンを composer.json そして composer update すべての変更をアップストリームにプルする。
認証の変更
Vonage Video SDKは、OpenTokの認証情報の代わりにVonageの認証情報を使用する機能を提供します。ただし、後方互換性があります。すべての認証は、ApiKeyとApiSecretの文字列引数の代わりに、それらが何であるかを明確に定義した値オブジェクトによって処理されます。移行には Vonage\Client\Credentials\Basic::class オブジェクトに API Key と Secret を渡します。
メソッドの変更
関数のシグネチャは、作成する必要のある値オブジェクトでコード化されている。例えば createSession メソッドはこれとは変わっている:
public function createSession($options = array())
これにだ:
public function createSession(?SessionOptions $options = null): Session
optionsはもはや配列ではなく、nullがデフォルトであることがわかる。引数を渡さなければ、メソッド内でオブジェクトが生成されます。ただし、現在オプションを渡している場合は、それらを移行する必要があります。SDK内の値オブジェクトは、便利な fromArray() 関数を使えば、既存のオプションの配列があれば、それをこのように渡すことができる:
$existingOptions = [
'my-key' -> 'my-value'
];
$optionsValueObject = new SessionOptions()->fromArray($existingOptions);
$session = $client->createSession($optionsValueObject);
マイグレーション戦略
検索と置換による移行
これは2つのステップに分かれる。
- 必要な新しいパッケージをインストールする必要があります。コマンドラインで、Composerを使って以下の2つのパッケージをインストールする:
- IDEを使用して、グローバル検索と置換を使用します。クライアントの作成例は以下のようになります:
$apiKey = 'key';
$apiSecret = 'secret'
$client = new OpenTok\OpenTok($apiKey, $apiSecret);
$session = $client->createSession();
クライアントを作成するコードと同じ行を使えば、検索と置換は次のようになるはずだ:
$client = new OpenTok\OpenTok($apiKey, $apiSecret);
$client = new \Vonage\Client(new \Vonage\Client\Credentials($apiKey, $apiSecret))->video();
ここでは互換性のために完全修飾名前空間を使用しています。移行後にコードをリファクタリングして名前空間をインポートすることができます。
ここで付け加えるべき重要な点は ->video() を鎖でつないだ。もし $client ボンテージ Client()関数呼び出しは後方互換性がありません。呼び出し ->video() は、OpenTok と後方互換性のある同じクラスのエントリポイントである Video Client を返します。
- メソッドのシグネチャを変更するたびに、配列や文字列から正しい値オブジェクトへの移行を手作業でコーディングする必要がある。
ラッパー/アダプター・パターン
最も簡単な移行環境の1つは、SymfonyやLaravelのような人気のあるPHP Webアプリケーションフレームワークを使用している場合です。この状況では、クライアントをブートストラップするためにすでにサービスコンテナを使用しているかもしれません。この場合、サービス内でクライアントを置き換えるだけです。サービスコンテナを持っていない場合は、移行中に作成する良い機会になるでしょう。
主要なフレームワークがなくても、自分でこれを行うことはできる。以下のサイトを見てほしい。 ライアン・チャンドラーの素晴らしい記事はこちら PSR-11 インターフェースの実装方法について
テストに関する推奨事項
既存のテストスイートがある場合は、アサーションがまだ有効であることをチェックします。たとえばセッションを作成する場合は少し異なります。 \Vonage\Video\Session オブジェクトではなく OpenTok\Session の1つです。値オブジェクトからのデータへのアクセスも、配列経由ではなくメソッド経由になるので、以前は配列の戻り値だったものについてはアサーションを変更する必要があります。
Video Client を使用するアプリケーションの各部分に、単体テストと統合テストを追加することを推奨します。統合テストは、API へのライブコールを含み、プロダクションパイプラインの一部として実行されるべきですが、ユニットテストは、呼び出しが行われず、アプリケーションが SDK からの応答を正しく解析していることを確認するために、応答をモックアウトすることができます。
回答のモックアウトの方法については、まず、以下をご覧ください。 SDK自体の既存のテスト・スイート これは、あなた自身のテスト・スイートに組み込みたい機能をテストするものである。
サポート・チャンネル
直接サポートスラック Vonage デベロッパー Slack
Githubでチケットを発行する: https://github.com/Vonage/vonage-php-sdk-video