本記事は 株式会社リブセンス アドベントカレンダー 2022 の 6 日目の記事です。
はじめに
本記事では人になにかを説明する際に個人的に意識していることをご紹介します。どんなことに気をつければ理解してもらいやすいのか、というのは、データエンジニアと数学講師の 2 つの経験を通して考え続けてきたことです。
私は現在データエンジニアとして、社内で利用されるデータ基盤の管理をしています。Web サービスのログを加工したり、レコメンドデータを作ったり、社内向け Web アプリケーションの運用なども行っています。データの利用者から、データやデータ基盤にまつわる依頼や質問を日常的にいただいています。
エンジニアになる前は受験生に数学を教えるようなこともやっていました。大学生時代のアルバイトで塾講師をしていたこともあります。やっていたのは基本的に個別指導で、生徒の疑問に答える形で授業を進めるスタイルが多かったです。
以下で述べることはあくまで自分の経験から得たものを列挙したにすぎないことは断っておきます。専門書を読んで方法論を学んだというわけではありません。また、脚色を施した営業トークのようなものも守備範囲外です。仕組みや概念を解説するようなケースを想定しています。
テクニカルライティングとの違い
弊社では先日テクニカルライティング勉強会が開催されました。その様子は こちらの記事 にまとめられているのでぜひご覧ください。
この勉強会に参加して感じたのは、テクニカルライティングはマス向け且つ一方通行のコミュニケーションに適したものだということです。ドキュメントや議事録など、多くの人に正しくかつ分かりやすく情報を伝える際に有効な技術ですね。
一方で質問への回答は個人向け且つ双方向のコミュニケーションです。情報を整理する上ではテクニカルライティングの考え方も役に立ちますが、テクニカルライティングが適した場面とはコミュニケーションの種別が異なることは理解しておいたほうが良さそうです。
意識していること
前置きが長くなりましたが、人になにかを説明するとき、特に質問に答えるときに意識していることを 4 つご紹介します。
相手に合わせる
相手の知っていることと知りたいことに合わせて、どこからどこまで説明するのかを考えます。前提知識が不足しているようであればそこから説明します。相手が求めることを超えて説明しすぎないことも大切ですが、それと同時に相手が求めることを汲み取った上で返答することも必要です (これについては後述します)。
業務では非エンジニアに対してデータ基盤について説明することも多く、特に相手に合わせることを意識しています。専門用語を使わないようにすることもその一つです。データの利用者によってはデータ基盤の仕組みや細かな仕様までを知る必要はありません。ソースコードへのリンクを提示するのは簡単なのでやりがちですが、あまりいい方法ではないと思います。もし細かい実装ロジックも必要ということであれば、後から補足すれば良いのです。
相手の頭の中を想像する
質問の中に相手の知りたいことのすべてが含まれているわけではないため、相手がどんな疑問を抱いているのかを想像します。質問の中に疑問のすべてが現れない理由としては、前提知識が不足していることや、勘違いをしていることなどがあるでしょう。
他にも、疑問点の背景が省略されているような場合もあります。例えばデータの利用用途が省略されて「このようなイレギュラーなデータがあることが分かったのですが、どのような場合に起こりうるのでしょうか」という問い合わせが来たとしましょう。このとき単に「このような場合に当該のようなデータが生成されます」のように答えても十分な場合もあるとは思います。しかし多くの場合本当に知りたいことは「こんな目的でデータを使おうと思ってるんだけど、変なデータがあるっぽくって問題無いか不安だな」だったりします。もう一歩踏み込んで、「イレギュラーなデータは全体の x % で大きな問題にはならなさそうですし、X という目的ならば別のデータが利用できます」のように返答できたらベストですね。
もちろん疑問点を確認するための質問をすることも大切です。その場合でも、ある程度当たりをつけることになるので、相手の頭の中を想像するプロセスは必要です。
いざ相手の疑問が特定されたとしても、返答を書くときにも想像力を使います。ここまでの説明で相手の頭にはこんな地図が出来あがってるはずだから、あとはここを説明すればいいな、などと考えながら、説明する順番や言葉の選び方を工夫します。口頭で受け答えする際には、それまで話をした内容により相手に伝わったであろう事柄をモニタリングしながら、次に話す内容を考えるので、ワーキングメモリをたくさん使います。個別指導の直後は毎回へとへとになっていました。
ここまでの 2 つは個人向けかつ双方向のコミュニケーションに特有のものでした。残りの 2 つはもう少し小さな話題です。
例を挙げる
物事を理解するには具体例を知ることがとても大切です。厳密な仕様や定義だけを見て、なるほどと納得できることは少ないです。その定義に当てはまるもの、当てはまらないものを知ることで、理解が深まります。
数学では「非自明かつ最も簡単な例」が重宝されます。自明な例というのは当たり前な例ということですね。それ自体を思いつけるのは大事なことですが、有り体にいえばつまらない例ですし、その概念が必要な理由も分かりません。そのため非自明な例が知りたくなるのですが、難しすぎてもいけません。
データの仕様を説明する際にも、説明対象の仕様だけが浮き彫りになるような簡単な例が好ましいと考えています。実際のデータが利用できるようならそれが一番ですが、ノイズが多いようなら具体例を手作りすることもあります。
感覚的な言葉を使う
理解とは感覚的なものなので、わかりやすさのために感覚的な言葉を選ぶこともあります。感覚的に理解することで、脳にも定着しやすいですし、間違いにも気づきやすくなると思います。
例えば数学 A で出てくる必要条件と十分条件を例に挙げてみましょう。定義を書き下すと以下のようになりますが、直感的にはなかなか理解しづらいです。
2 つの条件 と の間に という論理関係があるとき、 を に対する十分条件といい、 を に対する必要条件という。
私の場合、十分条件はきつい条件で、必要条件はゆるい条件だと説明することが多いです。難しい条件や簡単な条件と言い換えても良いでしょう。昔教えていた生徒が「東大に受かるならば他の大学にも受かる」という例を考えてくれました。これが数学的に正しいかは置いといて、必要条件と十分条件を感覚的に理解した例といえます。
おわりに
説明するって、難しいですよね。私の場合は個別指導などを通して、どうしたらわかりやすい説明になるだろうかと考え続けてきました。ここで述べたこと以外にも細かいところで工夫していますが、ベースにあるのは最初の 2 つです。
- 相手に合わせる
- 相手の頭の中を想像する
これらは決して簡単ではありませんが、この記事がみなさんの参考になると良いなと思っています。