STEP 44:MECE(漏れなくダブりなく)の原則

🎯 STEP 44: MECE(漏れなくダブりなく)の原則

問題を構造化し、漏れなく分析しよう

📋 このステップで学ぶこと

  • MECEの概念と重要性
  • 分類の軸の設定方法
  • ロジックツリーへの応用
  • MECEチェックの方法
  • ビジネス分析での活用

学習時間の目安: 2.5時間

🔍 1. MECEとは

基本概念

MECE(ミーシー)は「Mutually Exclusive, Collectively Exhaustive」の略で、日本語では「漏れなく、ダブりなく」と訳されます。論理的思考の基本であり、問題を整理する最強のフレームワークです。

📌 MECEの2つの条件

① ME(Mutually Exclusive)— 相互排他的

・各要素が重複していない(ダブりがない)
・どれか1つにだけ分類できる

例:
✓「男性」と「女性」→ ダブりなし
✗「20代」と「学生」→ ダブりあり(20代学生が両方に該当)

② CE(Collectively Exhaustive)— 全体網羅的

・すべてを網羅している(漏れがない)
・全体を完全にカバー

例:
✓「10代」「20代」「30代」「40代」「50代」「60代以上」→ 全年齢をカバー
✗「10代」「20代」「30代」→ 40代以降が漏れ

なぜMECEが重要か

問題 発生する弊害 具体例
漏れがある 重要な要素を見落とす
分析が不完全になる
誤った結論に至る
売上減少の原因分析で「商品力」「価格」だけ見て「流通」「プロモーション」を見落とす
ダブりがある 二重計上になる
分析が混乱する
優先順位が不明確
「オンライン販売」と「スマホ販売」で分類すると、スマホでのオンライン販売が重複
💡 MECEのメリット

・思考の整理ができる
・分析の抜け漏れを防ぐ
・議論が明確になる
・意思決定の質が上がる
・チーム内で認識を統一できる

MECEの良い例・悪い例

例1:顧客の分類

✗ 非MECE(問題あり)

・新規顧客
・既存顧客
・VIP顧客
・若年層顧客

問題点:
・VIPは既存顧客と重複
・若年層は新規/既存と重複
・分類軸が混在(購買歴と年齢)

✓ MECE(正しい)

【分類軸1:購買歴】
・新規顧客
・既存顧客

【分類軸2:年齢】
・20代以下
・30-40代
・50代以上

【分類軸3:購買金額】
・VIP(年間100万円以上)
・一般(年間10-100万円)
・ライト(年間10万円未満)

→ 各分類軸を分けて、それぞれでMECEを維持

例2:売上の分解

✗ 非MECE

売上 = 商品A売上 + 商品B売上 + オンライン売上
→ 商品AとBのオンライン売上が重複

✓ MECE(3つの方法)

方法1:商品別
売上 = 商品A売上 + 商品B売上 + その他商品売上

方法2:チャネル別
売上 = 店舗売上 + オンライン売上

方法3:2次元(商品×チャネル)
売上 = (商品A×店舗) + (商品A×オンライン) + (商品B×店舗) + (商品B×オンライン)

例3:時間の分類

✗ 非MECE

・平日
・週末
・祝日
→ 祝日が平日の場合、重複

✓ MECE

方法1:曜日別
・月曜-金曜
・土日

方法2:営業日別
・営業日
・休業日

例4:コストの分類

✗ 非MECE

・人件費
・材料費
・製造コスト
→ 製造コストに人件費と材料費が含まれる

✓ MECE

方法1:変動/固定
・変動費(材料費、外注費など)
・固定費(人件費、家賃など)

方法2:直接/間接
・直接費(製品に直接かかる費用)
・間接費(管理部門などの費用)

🎯 2. MECEな分類の軸

代表的な分類軸

MECEな分類を作るには、適切な分類軸を選ぶことが重要です。以下は実務でよく使われる分類軸の例です。

カテゴリ 分類軸の例
時間 過去/現在/未来、短期/中期/長期、Q1/Q2/Q3/Q4、平日/休日
地理 国内/海外、東日本/西日本、都市部/郊外/地方
顧客 B2B/B2C、新規/既存、個人/法人、年齢層別
商品 商品A/B/C…、カテゴリ別、新商品/既存商品、価格帯別
プロセス Plan/Do/Check/Act、インプット/プロセス/アウトプット
組織 営業/マーケ/開発/管理、本社/支社、正社員/契約社員

