川村渇真の「知性の泉」

浮遊思考記録−2001年02月


●2001年02月14日

助言内容の価値を高める方法

 世の中では、いろいろな人が様々な助言を与えている。その中には、本当に素晴らしい内容もあり、助言を受けた人に良い影響を及ぼす。また、悪い助言もあるがそれはさておいて、せっかくの助言なのに、助言としてほんとど役立たない内容もある。
 最初に「頑張れ」という言葉を取り上げてみよう。これは助言といえるだろうか。おそらく、多くの人が応援の言葉だと思うだろう。それでは「勉強しなさい」というのはどうだろうか。助言と言えなくはないが、言われて役立つ点は非常に少ない。もう1つ、「本をたくさん読みなさい」というのはどうだろうか。これも助言のようだが、同様に与える効果はほとんどない。つまり、助言はしているものの、その価値はかなり低い。
 だからといって、勉強や読書が不要というわけではない。どちらも、知識や能力を高めるために重要である。自分の周囲を見回しても、優秀な人ほど勉強するし、読書の量もかなり多い。しかし、勉強や読書という行為を推奨しただけでは、助言としてほとんど役に立たないのである。
 読書に絞って、その理由を説明しよう。世の中には、一生かかっても読み切れないほどの本がある。また、悪い影響を与える本が意外に多く、そんな本を読むと知的能力が低下してしまう。逆に、本当に良い本は数が少ないため、それを見付けるのは非常に大変で、多くの時間を費やしてしまう。こうした状況を考慮すると、良い本を推奨することこそ、読書に関する助言として価値が高い。
 もう1つ、別な問題がある。人はそれぞれ目指す方向が異なるし、その人が理解しやすい説明方法も違うので、全員にとって良い本にはならない。良い本かどうかは、最終的に本人が判断すべきで、そのための情報を提供するのが良い助言となる。本の紹介なら、その本を読むことで何が得られるのか、どういった方法で説明しているのか、どういった人に向いているのか、どんな段階で読むべきなのかといった点だ。これらの項目のいくつかを満たしながら何冊か紹介すれば、良い助言となるだろう。
 読むべき本の紹介は、読書のwhat(何を読むか)やwhen(いつ読むか)を説明したことになる。他の視点として、how(どのように読むか)を提供する方法もある。たとえば、本に書いてある内容を鵜呑みにせず、信じる価値があるか自分で評価しながら読むという注意点だ。これは非常に大切で、良い読書にとって不可欠な要素である。考えながら読めば、間違った内容を信じる可能性が減り、内容をより深く理解できるからだ。こうした注意点も加えると、助言の価値はさらに高まる。
 勉強に関する助言内容も、同じように検討できる。人生で役立つ知識や能力を選び、なぜ必要なのか、身に付けたらどんな点が良くなるのか、身に付けるためには何をすればよいのか、といった項目を満たして助言する。また、どのように勉強すれば効果的に身に付けられるのかも、一緒に含める。そうすれば、ただの「勉強しなさい」よりは、格段に良い助言に仕上がる。
 以上のように、助言を与える前に、助言内容の効果を自分で評価してみたらどうだろうか。もし効果が小さいときは、内容の改良を検討してみると良い。より深く、より具体的に、より実用的に、より上手に実行できるように、より効果的にといった視点で。そんな癖を付ければ、助言する人の価値や信用も向上するだろう。

●2001年02月27日

ソフトウェア再利用の助言を求められて

 ある知人から、ソフトウェアの再利用に関して助言を求められた。オブジェクト指向技術を用いた開発なので、できれば将来の再利用を考慮したいとのこと。再利用に関しては、それほど詳しくはないので、最初は断った。しかし、検討の指針だけでもとお願いされ、検討に関する重要な点を紹介することとなった。
 あまり詳しくない課題の場合、課題を適切に検討するためにも、内容の特性をある程度まで整理することが重要だ。そこで、ソフトウェアの再利用に関して、頭の中で整理してみた。こうした整理によって、課題の特性が少しは見えてくる。
 まず、どんなソフトウェアでも再利用できるはずはないので、再利用に向くかどうかを評価して判断しなければならない。たいていのシステムでは、ソフトウェアの各部分が次のように分けられる。問題領域に深く関係した部分、汎用的な処理の部分だ。後者は、個々の細かな処理部品と、採用した実現形態(ウェブサーバーなど)に関わる構造的な部分に分けられる。こうして分解した要素のうち、どれを(または、どれとどれを)再利用するのか決めなければならない。再利用が目的なので、再利用する機会が多いものを選ぶ。
 同時に、再利用に向いているかも検討する必要がある。そのためには、再利用の技術がどこまで進んでいるのか先に調べる。どんな手法があり、どんな対象に向いているのか、どの程度実用的なのか、参加者にどんなスキルが求められるかなど、明らかにすべき項目は多い。これらを明確にしないと、再利用の検討などできない。
 とくに重要なのが、実際の設計に関する部分だ。どんな考え方で、どのように設計するのかを細かく調べる。そうすれば、その手法が実際に使えるか見えてくる。どれぐらい手間がかかるのか、どの程度難しいのか、本当に使えるのかといった点を、自分たちの実力に照らし合わせて判定する。
 再利用の場合には、見逃せない点がある。再利用を考慮して設計したものを、他の人が本当に使うかだ。使おうと思わせるためには、いくつかの条件を満たさなければならない。使いやすいように設計されていること、使い方を解説したドキュメントの準備、テスト環境やテストデータなどの役立つ部品の使いやすい形での提供などだ。こうした点も考慮しておかないと、せっかく作ったのに使われないまま忘れ去れてしまう。
 以上のような内容を調べて整理できたら、最終的な判断の材料が揃ったことになる。どの部分なら再利用できるのか仮に決めて、必要な作業量を求めてみる。設計が難しさによる手間の増加、プログラミングやテストでの作業増、ドキュメント作成や管理といった作業の追加などだ。こうした手間の増加と比べて、再利用で得られるメリットが“明らかに”大きければ、再利用を試す価値はある。逆に、少し大きいだけなら、余計な面倒を抱え込む価値は低い。一般的には、似たようなシステムを何度も作る場合は、適切に評価すると、再利用のメリットがかなり大きくなるだろう。もちろん、再利用可能な形で設計できる実力があってのことだが。
 新しい技術を採用したとき、よほど凄い人材でもいない限り、最初から成功する可能性は低い。そのため、簡単なシステムで試しながらノウハウを集めて、大きなシステムに適用すべきだ。または、新しい手法を少しだけ取り入れながら、開発を進める方法もある。再利用でいえば、再利用を考慮した設計方法を、一部のサブシステムだけとか、全体に対して部分的に取り入れながら設計すればよい。こうした現実的な進め方も、検討の中に含める。
 実際の検討では、何人かが参加して結論を出す。その際に問題となるのは、課題に関する基礎的な知識を持たないまま、検討を進めること。実際、詳しくない人が集まって、何も勉強しないまま検討し続け、不適切な結論を導き出している例は、世の中で意外に多く見かける。そんな失敗をしないように、参加者全員が課題への理解を深められる形で、準備しなければならない。誰かが代表して調べて整理し、その内容を他の参加者に知らせる方法が良いだろう。
 以上のように、検討での適切な視点と流れを助言したため、ある程度のレベルで結論が出せるはずだ。知人は現在、検討の質を高めるために、再利用の書籍を何冊か購入して勉強中である。


下の飾り