根本原因とは何か?ソフトウェア開発などのエラー解消に役立つ「なぜなぜ分析」についても解説

根本原因とは何か

ソフトウェア開発に限定したことではありませんが、作業をする際に人は何かしらのエラー(間違い)を起こします。
エラーの要因が特定できれば良いのですが、複雑な要因が重なって起きたエラーは原因の特定が難しいため、諦めて問題を放置してしまう場合があります。

エラーの原因を深く探ると、エラーを引き起こす結果を招いたいくつかの要因が見えてくると思います。
このような、エラーの根本的な要因のことを「根本原因」と言います

本記事では「根本原因」「直接原因」の概要、根本原因の分析に役立つ「なぜなぜ分析」について解説します。

根本原因とは

「根本原因」とは、エラーの大本となった要因のことを指します。
文言だけでは意味を理解することが難しいと思いますので、身近な事例として「おつかい」で起こるエラーを例にして説明します。

とある親子の母親と息子さんのやりとりとして、下記のような出来事があったと仮定します。

  • 母親
    夕飯のカレーの具材が欲しいので、メモに買い物リストを書いて息子におつかいを頼んだ
  • 息子
    母親から渡されたメモに書いてある品物を買って帰宅した

母親が息子さんが買ってきたものを確認すると、頼んだはずの人参が入っておらず、代わりにピーマンが入っていました

なぜ息子さんが間違ってピーマンを買ってきてしまったのか確認したところ、下記のような原因があることがわかりました。

  • メモには「人参」が書かれておらず、代わりに「ピーマン」が書かれていた

起こった出来事だけを見ると、息子さんが買い物を間違えたように思えましたが、実は息子さんの行動は間違っておらず、エラーは母親にありました。
では、なぜ母親は「人参」ではなく「ピーマン」と書いてしまったのか原因を探ったところ、下記のような理由がありました。

  • スーパーの野菜特売セールが終わりそうな時間だったので、焦ってメモを書いた

上記要因が一つ目の「根本原因」となります。

今回の例に関しては、さらにもう一つ気になる点があります。

実は、息子さんはカレーに入れる具材として、ピーマンは不要であることを知っていました。
では何故、普段カレーに入れている人参ではなく、ピーマンを買うことについて疑問を持たなかったのでしょうか。

この点についても、下記のような原因がありました

  • 母親がおつかいの目的を伝えずにメモ書きだけを渡していた

上記要因が二つ目の「根本原因」となります。

今回の例のように、起きた出来事だけを見ると息子さんが買ってくるものを間違えたように思えますが、根本原因まで探ってみると思いもしなかった要因が明らかになりました。

このように、問題が発生した事象そのものではなく、問題が発生した環境や状況などの根本的な要因のことを「根本原因」と言います

直接原因とは

根本原因とは」の例にて説明しましたが、問題が起こった要因として下記のような要因が見つかっていました。

  • メモには「人参」が書かれておらず、代わりに「ピーマン」が書かれていた

上記は問題が発生した直接的な要因となります。

このように、問題が発生する直接的な要因となった事象のことを「直接原因」と言います

直接原因は、大抵誰かの何かしらの行為によって表に出てくる事象になります。
そのため、エラーを起こした人の行為が根本原因と見なされてしまうことがあります。
しかし、直接原因は根本原因があって起きる出来事なので、問題を根本から解決する際には直接原因の調査で終わらせるのではなく、根本原因まで探る必要があります。

発生した問題の解決を試みる際には、直接原因にだけ目を向けるのではなく、その先にある根本原因を探る必要があること意識しなければなりません

根本原因分析(RCA)とは

根本原因の分析はRCA(Root Cause Analysis)と呼ばれることがあります。

RCAを行う際には「なぜなぜ分析」を行うことが非常にわかりやすく簡単なので、本記事でも「なぜなぜ分析」の方法について説明します。

なぜなぜ分析とは

「なぜなぜ分析」とは、起きた事象に関して「なぜ?」と問いかけて問題が起きた理由を洗い出し、根本原因を探る分析方法になります。

今回のおつかいの例でなぜなぜ分析を行うと、下記のようになります。

  1. おつかいで買ってきたのは人参ではなくピーマンだった
    ↓ なぜピーマンを買った?
  2. メモに書いてあったのが人参ではなくピーマンだった
    ↓ なぜメモにピーマンが書いてあった?
  3. 母親がメモに書いた品物が間違っていた
    ↓ なぜ母親が間違えた?
  4. スーパーの野菜特売セールが終わりそうな時間だったので、焦ってメモを書いた
    ▲根本原因

上記に加えてもう一つ、下記のような考え方もできます。

  1. 夕飯はカレーなのに息子さんはピーマンを買ってきた
    ↓ なぜピーマンを買った?
  2. メモに書いてあったのが人参ではなくピーマンだった
    ↓ なぜカレーの具材として不要なピーマンに疑問を持たなかった?
  3. メモにカレーであることが書いてなかった
    ↓ なぜカレーであることが伝わらなかった?
  4. 母親がおつかいの目的を伝えずにメモ書きだけを渡していた
    ▲根本原因

このように、起きた事象に対して「なぜ?」を問い続けて、根本原因を探ることが「なぜなぜ分析」になります。

上記の例では3回「なぜ?」を問い続けることで根本原因まで行き着いていますが、一般的には5回ほど繰り返すと直接原因が明らかになり、根本原因に行き着くとされています。

「なぜなぜ分析」は根本原因を知るために非常に有効な分析方法ですが、正しい分析結果を得るためには下記の点に注意しなければなりません。

  • 曖昧さを省いて具体的な事象として考えること
  • 客観的に考えること
  • 個人の問題で済ませないこと
  • 感想ではなく事実をもとに考えること
  • 解決できない事象で済ませないこと

「なぜ?」の回答に上記のような要因が入ると正しい分析ができないため、注意が必要です。

まとめ

問題が起きた際にありがちなこととして「誰が何をしたから問題が起きた」という直接原因までの調査を行い、根本原因まで探らずに個人の問題として調査を終了してしまうことがあります。

問題が起きる際には、問題が起こる環境や仕組みが存在するため、根本的な要因への対策をしなければ将来的に同じ問題が発生してしまいます。

発生した問題を根本から解消するためには、直接原因だけでなく根本原因まで明らかにして、再発防止のための施策を行うことが大切になります。

また、再発防止のために行った施策については「対策をしたから良し」として放置をするのではなく、実施後に効果があるか否かを確認して、必要であれば改善をしていくようなPDCAサイクルを回すことも大切になります。

ソフトウェア開発において、エラー(人の誤り)による欠陥の埋め込みは日常的にあります。
問題が起きた際には、単純に起きた事象にのみ対応するような解決策を取るのではなく、将来的なことも考えて根本原因の洗い出しと解決のための施策を行うことが重要になります。

根本原因の解消は作業の効率化にも貢献し、開発コストの削減にもつながります
一つ一つの問題は細かいことではありますが、細かい問題も積もれば山となり、大きな影響を与えるものとなりますので、根本的な要因をしっかりと解消して効率的な開発を行うように心がけましょう。