漫画皇国

Yes!!漫画皇国!!!

無線通信技術に学ぶ人間同士のコミュニケーション関連

はじめに

 「通信」とはざっくり言うと「ある情報をある所から別の所に送る」ということです。これを僕は人間同士のコミュニケーションでも同じだと思っていて、人間は自分の頭の中にある情報を、何らかの方法で他人の頭の中に伝えたりします。それらの情報は、例えば言語に置きかえられて、声を使うことで空気の振動として他人に伝えられ、伝えられた人は、鼓膜で感じ取った空気の振動を、言語として解釈することで受けとったりします。

 

(ここから一万字以上の文章なので、長い文章を読みたくない人はここでやめておけばいいのではないかと思います)

 

 人間同士のコミュニケーションにおいて、「自分は機械のように合理的な人間なので、多くの人が必要としているようなコミュニケーション術を必要としないのだ」というようなことを言う人がいるんじゃないかと思います(僕自身もあまり人間関係のコミュニケーションが得意ではないのでちょっと思っています)。でも、機械同士が情報を伝えあう通信のやり方を見ていると、機械はなんとも立派にコミュニケーションをしていて、そのやり方の中には色んな工夫が加えられていることが分かります。それによって、機械同士は情報を速く正確に効率よく伝えたりしているのです。僕は自分よりも機械の方がしっかりしたコミュニケーションをしていて偉いなあと思ったりしています。

 通信のやり方には色々な分類方法があると思いますが、大きくざっくりと分けてみると「ケーブルと使うやり方(有線通信)」と「ケーブルを使わないやり方(無線通信)」があります。人間同士がケーブルで繋がれているのは、母親の胎内にいるときぐらいなので、ここでは多くの人間がすなるという無線通信を、電波を使う機械同士がどのようにやっているかを確認することで、自分のコミュニケーションが機械様に比べていかに雑でいけていないかを確認するという話をすることにします。

 

 通信の大きな目的は情報を伝えることです。そこにはどのように伝えられるかという品質指標があるでしょう。人間同士のコミュニケーションと共通するという観点から、ざっと5つの指標を列挙してみました(適当な思いつきなのでこの5つで十分かはわかりません)。

 

  • 正確性:情報が誤解なく伝わっているかどうか?
  • 確実性:情報が相手に伝わったことが保証されているか?
  • 応答性:情報をタイムラグなしに相手に伝えることができているか?
  • 効率性:どれだけの情報を短時間に大量に伝えることができているか?
  • 社会性:情報を伝える上で共有のリソースを無駄に使っていないか?

 これらを満たすために、機械同士のコミュニケーションでは色んな工夫を取り入れたやり方を取り決めています。そのおかげで、情報を伝えるための機械に取り囲まれている我々現代の人間は、遠く地球の裏側にあるような情報でも迅速に大量に正確な情報を確実に安く手に入れることが出来ているのです。


