BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース シンプルさのまわりにある複雑さ

シンプルさのまわりにある複雑さ

たいていのアジャイルプラクティスはシンプルさを非常に重視している。XPでは、かろうじて動く程度シンプルであることを強調する(リンク)。しかしながら、シンプルにすることは必ずしも簡単ではない。複雑になる理由がいくつもあるのだ。アジャイルコミュニティのたくさんのメンバが、ひとつの概念として「シンプルさ」となぜいつもシンプルにしておくのが必ずしも簡単ではないかについて議論する。

ある興味深い投稿では(リンク)、アジャイルはシンプルさを強調するが、それでも複雑さを持つ理由を明らかにしようとしている。彼は、マネジメントサイエンスの最新号を(リンク)引用した。

多くのソフトウェア設計者は、わざと不必要に複雑な製品を作り出します。それは、かれらの出世の役に立つかもしれませんが、会社や顧客の役には立ちません。

...

非常に有能な設計者は、さらに才能を証明するためにより難しい設計を選択しようとします。一方、あまり有能ではない設計者は、才能のなさをごまかすために非常に難しい設計を選択しようとします。このようにSiemsen教授は結論づけています。

George Ambler氏が(リンク)複雑さを抱え込む同様の理由に(リンク)言及した。彼は、次のように述べた。

私たちは、あまりに多くのことをあまりに速くしようとして、人生を複雑にすることに多くの時間を費やしています。何かを正確にする時間は決して十分ではないようです。しかし、いつもそれを繰り返す時間は十分あるのです。技術の運用が複雑になると、複雑な解決策がよりよい解決策であると思いがちです。

コミュニティの他のメンバは、手抜きをするためにシンプルさが都合よく使われていると考える。これもまた複雑さを招くのだ。Damon W. Carr氏はブログの中で、ひとつの活動としてのアジャイルがシンプルさのポイントを過ぎてしまったかどうか疑問視した(リンク)。彼は、次のように尋ねた。


アジャイル活動は行きすぎてしまったのでしょうか? アジャイル活動では、ほとんど異常なまでの愛を持ち、無意識に有能なチームを犠牲にして形式的なことを減らしています。そこでは、もっとも簡単なことで動くものを目指し、共通の認識であるよいオブジェクト指向設計を否定することになります。

Damon氏によると、アジャイルはソフトウェアが動くことを強調するので、多くの開発者は、保守性、拡張性、コードの再利用、内部的なロバスト性、コンポーネントの利用などの重要な面を無視することを選ぶ。

2,3人のメンバは、シンプルさと複雑さには明らかに主観的なことがあると考える。ある人にとってシンプルであることが、他の人にとっては複雑であるかもしれない。Andrew Johnston氏が(リンク)次のように述べた(リンク)

複雑さとシンプルさは関連する言葉で、一人の関係者にとってシンプルなことが異なった視点で見ると複雑さを意味します。それは、アヒルの優雅な滑るような動きに力を与える死に物狂いの行動のようなものです。

それでは、シンプルさとは何か? それは簡単に理解できるか?

Brad Appleton氏が(リンク)ブログの中で語った(リンク)。彼はシンプルさについて数多く研究し、次のような結論を出した。

次のように言えると思います。「シンプルさ」というものはおそらく「シンプル」なのかもしれませんが、「シンプルさ」を本当に理解することは、実際のところ、とても難しい!

Brad氏によると、システム開発のシンプルさは全体を見る必要がある。同時に、何が関連していて、システムの残りの部分にどのように影響を与えるかに焦点を合わせなければならない。本当のシンプルさは全体的な複雑さを最小限にして管理することだと彼は強調する。Brad氏は、シンプルさが非常に強調されるけれども、そのシンプルさのまわりにはたくさんの誤解がある。彼は、シンプルさを理解する助けとなるいくつかの誤解を詳しく述べた。彼によると、

「シンプル」は「何かをすることや理解することが簡単である」のと同じことではない。 - よりシンプルな解決策は、チームで何か新しいものを習い、新しいアイデアに心を開くことを要求するかもしれません。

「シンプルさ」と「十分であること」は同じではない。- シンプルな解決策が十分ではないかものしれない。いまのところ十分に機能するかもしれないが、改善する必要がある。

「シンプル」は「単純化!」と同じではない。- 単純化は、シンプルさの間違った見せかけかもしれない。解決策はシンプルに見えるかもしれないが、ただシンプルに見えることでは十分ではない。それは機能しなければならない。

1つのことに「シンプル」であることは、全体にとって「シンプル」でないかもしれない。- システムのある部分をシンプルにしようとすると、そのシステムの他の部分に過度な複雑さをもたらすかもしれない。システムは全体としてみなければならない。

このようにシンプルさのまわりには、適度な複雑さがあるようである。シンプルさのまわりにある誤解に取り組むこと、そして複雑な解決策がよりよい解決策であるという考えを避けることがキーとなるのだ。

原文はこちらです:http://www.infoq.com/news/2008/07/agile-simplicity-complexity

この記事に星をつける

おすすめ度
スタイル

BT