わからないことの分解と質問|学び方・目標・学習の続け方

このページはプロモーション(広告)を含みます。

学び方・目標・学習の続け方(初級・読む20分+演習30分)

この授業のゴール

仕事でどう使うか

仕事では、分からないことを黙って抱えるより、早く、具体的に聞くほうが、チーム全体の時間を節約します。ただし「分かりません」だけでは、相手は何を答えればよいか決められません。質問を整理する力は、そのまま依頼を整理する力です。

路線 分解と質問が使われる場面
DS(データサイエンティスト) データを渡された担当者に『この列の単位は何か、欠損はどう扱うか』と聞く。確認事項を表にして、分析の前提を文書に残す
ML(機械学習エンジニア) 実験が再現できないとき、環境・データ・設定を切り分けて同僚に伝える。エラーの全文と最小の再現手順を添える
DX(DX推進・AI企画) 現場へのヒアリングで、『何が問題か』を、手順・例外・判断のどこにあるかに分けて質問する。要件定義書の抜けを防ぐ
RS(研究者) 指導教員や共同研究者に、『どの仮定で、どの結果が出て、何が想定と違ったか』を整理して相談する。査読コメントへの返答も同じ構造

この授業は、詰まったときに『どこに戻ればよいか』と『どう聞けばよいか』を決める手順を扱います。

前提

前の授業の内容を使います。

例に出る購入率と人数・件数の区別は、行と列と1行の単位、比率・割合・パーセントポイント で扱います。計算は割り算だけです。

途中再開について:中断したら、『正確な定義』の分類表から読み直せば続けられます。診断(自分の現在地の確認)を省略して先に進んだ場合も、詰まった時点でこの授業の表に戻れば、戻り先を決められます。

身近な状況:「LEFT JOINがわかりません」

ヒナタさん(架空の学習者)は、SQLの練習で行き詰まり、先輩に質問しました。

LEFT JOINがわかりません。教えてください。

先輩は困りました。LEFT JOINの何が分かっていないのか、見当がつかないからです。ヒナタさんが分からないのは、次のどれでしょうか。

先輩は5分かけて質問を返しました。ヒナタさんは『そこまでは試していない』と答え、もう一度表を見直し、1時間後に別の質問を書き直しました。

顧客3人・注文4件の表でLEFT JOINしました。取消を除くために WHERE o.status = 'paid' を書いたところ、注文のない顧客c3が結果から消えました。顧客全員を残すつもりでした。なぜ消えたのか知りたいです。

2回目の質問なら、先輩は答えの方向を1分で示せます。この授業では、分からないことを分解して、具体的に聞く方法を学びます。

直感的な説明:医者の問診と、故障の切り分け

体調が悪くて病院に行くと、医者は『いつから、どこが、どんなときに痛みますか』と聞きます。『具合が悪いです』だけでは診断できないからです。

機械の故障でも、『電源が入るか、画面は映るか、どの操作で止まるか』と順に確かめ、原因のありかを絞り込みます。これを切り分けと言います。

学習の『分からない』も同じです。

医者・修理の場面 学習の場面
症状を具体的に言う 期待した結果と実際の結果を並べる
検査で原因の範囲を絞る 前提・用語・手順・判断のどれかに分ける
治療・修理を1つに絞る 戻る授業を1つ選び、短く補習する

たとえ話の限界:医者は検査機器を持っていますが、学習では自分自身の理解を調べます。そのため、自分で書き出す作業が検査にあたります。書き出さずに『なんとなくわからない』と感じているだけでは、原因を絞れません。

正確な定義:4つの分類と、質問文の5要素

わからなさを、次の4つに分けます。

分類 意味 自分への問い 戻り先の選び方
前提 使っている基礎の知識が抜けている この説明で使われている基礎(割り算、人数と件数など)を説明できるか 基礎の授業へ戻る(例:行と列と1行の単位)
用語 語や記号の意味が分からない その語を、自分の言葉で定義できるか 用語が初出の授業の定義の節へ戻る
手順 順序や操作が分からない 次にやる操作が分かるか。どの順番か 例題を最初から1ステップずつ再現する
判断 使い分けや結果の解釈が分からない なぜ、この方法を選ぶのか。結果は何を意味するか 失敗例と、条件が変わる例を比べる

複数に当てはまることもあります。そのときは、いちばん前(基礎に近い)の抜けから先に直します。前提が抜けたまま手順を練習しても、同じところで止まるからです。

戻る授業の選び方は、次の順序で決めます。

  1. 期待した結果と実際の結果を並べる。
  2. 食い違った最初の段階に印をつける。
  3. その段階で使った語・数・操作を、4分類のどれか判定する。
  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:期待と実際を並べる。

ステップ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行』のように、数や状態で書くことが大切です。

やってみる問い:

発展:質問先の選び方と、機密データの扱い

