見出し画像

中華ガジェットにありがちな、Wifiでつなぐやつ、明らかな設計ミスだろと思ったが、存外そうでもないかもしれない話

こんにちは。筆者です。

システムエンジニアなので、設計をしばしばやるんですが、実務上の設計の肝は何と言っても役割の範囲をずらさないことだと心得ています。

身の回りの物事に例えたら、冷蔵庫をエアコン代わりに使わない。乗用車を引っ越しに使わない。みたいなことで、極端に一般化すれば、「意図的に出来るだけ応用しない」という事です。

応用というのは、少し間違えると、冷蔵庫をエアコン代わりにしたら冷えない割に電気代がすごいとか、乗用車を引っ越しに使ったら何往復もしてガソリン代が無駄とか、そういう極端なデメリットを生みがちで、これはシステムではより見えづらく致命的なので、公式が想定してなさそうな事はやらない。という考え方が重要だと思っています。

その点、中華デバイスによくある無線接続をWifiでつなぐやつ。あれ、どう考えても設計ミスだろ!という話をしたいと思います。

中華デバイスに求められていそうな要件

今回話題に挙げる、無線接続にWifiを使う中華デバイスは主に映像伝搬のような大規模通信をするものによくあります。

自宅にあるものでも、ドラレコ、角栓を吸うやつ、ミラキャストもどきのやつ等、結構なデバイスがその仕組みを使っています。

これらのデバイスの要件としては、

  • 無線で接続できること

  • 映像を伝搬出来る事

だけなのでしょう。

ただし、ミラキャストもどきはそれに加えてYoutubeとか再生できないと困るのでネット接続も出来るようになっています。

中華デバイスのやり口

先ほど挙げた内、ミラキャストもどきはまだましな方で、ミラキャストもどき自体が自宅のWifiに接続していわばルーター子機のような役割になります。

その上で、スマホをミラキャストもどきが持っているWifiのアクセスポイントに接続してあげることで、ミラキャストもどきとスマホの間で無線通信を行い、ミラキャストもどき経由でネットにもつながる構成です。

それ以外のデバイスは、ミラキャストもどきのそれ自体がネットにつながるという部分を取っ払って、ネットにつながらないWifiルーターに接続するみたいな形で無線通信をします。

きっとこういう設計したんだろうな…

そもそも端末が手元にあって、端末間で無線接続したいなら、真っ先に思い浮かべるべき規格はBluetoothです。上述した要件なんてモロ近距離無線通信でしかないですから。

しかしながら、Bluetoothの通信速度では、実は映像のストリーミングはちょっと厳しいんです。

となると、残るスマホが標準実装してる無線通信方式はWifiになります。
しかもこいつはもちろんストリーミングできます。

ノータイムで採用されそうなもんです。

スマホは家にいれば基本的に自宅のルーターに接続していますから、機器も同じルーターに接続させればいいんですが、これでスマホと通信するには3つの問題があります。

1.パスワード入力するのに機器に画面をつけなきゃいけません。
コスト的に無理でしょう。

2.両者が互いにIPアドレスが分からないといけません。
Wifiのような形式で通信する際、機器からスマホ方向に行くなら機器側でスマホのIPアドレス。逆なら逆で、通信相手のIPアドレスが分からないといけません。
家庭向け環境ではスマホで自宅のルータに接続した場合、ルータがスマホさんあなたは何番です。IPアドレスが割り振られるDHCP方式が一般的なので、機器からするとスマホが何番なのかわかりません。

3.ルーターが無い時困ります。
同じルーターに繋げばいいというのはルーターがあればいいですが、外にはルーターなんて無いので、困っちゃいますね。

これを鮮やかに解決できるのが、機器自体にルーターみたいな機能をつけちゃおう!という解決策です。

機器自体がルーターなので3が解決され、ルーターに接続しないので1も解決され、ルーターは接続されているすべての機器のIPを決められるので2も解決。

はい。採用。となるのでしょう。

直観的にこうじゃね?と思った設計

先ほどの問題点の部分までは仕方ない事象なのでそれはそうです。

が、直感的に本質的な使い方に準拠すると解決策こうじゃね?と思います

1.パスワード入力するのに機器に画面をつけなきゃいけません。
  → スマホとBluetooth接続してアプリで設定すれば?

2.両者が互いにIPアドレスが分からないといけません。
  → スマホ側のアプリBluetoothで判別すれば?もしくはオープンにサーバでも置けば?

3.ルーターが無い時困ります。
  → スマホにテザリングさせてそこに接続すれば?

要は、機器を起動して、スマホで機器とBluetooth接続し、スマホアプリ画面からBluetooth経由でWifiへの接続設定を行って、機器をWifiに繋ぎます。

IPアドレスはBluetoothで機器とスマホの間で教え合うか、機器もスマホも同じサイトにアクセスするようにして、サイト経由で同一アカウントの端末を繋ぐような感じにします。

仮に出先でも、スマホでテザリングすれば上記はできるはずです。

こうすれば、スマホがいつものWifiから抜けてネットが使えないなんてこともないし、余計なコストもさほどかからない。そこそこいい設計に思えます。

この設計はエンジニア過ぎるかもしれない

システムエンジニアなので、モノによるコストは比較的少ないし、最適構成が最低コストになる事が多い世界なので、仕事上では最適構成を常に優先するんですが、

形ある物だとおそらくそうもいきません。

私がさっき挙げた、Bluetoothで設定するという方針だと、Wifiのチップ+Bluetoothのチップ両方を入れなきゃいけませんし、設定用の画面も作らないといけないし、しかも真正面から否定したカス構成より操作手順は増えています。

一度設定して使い始めると一番快適だと思いますが、全体でみると毎回の作業も若干増えてトータル面倒になるし、製造コストもかかるという話で、これは流石にトレードオフで最初の設計を採用する気持ちもわからんでもないなと思いましたし、

ビジネス的な観点で製品を見れば、こうなるのも納得してしまいました。

Bluetoothにはそんなに詳しくないので、もしかしたら規格的にはお門違いかもしれませんが、
これ、結論Bluetoothがさっさと映像伝搬できるようになるのが最適解な気がするんですがどうなんでしょうね。

有識者の方、見解まってます。

では。また。

この記事が気に入ったらサポートをしてみませんか?