技術を学ぶ上で大事な "言語化" の言語化
私は何かの技術を学んで理解を深めるにあたって "言語化" を重視しています。
言語化を試みることによって理解が足りない部分が深ぼれたり、人に説明しやすくなったりします。
この記事ではそんな "言語化" のいいところと具体的に取り組む時に何を考えているかを解説します。
前提: 人は言葉を介さないと思考を深めることはできない
いきなり高尚な話から始めますが、ここが個人的に "言語化" することの鍵となってくると思うので語ります。
人が思考する時は言語的な部分と非言語的な部分があります。非言語的な部分というのはいわゆる感情や感覚のことです。気分が良かったり嫌な感覚がしたり、主観的にどう感じるかを表したものでその人にしか分かりません。
一方で言語的な部分は、文字で表現され他人にも伝えることが可能なものです。
例えば感覚としてコードを書いている時に「こう書くと後から変更しづらい気がするんだよな〜」と感じているとします。この時点ではまだ過去の経験からパターン認識して嫌な予感がしているだけであり、もっと良い方法があるかの検討ができていなかったり他の人に伝えられるような形式知にはなっていなかったりします。
そこでそれを具体化するためには言葉で表現する必要があります。「こう書く」とは具体的にどういうことなのか、「そう書くとどんな状況でどう変更しづらいのか」というのを定義して初めて検証可能なものとなります。感覚を感覚のままにしても何も生まれることはありません。
この「人は言葉を介さないと思考を深めることはできない」という性質が、技術者としてより最適な方法で実装できるようになっていくために "言語化" が非常に重要だと私が考えている理由です。
言語化って何?
本記事では "言語化" を「自分が曖昧に捉えているものを言葉によって表現すること」と定義します。
「曖昧に捉えているもの」というのは例えば「フロントエンドのテストの最適な書き方が分からない」とか「いつもマージンはこんな感じでスタイリングしているが、他にもいろいろ方法はあるけどこれが最適なんだろうか」みたいな問いを指します。
これらを言葉で表現しようとすることによってより理解を深めていくプロセスを "言語化" と定義します。
言語化の嬉しいこと
という感じの前提を語ったところで、言語化にはどんな嬉しいことがあるかを考えてみましょう。
理解が足りていないところがわかる・もっと良くする方法が思い浮かぶ
言語化していく過程で何が分からないかが分かるようになります。言語化しようとすると「ん〜ここよく分かんないな」という気持ちになります。
または自分が慣れでやっていたことについて「実はこういう観点もあるのでは?」というのに気づけたりします。
こういった曖昧な部分をなくして自分の感覚に自信を持てるようになるのが言語化の醍醐味です。
人に納得感のある説明ができるようになる
一度頑張って言語化すると人に説明する時にスラスラそれっぽく説明ができて、めっちゃデキる人っぽくみられます。
後半は冗談ですが、真面目な話、他の人に自分のコードの書き方などに確かな論拠を持って説明できるのでチームで開発する上でも有用です。あと記事とかにして外部に公開しておくと「こういうことやで」と URL を共有するだけで良いので便利です(ちゃんと読んでもらえたのかは知らない)。
言語化ってどうするの?
では何が嬉しいのかを考えてみたところで、具体的に何かを "言語化" していくにあたって私がどう考えているのかを解説します。
私の場合はとりあえず問いを一文作って、その文の中の一つ一つの単語の定義をはっきりさせるところから始めてみます。
例えば最近書いたこちらの記事ですが、これはマージンというものの言語化から始まってスタイリングの最適な方法を模索しました。
この記事を書く時は「マージンをスタイルする最適な方法とは何か?」という問いからスタートしています。
この問いから分解して「マージンとは何か?」という別の問いを立て、マージン自体の定義をします。それから「マージンとは要素感の関係性を示すために存在する空間のことである。関係性によってマージンの値は変化する」のような定義をします。次にそんなマージンを「スタイルする最適な方法」を定義するために選択肢をいくつか洗い出して、マージンというものの定義から概念的に妥当なものを選択しました。
このように 「問いを立てる」 -> 「一つ一つの単語の定義をする」 というプロセスを行うとそれっぽい思考がだんだんまとまってきます。
上記の例だとすんなり最初から定義がうまくいっていますが、実際は考えているうちにエッジケースなどが重い浮かび上がって「あ、これは適切な表現ではないな」と気づくことによりブラッシュアップできていきます。
語彙を増やす
最初に「人は言葉を介さないと思考を深めることはできない」ということを述べましたが、これは逆説的に語彙が少ないと思考を深めることができないことに繋がると考えています。
拙い語彙しかないと言語化する際に適切な単語を選べず、本質的な言語化に至れなくなるでしょう。
では具体的にどう語彙を増やしていくかについてですが、正直意識したことがないのですが本をたくさん読むといいのではないかと思っています。自分で言うのが恥ずかしいのですが、言語化が多少得意なのは昔小説とか読みまくってたのが活きているのではないかと感じています。
本をたくさん読んでいい文章にたくさん触れていきましょう。
実践して経験を増やす
時に言語化を頑張ろうとしても、自分に経験がない故に語彙や観点が足りないことがままあります。
そんな時は実践あるのみです。
例えば私は最近「CSS の最適な書き方は?」という問いを持っているのですが、 CSS Modules でプロダクトを作ったことがないため、その観点で何かを言語化することができません。言えたとしても表層的なものだけになってしまうでしょう。
なので、そんな問いにぶつかったら実践あるのみです。もちろん全部の技術を比較検討するために実運用が必要だとは考えていませんが、我々技術者にとってある程度「手を動かす時間」というのは必要なのではないかなと思います。
おわりに
言語化は学ぶ上ではかなり有用なプロセスです。そんな頻繁にやるようなものですが、折に触れて普段自分がやっていることを俯瞰して考えてみるのも悪くはないのではないでしょうか。
Discussion