正確性

 情報を正確に伝える手段には色々な方法があります。人間であれば自分の頭の中にある情報を他人に伝える際に言語を使うことが多いでしょう。これは機械でも同じで、情報を何らかの形式に変換して送っています。しかしながら、そのためには、送り手と受け手で情報を伝えるための事前取り決めをしておく必要があります。なぜなら、どのように情報が伝えられるかを共有しておかなければ、相手の言っていることを正確に解釈することができないからです。

 このような規定を通信ではプロトコルと呼んでいます。例えば、ネットを使っていればよく目にする「http」は、「hypertext transfer protcol」の略称なので、ハイパーテキストというものを送るために送り手と受け手で相互で守ることになっている取り決めのことを意味します。

 このようなプロトコルを策定する団体は沢山ありますが、インターネットにおいて代表的なものはIETF(internet engineering task force)です。このIETFという団体のサイトに行けば、あるプロトコルがどのように規定されているかの最新情報を確認することができます。

 

 一方、日本人である我々は、多くの場合、日本語によるコミュニケーションをしています。しかし、日本語はどこかの団体によって厳密に規定されているものではありません。これはつまり、ある言い回しなどを送り手と受け手が正確に共有できない可能性があることを意味します。

 そもそも言語には方言などの地域差や、働いている業界などの分野による言葉の解釈のしかたの違いがあり、しかも新しい言葉も日々どんどん生まれています。なので、それぞれの人は、同じ日本語に見えて厳密には違う言葉を喋っているという認識が必要でしょう。つまり、相手の話す言語の中から、自分の言語で理解できる部分を、なんとなくいい感じに解釈して通信をしているのです。この点において、人間のコミュニケーションは柔軟性と変化の速さでは機械に勝るものの、その引き換えとして機械よりも劣る正確性しか持ち得ないのです。

 であるがゆえに、人間同士のコミュニケーションに生まれる齟齬は、個人個人が良い感じに修正することで正しさを保証するしかありません。例えば、法律などでは書かれた言葉を正しく解釈するためには、難しい認定資格を必要とされています。それほど情報を厳密に伝えるということ、共通理解を得るということは難しいことであり、通常のコミュニケーションでは、自分と相手の認識齟齬により、自分の言ったことが相手に自分の意図通りに伝わっていない可能性を常に考える必要があると思います(ただし意図通り伝わっていなくても特段問題ないことも多いです)。

 自分が伝えようとしている情報が適切な言葉で表現できているか?と、その言葉は相手に問題なく解釈できるものか?ということは、正確なコミュニケーションを実現するために意識する必要があるポイントです。極端な話、日本語が分からない人に対して、日本語で伝えようとしても上手くいきようがないのですから。

 機械は自分が使うプロトコルを参照し、それを使うと宣言することで、送り手と受け手の認識齟齬をなくしています。人間だって、それをしなければ正確なコミュニケーションは難しいことは疑いようがありません。

 

確実性

 自分が発した言葉が、そもそも相手に聞こえているかどうか?という問題があります。機械同士の通信で言うならば、これを気にするのがUDPTCPというプロトコルの違いです。どこが違うかというと、UDPは送ったら送りっぱなしですが、TCPには届いたかどうかを確認する動作があるのです。確認があるTCPならば、ちゃんと届いてない場合に気づくことができるので、送り直すということができます。

 人間同士のよくないコミュニケーションはUDPになっていることも多いんじゃないでしょうか?言いっぱなしで相手に届いているかどうかを確認していないということです。なので、TCPのように自分が相手に喋ったことが、本当に相手に聞こえているかどうかを意識しないといけません。

 例えば、僕は地声が小さい感じの人類なので、「お疲れ様です」とか「おはようございます」とか「お先に失礼します」とかの言葉をちゃんと口にしてはいるのに、他の人には実際聞こえていないということが昔ありました。それでも、当時の僕はちゃんと挨拶をしているぞ!と思っていて、でも、挨拶を何のためにやっているかと考えれば、「言ったぞ」という個人の実感より、「ちゃんと相手に聞こえているか」ということの方が大事なはずです。ということにあるときやっと気づきました。

 これは僕が学生時代にやった学会発表のときのイケてなさなどとも通じる話で、何度も練習した発表原稿を間違いなく言うということばかりを考えていて、それが相手にちゃんと伝わっていたかまでは意識できるようなレベルですらなかったのです。

 中でも海外の学会での発表のときの記憶は最悪で、何十人もの人の前に立った時点で完全に喋ることが飛んでしまい、ひそかに確認できるようにしていた原稿をただただ読み上げるだけになってしまいました。でも、ちゃんと言うべきことは言ったぞ!という実感はあったものの、聞いている人の反応も見ていなかったですし、質疑応答もグダグダだったので、当初の自分がやったことを同じ分野の研究者の人たちにちゃんとアピールするということはまるでできていなかったように思います。

 別の海外の学会ではポスター発表もやったこともあるのですが、そっちは幸いまだましな記憶で、ポスター発表では目の前の人が納得するか呆れて去るかしないことには逃げられませんから、拙い英語ではありつつも相手に伝わっているかを意識することはできました。

 

 僕が思うに、人の言葉は思いのほか伝わっていない感じがします。喋っている中身ではなく、声自体がちゃんと耳に届いているかというレベルでです。繁華街やお店の中、通信環境の悪い電話なんかでは、相手の言っていることが上手く聞き取れないこともあります。こちらが言うことも聞き取ってもらえてないこともあります。

 その場合、TCPのように!と思って、向こうがちゃんと聞けているかを確認をしたり、こっちか聞き取れない倍はもう一度言って貰ったりするのですが、とにかく他がうるさくて、何度も聞き返す羽目になることもあります。そういうとき、面倒になって分かったふりをしてしまったりします。これが最悪で、本当は伝わっていないのに、伝わったふりをしてしまうことで、相手が誤認し、トラブルの種になってしまうかもしれません。

 自分が言ったことが相手にちゃんと伝わっているかを確認することはとても重要なことです。

 

 余談ですが、TCPでは送信者から受信者(SYNと呼ぶ)、受信者から送信者への確認(ACKと呼ぶ)、送信者から受信者への確認の確認(SYNACKと呼ぶ)という3回の事前確認作業を経て、相手とコミュニケーションが出来ていることを確認とする3ウェイハンドシェイクという仕組みを採用しています。

 学生時代に大阪いた際には、会話の中のフリ、ボケ、ツッコミのことを3ウェイハンドシェイクと呼んだりしていて、これが互いに出来る間柄ではコミュニケーションが上手くとれると認識していました。相手からの話題のフリをフリとして認識し、それに対応するボケを言うこと、そして、それがボケだと認識して、適切なツッコミを入れることは、比較的高度なコミュニケーションだと思っていて、これが上手くできる相手とは、言っていることが確実に誤解なく伝わっていると判断できて気楽に思えたのです。


