プログラミングに役立つロジックツリーとは？マインドマップやKJ法も活用しましょう。

## はじめに
「どうやって実装するか考えて」とか「バグの原因究明して」と突然上司に言われて手が止まってしまったそこのあなた！
「そんなん、いきなり出来ないよ…」と思ってませんか？
そんなあなたには、ロジックツリーがオススメ！
便利なフレームワークを使ってささっと問題解決しちゃいましょう！

## 対象者
この記事は下記のような人を対象にしています。

- 駆け出しエンジニア
- プログラミング初学者
- 機能設計を始めてやるけど、自信がない
- いつも、バグの理由を探すのに時間がかかってしまう

## 結論
ロジックツリーには3種類のタイプがあるので、目的に応じて使い分けましょう。

:::note
ロジックツリーは3種類
- Whyツリー：原因究明
- Howツリー：問題解決
- Whatツリー：現状分析、問題発見
:::

また、オプションで下記のフレームワークも使うと効果的です。

:::note
- ロジックツリーが見づらい→**マインドマップ**で書く
- いきなりMECEに書くことができない→**KJ法**を活用
:::

## ロジックツリーとは？
ロジックツリーとは、問題解決のフレームワークの1つです。
「ロジック（論理）をツリー（木）のように展開していく」という意味から、ロジックツリーと呼ばれます。
様々な切り口から課題を分析することで、効率よく解決策を見出すことができます。

## プログラマーがロジックツリーを使うならマークダウン！
一般的にビジネスマンがロジックツリーを使うにはxmindのような専用ツールを使ったり、昔ながらのポストイットが推奨されています。
しかし、僕らはプログラマーです。
正直、マークダウンで充分です！
Asana,notion,ClickUp...何でも良いのですが、とりあえずマークダウンで書いてみましょう。
h1,h2,h3,p...みたいな階層構造はまさにロジックツリーそのものです。
好みのテキストエディタがあればすぐかけるので、サクッと始めてみましょう。

## ロジックツリーのタイプは3種類
ロジックツリーには3種類のタイプがあり、目的に応じて使い分ける必要があります。

:::note
ロジックツリーは3種類
- Whyツリー：原因究明
- Howツリー：問題解決
- Whatツリー：現状分析、問題発見
:::

では、それぞれのツリーについて、具体例と共に見ていきましょう。

### Whyツリーは原因究明に使う
WHYツリーは、なぜその問題が発生しているのかを探る時に役立つ手法です。
何か不具合が起きている時に「なぜ？」と考えて原因を特定するのに役立ちます。

:::note
Whyツリー例：売上価格が税込ではなく税抜で表示されてしまう？
- 商品登録時
    - CSV取込
        - 内税/外税関係なく取り込まれるので問題なし。
    - API登録
        - 内税/外税関係なく登録されるので問題なし。
- 注文時
    - 税込価格
        - 取込時の価格のままなので、ここが問題！
    - 税抜価格
        - 内税/外税を考慮して計算されてるので問題なし。
    - 税額
        - 内税/外税を考慮して計算されてるので問題なし。
- 集計時
    - 税込価格
        - 注文時の税込価格を使ってるので、ここが問題！
    - 税抜価格
        - 注文時の税抜価格を使ってるので問題なし。
    - 個数
        - 問題なし。

:::

### Howツリーは問題解決に使う
Howツリーはどうやって問題を解決していくかを考える際に役立つ手法です。
機能実装をする時、どのようなやり方を採用するか決めるのに有用です。

:::note
Howツリー例：テスト印刷機能を実装したい
- アプリ側実装
    - 印刷内容の作成
        - タイトル
        - 日時
        - ユーザーID
        - プリンタのipアドレス
    - 印刷前のダイアログ
        - 印刷しますか？Yes→印刷する
        - 印刷しますか？No→元の画面に戻る
    - 印刷後のダイアログ
        - 成功時：成功メッセージ表示
        - エラー時：エラー内容表示
- サーバー側実装
    - 機能を利用するためのフラグ
    - アプリ側メソッドの呼出

:::

### Whatツリーは現状分析に使う
Whatツリーは複雑な現象を単純な要素に分解し、どこに問題があるのか見極めるのに役立つ手法です。
現状では表面化している問題はないが、サービスや組織をより良くするための改善点を探るのに有用です。

:::note
Whatツリー例：手戻りが多いプロセスはどこ？
- 要件定義
    - クライアント→リーダー
    - リーダー→コーダー
