
結論:レポートは「データ→図」ではなく「意思決定→図」の順で設計します。
最短で伝わり、運用で“使い続けられる”型は次の4点です。
- 結論1行(意思決定の方向を最初に提示)
- 図3点(推移・分解・構成)+注釈・基準線
- 打ち手テーブル(根拠×期待効果×期限×担当)
- 再現性の担保(Tableau配信/Python自動PDF+CI)
迷ったら「結論→推移→分解→構成→打ち手→運用」。これで会議は10分で終わります。
この記事の要点(ここだけ読めばOK)
-
図は3点で十分:
-
推移(折れ線)/分解(棒・帯)/構成(100%積み上げ)。
-
重要ポイントは 注釈(矢印+短文)と 基準線(平均・目標)で補強。
-
-
KPI定義が土台:単位・粒度・除外条件・タイムゾーンを先に固定。
-
“打ち手テーブル” で意思決定を加速:根拠×期待効果×期限×担当。
-
再現性までセット:Tableauはサブスク配信、PythonはPDF自動出力。
関連記事:
>>【保存版】可視化入門:Matplotlib/Plotlyの使い分けと“伝わるグラフ設計”10ステップ
>>Python副業の案件種類と相場:自動化/可視化/スクレイピング|“納品の型×見積根拠×契約リスク”をひとまとめ
>>Excel業務の自動化で月3万円:社内案件の作り方|“60分→10分”を商品化して社内受注する
>>初案件はこの一通で決まる|返信率を上げる提案文テンプレ45選【コピペ可/検収基準・見積り付き】
よくある失敗と対策
失敗1:図が多すぎて、何を決めたいかがぼやける
→ 対策:図は3点に制限。各図に“役割”を与え、注釈と基準線で文脈を明示。
失敗2:KPI定義が曖昧で、部署ごとに数値が合わない
→ 対策:単位/粒度/除外/時点を定義書でロック。レビュー時はまず定義合わせ。
失敗3:納品で終わり、誰も見なくなる
→ 対策:配信運用(Tableauのサブスク/メール配信)と、毎週3分QCをセット。
筆者の現場知見:最小構成で“刺さる図”
10年・100件超の納品で最も意思決定が速かった構成は 「推移+分解+構成」 に、注釈と基準線 を添えた最小パッケージ。
以降はこの型を Tableau と Matplotlib の両輪で コピペ再現 できるよう整理します。
納品の型:KPI定義→図3点→打ち手→運用(テンプレ付き)
KPI定義書テンプレ(コピペ可)
# KPI定義書(例:売上・在庫)
## 目的
- 欠品率を前年同週比で-1.0pt改善し、粗利最大化。
## 指標
- 売上:税抜、返品除外。単位:円。粒度:日/店舗。
- 欠品率:販売機会損失数/需要見込数。推定方法を別紙。
## 集計ルール
- タイムゾーン:JST。営業日定義:土日祝含む。
- 除外:社内購買/テストデータ。
## データソース
- DWH: bigquery.project.dataset.sales_daily
- カレンダー: calendar_master(祝日/セール)
## 更新
- 日次 7:00 JST。遅延>30分でアラート。
## 所有者/変更管理
- Owner:Analytics部 ◯◯。PRテンプレ/差し戻し率を運用。図3点のストーリー(例)
- 図1:推移(折れ線)—「今週の売上は前週比+8%、前年同週比+5%」
- 図2:分解(棒/帯)—媒体別/カテゴリ別の寄与度を提示
- 図3:構成(100%積上げ)—上位セグメントの構成比変化で打ち手を示唆
- 注釈:異常点に矢印+短文、基準線に平均/目標
打ち手(意思決定表)テンプレ
| 打ち手 | 根拠 | 期待効果 | コスト | 期限 | 担当 |
|---|---|---:|---:|---|---|
| セグメントBに予算+15% | ROAS +0.4、在庫余裕 | 粗利 +120万 | +30万 | 今週 | 広告A |
| 在庫補充 +1日 | 欠品アラート増加 | 欠品率 -0.8pt | +10万 | 即日 | 物流B |Tableau:設計→実装→配信(再現性まで担保)
原則:1画面1意思決定。 ダッシュボードは KPI → 推移 → 分解 → 構成 の順で配置。フィルタは最小限、注釈・基準線・参考線で文脈を補います。
実装要点
- データ接続の統一/抽出を標準化
- 計算フィールド:前年同週、寄与度、構成比
- ダッシュボード解像度:1200×900px 目安、ストーリー枚数は3枚
配信運用
- Server/Cloud の サブスク配信 で毎朝PDFを送信(件名:
[週次KPI] ${date}) - 閲覧/ダウンロードの権限整理、ログの月次レビュー で利用状況を確認
Matplotlib:PDF自動出力テンプレ(コピペ可)
何をするコード?(初心者向けの狙い)
- CSVから売上データを読み込み
- 日次に整形し、3つの図(推移/分解/構成) を作成
- 1つのPDF に順番通りに保存 -(任意)メールにPDFを添付してチームへ送信
ディレクトリ構成(最小)
report/
data/sales.csv
src/make_report.py
outputs/weekly_report_YYYYMMDD.pdf
config.yaml
README.mdconfig.yaml の例
date_col: date
value_col: sales
segment: category
freq: Dmake_report.py(解説コメント付き)
import pandas as pd
import matplotlib.pyplot as plt
from matplotlib.backends.backend_pdf import PdfPages
import yaml, pathlib
cfg = yaml.safe\_load(open('config.yaml', 'r', encoding='utf-8'))
path = pathlib.Path('data/sales.csv')
df = pd.read\_csv(path, parse\_dates=\[cfg\['date\_col']])
# 前処理
s = (df.set\_index(cfg\['date\_col'])\[cfg\['value\_col']]
.asfreq(cfg\['freq']).fillna(0))
seg = (df.pivot\_table(index=cfg\['date\_col'], columns=cfg\['segment'],
values=cfg\['value\_col'], aggfunc='sum')
.asfreq(cfg\['freq']).fillna(0))
with PdfPages('outputs/weekly\_report.pdf') as pdf:
\# 図1:推移
plt.figure(figsize=(10,5))
s.rolling(7).mean().plot()
plt.title('売上推移(7日移動平均)'); plt.xlabel('日付'); plt.ylabel('売上')
plt.axhline(s.mean(), linestyle='--')
pdf.savefig(); plt.close()
```
# 図2:分解(上位カテゴリ)
top = seg.iloc[-30:].sum().sort_values(ascending=False).head(5).index
plt.figure(figsize=(10,5))
seg[top].iloc[-30:].plot(kind='bar', stacked=True)
plt.title('直近30日のカテゴリ別売上'); plt.xlabel('日付'); plt.ylabel('売上')
pdf.savefig(); plt.close()
# 図3:構成比(直近週)
last = seg.iloc[-7:].sum()
plt.figure(figsize=(8,6))
(last/last.sum()).sort_values().plot(kind='barh')
plt.title('直近7日の構成比'); plt.xlabel('構成比')
pdf.savefig(); plt.close()
(任意)メール送信スニペット
import smtplib, ssl
from email.message import EmailMessage
msg = EmailMessage()
msg\['Subject'] = '\[週次KPI] レポート'
msg\['From'] = '[noreply@example.com](mailto:noreply@example.com)'
msg\['To'] = '[team@example.com](mailto:team@example.com)'
msg.set\_content('結論1行:売上+8%、欠品-1.2pt。詳細はPDF参照。')
with open('outputs/weekly\_report.pdf', 'rb') as f:
msg.add\_attachment(f.read(), maintype='application', subtype='pdf',
filename='weekly\_report.pdf')
with smtplib.SMTP\_SSL('smtp.example.com', 465, context=ssl.create\_default\_context()) as s:
s.login('user','pass'); s.send\_message(msg)品質確認(毎回3分):図の順序/注釈/基準線が KPI定義と一致 しているかチェック。
QCチェックリスト(受託/社内共通)
- KPI定義一致:単位/粒度/除外条件
- 図3点+結論1行:順序は「結論→推移→分解→構成」
- 注釈/基準線:異常点/閾値/平均線
- 表記統一:桁区切り/小数/%、凡例/軸ラベルの冗長削減
- アクセシビリティ:色弱対応(明度差/パターン)、代替テキスト
- 再現性:
requirements.txt/Makefile/README、最小限のテスト - 命名・版管理:
YYYYMMDD_Report_v1.pdf、CHANGELOG.md更新 - 配信テスト:宛先/時刻を実データで検証
「やりがちNG」→こう直す
- 3D/多色/グラデ:2–3色+強調1色に。注釈/基準線で伝える。
- 軸カット/二重軸:スモールマルチプルや比率で置換。
- 凡例だらけ:直接ラベリングと並び順で可読化。
- PDFだけ配布:Tableauリンクと再現手順も同梱。
契約/受入れ:SOWと検収のひな形(レポート専用)
# SOW(レポート納品)
目的:経営会議の意思決定を迅速化(所要10分)
成果物:PDF 1本(結論1行+図3点)、Tableauダッシュボード1本
検収:KPI定義一致/PDF生成≤3分/図の禁じ手なし
納期:YYYY-MM-DD(営業日10日)
運用:Tableauサブスク配信/Python自動出力のREADME
変更:指標/定義変更はChange Requestで合意価格・ROIの伝え方(提案文に添付)
- 初期構築:8〜18万円(定義書/設計/実装/QC/引継)
- 月次運用:1.5〜5万円(配信/軽微改修/監視)
- ROI例:会議準備60→10分×週1×5人=月20h削減
無料カウンセリングで“伝わる1枚”へ
レビューが丁寧な環境ほど、レポートは速く洗練されます。
まずはKPI定義と図3点を一緒にレビューし、1枚で意思決定できる雛形を作りましょう。
株式会社キカガク:業務再現型の課題×具体レビュー。ダッシュボード設計/レポートQCまで相談しやすい。
Tech Academy:質問初動の速さ×時間帯の柔軟性。朝活/夜活でも詰まりを早期解消。
TechAcademy データサイエンスコース(受講料:174,600円~ ※更に割引あり)

株式会社キカガク AI人材長期育成コース(受講料:237,600円~)

読者タイプ別ロードマップ(目的に合わせて)
- 社会人(転職):Tableau作品+Python自動PDFの二刀流 → ポートフォリオ完全ガイド
- 副業目的:初期構築+月次運用のセットで継続収益化 → 継続案件化のコツ
- 在宅(主婦/夫):サブスク配信で深夜運用を避け、朝活/夜活で改善を回す → 在宅×Python 学習術
今日やること(60分)
- KPI定義書テンプレをコピーし、自社用に記入
- 図3点のラフ(紙/ホワイトボードOK)と結論1行を書く
- Tableauで原型→PDFエクスポート。Pythonで同じ図を自動出力
- QCチェック→配信設定まで通す
付録:初心者がつまずきやすいポイントQ&A
Q1. 移動平均の“窓”はなぜ7日?
週内の曜日変動を均すための初期値。週次ビジネスなら7、月次なら30を起点に実データで調整。
Q2. 欠損日があるとグラフがギザギザに…asfreq('D') で日付を補完し、fillna(0) か 前方補完(ffill())で埋める。意味のある欠損は注釈で明記。
Q3. 構成比は円グラフではダメ?
比較が難しく誤読されやすい。横棒の並び替え が無難。どうしても円なら2〜4切れに制限。
Q4. TableauとPythonの役割分担は?
Tableauは“見る”(対話・配信)、Pythonは“再現”(自動化・メール連携)。両輪で安定運用。
次に読むべき記事
-
-
Excel業務の自動化で月3万円:社内案件の作り方|“60分→10分”を商品化して社内受注する
毎週のExcel定型作業(集計・整形・レポート化)をPythonで自動化し、月3万円の運用費(または評価/手当)を安定的に社内受注するための実践ガイドです。鍵は以下の4点。 この記事は「業務棚卸し → ...
-
-
初案件はこの一通で決まる|返信率を上げる提案文テンプレ45選【コピペ可/検収基準・見積り付き】
初案件の提案、何を書けば“選ばれる”の? 長文は読まれないし、自己PRだけだと響かない…今すぐ使える“型”が欲しい! 提案は自己紹介ではなく、「相手のKPIを上げる約束」です。 本記事では、現場で磨い ...
-
-
単発を“毎月継続契約”に変える|週次10分レポートと改善バックログの型
単発納品を“毎月の継続契約(リテイナー)”に変えたい。結局、何から整えればいい? 毎週のレポート会って長くなりがち…。10分で意思決定まで持っていくコツは? 結論:リテイナー化の鍵は ①意思決定に直結 ...
-
-
【保存版】データ職のポートフォリオ完全ガイド|再現性・評価・LTまで
ポートフォリオって「作ったものの置き場」でしょ? いいえ。採用側が見たいのは「意思決定に効いた証拠」と「再現性」です。 本ガイドは、未経験〜初学者が週10時間×4〜6週で、テーマ選定→要件定義→データ ...
最近のコメント