Pythonで売上のMECE分解を実践

Step 1:商品×チャネルの2次元でMECE分解

※コードは横スクロールできます

# ============================================ # MECEな売上分解:商品 × チャネル # ============================================ import numpy as np import pandas as pd import matplotlib.pyplot as plt # 日本語フォント設定 plt.rcParams[‘font.sans-serif’] = [‘Arial Unicode MS’, ‘Yu Gothic’, ‘Hiragino Sans’] plt.rcParams[‘axes.unicode_minus’] = False np.random.seed(42) # 商品とチャネルの定義 products = [“商品A”, “商品B”, “商品C”] channels = [“店舗”, “オンライン”, “卸売”] # 売上データを生成 sales_data = [] for product in products: for channel in channels: sales = np.random.uniform(500, 2000) sales_data.append({ “商品”: product, “チャネル”: channel, “売上”: round(sales, 0) }) df_sales = pd.DataFrame(sales_data) # ピボットテーブルで2次元表示 pivot = df_sales.pivot(index=”商品”, columns=”チャネル”, values=”売上”) pivot[“合計”] = pivot.sum(axis=1) pivot.loc[“合計”] = pivot.sum() print(“【売上の2次元MECE分解(単位:万円)】”) print(“=” * 60) print(pivot.to_string()) print() # MECEチェック total_from_data = df_sales[“売上”].sum() total_from_pivot = pivot.loc[“合計”, “合計”] print(“【MECEチェック】”) print(f”データ合計: {total_from_data:,.0f}万円”) print(f”ピボット合計: {total_from_pivot:,.0f}万円”) if abs(total_from_data – total_from_pivot) < 1: print("✓ MECE検証OK:漏れ・ダブりなし") else: print("✗ MECE違反:漏れまたはダブりあり")
【売上の2次元MECE分解(単位:万円)】 ============================================================ チャネル オンライン 卸売 店舗 合計 商品 商品A 875.0 1133.0 1579.0 3587.0 商品B 1220.0 542.0 1034.0 2796.0 商品C 1867.0 1003.0 784.0 3654.0 合計 3962.0 2678.0 3397.0 10037.0 【MECEチェック】 データ合計: 10,037万円 ピボット合計: 10,037万円 ✓ MECE検証OK:漏れ・ダブりなし

Step 2:分解方法による合計の一致確認

# 異なる分解方法でも合計が一致することを確認 print(“【分解方法の比較】”) print(“=” * 60) # 商品別の合計 by_product = df_sales.groupby(“商品”)[“売上”].sum() print(“商品別分解:”) for product, sales in by_product.items(): print(f” {product}: {sales:,.0f}万円”) print(f” → 合計: {by_product.sum():,.0f}万円”) print() # チャネル別の合計 by_channel = df_sales.groupby(“チャネル”)[“売上”].sum() print(“チャネル別分解:”) for channel, sales in by_channel.items(): print(f” {channel}: {sales:,.0f}万円”) print(f” → 合計: {by_channel.sum():,.0f}万円”) print() # 全データの合計 total = df_sales[“売上”].sum() print(f”【結論】どの分解方法でも合計は {total:,.0f}万円 で一致”) print(“→ すべての分解がMECE!”)
【分解方法の比較】 ============================================================ 商品別分解: 商品A: 3,587万円 商品B: 2,796万円 商品C: 3,654万円 → 合計: 10,037万円 チャネル別分解: オンライン: 3,962万円 卸売: 2,678万円 店舗: 3,397万円 → 合計: 10,037万円 【結論】どの分解方法でも合計は 10,037万円 で一致 → すべての分解がMECE!

Step 3:MECEな分解の可視化