応答性

 情報は一方的に伝えて終わりではなく、相手とのやりとりによる確認が必要な場合があります。例えばメールで予定の調整などを行う場合は、候補日を出したり、相手が答えたりと複数回のやり取りを経て最終決定がされ、それもまた最終的にメールで通知されたりします。相手にメールが届いてからこちらが返すまで、こちらがメールを受けてから相手に返すまでのようなタイムラグは、やり取りが多くなればなるほどに積算して、ある目的を達成するまでに長大な時間がかかってしまい、面倒くさくなったりしてしまいます。

 改善するための方法は大きく3つと考えます。(1)必要なやりとりの回数を減らすことと、(2)返信までの時間を短くすること、そして、(3)やりとりから順序性を排除することです。

 これらはそれぞれ通信技術にもあるもので、やりとりの回数を減らすためには、あらかじめやり方を規定しておくという前述のプロトコル的な解決方法があります。

 返信までの時間を短くするためには、フォーマットの規定やタイムアウト時間の設定が有効でしょう。フォーマットが決まっていれば、都度相手の書いた文章を解釈して適切な回答をするという面倒さが排除されます。

 タイムアウト時間と言うのは、相手がどれだけ返事をしなければ、催促をするかという設定値の話です。このタイムアウト時間は適切に設定しておくことが重要で、長すぎると、相手がなんらかの事情で回答できなかったり、情報が上手く伝わっていなかった場合に、待ち続けなければなりませんし、短すぎると、相手に短時間に何度も催促を送ってしまって、相手側を疲弊させたり非効率になってしまったりします。機械同士の通信のチューニングでも、状況に合わせたタイムアウト時間の適切な設定は注目すべきポイントです。

 最期のやりとりから順序性を排除するのは、そもそもそういうことをメールで一通ずつ送るような方法でやるなという話で、そのような交互に送りあう順序性があり、片方が何かをしなければ先に進まないようなやり方をしてしまうと、そこが止まったときに後々の全体の進み具合に影響が出てしまいます。なので、あらかじめ予定の空いている日を共有するなど、順番に確認しないで済む方法をとるというようなことをします。機械同士の通信でも、情報を伝える順序が制約にならないようなデータの送り方や集め方をしたりします。

 そもそも情報を小分けにして送受信するパケット通信では、一連の通信が同じネットワーク経路を通って送られることが必ずしも保証されていないなため、送った順に到着するとは限りません。なので、パケットを集めて元の情報を復元する際には、送られたときの順番を参考に受け取った側が正しい順序に並べ替えたりしています。

 

 もうひとつ別の観点で気にするべきなのは、通信のホップ数です。情報をやり取りする場合、直接やりとりする相手がこちらの求めている情報を持ってはいない場合があるのです。それまで受信者であった相手先が、今度は送信者として、別の人(上司など)に確認する必要がある場合、そしてさらに、その先がまた別の人(さらに上の上司など)に確認する必要があり場合、最初のリクエストは何人もの人を経由して(この経由する数をホップと呼んでいます)最終的に最初の質問を答えられる人に届くことになります。ここでいうホップは、1ホップごとに通信が発生しているので、そのやり取りの中で前述のような諸問題が関わってきますし、情報が伝達される過程で劣化する(中身が変わってしまう)場合もあります。

 ネットワークでは、何回もホップする必要がある場合には、その伝達経路が最短になるように計算したり、より容量の大きい経路に迂回したりするルーティングという仕組みがあったりします。また、必要な情報を、わざわざ大本にまで問い合わされなくても窓口にあらかじめコピーを置いておくキャッシュという仕組みもあったりします。

 人間がこのようなことをやるとするならば、必要な情報を誰が持っているかを予め明らかにし、その人に問い合わせられる最短のやり方を知っておく必要があるということになります。また、必要な情報を都度問い合わせて入手しなくていいように、予め情報を共有しておいたり、権限を委譲してもらったりしておくと速くなります。そういうことをしますが、人間の関わりあい方が、複雑で固定的になっている場合も多く、また、そもそも誰が必要な情報を持っているか分からないこともあります。

 何かの情報を伝えなければいけないときには、聞かれて初めて調べ始めるのではなく、予め色々調べておかないといけないという非常に面倒なことになります。なかなか完璧にはできないことです。でも、機械はちゃんとやっていたりするんですよね。

 

