今回は,人間の会話を通信プロトコルの視点から見ることで,会話について新しい視点を得ることを目指します。
TCPとUDPの違い
コンピュータがほかのコンピュータと通信する方法のことを通信プロトコルと呼びます。TCPやUDPは具体的な方法の名前です。TCPとUDPの違いは,一言で説明するなら,受け手が「あなたが送信した情報を受け取りましたよ」という情報(ACK)を返すかどうかです。
TCPではACKを返します。もし取りこぼしがあれば,送り手はもう一度送信します。一方,UDPはACKを返しません。送り手には送信した内容が受け手に伝わったかどうかがわからないので,取りこぼされてもよいような内容を送るのに使います。用途に応じて使い分けることが大事です。
では,あなたの会話はどうでしょう?多くの人はACKを返さない,UDP的な会話をしているのではないでしょうか?
心理療法士の聞き方
心理療法士のための本(注1)にもAcknowledgementが重要だと書かれていました。この単語が略されたものがACKです。心理療法士の「セッション」では「クライアント」(注2)が「自分の話をちゃんと聞いてもらえている」と感じることが大事です。
TCPでACKが返ってこなかったときに再送を行うのと同じように,人間も自分が話した内容が伝わったのか不安なときは,何度も同じ話を繰り返します。同じ話題の無限ループから抜け出すために,まずは「きちんと受け取りましたよ」という情報を返すわけです。
人間がACKする方法
TCPでは送られる情報に番号が振られており,受け取った番号を返すことで「ここまで受信したよ」と伝えます。しかし人間の会話ではそうはできません。この本では相手の言ったことをそのまま繰り返す「リピートバック」という手法を紹介しています。相手の伝えたかったことを正しくリピートバックできれば,相手は「うんうん,そう,それでね……」と話を続けます。間違えた場合には「いや,そうじゃなくて,~だよ」と再送が行われます。
単語の意味は普遍的ではない
再送を減らすためには,相手の使った単語をそのまま使うのが効果的です。人間は,ついつい自分の意味の感じ方が普遍的だと思い込んで,相手の使った単語を「自分が同じ意味だと思った単語」に置き換えがちです。しかし単語の意味は普遍的ではありません。
たとえばトランプのジョーカーは,「ババ抜き」というゲームでは「最後まで持っているとまずいカード」ですが,7ならべでは「どのカードの代わりにも使える万能のカード」です。同じように単語も,どういう「ゲーム」で使うかによって意味が変わります(注3)。
タイムマシンを作ってほしい
もしあなたが,顧客に「タイムマシンを作ってほしい」と言われたらどうするでしょうか?「そんなのは物理的に不可能だ」と反発するでしょうか? でもそれは顧客も自分と同じ意味で「タイムマシン」という言葉を使っていると決めつけています。
顧客は「上書きしてしまったファイルを昨日に戻って取ってくるツール」という意味で使っていたとします。これは,プログラマの言葉で言えば「自動的にバックアップを取るしくみ」です(注4)。しかし顧客はその単語を知らなかったので,自分の知っている単語の中で一番近いと思ったものを引き延ばして使ったわけです。
新しく作られる言葉の使い方
自分の知っている既存の言葉ではうまく言えないとき,人は新しい言葉の使い方を作り出すことがよくあります。「自分にとって一番似ていると思う単語」を引き延ばして表現するのもその一つです。
ある乳幼児が「アンマン!」と叫んだとします。彼の母親は,彼がアンパンマンを見たときにもそう叫ぶと知っていて,アンパンマンのDVDを見たいのだと思って再生したとします。これが彼の意図どおりなら「アンマンは『アンパンマンのDVDを再生しろ』という意味」という新しいルールがこの2人の会話ゲームに追加されます。
一方,そのことを知らない彼の父親があんまんを差し出しても彼は満足しないでしょう。世間で使われている「アンマンは『あんこの入った饅頭』だ」というルールは,このゲームでは通用しないのです。
言葉の意味はこうやって作られていきます。言葉が固定の意味を持っているように見えるのは,その言葉が長い間大勢の人に同じ意味で使われたことで,ルールが広く普及したからです(注5)。
意味は類似性をもとに作られる
筆者は昨年,word2vecについての書籍を出版しました(注6)。これはGoogleの研究者が発表した,単語の意味をベクトルとして扱う機械学習の手法です。この手法のおもしろい点は,「意味」を「『距離が近いほど似ている』と類似度が定義された空間」に投影するところにあります(注7)。
単語とその意味ベクトルとの対応付けは,たくさんの文章を学習することで作ります。つまり,どういう文章を入力するかによって,対応付けは違ったものになります。
タイムマシンの例では,顧客が「自分が表現したいもの」に一番近い単語として「タイムマシン」を選びました。エンジニアにとっては「バックアップシステム」のほうが近いのですが,顧客はその単語を知らなかったわけです。
感じる意味は経験によって違う
このように,各個人が感じる意味は,経験によって異なります。エンジニアどうしの会話が,プログラミングを知らない人との会話より楽なのは,近い経験をしているほうが単語の意味ベクトルが近いからでしょう。経験は人それぞれ違うので,食い違いを避けることはできません。
メタファーによる意味の創造
ここまで,単語の意味は人ぞれぞれ異なっている可能性があり,また表現したいものを表現するために新しく創造されることもあるということを学びました。
では,うまく表現できないものを表現するとき,どうすればよいでしょうか?良い表現がないか探している段階で,その表現が他人に伝わりやすいかどうかを気にするのは,ハードルを高くしすぎです。まずは,他人に伝わるかどうかは度外視し,自分にしっくりくる「個人的なメタファー」を探しましょう。積極的に意味を創造するわけです。
会話は卓球ではなく音楽
たとえば,筆者はあるとき「そうか!会話は卓球じゃなくて音楽なんだ!」と気づきました。これだけ読んでも意味はわからないことでしょう。しかし本人は,自分の感じていることを言語化できたと感じています。では,これを伝わる言語に噛み砕いていきましょう。
卓球のラリーでは,飛んできた玉をすぐに打ち返すことが大事です。打ち返せないと,負けます。会話でも「相手の発言にすばやく返答すること」が大事だ,そう自分が思っていることに,このとき気づきました。
しかし,音楽は卓球とは違います。「音楽とは,音と音の間の静寂のことである」(注8)と言われるように,間があるからこそ音が生きてきます。
会話においても,言葉と言葉の間の,黙っている時間に価値があります。黙っている間に,自分の奥深くの「まだ言語化されていないもの」が汲み出され,結晶化し,新しい気づきが生まれ,次の言葉に力を持たせるのです。
これが「卓球ではなく音楽のように」というメタファーが生まれたときに,筆者の中で結晶化したコンセプトだったのです。何か伝えたい内容があり,それをわかりやすく説明するためにメタファーを生んだのではありません。先にメタファーが生まれ,それをわかりやすくするために補足説明をつけてこの文章が生まれたのです。
送信は厳密に,受信は寛容に
タイムマシンの例では,相手が使った言葉に対して「自分の知っている意味と違う意味」の可能性を考えました。メタファーによる意味の創造では,自分の思いついた「相手の知っている意味と違う意味」のメタファーを伝わるように加工しました。これに相当するものが通信プロトコルの世界にもあります。
「送信するものに関しては厳密に,受信するものに関しては寛容に」──TCPを規定したJon Postelの言葉です。コンピュータの通信プロトコルと言えど,異なる実装ではルールの解釈に揺れがあったりします。相手がプロトコルどおりに振る舞わなくても寛容に受け止め,自分からの発信は厳密にプロトコルに従うように努力する。こういうアプローチを取ることで,多少の解釈揺れがあっても通信を維持できます。
人間の場合も同じで,何かルールを決めたとしても,必ずルールに従わない発言は起きます。そういう場合に,ルール違反を責めるのではなく寛容に受け止め,一方で自分はルールに従う。このアプローチが有益な対話を維持するために有用です。
TCPでの会話
今回,通信プロトコルと人間の会話を比較しました。UDPだけではなく,ACKのあるTCPな会話も,目的に応じて使い分けていきましょう。紙幅の関係で具体的なハウツーはあまり説明できませんでしたが,相手の使った単語をそのままリピートバックすること,相手の単語はメタファーの可能性を考えること,自分のメタファーに補足説明を付けること,この3つからまずは始めてみませんか?