# ============================================ # MECEな分解の可視化(4つのグラフ) # ============================================ fig, axes = plt.subplots(2, 2, figsize=(14, 10)) # 1. 商品別売上(MECEな分解) ax1 = axes[0, 0] product_sales = df_sales.groupby(“商品”)[“売上”].sum().sort_values(ascending=False) colors1 = [“#4ecdc4”, “#ff6b6b”, “#f9ca24”] bars = ax1.bar(product_sales.index, product_sales.values, color=colors1, alpha=0.7) ax1.set_ylabel(“売上(万円)”, fontsize=11) ax1.set_title(“商品別売上(MECE分解)”, fontsize=13, fontweight=”bold”) ax1.grid(axis=”y”, alpha=0.3) # 値を表示 for bar, val in zip(bars, product_sales.values): height = bar.get_height() ax1.text(bar.get_x() + bar.get_width()/2., height, f”{val:,.0f}”, ha=”center”, va=”bottom”, fontsize=10) # 合計を表示 total = product_sales.sum() ax1.text(0.5, 0.95, f”合計: {total:,.0f}万円”, transform=ax1.transAxes, ha=”center”, va=”top”, bbox=dict(boxstyle=”round”, facecolor=”wheat”, alpha=0.5), fontsize=11, fontweight=”bold”) # 2. チャネル別売上(MECEな分解) ax2 = axes[0, 1] channel_sales = df_sales.groupby(“チャネル”)[“売上”].sum().sort_values(ascending=False) colors2 = [“#667eea”, “#a29bfe”, “#fd79a8”] bars = ax2.bar(channel_sales.index, channel_sales.values, color=colors2, alpha=0.7) ax2.set_ylabel(“売上(万円)”, fontsize=11) ax2.set_title(“チャネル別売上(MECE分解)”, fontsize=13, fontweight=”bold”) ax2.grid(axis=”y”, alpha=0.3) for bar, val in zip(bars, channel_sales.values): height = bar.get_height() ax2.text(bar.get_x() + bar.get_width()/2., height, f”{val:,.0f}”, ha=”center”, va=”bottom”, fontsize=10) ax2.text(0.5, 0.95, f”合計: {total:,.0f}万円”, transform=ax2.transAxes, ha=”center”, va=”top”, bbox=dict(boxstyle=”round”, facecolor=”wheat”, alpha=0.5), fontsize=11, fontweight=”bold”) # 3. 2次元分解(商品×チャネル) ax3 = axes[1, 0] x_pos = np.arange(len(products)) width = 0.25 for i, channel in enumerate(channels): channel_data = df_sales[df_sales[“チャネル”] == channel] values = [channel_data[channel_data[“商品”] == p][“売上”].values[0] for p in products] ax3.bar(x_pos + i * width, values, width, label=channel, alpha=0.7, color=colors2[i]) ax3.set_xlabel(“商品”, fontsize=11) ax3.set_ylabel(“売上(万円)”, fontsize=11) ax3.set_title(“商品×チャネル(2次元MECE分解)”, fontsize=13, fontweight=”bold”) ax3.set_xticks(x_pos + width) ax3.set_xticklabels(products) ax3.legend() ax3.grid(axis=”y”, alpha=0.3) # 4. MECEチェックの可視化(分解方法ごとの合計比較) ax4 = axes[1, 1] breakdown_methods = [“商品別\n分解”, “チャネル別\n分解”, “2次元\n分解”] totals = [product_sales.sum(), channel_sales.sum(), df_sales[“売上”].sum()] colors_check = [“#4ecdc4” if abs(t – total) < 0.01 else "#ff6b6b" for t in totals] bars = ax4.bar(breakdown_methods, totals, color=colors_check, alpha=0.7) ax4.axhline(y=total, color="red", linestyle="--", linewidth=2, label=f"正解: {total:,.0f}万円") ax4.set_ylabel("売上合計(万円)", fontsize=11) ax4.set_title("MECE検証(すべて同じ=MECE成立)", fontsize=13, fontweight="bold") ax4.legend() ax4.grid(axis="y", alpha=0.3) for bar, val in zip(bars, totals): height = bar.get_height() ax4.text(bar.get_x() + bar.get_width()/2., height, f"{val:,.0f}", ha="center", va="bottom", fontsize=10, fontweight="bold") plt.tight_layout() plt.show()

Step 4:MECEチェックリストの出力

