連載
» 2017年08月23日 05時00分 公開

問題解決力を高めるコツはプログラミングの原則・思考にあり(6):名前がないものは見えない――名前重要 (1/3)

本連載では、さまざまなプログラミングの原則・思考の中から、特に問題解決力を高めるのに役立つものをピックアップ。プログラマーは、その思考法をビジネスに応用し、そうではない人はプログラマーと一緒に働く際に思い出してほしい。「ジョシュアツリーの法則」「バベルの塔」に見るように、名前や共通言語は重要だ。今回はプログラミングにおける「メンタルマッピング回避」「ループバックチェック」などから「命名」の重要性を確認しよう。

[上田勲,著]

連載目次

プリンシプル オブ プログラミング 3年目までに身につけたい 一生役立つ101の原理原則

書籍の中から有用な技術情報をピックアップして紹介する本シリーズ。今回は、秀和システム発行の書籍『プリンシプル オブ プログラミング 3年目までに身につけたい 一生役立つ101の原理原則(2016年3月22日発行)』からの抜粋です。

ご注意:本稿は、著者及び出版社の許可を得て、そのまま転載したものです。このため用字用語の統一ルールなどは@ITのそれとは一致しません。あらかじめご了承ください。

なお書籍では、ソフトウェア業界で高名な、よいコードを書くための「プリンシプル」を紹介しています。プリンシプルとは、プログラミングの指針となる「前提」「原則」「思想」「習慣」「視点」「手法」「法則」などのことです。具体的には、「ジョシュアツリーの法則」「名前重要」「コードの臭い」などのプリンシプルがあります。こうした各プリンシプルについて、「それは何なのか(=What)」「それはなぜなのか、なぜ必要なのか(=Why)」「ではどう使えばよいのか、どうすればよいのか(=How)」を中心に解説する構成になっています。

本連載では、さまざまなプログラミングの原則・思考の中から、特に問題解決力を高めるのに役立つものをピックアップしていきます。プログラマーは、その思考法をビジネスに応用し、そうではない人はプログラマーと一緒に働く際に思い出していただければ幸いです。

今回はプログラミングにおける「メンタルマッピング回避」「ループバックチェック」などから「命名」の重要性を確認しましょう。「ジョシュアツリーの法則」「バベルの塔」に見るように、名前や共通言語は重要です。


※編集部注:前回記事「本当の問題にたどり着かない――思考の重複を起こさないための「DRY」原則」はこちら

ジョシュアツリーの法則

 英語  Joshua Tree Principle

 略語  JTP

 What 〜名前がないものは見えない

 ある人が、自分が長く住む町の図書館で植物図鑑を見ている時に、「ジョシュアツリー」という名前の木があることを初めて知りました。図鑑に写真入りで解説されているその木は、自分が長く住むこの町では、まったく見たことがありません。

 しかし、図書館から自宅への帰り道、いたるところで「ジョシュアツリー」を発見します。『今まで1度も見たことがない』と思っていた木です。

 このエピソードが示すように、人は名前を知った途端、それが見えるようになります。逆に、名前がなければ(知らなければ)、それは見えません。

 Why 〜名前を知ることで存在を知る

 物事や概念に対しては、まず、名前がある(名前を知る)ことが前提です。名前のおかげでそれを認知することができ、人に伝えることができるからです。

 特に、目に見えない、概念的なものについては、名前が重要です。名前を付けることで、初めて認知され、再利用できるようになるからです。

 例えば、デザインパターンの最大の成果は、既にそこにあった設計ノウハウに名前を付け、再利用可能にしたことにあります。

 How 〜ユビキタス言語を使用する

 名前を付け、言葉を作り、チームで共有しましょう。

 これには、「ユビキタス言語」を使用します。ユビキタス言語とは、その問題領域の各要素を正確に表現する、チームの共通言語のことです。共通言語ですから、チーム内で統一されていなければなりません。同じものを指しているなら、同じ言葉を使用します。亜種は混乱を招くので、許容してはいけません。

 ユビキタス言語がないと、みんな勝手にバラバラな言葉を使用します。それぞれ独自に定義した言葉を使うので、これらの言葉同士には断絶があります。時には通訳も必要です。すると、コミュニケーションに時間がかかり、お互いの理解も曖昧になります。

 そこで、チームが一体になるための、「糊」のような役割を果たすユビキタス言語が必要になります。ユビキタス言語は、問題領域を正しく捉えた価値の高いソフトウェアの設計に、必要不可欠な要素です。

 ユビキタス言語は、普段の会話で使用するだけでなく、コードにも使用しましょう。仕様もコードも統一的になり、どちらも理解しやすくなります。

 また、ユビキタス言語は、常に洗練していきましょう。声に出してみたり、図に書いてみたりして、色々候補を考えながら、概念と言葉を洗練します。

 関連 〜バベルの塔

 バベルの塔は、旧約聖書の「創世記」中に登場する、巨大な塔です。人間が、天にも届く塔を建設しようとしましたが、神様にそれを阻まれて失敗してしまいます。これにちなんで、空想的で実現不可能な計画を「バベルの塔」と揶揄することがあります。

 神様が、この建設を阻止した方法は、「言語」です。神様が降臨して、バベルを見た時、「人間は言葉が同じなため、このようなことを始めた。人々の言葉を乱し、通じない違う言葉を話させるようにしよう」と言い、その通りにします。すると、言葉を乱された人間は混乱し、塔の建設をやめ、世界各地へ散らばっていってしまいました。こうして、バベルの塔建設プロジェクトは失敗したのです。

 プロジェクトの成功には、やはり、ユビキタス言語のような共通言語が必要なのです。

出典書籍

『ノンデザイナーズ・デザインブック[フルカラー新装増補版]』Robin Williams, 毎日コミュニケーションズ(2008)

関連書籍

『エリック・エヴァンスのドメイン駆動設計』エリック・エヴァンス, 翔泳社(2011)

『教養としての聖書』橋爪大三郎, 光文社(2015)


       1|2|3 次のページへ

Copyright© 2017 ITmedia, Inc. All Rights Reserved.

@IT Special

- PR -

TechTargetジャパン

この記事に関連するホワイトペーパー

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。