- コーディング
    - コーダー
- レビュー
    - コーダー→リーダー
- デプロイ
    - リーダー
- 納品
    - リーダー→クライアント
:::

## ロジックツリーのコツはMECEにあり！
ロジックツリーは思いつきでぽんぽん書けばいい、と言うものではありません。
適当に書いてしまうと「ぱっと見ロジックツリーに見えるけど、抜け漏れのあるガバガバツリー」になってしまうのでNGです！

ロジックツリーを使いこなすコツは「同じ階層の項目はMECEになっている」ことが大事です。
MECE(ミーシー)とは「ダブりなく、抜け漏れなく」という意味のフレームワークです。
できるだけ同じ粒度の概念を並べるようにすると、MECEになると思います。
プログラマーは階層構造で考えるのが得意なので、すぐにロジックツリーを使いこなせると思います！

## マインドマップはロジックツリーを図にしたもの
アイデア整理法のひとつに**マインドマップ**があります。 
下記のようなものになります。
例として、Whyツリーをマインドマップ化しました。 
![マインドマップ.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2157342/298069f6-93d0-fb1c-0d66-34ae834d0803.png)

マークダウンの箇条書きに比べると、可視化されてみやすいのが特徴です。  
...と私も前職(企画職)と前々職(研究開発職)で教わりました。
しかし、作成するのにそれになりに手間がかかります。
ITエンジニア職であれば、マークダウンの箇条書きにはなれてると思うので、そこまで可視化にこだわる必要はないかもしれませんね。

### マインドマップが簡単に作成できるツール
最初はペンと紙、パワポなどでマインドマップで書いていましたが、正直面倒くさい...。
そこで、簡単にマインドマップが書けるツールを紹介します。

#### mind meister

https://mindmeister.jp/

最も有名なマインドマップツールです。
一応無料でつかえますが、作成できるのが3つまで、なので実質体験版扱いです。
本格的に使用したい場合は有料になります。

### XMind

https://jp.xmind.net/

無料で本格的に使えるのでおすすめです。
しかし、デスクトップアプリのインストールが必要で、複数人・複数端末での共有はイマイチです。

### Miro

https://miro.com/ja/

無料でオンラインで使えるので手軽に初められるのでおすすめです。
ただし、マインドマップ作成ツール、というよりはオンラインホワイトボード、という位置付けです。
アプリの機能の一つとして、マインドマップも書けますよ、という感じです。

## いきなりロジックツリーを書けない人はKJ法を活用してみよう！
<font color="Red">MECEに書けと言われても、いきなりはできないよ...</font>というあなたには**KJ法**を活用しましょう。
KJ法は下記3プロセスで進めます。

:::note
1. 観察結果をひたすら書き出す。
1. ポストイットを並べ替えてグループ化し、グループに名前をつける。
1. 仮説を出し、アイデアをまとめる。
:::

実際に、Whatツリーで使用した課題をKJ法で解決してみます。

![KJ法1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2157342/54f99aa1-a166-7d8c-e711-b6690fa499dd.png)
まずは現状を書き出しましょう。
この際に、「これ関係ないかも」とか「自分が思ってるだけかも」みたいなバイアスは排除しましょう。
![KJ法2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2157342/f72d75af-b228-01e9-7568-486e2e66a759.png)
次に、グループ化して名前をつけます。
そしてこの後、グループがMECEになっているか、考えます。
今回のケースですと「レビュー」「デプロイ」が抜けてるな、ということに気づけるはずです。
結果、下記のようなMECEになったロジックツリーが完成します。

ある程度、具体例の列挙から始められるので、誰でも手っ取り早くスタートできるのが良いですね。
MECEの考え方に慣れてきたら、いきなりロジックツリーをかけるようにすると、時間が短縮できるのでおすすめです。

:::note
Whatツリー例：手戻りが多いプロセスはどこ？
- 要件定義
    - クライアント→リーダー
    - リーダー→コーダー
- コーディング
    - コーダー
- レビュー
    - コーダー→リーダー
- デプロイ
    - リーダー
- 納品
    - リーダー→クライアント
:::


## おわりに
原因究明、問題解決、現状分析、問題発見など、様々に使えるロジックツリーについてまとめました。
ロジックツリーを使って日々の業務をガンガン効率化していきましょう！



## 参考記事
[ビジネスの問題解決に役立つ「ロジックツリー」について解説](https://tech-camp.in/note/technology/47990/#WHY)