# ============================================ # MECEチェックリスト # ============================================ print(“【MECEチェックリスト】”) print(“=” * 60) print() checklist = [ { “項目”: “1. 分類軸は1つか”, “確認内容”: “同じレベルで1つの軸を使っているか?”, “良い例”: “✓ 商品別 OR チャネル別(混ぜない)” }, { “項目”: “2. 相互排他的(ME)”, “確認内容”: “各項目は1つのカテゴリにだけ属するか?”, “良い例”: “✓ 店舗とオンラインは重複なし” }, { “項目”: “3. 全体網羅的(CE)”, “確認内容”: “すべての項目を足すと全体になるか?”, “良い例”: “✓ 商品A + B + C = 全売上” }, { “項目”: “4. 粒度が適切”, “確認内容”: “細かすぎず、粗すぎないか?”, “良い例”: “✓ 3-5分類が扱いやすい” }, { “項目”: “5. アクションにつながる”, “確認内容”: “この分解から意思決定できるか?”, “良い例”: “✓ 不調商品の特定→改善策の立案” } ] for item in checklist: print(f”{item[‘項目’]}”) print(f” 確認: {item[‘確認内容’]}”) print(f” 例: {item[‘良い例’]}”) print()
【MECEチェックリスト】 ============================================================ 1. 分類軸は1つか 確認: 同じレベルで1つの軸を使っているか? 例: ✓ 商品別 OR チャネル別(混ぜない) 2. 相互排他的(ME) 確認: 各項目は1つのカテゴリにだけ属するか? 例: ✓ 店舗とオンラインは重複なし 3. 全体網羅的(CE) 確認: すべての項目を足すと全体になるか? 例: ✓ 商品A + B + C = 全売上 4. 粒度が適切 確認: 細かすぎず、粗すぎないか? 例: ✓ 3-5分類が扱いやすい 5. アクションにつながる 確認: この分解から意思決定できるか? 例: ✓ 不調商品の特定→改善策の立案

分類軸の選び方

💡 適切な分類軸を選ぶ5つの基準

① 目的との整合性
何を知りたいかで軸を決める
例:売上減少の原因分析
・商品別? → どの商品が不調か知りたい
・地域別? → どの地域で減少か知りたい
・時系列? → いつから減少か知りたい

② アクションにつながるか
分析結果から具体的な行動が取れるか
良い軸:「商品別」→ 不調商品のテコ入れ可能
悪い軸:「天気別」→ 天気はコントロール不可

③ データの入手可能性
その軸でデータが取れるか
理想:「顧客の購買動機別」→ でもデータがない
現実的代替案:「年齢別」「購買頻度別」

④ 粒度の適切さ
細かすぎず、粗すぎず
粗すぎ:「国内/海外」の2分類 → 洞察が得られない
細かすぎ:都道府県47分類 → 管理困難
適切:「首都圏/関西/その他」の3分類

⑤ ステークホルダーの理解
関係者が理解・納得できる軸か
経営層向け:シンプルな軸(3-5分類)
実務担当者向け:詳細な軸(10分類以上も可)

📝 分類軸の組み合わせ

1次元分解:
売上 = 商品A + 商品B + 商品C
→ シンプル、理解しやすい

2次元分解:
売上 = (商品A×店舗) + (商品A×オンライン) + (商品B×店舗) + …
→ 詳細、クロス分析可能

3次元分解:
売上 = 商品 × チャネル × 地域
→ 超詳細だが複雑、管理困難

推奨:
・まず1次元で全体把握
・重要な部分を2次元で深掘り
・3次元は特殊な場合のみ

🌳 3. ロジックツリーへの応用

ロジックツリーとは

ロジックツリーは、問題や課題を樹形図で分解し、各レベルでMECEを維持しながら全体像を可視化するツールです。

💡 3つのタイプのロジックツリー

① 要素分解型(What Tree)
「何で構成されるか」を分解
例:売上 = 商品A売上 + 商品B売上 + 商品C売上

② 原因分解型(Why Tree)
「なぜそうなるか」を分解
例:売上減少 ← 客数減少 ← 新規顧客減少 ← 広告効果低下

③ 問題解決型(How Tree)
「どうやって解決するか」を分解
例:売上向上 → 客数増加 → 新規獲得 → Web広告強化

実践例:利益改善のロジックツリー

利益 1,000万円 ├── 売上 5,000万円 │ ├── 商品A 2,000万円(40%) │ │ ├── 店舗 1,200万円 │ │ └── オンライン 800万円 │ ├── 商品B 1,800万円(36%) │ │ ├── 店舗 900万円 │ │ └── オンライン 900万円 │ └── 商品C 1,200万円(24%)★ 要改善 │ ├── 店舗 600万円 │ └── オンライン 600万円 └── コスト ▲4,000万円 ├── 変動費 ▲2,500万円(62.5%) │ ├── 材料費 ▲1,500万円 ★ 交渉余地 │ └── 外注費 ▲1,000万円 └── 固定費 ▲1,500万円(37.5%) ├── 人件費 ▲800万円 ├── 家賃 ▲400万円 └── その他 ▲300万円