効率性

 コミュニケーションが情報を伝えることであるならば、どれだけ効率よく大量の情報を伝えられるか?という指標もあるでしょう。

 情報を速く伝えるにはいくつかの方法があります。ひとつは一定時間あたりにより多くの情報を詰め込むことです。電波で言えば高い周波数を使うことで実現できますが、これを人間に置きかえるなら早口で喋ることです。他には複数の伝達経路を使うこともできます。電波で言えば広い周波数帯域を使うこと、人間で言えば喋るだけでなく、同時にジェスチャーや絵などを使うことなどが挙げられるでしょうか。そして圧縮という方法もあります。どれだけ少ない記号で大きな情報を伝えられるかが重要視されるのです。

 機械であれば、速度の速い規格やそのための新しいハードウェアを採用するという方法がありますが、人間の耳と口のスペックは個体差はあれど固定的なので、基本的にはそういうことができません。人間はよりよく聞こえる耳や、よく喋れる口に交換できないのです。なので、それ以外の方法を使うことが現実的です。そのひとつが情報の圧縮だと思います。少ない記号で大きな情報を伝えられるのであれば、コミュニケーションの効率はアップします。

 例えば「象」という言葉がありますが、この言葉を見た瞬間に象という動物を思い出せたなら、圧縮は成功しています。なぜならば象という動物を知らない人がこの言葉を見た場合と比較して知っている人の頭の中には大量の象情報が広がっているからです。象を知らない人に言葉だけで象を説明することはとても難しくて面倒なことでしょう。

 情報伝達の効率は、情報の送り手と受け手が十分な共有情報を持っていることによって高まります。相手が専門知識を持っている人であれば、専門用語を駆使して短時間で正確な情報を伝えることができるでしょう。しかし、送り手と受け手に専門知識の持ち方に差がある場合、専門用語を使いつつ誤解のない言い方を考える必要があるため、冗長になりますし、冗長になると分量の時点で受け渡すのが難しくなったりします。まるで僕が今書いているこの文章のようですね。

 専門用語は、ある概念を理解しているもの同士ならば、非常に効率よく情報の受け渡しができるという圧縮の技術なのですが、その伸長のやり方を知らない人にとっては情報量のゼロとなる意味不明なものになります。なので、専門知識を持たない人に対しては平易な言葉で正確性と確実性を重要視し、専門知識を持っている人に対しては効率性を重要視するというような判断が必要になります。

 

 この辺に関する問題はいくつかあって、まずは専門知識を持つ人と持たない人が混在する場所の場合、どちらにフォーカスを当てた説明をするべきかを考える必要があります。また、世の中には分かっていないのに分かっているふりをする人がたまにいるということも問題です、その人に対して専門用語で説明すると、分かったようなふりをして実は分かっていないので、伝えた行為が無駄になってしまったりします。一方、そのような人に対して、誰でも分かるような平易な言葉を使えば、馬鹿にされていると感じるのか上手く聞いてもらえなかったりもするなんて可能性もあるので、このあたりのさじ加減はとても難しく感じています。

 学会なんかにいる「この分野は素人なのでよく分からないのですが」と発言の最初につける人も曲者で、本当に分かっていないから言っているのか、本当は知っているのに言っているのかを明確に区別つけられないと弱ってしまいますね。

 この辺りは機械でも同じで、実はある圧縮方式に対応しているのに、それを宣言せずに非圧縮でなければ受信できないふりをしていると、送る側からすれば非効率な非圧縮で送らざるを得ないので大変よくないことになります(ただし、圧縮と伸長には処理の時間がかかるので映像の生中継などのように遅延を最小化したいときには非圧縮の方が好ましいなんていうケースも世の中にはあります)。


