AI Noise-Canceling Mic Adapter を買った
これです。
何がよかったか
繋ぐだけでノイズキャンセリングマイクが出来上がる素晴らしさ。
指向性マイク〜とかそういうのを考えなくていい、繋ぐ。以上。(色々レビューを見ていると普通のマイクではダメで、マイク付きヘッドホンないしイヤホンがよいらしい)
僕はiPhoneについてきたEarPodsで試した。生活音が世界に配信されない 地味にストレスになっていたことに気づく。
自分だけの空間ではないので、生活音は付き物。これが無くなったのがすごく精神衛生上良い。
試した感じ75dBくらいの工事の音を流していてもしっかり声だけになった。持ち運びやすい AirPodsのケースくらいのサイズ。
スマホにも使えるのでいざというときに隠し持っておくと良さそう。
公式を見るとAndroidに対応している風にしか見えないのでiPhoneは動作しないかもしれない。
そもそもUSB-C to Lightning ってあったかな。iPadは試していない。安価 5000円くらい。
いいマイクとかを考えるよりずっと安い。
ここができるともっとよかった
自分以外のボイスを配信したくない 難しそう。
試した感じだとBGMにボイス付きの曲を使っているとしっかり配信されてた。3.5ピンの接続がもう少しいい感じになるといい しっかり押し込まないといけないんだけど、ちょっとやりにくかった。
結果的に
買ってよかった。
リモートワークは減少傾向にあるみたいだけど、オンラインミーティングは浸透したと思うので活躍する機会は多そう。
「熊とワルツを」を読んだ
リスクの考え方やプロジェクトの管理にすごく役立つ内容だった。
今も昔も変わらない普遍的なことがそこに書いてあるように思った。
リスクを避けてばかりでは成長できない。これを具体的にしれただけでも一読の価値があるものだった。
Sora Unity SDK サンプル集を動かしてみたfor iOS
これは sora-unity-sdk-samples を iOS で動かした手順をまとめた記事です。
目次
GitHubへのリンク
この記事はどこまで?
環境構築をして、iOS 端末に映像が映るのを確認するまでです。
Windows 向けはこちら
torikizi.hatenablog.jp
Mac 向けはこちら torikizi.hatenablog.jp
Android 向けはこちら torikizi.hatenablog.jp
実行環境
- iPhone ( iOS 13.6 )
- Macbook Pro
- Unity 2019.4.0f1
事前準備
- サンプルのリポジトリから
Clone or Download
で zip を取得します - ダウンロード完了後適当な場所に展開しておきます
- 展開した先にターミナルで移動します
cd hoge/sora-unity-sdk-samples
./install.sh
でインストールシェルを実行します。 ( Windows の場合はエクスプローラで install.bat を実行します )
準備完了からシーンオープンまで
ここまで来たら準備完了なので 「プロジェクトを開く」 で開きます。
Unity Hub ならリストに追加です。
開くと以下のような感じになるので、用意されているシーンをロードでOK
接続先の設定
接続先は簡単に接続確認ができる Sora Labo を使います。
Sora Laboの使い方
GitHub アカウントでサインアップまたはサインインする
でサインアップ・サインインします- サインイン時の規約は当然ですが、ドキュメントに必ず目を通すように書いてあるので読みます
特にこのあたりは注意が必要
- Sora Labo は商用目的で利用可能ですか? - 商用目的での利用できません - Sora Labo をサービスに利用可能ですか? - Sora Labo は検証目的以外では利用できません - Sora Labo は法人や個人事業主で利用できますか? - 法人や個人事業主での利用は申請が必須です - Sora Labo はアカデミックで利用可能ですか? - アカデミックでの利用は申請が必須です - Sora Labo は長時間接続しても問題ありませんか? - 長時間接続の利用は申請をお願いします - Sora Labo のベンチマーク結果を第三者へ公開することの禁止
Sora LaboのシグナリングURLとシグナリングキーをそれぞれコピーして、
Script
のSignalingUrl
とSignaling Key
に張り付ける
Channel Id
は GitHubID@ のあと適当につけて OK のようです。
例えば torikizi が Git Hub ID ならtorikizi@rtc-test
みたいに設定します。
詳細は「GitHub - shiguredo/sora-labo-doc: Sora Labo ドキュメント」
ビルド準備
SDKのドキュメントの中に iOS の注意点があるので確認します。
詳細はドキュメント側に譲りますが、大きく以下のような確認をします。
- iOS Plugin の設定確認
- カメラ権限の設定確認
- マイク権限の設定確認
- ビルドターゲットバージョン
ビルド実行とその後
iOS 端末で利用するには Unity でビルドした後出力された xcode プロジェクトからビルドして転送する必要があります。
Unity の設定で事前にやっても良さそうですが、忘れがちなので signing & Capabilities をちゃんと設定します。
動いた
xcode でビルドの準備ができたら iOS 端末を接続して Build (▶︎ボタン) を実行すればビルドが開始されます。
ビルド成功後、iOS 端末で動いているのを確認します。
初回はカメラやマイクを使うか聞かれるのでOKを押します。
今回は Android Mac iPhone で動かしています。
おわりに
WebRTC のサービスが動かない?そんな時確認したいリスト
たまにいざサービスを体験しよう、動かしてみようとした時に「あれ?」ってなることがあるのでまとめておきます。
僕自身の体験をベースに書いています。
今後も自分が体験した項目の追加と、スクリーンショットを追加をしていくつもりです。
目次
まず確認したいところ
困った時にはまず以下を確認していきます。
物理的に接続ができているかどうかはあるあるなのでまず確認したいところです。
接続しただけでなく、認識しているかどうかが次に確認したいところになります。
ハード観点での確認
カメラやマイクの物理的な接続はちゃんとできてますか?
- パソコンや端末にきちんと接続できているか確認してみる
- USBカメラであればちゃんとケーブルが刺さっているかどうか
- 接続後にパソコンや端末がカメラを認識できたか確認してみる
- パソコンや端末にきちんと接続できているか確認してみる
カメラやマイクは問題なさそうなのに映像がでない場合、ネットワークを確認してみましたか?
- 無線に接続できているか確認してみる(普段使ってないパソコンや端末だとあったりします)
- 有線ケーブルが抜けてないか確認してみる(普段使ってないパソコンや端末だとあったりします)
ソフト観点での確認
他アプリ(標準搭載でOK)を起動してみて、マイクが機能していることを確認できましたか?
- カメラアプリや FaceTime など環境によって確認できるアプリは異なりますが、できるだけデフォルトで入っているもので確認してみます
カメラやマイクは問題なさそうなのに音声や映像がでない場合、権限を確認してみましたか?
- 他のアプリでカメラを掴んでないか確認してみる(カメラ一つで同時に使えるアプリは一つです)
- 利用しようとしているブラウザでカメラとマイクが許可されているか確認してみる
- 利用しようとしているアプリがカメラとマイクの許可がされているか確認してみる
ここまで大丈夫そうなことが確認できているのに解決しない場合
トラブルシュートを使ってみます。 test.webrtc.org
STARTを押してしばらく待つとこんなふうに結果が出てきますので、NGだったところをチェックしていきます。
マイクがダメそうだった
おそらくトラブルシュート実行前の確認で大丈夫になっているはず。
もしNGだった場合接続をもう一度確認してみると良さそうです。
カメラがダメそうだった
おそらくトラブルシュート実行前の確認で大丈夫になっているはず。
もしNGだった場合接続をもう一度確認してみると良さそうです。
ネットワークがダメそうだった
それでも解決しなさそうだった
ここまできて発見できていないと解決は困難です。
環境依存、ハード固有、様々な可能性があります。
自分が困ったときに解決した物などをピックアップして書いておきます。
カメラもマイクも問題ないはずなのに映像や音声がでない
- 利用したいアプリ以外でマイクやカメラを使用していないか確認してみる
- ブラウザで権限が許可されているか確認してみる
- マイクが ON/OFF のついてるタイプで OFF になってないか確認してみる
以上です。
少しやり方を変えることにした
これは何か
これまでのやり方から変えてみようってお話です。
いわゆるポエムです。
なぜやってきたか
勧められるままはじめてみたのがきっかけで、自己満足にちかい感覚でやってきました。
なぜ変えるか
以下のような理由で変えるべきと判断しました。
- 自己満足ではあるんだけど惰性に感じる。
- 読んで書いたことに満足だけしてしまっている感覚がある。
- もう少ししっかりとした力に繋がって欲しい。
- (当たり前だけど)変えていかないとそこまでじゃ
ここまでで何が得られたのか
継続できるってのを自分できちんと認識できることができた。
アウトプットしていくというものに対するハードルもだいぶ落ちたので他に活かせそうな自信ができた。
どうしていくか
少し前にこの本を読みまして、これを参考に少し考えてみました。
しばらくは試行錯誤をしながら、分野を決めてガツガツと理解したものを書き記していく形にしようかなと。
あまり変わらないんですけど、意識が高くても続かないだけなので....
余談
- 1日1つだけ強くなる
最近の自分のロールを棚卸しして、1日1つ強くなったことをまとめています。
書きやすい場所を模索してるけど、最終的に一番身近なデバイスであるiPhoneのメモにまとめることになりそう。
- 読んだ本とか
内容をどこまで書くのか?の線引きが難しいので思ったことの感想だけに留めることが多いです。
- Ghost of Tsushima
誉れだけでは蒙古に打ち勝つことができないように変わらねば脅威に打ち勝っていくことはできない。
本当に得たいものは何かを考えることこそ肝要。
そんな感じでした。
Reactガイドを読んでいくその310
これは
Reactのガイドを読んでいく記事です。
ガイドのリンク
サスペンスを使ったデータ取得(実験的機能)
サスペンスと競合状態
競合状態はコードが実行される順番について誤った前提を置くために発生するバグ
useEffect フックやクラスの componentDidUpdateを使うとよく起こる。
以下の例を見ながら明日それぞれデータ取得方を見ていく。
function getNextId(id) { // ... } function App() { const [id, setId] = useState(0); return ( <> <button onClick={() => setId(getNextId(id))}> Next </button> <ProfilePage id={id} /> </> ); }
今日はここまで。
Reactガイドを読んでいくその309
これは
Reactのガイドを読んでいく記事です。
ガイドのリンク
サスペンスを使ったデータ取得(実験的機能)
早期から取得を開始する
データ取得ライブラリを使うのであればレンダーより前に取得を開始することが大切。
// Start fetching early! const resource = fetchProfileData(); // ... function ProfileDetails() { // Try to read user info const user = resource.user.read(); return <h1>{user.name}</h1>; }
readの呼び出しは開始ではなく、取得最中の物を読み込みできないか試みているだけのものになる。
コメントにもあるように最初に開始されている。
サスペンスの仕様はまだ検討中のもので、仕組みは柔軟で制約は多くないとはいえ、まだどうすべきか開発側が検討しているらしい。
Reactコミュニティってどういう感じなんだろうか。そちらに興味が出てきた。
今日はここまで。