PythonでMECE検証とアクションプラン

# ============================================ # ロジックツリーのMECE検証と改善機会の特定 # ============================================ # ツリー構造を辞書で定義 logic_tree = { “名称”: “利益”, “値”: 1000, “子要素”: [ { “名称”: “売上”, “値”: 5000, “子要素”: [ {“名称”: “商品A”, “値”: 2000}, {“名称”: “商品B”, “値”: 1800}, {“名称”: “商品C”, “値”: 1200} ] }, { “名称”: “コスト”, “値”: -4000, “子要素”: [ {“名称”: “変動費”, “値”: -2500}, {“名称”: “固定費”, “値”: -1500} ] } ] } def check_mece(node, level=0): “””各レベルでMECEをチェック””” if “子要素” not in node: return children_sum = sum(child[“値”] for child in node[“子要素”]) parent_value = node[“値”] is_mece = abs(children_sum – parent_value) < 0.01 indent = " " * level status = "✓ OK" if is_mece else "✗ NG" print(f"{indent}{node['名称']}: {parent_value:+,}万円") print(f"{indent} 子要素合計: {children_sum:+,}万円 → {status}") for child in node["子要素"]: check_mece(child, level + 1) print("【ロジックツリーのMECE検証】") print("=" * 60) check_mece(logic_tree) print() # 改善機会の特定 print("【改善機会の特定】") print("=" * 60) print() print("【売上側の分析】") print() print("商品パフォーマンス:") print(" 1. 商品A: 2,000万円(売上の40%)- 好調") print(" → 維持・投資継続") print() print(" 2. 商品B: 1,800万円(売上の36%)- 良好") print(" → 成長の余地あり") print() print(" 3. 商品C: 1,200万円(売上の24%)- 要改善") print(" → リニューアルまたは撤退検討") print() print("チャネル分析:") print(" ・店舗: 2,700万円(54%)") print(" ・オンライン: 2,300万円(46%)") print(" → オンラインが伸びている、投資強化") print() print("【コスト側の分析】") print() print("変動費: 2,500万円(コストの62.5%)") print(" ・材料費: 1,500万円 → 仕入先との交渉余地") print(" ・外注費: 1,000万円 → 内製化の検討") print() print("固定費: 1,500万円(コストの37.5%)") print(" ・人件費: 800万円 → 適正化の余地") print(" ・家賃: 400万円 → 移転・再交渉の検討") print(" ・その他: 300万円 → 見直し")
【ロジックツリーのMECE検証】 ============================================================ 利益: +1,000万円 子要素合計: +1,000万円 → ✓ OK 売上: +5,000万円 子要素合計: +5,000万円 → ✓ OK コスト: -4,000万円 子要素合計: -4,000万円 → ✓ OK 【改善機会の特定】 ============================================================ 【売上側の分析】 商品パフォーマンス: 1. 商品A: 2,000万円(売上の40%)- 好調 → 維持・投資継続 2. 商品B: 1,800万円(売上の36%)- 良好 → 成長の余地あり 3. 商品C: 1,200万円(売上の24%)- 要改善 → リニューアルまたは撤退検討 チャネル分析: ・店舗: 2,700万円(54%) ・オンライン: 2,300万円(46%) → オンラインが伸びている、投資強化 【コスト側の分析】 変動費: 2,500万円(コストの62.5%) ・材料費: 1,500万円 → 仕入先との交渉余地 ・外注費: 1,000万円 → 内製化の検討 固定費: 1,500万円(コストの37.5%) ・人件費: 800万円 → 適正化の余地 ・家賃: 400万円 → 移転・再交渉の検討 ・その他: 300万円 → 見直し

アクションプランの立案