社会性

 ここまでの話は、有線でも無線でも実はあまり関係ない共通する話だったのですが、ここは若干無線通信特有っぽい話をします。情報を通信するために必要な資源が、無線の場合は強い公共性を持つからです。人間のコミュニケーションでも多くの場合、公共のリソースを使って行われます。

 ケーブルを使った有線通信はケーブルの本数を増やせば、事実上無限に容量を増やすことができます。つまり、100本のケーブルがあれば1本のケーブルの100倍の通信ができるということです。しかし、無線の場合は違います。

 電磁波は空間を伝わるので、同じ空間で通信をする人にとっては全員がたった1本のケーブルを共有しているのと同じことです。情報は波の大きさに符号化されて伝えられるため、同じケーブル上に単純に同時に情報を流すと波が衝突して情報が壊れてしまいます。つまり無線の場合は、伝達に使われる空間が公共的なもの(多くの人々と分け隔てなく共有されるもの)とならざるを得ないので、誰かが好き勝手に使っていると、他の人の自由を阻害される可能性が高くなります。だからこそ、電波の利用は法律によって免許性となっているのです(一部例外もあります)。

 ここでは、無線機(携帯電話など)の側にも、電波の利用上問題ないと認可されたものが必要で、そのため、外国製の無線機を国内で使ったりすると違法になったりします。なぜならば日本と外国では使い方のルールが異なるからです。

 日本で電波利用の認可がとれていないスマホを使うと、ルール上は違法です。ただし、使用しているチップが共通であったり、少なくとも外国のルールには合致していたりして、実際の利用上は大きく問題になることは少ないでしょう。しかし、それはたまたま問題が起きないのであって、やろうと思えば周囲の人が通信を全然できなくなるようなことを引き起こすことも可能です。それを防ぐためにルールがあるのです。

 

 さて、人間のコミュニケーションも同じです。例えば人の声は空気を伝達し、空間に対して広がります。つまり、他の人たちの会話が聞こえないぐらいの大きな声で喋ると迷惑な行為となってしまいます。また、その情報を伝えたい人以外にも、その大きな声によって情報が伝わってしまうという弊害もあります。うっかり伝わった情報の中に秘密の情報があった場合、情報漏えいになってしまいますし、ネットを見れば、たまたま聞こえた周囲の会話を別の誰かにシェアしている人も沢山見つけることができますね。

 一方、それを気にして小さい声で喋り過ぎると、相手にも聞こえづらくなり、確実性が落ちてしまったりします。場所や目的に応じて適切な声の大きさを選ぶ必要があるということです。もちろん無線通信でも相手と確実な情報通信を行うために、電波の強さをコントロールしたりしています。

 

 さて、同じケーブル上に別々の複数の情報が乗ってしまったとき、衝突して情報が壊れてしまう場合があると言いましたが、それが物理的なケーブルの場合は衝突したことを検知もできます。しかしながら、それが無線であった場合は、3次元的に広がる電磁波は波なので反射した波などと任意のポイントで干渉しますし、上手く衝突せずに受信側に到達したかどうかを検知することができません。

 それを回避するための方法のひとつがCSMAです。CSMAにはCD(collision detection: 衝突検知)とCA(collision avoidance:衝突回避)があり、前述のように無線の場合はCDを使うことができないのでCAを使います。CSMAとはcarrier sense multiple accessの略で、ざっくり言うと周囲に電波を出している他の無線機がないかを受信機を使って判断しているのです。人間に置きかえるなら耳をすませて他に誰か喋っている人がいないかを判断しています。誰も喋っていなければ喋るチャンスですから、声を出しますが、会話でもあるように、沈黙が続いたあと、二人同時に喋り始めてしまうことがあります。これが通信で言うところの衝突にあたります。その場合、人間ならどちらが喋るかを譲り合って片方が続きを喋ると思いますが、機械はそうではありません。

 機械がどのように次の発信を行うタイミングを決めるかというとランダムな時間だけ待つということをします。そうすると複数台の機械がたまたま同じランダムな値を選んだとき以外であれば衝突しないということになるのです。それでも衝突した場合にはさらに長くランダム時間だけ待機するので、同じ空間の中に無線機が多く存在すればするほどに同じ電波帯域を利用した通信の効率性はどんどん落ちていく可能性が高くなります。

 これは人間で言えば、大人数の会議に置きかえることができるかもしれません。誰が喋るかの空気の読み合いになってしまい沈黙が訪れたり、延々と喋り続ける人がいて、他の人が喋る機会を得られなかったりするでしょう。同じ空間にいる人が、一度にひとりしか発言できないなら、会議に参加する人数が増えれば増えるほど、そこで得られる情報は減少します。会議で各メンバーの発言を多くしたいなら、人数を十分絞るべきという学びがここにあります。

 

 CSMA/CAは例えば無線LANで利用される方法ですが、あまり効率がよい方法とは言えません。これは無線LANは免許不要で利用できる電波帯域を利用しているため、全ての端末をコントロールすることができないからです。

 例えば、無線機が通信するタイミングを完全にコントロールできるなら、通信する時間のスケジュールを上手く調整することで衝突を回避できるという方法もあります。これはTDM(時分割多重)と呼ばれる手法です。

 これも会議に置きかえるなら、話す順番を事前に決めたり、その場で決めることができる司会が存在することで、喋る順番を割り当てていくことができ、全員の発言を促すことができるということになります。しかし、自分が割り当てられた時間以外に好き勝手喋る自由はありません。

 方法には向き不向きがあります。ここで紹介した以外にも、大人数の人間同士のコミュニケーションに応用できる様々な手法が、機械では採用されています。そして、それらの中から、今この場でどのような振る舞いが求められているかによって、適したコミュニケーションの方法を選ぶ必要があるのです。

 

まとめ

 さて、この文章は専門知識がなくても意味が分かるように書いたつもりなので、「正確性」についてある程度の配慮をしている一方、文章が長くなり「効率性」が落ちてしまっています。そして、ブログという場所は基本的に一方通行な情報伝達なので、「確実性」や「応答性」は全然ダメです。最後の「社会性」については、別に読んでも読まなくてもいい文章なので、毀損するようなものにはなっていないはずです。

 しかしながら、インターネットには書かれた文章が長いと分かると怒る人がいるので、念のため最初にこの文章は長いですよという注釈を最初の方に入れました。

 

 僕が今回書いた文章の意味はちゃんと伝わったでしょうか?上手く伝わる人がいるかもしれませんし、伝わらない人もいるかもしれません。人から人に何らかの情報を伝えるということは難しく、そこには沢山の工夫があります。機械は色々な工夫を取り入れていますが、元を正せば全て人間が考えたことです。我々人間も、機械を真似することで、そういう技術を獲得しながら、より上手く人に情報を伝えられるようになりたいものですね。

 おしまい。