ほんのわずかな違いの間の大きな壁の前に佇む
Azure Communication Serviceを使うと、Zoomのようなグループ通話アプリを自分で作ってみることができます。ReactのUIライブラリも用意されていて、その中のCallWithChatCompositeというComponentを使えば、すぐに試せるサンプルコードもあります。このComponentはほぼ完ぺきでその仕様を受け入れるのであれば問題はありません。しかし例えば、コントロールボタンのツールバーをスクリーン内ではなくアプリヘッダーへ移動したいと思ったとき、この複合Componentを使って実現することはできません。ライブラリにはそのような要件のために、もっと細部の部品Componentも準備されています。つまり、このライブラリを使う際に、用意された複合コンポーネントをそのまま使うか/それに代わるオリジナルのコンポーネントを独自に開発するか?を選択することになります。
ReactのComponentの思想的にこれは難しくないはずです。規定の複合コンポーネントのコードもオープンになっているのでそれを参考にMyCallWithChatCompositeを作成すれば良さそうです。ですが、たいがいそう簡単に事は運ぶことはありません。今回の場合は、UIライブラリ(@azure/communication-react)から、CallAdapterはimportできるのに、CallAdapterProviderがimportできない!というところで躓きました。謎です。理由がわかりません。CallAdapterProviderについてはライブラリの使用説明にも登場しないComponentなので、これを使用できないことを責めることもできません。コードのオープン化により、新しい機能がどんどんすぐに利用できるようになってきた半面、作者の意図などのように、本来その説明がないとわからないことにたどり着くのが難しくなっている気がします。なんでもちゃんとわかるように説明されているわけではない。この壁の手前でくじけるか、壁の向こうに行くのか?覚悟を聞かれている気がしています。