# ============================================ # アクションプラン(優先順位付き) # ============================================ print(“【アクションプラン(優先順位付き)】”) print(“=” * 60) print() actions = [ { “優先度”: 1, “施策”: “商品Cのリニューアルまたは撤退”, “対象”: “売上”, “期待効果”: “+300万円”, “期間”: “3ヶ月” }, { “優先度”: 2, “施策”: “オンラインチャネルへの投資強化”, “対象”: “売上”, “期待効果”: “+500万円”, “期間”: “6ヶ月” }, { “優先度”: 3, “施策”: “材料費の仕入先交渉”, “対象”: “コスト”, “期待効果”: “▲200万円削減”, “期間”: “1ヶ月” }, { “優先度”: 4, “施策”: “人員配置の最適化”, “対象”: “コスト”, “期待効果”: “▲150万円削減”, “期間”: “6ヶ月” }, { “優先度”: 5, “施策”: “外注業務の内製化検討”, “対象”: “コスト”, “期待効果”: “▲150万円削減”, “期間”: “3ヶ月” } ] for action in actions: print(f”{action[‘優先度’]}. {action[‘施策’]}”) print(f” 対象: {action[‘対象’]}”) print(f” 期待効果: {action[‘期待効果’]}”) print(f” 期間: {action[‘期間’]}”) print() # 期待される総合効果 print(“=” * 60) print(“【期待される総合効果】”) print(“=” * 60) print() print(f”現在の利益: 1,000万円”) print() print(“改善効果:”) print(” 売上増: +800万円(商品C改善+300、オンライン+500)”) print(” コスト削減: ▲500万円(材料▲200、人員▲150、内製化▲150)”) print(” 合計: +1,300万円”) print() print(f”改善後の利益: 2,300万円”) print(f”改善率: +130%”)
【アクションプラン(優先順位付き)】 ============================================================ 1. 商品Cのリニューアルまたは撤退 対象: 売上 期待効果: +300万円 期間: 3ヶ月 2. オンラインチャネルへの投資強化 対象: 売上 期待効果: +500万円 期間: 6ヶ月 3. 材料費の仕入先交渉 対象: コスト 期待効果: ▲200万円削減 期間: 1ヶ月 4. 人員配置の最適化 対象: コスト 期待効果: ▲150万円削減 期間: 6ヶ月 5. 外注業務の内製化検討 対象: コスト 期待効果: ▲150万円削減 期間: 3ヶ月 ============================================================ 【期待される総合効果】 ============================================================ 現在の利益: 1,000万円 改善効果: 売上増: +800万円(商品C改善+300、オンライン+500) コスト削減: ▲500万円(材料▲200、人員▲150、内製化▲150) 合計: +1,300万円 改善後の利益: 2,300万円 改善率: +130%

ロジックツリー作成の5ステップ

📝 MECEなロジックツリーの作り方

Step 1:トップレベルを設定
分析対象を明確に(「売上」「利益」「顧客満足度」など)

Step 2:第1レベルで大きく分ける
MECEな分類軸を1つ選び、3-5個程度に分解

Step 3:第2レベルでさらに分解
各要素をMECEに分解(分類軸は統一しなくてOK)

Step 4:MECEチェック
各レベルで漏れ・ダブりチェック、合計が親要素と一致するか確認

Step 5:優先順位付け
データで各要素の大きさを確認し、アクションの優先順位を決定

📝 STEP 44 のまとめ

✅ このステップで学んだこと
  • MECE:漏れなく(CE)、ダブりなく(ME)
  • 分類軸:目的に応じた軸の選び方(時間、地理、顧客、商品など)
  • ロジックツリー:問題の構造化と可視化
  • MECEチェック:合計の一致で検証
  • 実務応用:分析とアクションへの活用
💡 MECEの実務活用ポイント

思考を整理し、抜け漏れを防ぐ!

1. 常にMECEを意識
・分析する時は必ずMECEか確認
・漏れがないか?ダブりがないか?
・合計は一致するか?

2. 分類軸を1つに
・同じレベルでは1つの軸
・軸を混ぜない
・次のレベルで軸を変えるのはOK

3. 粒度を統一
・同じレベルは同じ粒度
・「大項目」と「小項目」を混ぜない
・階層を明確に

4. 「その他」の使い方
・重要でない項目をまとめる
・ただし「その他」が大きすぎる場合は要分解
・目安:全体の10%以下

5. 実務での応用場面

会議での議論:論点をMECEに整理 → 議論の抜け漏れ防止
プレゼンテーション:内容をMECEに構成 → 聞き手が理解しやすい
問題解決:原因をMECEに洗い出し → 見落としを防ぐ
データ分析:セグメントをMECEに → 正確な分析

6. よくある失敗

失敗1:分類軸の混在
✗「商品A」「商品B」「オンライン」→ 商品とチャネルが混在

失敗2:粒度の不統一
✗「東京都」「関東地方」→ 都道府県と地方が混在

