プログラミング上達の鍵は「言葉」にあり?新人エンジニア向けサピア・ウォーフの仮説入門

こんにちは。ゆうせいです。

プログラミングの世界へようこそ!毎日新しいコードや慣れない用語と格闘している真っ最中ではないでしょうか。そんなあなたに、今日は少し不思議で、かつエンジニアとしての成長を劇的に加速させる「言葉」のお話をします。

突然ですが、皆さんは言葉を知らない概念について、深く考えることができると思いますか?

例えば、コードの中で「抽象化」という言葉を知らないまま、効率的な設計を思いつくことは可能でしょうか。私たちが使う言葉が、考え方そのものを形作っているという学説が存在します。サピア・ウォーフの仮説と呼ばれる考え方です。

サピア・ウォーフの仮説とは何か

サピア・ウォーフの仮説とは、平たく言えば「話す言語によって、その人の物事の捉え方や世界観が決まってしまう」という学説のことです。エドワード・サピアとベンジャミン・リー・ウォーフという二人の学者が提唱したことから名付けられました。

仮説には、大きく分けて二つの考え方があります。

1. 言語決定論(強い仮説)

言語が思考を完全に決定するという考え方です。

「言葉がなければ、その物事について考えることすらできない」という、かなり極端な立場ですね。

2. 言語相対論(弱い仮説)

現在、多くの支持を得ているのは後者の言語相対論です。

言語が思考を決定するわけではないけれど、強い影響を与えるという考え方です。

特定の言葉を持っていることで、ある物事に気づきやすくなったり、分類しやすくなったりする状態を指します。

色を表す言葉で例えてみましょう。日本語には青と緑を区別する言葉がありますが、ある国の言語では青も緑も同じ一つの単語で表現します。単語が一つしかない国の人々は、青と緑の色の違いを日本人ほど敏感に認識できないと言われています。言葉の枠組みが、世界の見え方を変えてしまうのです!

プログラミング言語に例えてみよう

専門用語が出てくると少し難しく感じますよね。皆さんが普段使っているプログラミング言語に置き換えて考えてみましょう。

オブジェクト指向言語であるJavaをメインで使っているエンジニアと、関数型言語であるHaskellをメインで使っているエンジニアを想像してください。

何かのシステムを作ろうとしたとき、Javaのエンジニアは「どんなモノ(オブジェクト)が必要で、それぞれはどんな振る舞いをするか」を真っ先に考えます。

一方でHaskellのエンジニアは「どんなデータを、どんな関数で変換していくか」という計算のプロセスを重視します。

使っているプログラミング言語が、エンジニアの問題解決の思考プロセスを規定している見事な例と言えます。言語という道具が、エンジニアの頭の中にある「世界の切り取り方」を劇的に変えてしまうのです!

学ぶメリットとデメリット

仮説の概念を理解しておくことは、新人エンジニアにとって大きな武器になります。メリットとデメリットを具体的に見ていきましょう。

メリット:習得するほど思考の引き出しが増える

新しいプログラミング言語や技術用語を学ぶことは、単に書き方を覚えることではありません。言語が持つ設計思想を脳にインストールする作業です。

多くの言語を学べば学ぶほど、多角的な視点からシステムを眺められるようになります。一つの言語では思いつかなかったような美しい解決策を、別の言語の思考回路を借りることで導き出せるようになります。

デメリット:思考のバイアスが生じる

逆に、一つの言語や手法に固執してしまうと、特定の枠組みの中でしか解決策を思いつけなくなります。

「金槌しか持っていなければ、すべての問題が釘に見える」という言葉がありますが、まさに特定の言語の檻に閉じ込められてしまう危険性があるのです。柔軟な発想ができなくなる点は、大きなデメリットと言えます。

エンジニアが意識すべき言葉の力

ここで皆さんに質問です。

自分の書いているコードに、適切な変数名をつけていますか?

とりあえずxでいいやと考えて名前をつけると、変数の役割を自分自身が定義できなくなります。逆にUserRegistrationStatusと明確な名前をつければ、変数が何のために存在し、どう扱われるべきかという思考がはっきりと定まります。

プログラミングにおけるネーミングとは、まさにサピア・ウォーフの仮説をミクロな視点で実践しているようなものです。正しい言葉を選ぶ習慣が、正しいロジックを生むのです!今すぐ、変数名を見直してみてください。

今後の学習の指針

言葉が思考に影響を与えるというお話、いかがでしたか。

今後の学習では、以下の3点を意識して進めてください。

  • 新しい用語に出会ったら概念をセットで覚える
  • パラダイムの異なる複数の言語を触ってみる
  • チーム内で言葉の定義を統一する

単語を暗記するのではなく、言葉が解決しようとしている課題や思想まで深掘りしましょう。そして、手続き型、オブジェクト指向、関数型など、毛色の違う言語に触れることで、思考の枠組みをどんどん広げていってください。

まずは、普段何気なく使っている専門用語の背景にある思想を探ってみましょう。きっと、昨日までとは違うコードの景色が見えてくるはずですよ!

セイ・コンサルティング・グループでは新人エンジニア研修のアシスタント講師を募集しています。

投稿者プロフィール

山崎講師
山崎講師代表取締役
セイ・コンサルティング・グループ株式会社代表取締役。
岐阜県出身。
2000年創業、2004年会社設立。
IT企業向け人材育成研修歴業界歴20年以上。
すべての無駄を省いた費用対効果の高い「筋肉質」な研修を提供します!
この記事に間違い等ありましたらぜひお知らせください。

学生時代は趣味と実益を兼ねてリゾートバイトにいそしむ。長野県白馬村に始まり、志賀高原でのスキーインストラクター、沖縄石垣島、北海道トマム。高じてオーストラリアのゴールドコーストでツアーガイドなど。現在は野菜作りにはまっている。