asatoの技術的な日常日記

「成長に最大の責任をもつ者は、本人であって組織ではない。自らと組織を成長させるためには何に集中すべきかを、自らに問わなければならない」  非営利組織の経営 - ピーター・ドラッカー

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

ソフトウェアの美と品質

初トラックバック。変なこと書いてたらすいません。

ひらさんが「ソフトウェアにおける美とは何か」について書いてるので、反応してみよう。

面白い問いだと思うけど、色々と疑問はある。この記事ではどんな疑問があるのかを考えたい。ひらさんの意図していた議論とは少しずれているかもしれないけど。


まず、ソフトウェア開発者は、美という性質を追及する必要があるのか? について。いい例えかどうか分からないけど、数学者は、"役に立つ" 数学を追求する必要があるのだろうか?

Bertrand Meyer さんは「Object-Oriented Software Construction」という本の最初でこう書いている。

Engineering seeks quality. software engineering is the production of quality software. [...]


そして、ソフトウェア品質についてこう書いている。

[...] Software quality is best described as a combination of several factors.


そして次のような特性(ファクター)について議論している。
・Correctness
・Robustness
・Extendibility
・Resusability
・Compatibility
・Efficiency
・Portability
・Ease of use
・Functionality
・Timeliness

もちろん、他の品質特性もあると思うけど、これらの特性の中には、「美」に直接関係するものは無いように思える。では、それらの特性と「美」との関係はなんだろうか?

たとえば、より美しいソフトウェアを追い求めることは、これら品質が高いソフトウェアを追い求めることなんだろうか?


「美」だけがひらさんの議論の中心ではないと思うので、上記の議論は少しずれているかもしれない。というのも、ひらさんは、次のように「感動」という言葉を強調していると思うので。

僕は、ソフトウェアに美が存在しなければ、多くの人に認められそして感動されるような美が存在しなければ、ソフトウェア開発者は永遠に不幸であるような気がする。

~途中省略~

美しさとは感覚に依存するものだろう。であるなら、ヒトの感覚に訴えるソフトウェアを作れるなら、そこに美が宿る。ソフトウェアに感動する。




ここで、「美」というのを、ソフトウェア開発者が追い求めるべきソフトウェア品質の一つだと仮定しよう。

ソフトウェア開発者は、高品質のソフトウェアを開発することが目標なので、開発しているソフトウェアの品質の確認は重要な行為だと思う。たとえば「このソフトウェアは再利用性が高いだろうか? このソフトウェアの性能は十分だろうか? このソフトウェアは使いやすいだろうか?」といった疑問をなげかけ、もし十分な品質が得られていなければ、改善するかどうかを検討する。

もし「美」が品質の一つなら、同じように問いかけることは役立つだろうか? 「このソフトウェアは、十分に美しいだろうか? このソフトウェは、感動させられるだろうか?」

ここでは、誰が「美」や「感動」を感じる対象であるのかを明確にしておく必要がある気がする。大きく分けて二つ考えられる。
(1)開発者:開発者は、恐らく、ソフトウェアの内部構造に関する「美」や「感動」に関心がある。

(2)ユーザ:ユーザは、ソフトウェアの内部構造には関心は無い。ソフトウェアが提供する機能に関わる「美」や「感動」に関心がある。

もし、ひらさんの議論が二番目のユーザにあるなら、僕はこの記事ではこれ以上議論しない。

一番目にあるなら、もうすこし議論する。

そのどちらでもないなら、僕が間違った議論をしているので、ここで終了。


具体的な例で考えてみよう。最近読んだ、APIデザイン を例にしてみる。

あることをするためのライブラリ(API)が二つあるとする。APIを使う側の開発者からすると、これらのAPIをどんな観点から比較・評価するだろう? ありそうな問いは「どちらのほうが使いやすいだろうか?」や「どちらのほうが、理解しやすいだろうか?」といったものだと思う。しかし「どちらのほうが、美しくて感動できるだろうか?」という問いを行うだろうか?

APIユーザの追及する品質が「使いやすさ」であったり「理解しやすさ」であるなら、開発者はこれらの品質が高いAPIを設計しなければならない。API設計時に「このAPIは美しいだろうか?」と問いながら考えれば、「使いやすく」「理解しやすい」APIが生まれるのだろうか?


二番目の例。ソフトウェア内部構造の「美」とは何だろう? 我々は、たとえば、よりモジュラー(モジュール性が高い)なソフトウェア構造を見ると、より「美しい」と感じるのだろうか? 感じるかもしれない。しかし、単に「感じる」だけかもしれない。

オブジェクト指向が提供する技術では、十分なモジュール性を得られないことが知られている。たとえば、アスペクト指向プログラミングやフィーチャ指向プログラミングなどは、オブジェクト指向よりもさらに高いモジュール性を提供するための技術であると考えられる。

これら新しいモジュール化の技術は、「美」の追求の結果として現れたのだろうか? 通常論文で書かれる品質は「モジュール性」「再利用性」「理解容易性」「保守性」などであり、「美」ではない。


以上のことから、僕は、ソフトウェア開発者が考慮すべき品質特性として「美」を考えることはそれほど役に立たない気がする。理由は以下の点。

(1)「美」よりも具体的な品質特性がある。

(2)ソフトウェア開発技術の発展は、「美」という特性の直接的な追求の結果ではない。


今回の記事の目的は、「ソフトウェアにおける美」を考えるのは、くだらないということを主張したいのではなく、もし美を考えるなら、いくつかの疑問に答えなければならないとうことでした。以下は、疑問のまとめ。

疑問のまとめ:
(1)ソフトウェア開発者が追求するべきものが、高品質なソフトウェアであるとするなら、ソフトウェアの「美」の追求は重要だろうか?

(2)「美」は品質特性の一つだろうか?

(3)もし、「美」が品質特性の一つなら、開発者が「このソフトウェアは十分に美しく、感動させられるか?」という問いを発することは役立つだろうか?

(4)もし、「美」が品質特性の一つでないとするなら、何か? なぜ開発者は「美」を気にする必要があるのか?

(5)もし、ソフトウェアの美やその美から得られる感動を与えたい対象がソフトウェア使うユーザであるなら、開発者の役割は何か?
スポンサーサイト

コメント


トラックバック、ありがとう(^-^) > asatohanさん

>(2)ユーザ:ユーザは、ソフトウェアの内部構造には関心は無い。ソフトウェアが提供する機能に関わる「美」や「感動」に関心がある。

こっちです。

ユーザサイドから見て「美」は存在するかというと、それはなかなか難しいと思うわけです。恐らくそうした美は機能などを超えたところに発生するように思えます。

もしユーザがソフトウェアに普通に「美」を見出せるなら、ソフトウェア開発者個人のブランドが高まり尊敬されるようになるのではないかと、ソフトウェア開発者が幸せになれるのではないか、そう思うわけです。

  • 2007/09/28(金) 09:17:04 |
  • URL |
  • ひら #-
  • [ 編集]

コメントの投稿


管理者にだけ表示を許可する

トラックバック

トラックバックURLはこちら
http://asatohan.blog77.fc2.com/tb.php/69-bb40e12f
この記事にトラックバックする(FC2ブログユーザー)

FC2Ad

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。