失敗3:漏れの見落とし
✗「10代」「20代」「30代」→ 40代以降が漏れ

失敗4:過度な細分化
✗ 都道府県47分類 → 管理できない、本質が見えない

📋 MECEチェックリスト(実務で使える)

分析や報告を行う前に、以下を確認しましょう:

□ 分類軸は1つか?(同じレベルで軸を混ぜていないか)
□ すべて網羅しているか?(漏れがないか)
□ 重複はないか?(ダブりがないか)
□ 粒度は統一されているか?(大項目と小項目を混ぜていないか)
□ 合計は一致するか?(子要素の合計 = 親要素)
□ アクションにつながるか?(分析結果から行動できるか)
□ ステークホルダーが理解できるか?

📝 練習問題

問題 1 基礎

以下の分類はMECEかどうか判定し、問題がある場合は正しいMECE分類を提案してください。

【顧客の分類】
・新規顧客
・リピーター
・VIP顧客
・20代顧客
・法人顧客

【解答】非MECE — 複数の問題あり

問題点の分析:

1. 分類軸が混在
・購買履歴:新規顧客、リピーター
・購買金額:VIP顧客
・年齢:20代顧客
・顧客タイプ:法人顧客
→ 4つの異なる軸が混ざっている

2. ダブりあり(ME違反)
・VIPリピーターが重複
・20代の新規顧客が重複
・法人のVIP顧客が重複

3. 漏れあり(CE違反)
・30代以上の顧客が漏れ
・休眠顧客が漏れ

正しいMECE分類の提案:

【提案1:購買履歴で分類】
・新規顧客(初回購入)
・既存顧客(リピーター)
・休眠顧客(1年以上購買なし)
✓ MECE:すべての顧客がどれか1つに分類

【提案2:顧客タイプで分類】
・個人顧客
・法人顧客
✓ MECE:シンプルで明確

【提案3:購買金額で分類】
・VIP顧客(年間100万円以上)
・一般顧客(年間10万〜100万円)
・ライト顧客(年間10万円未満)
✓ MECE:金額範囲が重複なし

【提案4:年齢で分類】
・20代以下
・30-40代
・50代以上
✓ MECE:全年齢をカバー

重要な原則:
1. 1つの分類では1つの軸のみ使用
2. 必要なら複数の分類を別々に作成
3. 各分類でMECEを維持
4. 目的に応じて最適な軸を選択
問題 2 応用

売上が前年比20%減少しました。MECEなロジックツリーを使って原因を分析し、改善策を提案してください。

与えられた情報:
・売上 = 客数 × 客単価
・客数:10,000人 → 8,500人(15%減)
・客単価:5,000円 → 4,700円(6%減)

3レベル以上のロジックツリーを作成し、具体的なアクションプランまで導いてください。

【解答】MECEロジックツリー分析

レベル1:売上の分解

売上減少 20%
├── 客数減少 15%(寄与度:約15%)
└── 客単価減少 6%(寄与度:約5%)

計算:
・前年:10,000人 × 5,000円 = 5,000万円
・今年:8,500人 × 4,700円 = 3,995万円
・減少:1,005万円(20.1%減)

MECEチェック:
✓ ダブりなし:客数と客単価は独立
✓ 漏れなし:売上 = 客数 × 客単価で完全分解
✓ 合計一致:15% + 6% ≈ 20%

レベル2-3:詳細分解

売上減少 20%(1,005万円) ├── 客数減少 15%(1,500人) │ ├── 新規顧客減少 25%(1,000人減) │ │ ├── 広告費削減(月300→200万円) │ │ ├── SEO順位下落(3位→10位) │ │ └── 競合の新規出店(近隣2店舗) │ └── 既存顧客減少 8%(500人減) │ ├── 顧客満足度低下(NPS: 40→25) │ ├── 品揃え縮小(SKU: 500→400) │ └── サービス品質低下(スタッフ: 15→12人) └── 客単価減少 6%(300円) ├── 購買点数減少 4%(2.5→2.4点) │ ├── レコメンド機能の廃止 │ └── セット販売の中止 └── 商品単価低下 2%(2,000→1,960円) ├── 価格競争への対応 └── 高価格帯商品の販売不振

改善アクションプラン:

【優先順位1:新規顧客獲得(最大のインパクト)】

