幡ヶ谷亭直吉ブログ

娘のここねと格闘するエンジニア。

すぐになぜなぜしない ~ なぜなぜ分析再考

考えたいこと

どうも『なぜなぜ分析』は古いらしい。なぜ??

そもそも『なぜなぜ分析』ってなに?

問題の根本原因を特定し、問題の核心に迫るための分析手法。
分析から特定された根本原因に対し、解決策を講じることで、問題の再発を防ぐことができると考えられている。

手持ちのCopilotくんに「なぜなぜ分析ってなに?」と聞いた結果。

「なぜなぜ分析」は、問題の根本原因を特定し、解決するための手法です。この手法では、「なぜ?」という質問を連続して繰り返し、その回答に対してさらに「なぜ?」と問い続けることで、問題の核心に迫ります。

例えば、製造ラインでの不良品が発生した場合、「なぜ不良品が発生したのか?」から始まり、その答えに対して「なぜその状況が発生したのか?」と繰り返していきます。多くの場合、5回程度の「なぜ?」を繰り返すことで、問題の真因が明確になります。

**なぜなぜ分析のメリット**:
- 問題の根本原因を明確にする
- 効果的な解決策を見つけやすくする
- 同じ問題の再発を防ぐ

簡単に言えば、なぜなぜ分析は問題解決のための強力なツールです。

なぜなぜ分析を知ったきっかけ

2010年代前半、自分が30歳前後の頃に、ロジカルシンキングや思考のフレームワークの習得に熱意を持っていた時期があり、その時に出会ったツールのひとつ。
10年以上経って、既に忘れていることが多いなか、今でも覚えていることのうちのひとつ。
それだけ実用的であり、利用機会も多いということだと思っています。

なぜなぜ分析になぜを持ったきっかけ

宇田川元一さん『組織が変わる』より

昨年読んだ宇田川元一さんの『組織が変わる』になぜなぜ分析に対する言及があり、その内容が当時担当していたシステムの品質分析に大きく影響を受けたところから。
宇田川元一さんの著書での内容は以下のようなものでした。

「なぜ?(why)」と問うと、今のナラティヴとは違う複雑な風景を見ることができなくなる。
もっと相手の複雑さを知るには、「どんなときに?」「いつ頃から?」「どんなきっかけで?」のように whenを問うたり、「どんなふうに?(how)」や「関わっている人は誰だろう?(who)」と自問自答することで、既存のナラティヴとは違う風景の観察が可能になる。

www.diamond.co.jp

今検知できている事象からなぜなぜ分析で根本原因を掘り下げても、その事象自体の解像度が不充分な場合は、解決策は効果のないものとなるため、その前に事象に対する解像度をあげよう、という話だと思っています。

デイビット・N・ブランク・エデルマン『SREをはじめよう』より
今読んでいる『SREをはじめよう』でもなぜなぜ分析に対する言及があり、改めてなぜなぜ分析について捉えなおしたく思いました。
『SREをはじめよう』での内容は以下のようなものです。
なぜなぜ分析は、明確な因果の連鎖を1つ特定できたと思った時点で、インシデントを深く観察することを(潜在的にでも) やめてしまうことになるアンチパターン
「根本原因」という言葉の使い方が問題。複雑系は複雑な方法で故障する。
ほとんどの非自明なインシデントにおいて、私たちが指摘できる単一の因果関係を持つ単一の根本原因は存在しなかった。

この複雑さを認識するために、「根本原因」ではなく「一因」について理解し話すことが重要。
どのようにして起こったのか、あるいは何が起こったのかを問うことは、私たちが調査的な場所にとどまり、インシデントの間に何が起こったのかについてもっと知ることを促進する。
なぜと問うことは、私たちを発見から診断、そして将来のステップへと向かわせるのには逆効果となる。

how.complexsystems.fail

www.oreilly.co.jp

複雑系に対するなぜなぜ分析

解像度をあげないままのなぜなぜ分析には課題がある。
ということは、複雑度の高い物事になぜなぜ分析が最適なやり方ではない、と言えると思います。
じゃあ、複雑系ってなんなのと手持ちのCopilotくんに聞いた結果。

複雑系」とは、多くの要素や部分が相互に影響し合い、全体として一つのシステムを形成するものを指します。このようなシステムは、予測不能なふるまいや自己組織化をする特性を持ち、単純な原因と結果の関係だけでは理解できないことが多いです。複雑系は、生態系や経済、社会システムなど、さまざまな現象に当てはまります。

たとえば、天気予報も複雑系の一例です。気象は温度、湿度、風など多くの要素が関与し、それぞれが互いに影響し合っているため、正確な予測が難しいのです。

【単純な原因と結果の関係だけでは理解できない】からこそ、なぜなぜ分析が適さない。

なぜなぜ分析の土台となるコンテキストの違い

けど、なぜなぜ分析が効果を発揮した領域は確かに存在するであることを考えると、なぜなぜ分析自体の問題というよりは、適用する領域の問題なのではと思いました。
以下、手持ちのCopilotくんに聞いた結果。

自動車の製造とソフトウェアの開発は、いくつかの重要な違いがあります。それを踏まえると、なぜなぜ分析がソフトウェアの不具合分析に適さない理由が見えてきます。

**1. 複雑性の違い:**
自動車の製造プロセスは、物理的な部品とその組み立てに基づいています。一方で、ソフトウェアは無形のものであり、多くの異なるシステムや環境で実行されます。このため、ソフトウェアの動作は複雑で予測困難であり、単純な原因と結果の関係だけでは説明できないことが多いです。

**2. 変更の容易さ:**
自動車の部品を変更するには、設計や製造プロセス全体に影響を及ぼすことが多く、時間とコストがかかります。一方で、ソフトウェアはコードを変更するだけで改善や修正が可能です。この違いにより、ソフトウェアのバグ修正は頻繁かつ迅速に行われることが期待されます。

**3. 環境依存性:**
自動車は固定された物理環境で動作しますが、ソフトウェアは異なるハードウェア、OS、ネットワーク環境など、多くの変動する要因の影響を受けます。そのため、ある環境での問題が別の環境では再現されないことがあります。

**4. インタラクションの複雑さ:**
自動車の部品同士のインタラクションは比較的単純であり、物理的な接触や動力伝達が主です。一方で、ソフトウェアは多くのモジュールやサービス間の複雑なインタラクションに依存しており、相互作用が原因で予期せぬバグが発生することがあります。

このような違いを考慮すると、なぜなぜ分析のような単純な原因追求手法は、ソフトウェアの不具合分析には限界があります。ソフトウェア開発には、より動的で柔軟なアプローチが求められ、例えば、ログ解析や動的テスト、シミュレーション、AIを活用したバグ予測など、多岐にわたる手法を組み合わせることが効果的です。

なぜなぜ分析は銀の弾丸ではないことが分かります。

まとめ

盲目的になぜなぜ分析に頼る時代の終わりを感じます。
なぜなぜ分析は、1950年代にトヨタ自動車の生産システムの中で確立されたらしいです。
ソフトウェア開発に適用されるようになったのは、主に1980年代から1990年代にかけてとのこと。(Copilot調べ)

自分がなぜなぜ分析を学んだ時代から、VUCAの時代に突入して、すでに何年も経ちます。
複雑なものごとが、時流の要求のスピードに追い付くために、幾重にも重ねられた適用は、ものごとをより複雑にしているのではないかと想定します。

新しい時代を生きる我々はなぜから始めるのではなく、複雑性を解きほぐすところから始めるべきなのだと思います。