質問先を選ぶ。 質問先には、(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のような条件の違う値で試します(知る・説明する・使うの違い)。

まとめ

用語

切り分け(isolation (troubleshooting))

問題の原因がある範囲を、順に確かめて絞り込む作業。

前提知識(prerequisite knowledge)

その内容を学ぶために先に必要な基礎の知識。抜けていると手順の練習で止まる。

最小の再現例(minimal reproducible example)

問題を再現できる最小のデータとコード。架空の値で作れば、機密データを渡さずに質問できる。

タイムボックス(timebox)

作業の時間をあらかじめ区切ること。本教材では、自分で試す時間の目安を10〜15分とする。

よくある質問

質問する前に、どれくらい自分で試すべきですか?

本教材の目安は10〜15分です。固定の規則ではありません。15分たって、期待と実際を数で並べられていれば、質問してかまいません。並べられなければ、その状態(何から調べればよいか分からない)を質問にします。

質問するのが恥ずかしいときは、どうすればよいですか?

質問を5要素で書き出すと、聞くことが明確になり、相手も答えやすくなります。具体的な質問は、相手の時間を節約します。一般的に、仕事では具体的な質問は歓迎されます。

「前提」「用語」「手順」「判断」のどれにも当てはまりそうなときは?

いちばん前(基礎に近い)の抜けから直します。順番は、前提、用語、手順、判断の順が目安です。直したあとで、同じ課題をもう一度解いて、次の抜けを探します。

前提まで戻ると、先に進めなくなりませんか?

戻る範囲は、抜けた節だけです。授業全体を読み直す必要はありません。補習が10〜15分で終わるように、節を絞ります。戻りすぎている感覚があれば、期待と実際の並べ方が粗い可能性があります。

生成AIの回答が間違っていたら、どうしますか?

小さな例で回答を実行・計算して確かめます。間違いが見つかったら、期待と実際を並べ直して、もう一度質問します。回答は検証して使うもので、そのまま信じるものではありません。

質問する相手がいないときは?

質問文を書くだけでも、原因が見つかることがあります。5要素を書き出して、試したことと期待・実際を並べます。それでも解決しなければ、公式ドキュメントや、質問文を書いた状態で相談できる場所を探します。

確認問題

問1 『LEFT JOINがわかりません』という質問を、答えやすくする最初の一歩はどれか。

  1. ① もう一度、授業を最初から読む
  2. ② 期待した結果と実際の結果を、行数などの数で並べる
  3. ③ 先輩に『全部わかりません』と伝える
  4. ④ 別の授業に移る
解答と解説

正解:②

期待と実際を並べると、食い違った段階が特定でき、戻り先と質問が具体的になります。

問2 購入率が150%になった。購入者60人、購入件数90件、来店者200人で、式は 90÷60 だった。最も根本的な抜けはどれか。

  1. ① 割り算の計算ができない
  2. ② グラフの読み方が分からない
  3. ③ 分母が0になる場合を知らない
  4. ④ 人数と件数の区別が抜けている(前提)
解答と解説

正解:④

分子が件数、分母が人数で、単位が異なる量を割っています。人数と件数の区別(前提)が抜けています。

問3 『分散』という語の意味が分からず、授業の例題が読めなかった。この「わからない」の分類と対応はどれか。

  1. ① 用語:その語が初出の授業の定義の節に戻る
  2. ② 手順:例題を最初から再現する
  3. ③ 判断:結果の解釈を練習する
  4. ④ 前提:四則計算の授業から読み直す
解答と解説

正解:①

語の意味が分からないのは用語の抜けです。定義の節に戻り、自分の言葉で言い直します。

問4 質問文に最も必要な要素はどれか。

  1. ① 自分が忙しいという事情
  2. ② 質問の背景のすべてを長く書くこと
  3. ③ 期待した結果と実際の結果(数や状態)
  4. ④ 回答者への謝罪の言葉
解答と解説

正解:③

期待と実際を並べると、食い違いが何かが相手に伝わります。長さや丁寧さより、再現できる情報が重要です。

問5 生成AIや社外の掲示板に質問するとき、避けるべきものはどれか。

  1. ① 顧客3人・注文4件のような架空の最小データ
  2. ② 実際の顧客名と住所が入った顧客名簿をそのまま貼る
  3. ③ エラー文のうち、個人情報を含まない部分
  4. ④ 自分が試したことの説明
解答と解説

正解:②

個人情報や社内の機密データは、渡さずに架空の最小例に置き換えます。構造が残れば質問は伝わります。

問6 教えてもらったコードを貼ったら動いた。解決とみなす基準として適切なのはどれか。

  1. ① 動いたので、それ以上の確認は要らない
  2. ② 回答者が『これで大丈夫』と言った
  3. ③ 動いた回数が3回以上だった
  4. ④ 理由を自分の言葉で説明でき、条件の違う値(来店者0など)でも試した
解答と解説

正解:④

動いたことは、理解の証拠ではありません。説明できることと、別の条件で成り立つことを確認します。

次に学ぶこと

次は 計画の振り返りと再計画 で、計画と実績を比べ、未達の週を再計画する方法を学びます。分解した『戻り先』は、再計画の補習として予定表に置きます。

SQLの結合を詳しく練習したい場合は 「LEFT JOINと0件」(有料版) へ進めます。この授業の確認問題だけで習得とはせず、総合テストと自力課題で確認します。

キャリア学習:データサイエンティスト・機械学習エンジニア・DX推進・研究者を目指す人の学習アプリ。164モジュール・984授業を、ブラウザで動くSQLとPythonの演習で。基礎と各分野の最初のモジュールは無料。全部は2,980円の買い切り。

アプリを無料で開く有料版と無料版の違い