施策1-1:広告費の回復
・投資:月+100万円(年間1,200万円)
・効果:新規顧客 +500人/月
・売上増:500人 × 4,700円 × 12ヶ月 = 2,820万円
・ROI:(2,820 – 1,200) / 1,200 = 135%

施策1-2:SEO対策の強化
・投資:300万円(一時)
・効果:検索順位回復 → 新規 +300人/月
・売上増:1,692万円/年
・ROI:464%

【優先順位2:既存顧客維持】

施策2-1:スタッフ増員
・投資:+3人 × 400万円 = 1,200万円/年
・効果:サービス品質向上、流出防止 +300人
・売上増:1,692万円
・ROI:41%

施策2-2:品揃え回復
・投資:+100SKU × 5万円 = 500万円
・効果:既存顧客維持 +200人
・売上増:1,128万円
・ROI:126%

【優先順位3:客単価向上】

施策3-1:クロスセル復活
・投資:レコメンド機能 200万円
・効果:購買点数 2.4 → 2.5点に回復
・売上増:8,500人 × 0.1点 × 2,000円 × 12ヶ月 = 2,040万円
・ROI:920%

【総合計画】

投資総額:
・広告:1,200万円、SEO:300万円、スタッフ:1,200万円
・品揃え:500万円、レコメンド:200万円
・合計:3,400万円

期待売上増:
・新規獲得:4,512万円
・既存維持:2,820万円
・客単価:2,040万円
・合計:+9,372万円

ROI:(9,372 – 3,400) / 3,400 = 176%

期待結果(1年後):
・売上:3,995万円 → 5,000万円(目標達成)
・客数:8,500人 → 10,000人(回復)
・客単価:4,700円 → 5,000円(回復)

❓ よくある質問

Q1: 「その他」を使うとMECEが崩れませんか?
適切に使えばMECEを維持できます。

「その他」の正しい使い方:

1. 個別に重要でない項目をまとめる
例:売上の分解
・商品A:2,000万円(40%)
・商品B:1,500万円(30%)
・商品C:1,000万円(20%)
・その他:500万円(10%)
→ 合計5,000万円で一致

2. 「その他」が大きすぎる場合
✗ その他:2,500万円(50%)
→ これは問題!さらに分解が必要

目安:「その他」は全体の10%以下

3. 「その他」の中身を明示
良い例:「その他(商品D〜Zの合計)」
悪い例:「その他」だけ → 何が入っているか不明

原則:
「その他」を使ってもMECEは維持可能
ただし、適切なサイズ感を保つこと
Q2: 完璧なMECEにこだわりすぎて分析が進まない場合は?
80%のMECEで十分なことが多いです。

実務的なアプローチ:

1. 完璧を求めすぎない
・100%のMECEは難しい
・80-90%のMECEで実用十分
・スピードも重要

2. 重要な部分にフォーカス
・全体の80%を占める部分をMECEに
・残り20%は「その他」でまとめる
・パレートの法則の応用

3. イテレーティブに改善
ステップ1:粗いMECEで全体把握
ステップ2:重要部分を詳細化
ステップ3:必要に応じて精緻化

例:
第1版(粗い):国内70%、海外30%
第2版(詳細化):関東40%、関西20%、その他国内10%、海外30%

MECEにこだわりすぎる危険:
・分析麻痺(Analysis Paralysis)
・時間の浪費
・本質を見失う

バランスの取り方:
・期限を決める
・「完璧」より「十分」を目指す
・アクションにつながるか常に確認
・フィードバックで改善
Q3: ロジックツリーは何段階まで掘り下げるべきですか?
通常は3〜5段階が実用的です。

段階数の目安:

2段階:
・エグゼクティブサマリー
・概要把握
・経営層への報告
例:売上 → (商品別) → (チャネル別)

3段階:
・標準的な分析
・問題の構造化
・実務での最頻

4-5段階:
・詳細分析
・根本原因の特定
・専門的な検討

6段階以上:
・通常は不要
・複雑すぎて管理困難
・本質が見えなくなる

掘り下げを止めるタイミング:
1. アクションが明確になった
2. データがない
3. これ以上分解しても洞察が得られない
4. 十分な粒度に達した

原則:
・目的に応じた深さ
・アクションにつながる粒度
・管理可能な複雑さ
・3段階を標準に、必要に応じて増減
📝

学習メモ

ビジネスデータ分析・意思決定 - Step 44

📋 過去のメモ一覧
#artnasekai #学習メモ
LINE