【技術情報】「恋顔」や「3teneFT」がうまく動かない人へ【ネットワーク問題のトラブルシュート】
※本記事のメインはiPhone-PCを接続する恋顔というアプリのトラブルシュートですが、Bonjourを利用するデバイス間の接続問題に対し汎用的に使える技術情報を含んでいます。
また3tene (3teneFT)の接続トラブルに対しても同様に有効な解決方法となるはずです。
ご参考までに。
つい先日リリースされ一部で評判となっている「恋顔」というアプリを皆さんご存知でしょうか?
恋顔は「フェイストラッキング」と言われる画像処理によりアバターの操作を可能とするアプリ(代表的なのがFacerigやにじさんじ)の一つで「アバターに感情を吹き込む最強の表情トラッカー」を謳い文句に、繊細な表情の変化までを再現できることをウリに注目を集めています。
実際見てみると、見るからに自然な瞬きやウインクといった動作、後ろを向けるほどの首の自由度など、iPhone1台でここまでできるのか…と看板に偽り無い精度に驚かされます。
正確にはiPhoneのカメラで認識⇒PCソフトで描画処理なのでPCも必要にはなるのですが、これはむしろメリットでもあります。PCに取り込んでさえしまえば、あとはOBSに流そうが、zoomに流そうが、用途は思いのままだからです。
これは普通に欲しいな…というのが正直な感想ですが、恐ろしいことに作者のヒラリチャン氏は下記の通り当面120円(96%オフ)というSteamの目玉セールもかくやというビックリ割引をオファーしています。いいからとりあえず買っておけ、そんな天の声が聞こえるようです。
当然この恋顔も私は即買いしようとしました。が、しかしそもそも私はiPhoneを持っていなかった。PC版ストアでも買わせてくれば良いものを…これだから林檎は…(個人的な愚痴)。
実際の所、今日日のZoom飲みやWEB会議の流行を見るに、真剣にVTuber活動をする人でなくとも、たとえ一発ネタ用途としてもこれは価値のある出費だと思います。私もFacerigでリアル友人とのWEB飲み会に美少女や黒猫に変身して出席したことがありますが、正直割とウケはよかったです。それに自分が自分でない何かに変身して動くという経験は非常に面白いものです。
iPhoneを持っている方は、マジでとりあえずで買って損はないと思います。
ただし、要件としてTrueDepthカメラ(顔認証用の高精度カメラ)が搭載されているモデルが条件である点は注意。iPhoneでいうとiPhoneX以降が対応しています。ただし最近発売されたiPhone SEは実は非対応(FaceTimeという一世代前のカメラ)なのでご注意を。
iPadは…余りに種類が多すぎて私はさっぱりなのでメーカーHPを見てください。
まあ、もし未対応でも後のために買っておいて良い価格だとは思いますけれどもね。steamセールでゲームを衝動買いして、あとでグラボを買うみたいなものです。
(7/20追記)
はい、結局本当にゲームを買ってからグラボを買いました。
そうです、iPhone11をフェイストラッキングのためだけに買ってきましたよ!
うわあ、でも本当に可愛く動く!買ってよかった!
…実際、色々使い比べましたけど、恋顔のフェイストラッキングの「かわいさ」は3tene、iFacialMocap、WaidayoみたいなiPhoneX/11を使うトラッキングアプリの中でも群を抜いているんですよね…。
◆本題:恋顔でiPhoneとPCが上手く接続できない問題
さて、前置きが毎度長くてすみません。
今回の本題は、私の知人バーチャル商人アキナさんの下記のツイート。
先程も言ったように、恋顔はiPhoneのカメラにて顔認識を行った後、それをPCへ転送してから描画処理を行うシステムとなっています。そしてこの転送処理はWi-Fiを経由してワイヤレスで行う仕組みです。
つまり、ネットワーク関係でのトラブルによる不具合がどうしても生じやすいのです。
もちろん導入方法については、ヒラリチャン氏がキチンと丁寧な説明書を用意してくれているのですが、ネットワークというのは人によって環境がバラバラな上、いざ問題が起こった時の対応が素人には難しいものです。アキナさんもそれに引っかかってしまった一人というわけです。おそらくこれは氷山の一角で、他に同じ問題で困っている方もいるはず…。
というわけで、今回たまたま問題解決のお手伝いをさせて頂いたアキナさんのケースを例にしながら、恋顔接続時のネットワークトラブルとその対処方法についてまとめます。
毎度のことながら私は話が長いので、とりあえず対処法だけ教えて欲しいという方は「具体的な対処法」まで読み飛ばしてください。
ただしネットワーク関係の基礎知識として勉強になるのは保証するので、よければ後学のために本文もどうぞ。
また付録として、私が今回トラブルシュートのために試した調査用のコマンドや、合わせて調べたBonjour(Apple系のネットワークシステム)の仕組みについての情報もまとめます。
◆問題の症状
●PCとスマホは同じネットワーク内(同じルーターの内)で接続している
●セキュリティソフト(ESET)からは恋顔のソフトを通信フィルタリング対象外に指定済み
●PC側でPC側プログラム(Koigao.exe)を起動する⇒正常に起動(写真参照)
●コマンドプロプトが起動し、以下のようなメッセージが表示される(正常:もしこれが出ない方はBonjourがインストールされていません。公式ドキュメントの説明に沿ってインストール後、再起動しましょう)
●その後、接続IDの設定してからiPhoneアプリで開始ボタンを押す⇒開始にはなるがウンともスンとも言わない(問題発生)
[C:\Windows\system32\dns-sd.exe]
Registering Service FaceTracker._facetracker_12345._tcp.local port 54321
XX:XX:XX.XXX Got a reply for service FaceTracker._facetracker_12345._tcp.local.: Name now registered and active
ポイントとしては、
・アプリは開始済み&顔認識OK⇒アプリの顔認識は正常
・しかし通信アイコンは「準備OK」にならず「準備中」のまま
この状態から、結論から言うとネットワーク通信でのエラーが原因であると判断しました(詳細なトラブル調査方法は付録に書きます。必要な方はそちらを参照してください)。
さて、一体どういうトラブルが起こっていたのでしょうか?
◆問題の原因はセキュリティソフトによるポートブロック
まずここで、そもそも恋顔がどういう仕組みで通信をしているのか?を簡単に説明します。
恋顔ではiPhoneからPCへトラッキング情報を送信するに当たって、ルーターを経由して通信を行っています(同じネットワークに接続する必要がある理由がコレ)。ここでそもそも送信先のPCを探す仕組みがBonjourなのですが、話が長くなるのでこれについては後述。
ただしiPhoneからルーターを経由した恋顔のデータは、PCで受け取る前に一つの壁を超えなければいけません。PCにはポートという決まったドアが設置されており、ここを通らないと外部からのデータは受け取ることができない仕組みになっています。このドアをポートといい、0~65535の番号が割り当てられています。
恋顔は54321番ポートから送られてきたデータを使う設定になっています(先程のメッセージでも"local port 54321"と表示がありましたね)。ちなみにこの番号は、通常のhttp(WEB)通信は80番ポート、メール送信のsmtpは25番などソフトごとに決められています(詳細はwikipediaのポート番号の項目を参照)。
ちなみに3teneFTの場合、私のPCでは11210番ポートを使用していました(念の為、後述する方法で通信しようとしているPCのポートを確認することを勧めます)。
通常はこのポートが「いいよー、通りな」と快く通信を通してくれるのですが…
こんな風にあちこちドアが開きっぱなしでは空き巣が入り放題で危ない!問題だ!と、こうしたポートを監視して通信をブロックするガードマンがPCの中にいます。これがいわゆるセキュリティ対策ソフトで、Windows標準のWindows Defender、Avast、MaCfee、そして今回アキナさんの場合問題になったESETなどが有名なソフトです。
つまり今回のネットワークエラーの原因は恋顔の54321番ポート経由の通信を、セキュリティソフトがブロックしていたことが直接的な原因でした。
(ちなみにアキナさんが実施していた通信フィルタリング対象外指定はhttp, POP3, IMAPなど別ポートを使う通信プロトコルのみ対象外とする設定だったため効果がありませんでした)
では、原因がはっきりしたところで具体的な対処法に移ります。
(なお補足として、iPhoneが正常にPCを発見できない場合=Bonjourが上手く動作していない可能性もあります。この場合のトラブルシュートは付録を御覧ください)
◆具体的なトラブルの対処法
というわけで今回のトラブルは、恋顔の通信を「なんだこれは」と怖い顔で睨んでいるセキュリティソフトさんを納得させれば一件落着ということになります。
そのためにはセキュリティソフトのポート開放設定を変更する必要があります。この具体的な方法はセキュリティソフトごとに違うので、「〇〇(ソフト名) ポート開放」などで検索して試してもらうのが良いかと思います。
ポイントは、
・ローカルのポートを開放する(ルーターのポート開放ではない)
・プロトコルはTCP (※安定した通信をするための通信方式)
・開放するポート番号は54321
・許可するアプリケーションとして恋顔(koigao.exe)を指定する
と、いう辺りになるでしょう。3teneFTの場合は11210番ポートを開放してやればOKかと思います。
一例として、今回アキナさんが引っかかったESETのポート開放の解説記事(公式)と、別ソフトですが類似のトラブル対応をした方の記事を紹介しておきます。
セキュリティソフトによっては、ポート関係のセキュリティ機能の呼び方が違う場合はありますが、上の原理とメーカー側のヘルプを適切に読めば問題の解決はちゃんとできるはず。
ちなみにこの通信セキュリティによるトラブルは作者のヒラリチャン氏もちゃーんと注意するように書かれていることを注記します。
"動かない場合は、ファイアウォールやセキュリティソフトなどの設定を見直してください。(特にWindowsでは、ファイアウォールの接続許可ダイアログでデフォルトでプライベートネットワークにチェックが入っていないことがあるようです)"
こういうネットワークトラブルは、分かっている人からすれば単純な話ですが、そうでない人、特に今回恋顔で初めてPCとiPhoneをつなげた!みたいな初心者の方には中々解決が難しいはずです。
この記事がそのお手伝いになれば、私としてはとても嬉しいです。
ま、私はiPhone持ってないから恋顔使えないんですけどね。
(7/20追記)
…と、言っていた私もすっかり恋顔ユーザーです。iPhoneでのフェイストラッキングは一度なれるとWEBカメラには戻れませんね…。
何にせよ、こうした手軽かつ高精度なフェイストラッキングソフトを製作してくださったヒラリチャン氏に感謝とリスペクトを。特に無線での接続が簡単な点は、WEBカメラなどと比べても使いやすさという点で傑出しています。
PCとつないでZoom飲みに出るもよし、冗談半分で会社のWEB会議に出席するもよし。いっちょVTuberになるか!と挑戦を始めるもよし。PCにトラッキングデータを流せるアプリには、色んな可能性が詰まっています。
まあとりあえずいいからみんなVになれ。
さ、とりあえずそこの購入ボタンを押しましょうか。
(※こんだけ買え買え言ってますが、別に私はヒラリチャン氏から一銭ももらっておりませんのでご安心を)
○補足:iPhoneとPCがちゃんと接続できていない場合の対応(+Bonjourの仕組み)
Bonjourというのは、Appleがリリースしている対応機器同士がお互いに簡単に接続できるようにしてくれる仕組みです。iPhoneやMacなどの機器には標準で搭載されており、Windowsにもインストールすることができます。
このおかげで、iPhoneの恋顔アプリとPCの恋顔アプリは一々お互いを指定してやらずとも、相手を見つけて自動的に接続をしてくれるのです。
Bonjourについての詳しい技術記事は↓こちらを御覧ください。
Bonjourはそれぞれの機器にIDを付与し、条件の合う機器同士を自動でマッチングします。●●●.localというIDがそれで、例えば先に登場した恋顔アプリの場合だとFaceTracker._facetracker_12345._tcp.localが、iPhoneの場合は設定画面の「名前」がこれに当たります。
[C:\Windows\system32\dns-sd.exe]
Registering Service FaceTracker._facetracker_12345._tcp.local port 54321
XX:XX:XX.XXX Got a reply for service FaceTracker._facetracker_12345._tcp.local.: Name now registered and active
(繰り返しますが、上記のようなdns-sd.exeのメッセージが出ない方はそもそもBonjourがインストールできていません。公式ドキュメントの説明に沿ってインストール後、再起動しましょう。Microsoft Storeで配布されているiTunesにはBonjourは同梱されていない点に注意です)
ちなみにこのBonjourが起動し、キチンとアプリが待機してくれているかを確認する別の汎用的な方法もあります。
・スタートメニューに cmd と入力し、 コマンドプロンプト を選択
・表示された黒い画面に下記のコマンドを入力してEnter
dns-sd -B _services._dns-sd._udp
これは待機しているサービスを全てリストアップするコマンドで、例えば恋顔が起動していれば下記のように「_facetracker_12345」と恋顔のBonjour IDが確認できますね。
さて、もしこのBonjour接続がうまく行かない場合、このBonjourの接続までもがウイルスセキュリティソフト等によりブロックされている可能性があります。
この場合、既に説明したのと同じようにセキュリティソフトの対応するポートを開放してやる必要があります。おそらくBonjourで主に使っているポート番号は5353と思われ、このポートをプロトコル:UDPにて開放すれば問題は解決すると思われます。
(一応、他にもBonjourでは1900(TCP)、5350(UDP)、5351(UDP)のポートも使用しているようです:下記の公式ドキュメント参照。どう使い分けているかは私には分かりかねますが、もし上手く行かない時はダメ元でこれも開放してみるといいかも…)
さらに詳しいApple製品で使われているポートリストはこちら↓
先程紹介した方も、AirPlay(ビデオやオーディオをネットワーク経由で送信する仕組み)のトラブルで5353と3689番ポートを開放した所解決したとのこと。この場合はBonjourでも接続が引っかかっていたのでしょうね。
○補足:待機しているポート番号を確認する方法
トラブル解決に直接必要な問題ではありませんが、通信したいプログラムが何番のポートで通信を待機しているか?を書くにする方法も調べたのでどうぞ。
・タスクマネージャ(タスクバーを右クリックするとメニューにあります)を開く
・「詳細」から対象アプリ(この場合koigao.exe)を探し、PID(プロセスID)を控える(この場合30804)
・スタートメニューに cmd と入力し、 コマンドプロンプト を選択
・表示された黒い画面に下記のコマンドを入力してEnter
netstat -nao
すると待機しているプログラムのリストがズラーッと出てきます。頑張ってその一覧からPIDが該当するものを探し出すと…
はい、ありましたね。koigao.exeがポート54321でLISTENING(待機状態)であることが確認できました。
↓参考
ネットワークトラブルはこのように様々なコマンドから情報を得ながら、何が悪いのかを特定し解決していくのが正攻法での対処方法です。パズルを解くみたいなもので、分かると案外面白いですよ(解決できないとハゲますけれども)。知っておけばいざという時に役に立つ…かもしれません。
この他にも、VR関係での困りごとの技術解説記事や、VR・VTuberに関する考察分析記事を日々投稿しています。
もしよければぜひnote、Twitterをフォローいただければ嬉しいです。
また次の記事でお会いしましょう。
【Twitterでのシェアはこちら】
---------------------------------------------------------
今回も長文にお付き合いいただきありがとうございました。
引用RT、リプライ等でのコメントも喜んでお待ちしています。
Twitter: https://twitter.com/omoi0kane
Youtube: https://www.youtube.com/channel/UCpPeO0NenRLndISjkRgRXvA
マシュマロ(お便り): https://marshmallow-qa.com/omoi0kane
note: https://note.com/omoi0kane
○引用RTでのコメント:コメント付のRTとしてご自由にどうぞ(基本的にはお返事しません)
○リプライでのコメント:遅くなるかもしれませんがなるべくお返事します
この記事が気に入ったらサポートをしてみませんか?