わからないことの分解と質問|学び方・目標・学習の続け方
このページはプロモーション(広告)を含みます。
学び方・目標・学習の続け方(初級・読む20分+演習30分)
この授業のゴール
- 「わからない」を、前提・用語・手順・判断のどれにあたるかに分けて、戻る授業を選べる
- 期待した結果と実際の結果を並べ、どの段階で食い違ったかを特定できる
- 状況・試したこと・期待・実際・知りたいことをそろえた質問文を書ける
- 質問や生成AIの利用で、個人情報や社内の機密データを渡さない書き方を選べる
仕事でどう使うか
仕事では、分からないことを黙って抱えるより、早く、具体的に聞くほうが、チーム全体の時間を節約します。ただし「分かりません」だけでは、相手は何を答えればよいか決められません。質問を整理する力は、そのまま依頼を整理する力です。
| 路線 | 分解と質問が使われる場面 |
|---|---|
| DS(データサイエンティスト) | データを渡された担当者に『この列の単位は何か、欠損はどう扱うか』と聞く。確認事項を表にして、分析の前提を文書に残す |
| ML(機械学習エンジニア) | 実験が再現できないとき、環境・データ・設定を切り分けて同僚に伝える。エラーの全文と最小の再現手順を添える |
| DX(DX推進・AI企画) | 現場へのヒアリングで、『何が問題か』を、手順・例外・判断のどこにあるかに分けて質問する。要件定義書の抜けを防ぐ |
| RS(研究者) | 指導教員や共同研究者に、『どの仮定で、どの結果が出て、何が想定と違ったか』を整理して相談する。査読コメントへの返答も同じ構造 |
この授業は、詰まったときに『どこに戻ればよいか』と『どう聞けばよいか』を決める手順を扱います。
前提
前の授業の内容を使います。
- 復習で書けなかった箇所を、具体的に記録する → 記憶から思い出す練習
- 復習日と週の時間配分 → 間隔を空けて復習する
- エラーが出たときの切り分けとバックアップの考え方 → エラー時の切り分けとバックアップ
例に出る購入率と人数・件数の区別は、行と列と1行の単位、比率・割合・パーセントポイント で扱います。計算は割り算だけです。
途中再開について:中断したら、『正確な定義』の分類表から読み直せば続けられます。診断(自分の現在地の確認)を省略して先に進んだ場合も、詰まった時点でこの授業の表に戻れば、戻り先を決められます。
身近な状況:「LEFT JOINがわかりません」
ヒナタさん(架空の学習者)は、SQLの練習で行き詰まり、先輩に質問しました。
LEFT JOINがわかりません。教えてください。
先輩は困りました。LEFT JOINの何が分かっていないのか、見当がつかないからです。ヒナタさんが分からないのは、次のどれでしょうか。
- 『JOIN』という語の意味?
- 結合のキー(結びつける列)の選び方?
- 結果の行数が増える理由?
- 取消注文を除く条件を、ONとWHEREのどちらに書くか?
先輩は5分かけて質問を返しました。ヒナタさんは『そこまでは試していない』と答え、もう一度表を見直し、1時間後に別の質問を書き直しました。
顧客3人・注文4件の表でLEFT JOINしました。取消を除くために WHERE o.status = 'paid' を書いたところ、注文のない顧客c3が結果から消えました。顧客全員を残すつもりでした。なぜ消えたのか知りたいです。
2回目の質問なら、先輩は答えの方向を1分で示せます。この授業では、分からないことを分解して、具体的に聞く方法を学びます。
直感的な説明:医者の問診と、故障の切り分け
体調が悪くて病院に行くと、医者は『いつから、どこが、どんなときに痛みますか』と聞きます。『具合が悪いです』だけでは診断できないからです。
機械の故障でも、『電源が入るか、画面は映るか、どの操作で止まるか』と順に確かめ、原因のありかを絞り込みます。これを切り分けと言います。
学習の『分からない』も同じです。
| 医者・修理の場面 | 学習の場面 |
|---|---|
| 症状を具体的に言う | 期待した結果と実際の結果を並べる |
| 検査で原因の範囲を絞る | 前提・用語・手順・判断のどれかに分ける |
| 治療・修理を1つに絞る | 戻る授業を1つ選び、短く補習する |
たとえ話の限界:医者は検査機器を持っていますが、学習では自分自身の理解を調べます。そのため、自分で書き出す作業が検査にあたります。書き出さずに『なんとなくわからない』と感じているだけでは、原因を絞れません。
正確な定義:4つの分類と、質問文の5要素
わからなさを、次の4つに分けます。
| 分類 | 意味 | 自分への問い | 戻り先の選び方 |
|---|---|---|---|
| 前提 | 使っている基礎の知識が抜けている | この説明で使われている基礎(割り算、人数と件数など)を説明できるか | 基礎の授業へ戻る(例:行と列と1行の単位) |
| 用語 | 語や記号の意味が分からない | その語を、自分の言葉で定義できるか | 用語が初出の授業の定義の節へ戻る |
| 手順 | 順序や操作が分からない | 次にやる操作が分かるか。どの順番か | 例題を最初から1ステップずつ再現する |
| 判断 | 使い分けや結果の解釈が分からない | なぜ、この方法を選ぶのか。結果は何を意味するか | 失敗例と、条件が変わる例を比べる |
複数に当てはまることもあります。そのときは、いちばん前(基礎に近い)の抜けから先に直します。前提が抜けたまま手順を練習しても、同じところで止まるからです。
戻る授業の選び方は、次の順序で決めます。
- 期待した結果と実際の結果を並べる。
- 食い違った最初の段階に印をつける。
- その段階で使った語・数・操作を、4分類のどれか判定する。
- 該当する授業の該当する節だけを読み、別の値で1問解く。
質問文は、次の5要素で書きます。
| 要素 | 内容 | 例 |
|---|---|---|
| 1. 目的 | 何をしようとしたか | 顧客全員を残して、顧客別売上を出したい |
| 2. データ・コード | 最小の例で、再現できる形 | 顧客3人・注文4件の表、実行したSQL |
| 3. 試したこと | 自分で確かめたこと | ON条件に書き直す前後の行数を数えた |
| 4. 期待と実際 | 期待した結果と、実際の結果(エラー全文を含む) | 期待:3行 / 実際:2行(c3が消えた) |
| 5. 知りたいこと | 質問を1つに絞る | WHEREに書いた条件で行が消える理由 |
質問する前に、自分で試す時間を決めます。本教材の目安は10〜15分です。ただし固定の規則ではありません。15分で期待と実際を並べられなかったら、その状態を質問にするのが早道です。
段階付き例題:購入率が150%になった
問題:ミナトさんの計算結果は購入率150%でした。来店者200人、購入者60人、購入件数90件のデータです。どこが原因で、何に戻ればよいでしょうか。
ステップ1:期待と実際を並べる。
- 期待:購入率は0〜100%の間の値になる(購入者は来店者の一部だから)。
- 実際:150%になった。
ステップ2:食い違った段階を探す。ミナトさんの式を確認すると、90 ÷ 60 でした。分子は購入件数(件)、分母は購入者数(人)です。
ステップ3:4分類に当てはめる。
- 分子と分母の単位が人と件で異なる → 人数と件数の区別が抜けている(前提)。
- 『購入率の分母は来店者』という定義が出てこない → 用語(購入率の定義)。
いちばん前の抜けは『人数と件数の区別』です。戻り先は 行と列と1行の単位 です。
ステップ4:直して確かめる。
visitors = 200 # 来店者数(人)
buyers = 60 # 購入者数(人)
orders = 90 # 購入件数(件)
wrong = orders / buyers # 誤:件 ÷ 人
right = buyers / visitors # 正:人 ÷ 人(同じ集団)
print(f"誤: 購入件数÷購入者数 = {wrong:.0%}")
print(f"正: 購入者数÷来店者数 = {right:.0%}")
print("購入者は来店者の一部か:", buyers <= visitors)
出力は、誤: ... = 150%、正: ... = 30%、True です。buyers <= visitors は、購入者が来店者の一部であることの確認です。率が100%を超えたら、分子が分母に含まれる量かを疑います。
ステップ5:記録する。『購入率の分子は人数、分母は同じ期間・集団の来店者数。件数と人数を混ぜない』と書き、翌日に閉じて書き直します(記憶から思い出す練習)。
操作して理解する:質問文の抜けを見つける
次のコードは、質問文の5要素のうち、書かれていないものを見つけます。まず、ヒナタさんの1回目の質問を点検します。
items = ["目的", "データ", "試したこと", "期待", "実際", "知りたいこと"]
first = { # 1回目の質問
"目的": "LEFT JOINを使いたい",
"知りたいこと": "わかりません",
}
second = { # 2回目の質問
"目的": "顧客全員を残して顧客別売上を出したい",
"データ": "顧客3人・注文4件の表。WHERE o.status = 'paid' を使った",
"試したこと": "ONに書き直す前後で行数を数えた",
"期待": "3行(c3も残る)",
"実際": "2行(c3が消えた)",
"知りたいこと": "WHEREに書いた条件でc3が消える理由",
}
def missing(q):
return [k for k in items if not q.get(k)]
print("1回目の抜け:", missing(first))
print("2回目の抜け:", missing(second))
出力は、1回目が ['データ', '試したこと', '期待', '実際']、2回目が [] です。q.get(k) は、キーがなければ None を返します。None や空文字 "" は偽として扱われるので、not q.get(k) は真になります。
注意点があります。これは項目があるかどうかの点検で、内容が適切かは確かめません。たとえば『期待』に『正しい結果』とだけ書いても点検は通ります。期待は『3行』のように、数や状態で書くことが大切です。
やってみる問い:
secondの「試したこと」を消すと、抜けに何が出ますか。(答え:['試したこと'])- 自分が最近詰まったことを
secondと同じ形で書き、抜けが空になるまで直しましょう。 - 「知りたいこと」を2つ書くと、何が起きますか。(答え:点検は通りますが、質問が重なって、回答も分散します。1つに絞ります)
発展:質問先の選び方と、機密データの扱い
質問先を選ぶ。 質問先には、(1) この教材の該当する授業、(2) 同僚・先輩・メンター、(3) 道具の公式ドキュメント、(4) 生成AIの対話サービス、があります。仕様や構文は公式ドキュメント、判断や社内の事情は同僚、補習は教材と、聞く内容に合わせて選びます。生成AIは便利ですが、誤った内容をもっともらしく答えることがあります。
機密データは渡さない。 社外のサービスや生成AIに質問するとき、顧客名、住所、メールアドレス、社内の売上、未公開の資料をそのまま貼らないでください。架空の最小の例に置き換えます。顧客3人・注文4件のように、構造を残して値を作り替えれば、質問に必要な情報は伝わります。会社や学校に情報の取り扱い規則がある場合は、それに従います。
回答は検証する。 回答を受け取ったら、小さな例で自分で確かめます。回答が、期待と実際の食い違いを実際に解消するか、条件を変えても成り立つかを確認します(記憶から思い出す練習 の想起練習と同じ考え方です)。他人の回答をそのまま写して動いたとしても、理解したことにはなりません。
分類が重なるとき。 『手順が分からない』と思っていたら、実は『用語が分からないので手順の意味が読めなかった』ことがあります。手順の練習を繰り返しても進まないときは、1つ前の分類に戻ります。
質問の記録を残す。 質問と回答、そして自分が理解した結果を短く残すと、後で同じところで止まったときに戻れます。ノートの保存先は、保存・ダウンロード・アップロード で確認できます。
よくある失敗
失敗1:「全部わからない」と書いて、全範囲を読み直す
誤った記録:
結合の授業が全部わからなかった。→ 最初から読み直す。
『全部』では、どこから直せばよいか決まりません。読み直した結果、同じ箇所で止まる可能性があります。
| 書き方 | 戻り先 | 時間の見通し |
|---|---|---|
| 全部わからない | 授業全体(決まらない) | 読み直しに40分以上 |
| ONとWHEREのどちらに条件を書くか迷う | 『ONとWHEREの違い』の節(判断) | 補習10分+1問 |
直し方:期待と実際を並べ、食い違った最初の段階だけを書きます。『c3が消えた→WHEREの位置』のように、数や行で書きます。
失敗2:エラーの文だけを書いて、期待・実際・試したことを書かない
誤った質問:
エラーが出ました。直してください。
この質問からは、次の情報が分かりません。
- 何をしようとしたか(目的)
- どのコードで、どのデータか(再現できる形)
- エラーの全文(どの行で、何と言われたか)
- 自分で何を試したか
直し方:5要素を埋めます。
【目的】購入率を出したい。【コード】
rate = buyers / visitors、buyers=0, visitors=0。【実際】ZeroDivisionError: division by zero(全文)。【試したこと】visitorsが0のときに割らないようにしようとしたが、書き方が分からない。【知りたいこと】来店者0人のとき、購入率を『未定義』と表示する書き方。
全文のエラー、再現できる値、知りたいことの3つがあれば、回答までの時間が短くなります。
失敗3:回答をそのまま写して動いたので、解決済みにする
誤った行動:
教えてもらったコードを貼ったら動いた。解決。
動いた理由を自分の言葉で説明できなければ、条件が変わったときに壊れます。次の例では、ほかの店のデータで、コピーしたコードが止まります。
def purchase_rate(buyers, visitors):
return buyers / visitors # 教えてもらったコード
for shop, b, v in [("A店", 40, 250), ("C店", 0, 0)]:
try:
print(shop, f"{purchase_rate(b, v):.0%}")
except ZeroDivisionError:
print(shop, "→ エラー:来店者0人では割れない(未定義にする必要がある)")
A店は16%と表示されますが、来店者0人のC店は ZeroDivisionError になります。回答のコードは、来店者0人の場合を考えていませんでした。
直し方:解決の基準を『動いた』ではなく、『閉じて説明でき、別の値で使えた』にします。回答の理由を自分の言葉で書き、来店者0のような条件の違う値で試します(知る・説明する・使うの違い)。
まとめ
- わからなさは、前提・用語・手順・判断に分け、期待と実際の食い違いが最初に出た段階の、いちばん前の抜けから直す。
- 戻る授業は、全体ではなく該当する節だけを選び、補習のあと別の値で1問解く。
- 質問文は、目的・データ・試したこと・期待と実際・知りたいこと(1つ)の5要素で書き、期待と実際は数で書く。
- 社外や生成AIへの質問では、個人情報や機密データを渡さず、架空の最小例に置き換える。
- 回答で動いたことは、理解の証拠ではない。理由を説明し、条件の違う値で試して初めて解決とする。
用語
- 切り分け(isolation (troubleshooting))
問題の原因がある範囲を、順に確かめて絞り込む作業。
- 前提知識(prerequisite knowledge)
その内容を学ぶために先に必要な基礎の知識。抜けていると手順の練習で止まる。
- 最小の再現例(minimal reproducible example)
問題を再現できる最小のデータとコード。架空の値で作れば、機密データを渡さずに質問できる。
- タイムボックス(timebox)
作業の時間をあらかじめ区切ること。本教材では、自分で試す時間の目安を10〜15分とする。
よくある質問
質問する前に、どれくらい自分で試すべきですか?
本教材の目安は10〜15分です。固定の規則ではありません。15分たって、期待と実際を数で並べられていれば、質問してかまいません。並べられなければ、その状態(何から調べればよいか分からない)を質問にします。
質問するのが恥ずかしいときは、どうすればよいですか?
質問を5要素で書き出すと、聞くことが明確になり、相手も答えやすくなります。具体的な質問は、相手の時間を節約します。一般的に、仕事では具体的な質問は歓迎されます。
「前提」「用語」「手順」「判断」のどれにも当てはまりそうなときは?
いちばん前(基礎に近い)の抜けから直します。順番は、前提、用語、手順、判断の順が目安です。直したあとで、同じ課題をもう一度解いて、次の抜けを探します。
前提まで戻ると、先に進めなくなりませんか?
戻る範囲は、抜けた節だけです。授業全体を読み直す必要はありません。補習が10〜15分で終わるように、節を絞ります。戻りすぎている感覚があれば、期待と実際の並べ方が粗い可能性があります。
生成AIの回答が間違っていたら、どうしますか?
小さな例で回答を実行・計算して確かめます。間違いが見つかったら、期待と実際を並べ直して、もう一度質問します。回答は検証して使うもので、そのまま信じるものではありません。
質問する相手がいないときは?
質問文を書くだけでも、原因が見つかることがあります。5要素を書き出して、試したことと期待・実際を並べます。それでも解決しなければ、公式ドキュメントや、質問文を書いた状態で相談できる場所を探します。
確認問題
問1 『LEFT JOINがわかりません』という質問を、答えやすくする最初の一歩はどれか。
- ① もう一度、授業を最初から読む
- ② 期待した結果と実際の結果を、行数などの数で並べる
- ③ 先輩に『全部わかりません』と伝える
- ④ 別の授業に移る
解答と解説
正解:②
期待と実際を並べると、食い違った段階が特定でき、戻り先と質問が具体的になります。
問2 購入率が150%になった。購入者60人、購入件数90件、来店者200人で、式は 90÷60 だった。最も根本的な抜けはどれか。
- ① 割り算の計算ができない
- ② グラフの読み方が分からない
- ③ 分母が0になる場合を知らない
- ④ 人数と件数の区別が抜けている(前提)
解答と解説
正解:④
分子が件数、分母が人数で、単位が異なる量を割っています。人数と件数の区別(前提)が抜けています。
問3 『分散』という語の意味が分からず、授業の例題が読めなかった。この「わからない」の分類と対応はどれか。
- ① 用語:その語が初出の授業の定義の節に戻る
- ② 手順:例題を最初から再現する
- ③ 判断:結果の解釈を練習する
- ④ 前提:四則計算の授業から読み直す
解答と解説
正解:①
語の意味が分からないのは用語の抜けです。定義の節に戻り、自分の言葉で言い直します。
問4 質問文に最も必要な要素はどれか。
- ① 自分が忙しいという事情
- ② 質問の背景のすべてを長く書くこと
- ③ 期待した結果と実際の結果(数や状態)
- ④ 回答者への謝罪の言葉
解答と解説
正解:③
期待と実際を並べると、食い違いが何かが相手に伝わります。長さや丁寧さより、再現できる情報が重要です。
問5 生成AIや社外の掲示板に質問するとき、避けるべきものはどれか。
- ① 顧客3人・注文4件のような架空の最小データ
- ② 実際の顧客名と住所が入った顧客名簿をそのまま貼る
- ③ エラー文のうち、個人情報を含まない部分
- ④ 自分が試したことの説明
解答と解説
正解:②
個人情報や社内の機密データは、渡さずに架空の最小例に置き換えます。構造が残れば質問は伝わります。
問6 教えてもらったコードを貼ったら動いた。解決とみなす基準として適切なのはどれか。
- ① 動いたので、それ以上の確認は要らない
- ② 回答者が『これで大丈夫』と言った
- ③ 動いた回数が3回以上だった
- ④ 理由を自分の言葉で説明でき、条件の違う値(来店者0など)でも試した
解答と解説
正解:④
動いたことは、理解の証拠ではありません。説明できることと、別の条件で成り立つことを確認します。
次に学ぶこと
次は 計画の振り返りと再計画 で、計画と実績を比べ、未達の週を再計画する方法を学びます。分解した『戻り先』は、再計画の補習として予定表に置きます。
SQLの結合を詳しく練習したい場合は 「LEFT JOINと0件」(有料版) へ進めます。この授業の確認問題だけで習得とはせず、総合テストと自力課題で確認します。
キャリア学習:データサイエンティスト・機械学習エンジニア・DX推進・研究者を目指す人の学習アプリ。164モジュール・984授業を、ブラウザで動くSQLとPythonの演習で。基礎と各分野の最初のモジュールは無料。全部は2,980円の買い切り。
アプリを無料で開く有料版と無料版の違い