少数の原理を活用する(その2)
概要
本エントリーは前回に続き、『ソフトウェア品質のホンネ』に寄稿した記事の復活です。
左右の原理
前回の“上下の原理”を使用することで、問題を掘り下げるという視点と、あるべき姿を発見するという視点を得ることができます。しかし、ただ単に上下に移動するだけでは、「問題を掘り下げることで発見した原因がこれですべてか?」、「そもそもこの問題が解消してなりたい姿はこれだけか?」という『抜け漏れに対する問い』に答えられません。
見落としなどによる抜け漏れを防ぐためには上下に移動するだけではなく、左右に目を配る必要があります。左右に目を配る方法には、MECEが知られています。また、MECEの既存フレームワークを活用することが有効です。
・ MECEで抜けを防ぐ
MECEは「モレなしダブりなし」の意味です。ロジカルシンキングのツールの一つなので聞いたことがある人が多いと思います。
日本ではMECEを日本人が発音しやすいようにミッシーと呼ぶことが多いですが、アメリカではミー・スィーという発音しています。また、MECEは、Mutually Exclusive and Collectively Exhaustiveの略号(頭字語)です。
樹形図や特性要因図、そしてマインドマップを用いてツリー上に情報をまとめていくことで、MECEを実現します。しかし、ちょっと待ってください。マインドマップを使ったらMECEが勝手に付いてくると思っていませんか?
実は、MECEと思って作ったツリー図を使って分類したら、同じ概念の要素が複数のところにマッチする場合や、逆にツリー図のどこにもあてはまらないといったことが起こります。そのようなツリー図はMECEではありません。
身近な例で言えば、「ごみの分別」はかなり混乱しているように思います。私が住んでいる自治体の「資源とごみの出し方」というパンフレットによると、最初に「燃やせるごみ」と「燃やせないごみ」の説明が載っています。日本語として、この2つは排他的ですから最上位の分類はこの2つ以外に存在しえないと思って読み進めると、この2つに続き、「自治体では処理できないもの」、「剪定枝」、「剪定枝として出せない植物・剪定くず・落ち葉・草」、「古紙・古着」、「ビン・カン」、「有害ごみ」、、、と実に20種類の分類が最上位分類として存在します。
自治体の方も問い合わせが多かったのか、冊子の付録に具体的な品名と分別区分の対応表が載っているのですが、同じプラスチックでも、卵のパックや粉ミルクの蓋は燃やせるごみなのに、歯ブラシは燃やせないごみといったように、覚えるしかないといった分類になっています。(最近ではAI-chatbotを使用して、ごみの分別について周知するサービスを提供する自治体も現れました。)
それでは、どうすれば正しいMECEのツリーが作れるのでしょうか。私は、MECEのツリーを作成した後に次のチェックをしています。
● 同じノードにぶら下がっているノードに漏れがないこと
- 対象的な言葉(多い、明るい、、、)があった場合反対語が漏れていないこと
- 違う粒度のものが混ざっていないこと
(よくあるのは、同じ画面上のアイテムを同じノードにぶら下げてしまうことです。例えば、使用頻度が高いアイテムを並べた画面といったものもありますので、粒度については、よく考え、違う粒度のものは階層を分けましょう)
- 子ノードがすべて集まれば親ノードになること
(例えば、なぜなぜ5回であれば、子ノードに挙げた原因がすべて解決されると親ノードの問題は必ず解決するかどうかを確認する)
● 同じノードにぶら下がっているノードにダブリがないこと(相互排他であること)
- 兄弟ノードは同じ粒度にすること
(粒度が同じもの同士の比較するとダブリが見つかりやすくなります。逆に粒度が異なる要素は名称が異なりますのでダブリを見逃しやすくなります。)
- 兄弟ノードの概念に重なっているところがないこと
- 補集合(その他)を忘れないこと。ただし、その他の場合、それに名前をつけましょう
- その他や非Aをできるだけ作らないこと(これらは分類することを放棄していることだから)
● 上下関係に矛盾がないこと
- ツリーを下から見て、子ノードをまとめて「~だから(So what ?)」親ノードになっているといえるか(論理の飛躍はないか)
- ツリーを上から追って、親のノードを展開すると子ノードは「なぜなら~(Why so ?)」の関係でしっくりくるか(前提条件の抜けはないか)
● 離れた場所に同じ概念のノードができるだけ存在しないこと
- 全体を見直しバランスが取れていること(一部の枝の下だけ詳細化が多いといったことがない)
- ノードを移動することでしっくりくるなら移動すること
(同じ名前のノードが離れた場所に置かれることはよくあります。そのときに、安易に片方を削除してはなりません。同じ名称だからといって同じものとは限らないからです。極端な例でいえば、[重さ(kg)]ノードの下にある[3]というノードと、[長さ(m)]ノードの下にある[3]というノードは、前者が3kgを意味し後者は3mを意味することから違うものです。)
これらのチェックで全体のバランスを整えているうちに新しいノードを見つけることもよくあります。

・ MECEの既存フレームワークを活用する
MECEの関係を持つフレームワークが存在します。
たとえば、特性要因図を書くときに4Mすなわち、「人(Man)」、「機械(Machine)」、「材料(Material)」、「方法(Method)」や、さらに「測定(Measurement)」と「環境(Environment)」を加えて5M+1Eで障害原因を特定して因果関係の分析をするという定石があります。この、4Mや5M+1Eのことをフレームワークと呼びます。
他にも、営業系では、3C(Customer, Company, Competitor)や4P(Product, Price, Place, Promotion)というフレームワークが有名ですし、品質の世界では、ISO/IEC 25010の品質特性が有名です。
私がよく使うフレームワークは、6W2H(When, Where, Who, What, Why, Whom, How, How much)です。これをさらにContext(When, Where, Who)と、Product(Why, What, How)と、Value(Whom, How much)に分けて入れ子にしてテスト分析に使っています。つまり、お客様の利用場面(いつ、どこで、だれが)と、開発成果物(要求、仕様、設計)と、価値(お客様のお客様、価格)をマインドマップで分解・分析し全体が明らかになったうえで、テスト設計(テストアーキテクチャ設計)をはじめるようにしています。
まとめ
今回は、私が、“左右の原理”と呼んでいるものについて説明しました。実は、“層別”も“左右の原理”に入れています。“層別”を習った時に口を酸っぱくして言われたのは「目的を持って層別(グルーピング)しなさい」という言葉です。これは、全体を見直すときにとても重要な指針となります。
“上下の原理”と“左右の原理”を使用することで問題となっている対象を分解することができます。しかし、分解はあくまでも分解者の恣意が入り込みます。また、MECEは技法のように見えますが、実は考え方であり、分け方に正解はありません。そうして対象を明らかにして、それをみんなでレビューして合意を取っていくことが大切なのだと思います。次回は“前後の原理”の説明となります。
