Deep Breath

DIY, 科学, IT, 環境, LIFE

名前考・その5 〜 設計の本質は名付け

time 2021/01/24

 ソフトウェアの世界には、オブジェクト指向という考え方がある。複雑なソフトウェアは普通、少し小さな部分に分けて作って、それらを組み合わせて完成させるのだが、部分に分けるとき、その部品を、扱いやすく、再利用しやすいものにするための工夫の仕方を、オブジェクト指向と呼ぶようになった。そして、オブジェクト指向を実現するための言語も作られ、現在使われているほんどのコンピュータ言語はオブジェクト指向言語である。

 オブジェクト指向では、ソフトウェアを構成する部品を「クラス」として定義する。車を扱うソフトウェアなら、「class car」と書いて実現したい車のもつ情報と機能を書いていゆく。 車に関するアプリケーションを作る場合、そのクラスの提供する機能を使って他のクラスの機能と組み合わせる。

 オブジェクト指向でシステムを設計するとき、何をクラスとするかが設計者の腕の見せ所になる。実現したい機能を具現化するだけでなく、システム設計のポイントは再利用性と保守性である。ソフトウェアは、世の中の変化にともなって求められる機能も変わるのが定め。だから、リリースしてしばらく経つと、ユーザーや依頼主から、やっぱりこんなふうに変えてほしいと言われて作り変えることになる。そのときに、前に作っておいた機能はそのままで、その組み合わせ方を変えるだけで変更できたり、変更する箇所が、あるクラスの中だけに収まって、他の部分を変えずに済めば、エンジニアは、涼しい顔で「オーケー、もうできましたよ。」と言って家に帰れる。

 前置きが長すぎたが、そんな良いクラスを抽出するときの重要なポイントが、そのクラスの「名前」なのである。その機能を過不足なく、素直に表す良い名前を付けることができれば、そのクラスは末永く使われるだろう。反対に、その名前を見て、どんな機能を提供するのかわからないようなクラスを使ったシステムは、不具合を内在させるリスクを孕むことになる。システム設計の良し悪しは、それぞれの機能に正しい名前を付けられるかどうかにかかっている。

 Rubyというコンピューター言語を作った、まつもとゆきひろさんの書いた記事に、「名前重要」という文章がある。(https://xn--97-273ae6a4irb6e2hsoiozc2g4b8082p.com/%E3%82%A8%E3%83%83%E3%82%BB%E3%82%A4/%E5%90%8D%E5%89%8D%E9%87%8D%E8%A6%81/)その中で、まつもとさんは、こんなふうに言っている。
『私の設計上の座右の銘は「名前重要」です。あらゆる機能をデザインする時に、私はその名前にもっともこだわります。プログラマとしてのキャリアの中で、適切な名前をつけることができた機能は成功し、そうでない機能については後で後悔することが多かったように思うからです。』
さすが、日本を代表するソフトウェアエンジニア。この名言に深く同意。

2021.1.24(日)
写真:まつもとゆきひろ著「コードの世界」表紙。(自宅にて撮影)
   P.150にも「名前重要」が掲載されている。

down

コメントする




Toshi's Profile

会社員(製造業・雇用延長)。元SE、元大学非常勤講師、元ロルファー。DIYと散歩とメモが趣味。Moleskineを持ち歩いている。愛知県岡崎市在住。
toshi@ueba.sakura.ne.jp
DIY作品集はこちら