07 / 90

Day 07: 週次復習 — 値・条件・安全な Git

新規内容を抑えた復習日:Day 04〜06(値と束縛、比較と明示的な条件、小さな差分とコミット)を新しい入力で記憶から想起し、最後に独力で確認する。新しい要素は足場付きのコマンド 1 つ(git restore)と、Day 08 の for ループの短い予告(評価対象外)だけ。想起・復習・独立チェックで 480 分の学習台帳を満たす。

自律学習と Python 480 分(8 時間の集中学習)
01 120 分

ノートを閉じて想起する:値と束縛(Day 04〜05)

エージェント支援の演習:まず自分の予測と実際の出力を記録すること。その後に限り AI エージェントに説明やレビューを頼んでよく、受けた支援は証拠に必ず記録する。

前提条件

Day 06(独立チェックを含む)を修了していること。行き詰まったらまず Day 06 に戻り、値と束縛については Day 04〜05 を見直す。

学習目標

repr・type・bool が値をどう表すか、再束縛と変更(ミューテーション)がどう違うかを記憶から想起し、初めて見る入力(空文字列や Unicode 文字列を含む)で Python を使って確かめる。

手順

間隔をあけた復習: Day 04〜05 は 2〜3 日前の内容なので、今日は読み返す前に想起する。記憶から引き出してから確かめるほうが、ノートを読み返すより長く定着する。この活動に新しい内容はない。

1. ノートを閉じ、最初のコードの各値について repr、型名、bool の 3 列を予想して書く。最後の行も予測する(len はバイト数ではなく Unicode のコードポイント数を数える)。
2. コードを実行し、予測と違った行に印を付ける。
3. 束縛のコードでも 2 行を予測してから実行する。
4. 食い違いごとに、忘れていた規則とそれを扱う日(値は Day 04、変更と同一性は Day 05)を 1 文で書く。

def show(value):
    print(repr(value), type(value).__name__, bool(value))
show(0.0)
show("0.0")
show("")
show("猫")
show([""])
show(None)
print(len("猫"), len("café"))
a = ["猫"]
b = a
a.append("犬")
print(b, a is b)
c = ["猫"]
d = c
c = c + ["犬"]
print(d, c is d)

演習と予測記録

値ごとに 1 行(0.0、"0.0"、""、"猫"、[""]、None)、列は repr / type / bool の予測表を作り、len("猫") と len("café") の予測も加える。次に束縛のコードが出力する 2 行を予測し、どの名前が変更され、どの名前が再束縛されたかを説明する。

独立習得基準

実行前に書いた予測が 6 つの値・2 つの len・束縛の 2 行をすべて網羅し、食い違いのそれぞれに 1 文の規則と回復先の日(Day 04 または Day 05)が書かれている。

出典リソースと来歴

linking PSF License Version 2

The Python Tutorial: More Control Flow Tools

著者・提供機関: Python Software Foundation | オリジナル出所URL ↗

該当セクション・タイムスタンプ: 第 4.2〜4.10 節(for、range、関数の定義)。データ構造は同じチュートリアルの第 5 章

検証バージョンと日付: Python 3.12 ドキュメント(確認日: 2026-10-30)

選定理由:

Python の反復処理、関数、コンテナを確認するための一次資料。

ソース前提知識:

Day 01〜06 の Python の式とファイルシステムの基礎

安全フォールバック(オフライン回復性):

必要な動作はすべて教材内で説明しているため、オフラインでも完了できます。

比較対象候補リソースと選定評価 (2)
The Python Language Reference: Compound statements ↗ compared_alternative [PSF License Version 2]

同じ構文を文法レベルで定義するリファレンスです。段階を追って学べる構成のため、チュートリアルの章を選びました。

同じ制御フローを講義のペースで扱う教材です。本カリキュラムではターミナルでの演習を通じて概念を扱っているため、採用を見送りました。

02 120 分

想起:比較と明示的な条件(Day 05〜06)

エージェント支援の演習:まず自分の予測と実際の出力を記録すること。その後に限り AI エージェントに説明やレビューを頼んでよく、受けた支援は証拠に必ず記録する。

前提条件

今日の活動 1。比較に不安があれば Day 05、条件分岐と入力の正規化については Day 06 を見直す。

学習目標

== と is の違いを想起し、空文字列・空白だけの入力・10 進数字・Unicode の数字を明示的な条件で扱う Day 06 型の分類関数を記憶から作り直す。

手順

間隔をあけた復習: Day 05(比較)と Day 06(条件)を新しい入力で扱うので、覚えている答えには頼れない。

1. 比較の行が出力する 5 つの真偽値を予測してから実行する。
2. Day 06 を見ずに label(raw) を書く:テキストを strip し、結果が空文字列なら "missing"、strip 後のテキストが 10 進数字なら "number " と整数値、それ以外は "text " と strip 後のテキストを返す。自分の版を実行する前に 6 行の出力を予測する。
3. 自分の関数を下の参考実装と比べ、両方を実行する。

print(0 == 0.0, "0" == 0, None is None, [] == [], [] is [])
def label(raw):
    text = raw.strip()
    if text == "":
        return "missing"
    if text.isdecimal():
        return "number " + str(int(text))
    return "text " + text
print(label("  猫 "))
print(label(""))
print(label("   "))
print(label("007"))
print(label("-3"))
print(label("٣"))

Day 08 の予告(評価対象外・足場付き): 下のループを実行し、本体が 1 文字につき 1 回実行されることだけを観察する。ループは明日きちんと学ぶ。

for ch in "猫a":
    print(ch, ch == "a")

演習と予測記録

5 つの比較の予測と自分の label(raw) を書き、" 猫 "、""、" "、"007"、"-3"、"٣"(アラビア・インド数字の 3)に対する 6 つの出力を予測する。実行後、"٣" の意外な結果を説明する。

独立習得基準

5 つの比較と 6 つの label の予測を実行前に書き、自分の label(raw) が参考出力を完全に再現し、" " が missing になる理由と "٣" が数値になる理由を説明できる。

出典リソースと来歴

linking PSF License Version 2

The Python Tutorial: More Control Flow Tools

著者・提供機関: Python Software Foundation | オリジナル出所URL ↗

該当セクション・タイムスタンプ: 第 4.2〜4.10 節(for、range、関数の定義)。データ構造は同じチュートリアルの第 5 章

検証バージョンと日付: Python 3.12 ドキュメント(確認日: 2026-10-30)

選定理由:

Python の反復処理、関数、コンテナを確認するための一次資料。

ソース前提知識:

Day 01〜06 の Python の式とファイルシステムの基礎

安全フォールバック(オフライン回復性):

必要な動作はすべて教材内で説明しているため、オフラインでも完了できます。

比較対象候補リソースと選定評価 (2)
The Python Language Reference: Compound statements ↗ compared_alternative [PSF License Version 2]

同じ構文を文法レベルで定義するリファレンスです。段階を追って学べる構成のため、チュートリアルの章を選びました。

同じ制御フローを講義のペースで扱う教材です。本カリキュラムではターミナルでの演習を通じて概念を扱っているため、採用を見送りました。

03 120 分

安全な Git の復習:確認・チェック・コミット・未コミット変更の復元

エージェント支援の演習:まず自分の予測と実際の出力を記録すること。その後に限り AI エージェントに説明やレビューを頼んでよく、受けた支援は証拠に必ず記録する。

前提条件

今日の活動 1〜2、Git がインストール済みであること。git diff や小さなコミットに不安があれば Day 04 活動 3 と Day 06 活動 3 を見直す。

学習目標

Day 04〜06 の安全な変更手順(diff、diff --check、小さなコミット、log)を使い捨てリポジトリで復習し、新しい足場付きコマンド git restore で未コミットの編集を破棄して結果を確かめる。

手順

間隔をあけた復習: コミット前に差分を確認する練習は Day 04 と Day 06 で行った。今日は新しいフィクスチャで記憶から繰り返す。今日の新要素(足場付き): git restore FILE は、デフォルトではインデックス(ステージング領域)を元に作業ツリー内の追跡中のファイルを復元する。インデックス自体は変えず、ステージ済みの変更も解除しない。このフィクスチャではインデックスが HEAD(最新のコミット)と同じなので、ステージしていない編集を破棄するとそのコミット済みの版に戻る。コミットは取り消せない(それは Day 09 で扱う)。

作業は必ず新しい一時ディレクトリで行い、カリキュラムのリポジトリでは行わない。各コマンドの前に、何が出力されるかを書く(何も出力されない、も予測に数える)。そのうえで一連のコマンドを実行する:

cd "$(mktemp -d)"
git init -q
git config user.name "Learner"
git config user.email "[email protected]"
printf 'label: 猫\n' > notes.txt
git add notes.txt
git commit -q -m "Add notes"
printf 'label: 猫\ncount: 1\n' > notes.txt
git diff --stat
git diff --check
git add notes.txt
git commit -q -m "Add count line"
git log --format=%s
printf 'oops\n' >> notes.txt
git status --short
git restore notes.txt
git status --short
cat notes.txt

演習と予測記録

git diff --stat、git diff --check、git log --format=%s、2 回の git status --short の出力を予測してから実行し、実際の出力を記録する。最後に git restore 後のファイル内容を書き、Unicode を含む行 "label: 猫" が残った理由を説明する。

独立習得基準

実行前に予測を記録し、実際の出力が参考出力と完全に一致し、git restore が適切な場面(追跡中ファイルへの未コミットの編集)と、それがコミットを取り消さないことを説明できる。

出典リソースと来歴

linking PSF License Version 2

The Python Tutorial: More Control Flow Tools

著者・提供機関: Python Software Foundation | オリジナル出所URL ↗

該当セクション・タイムスタンプ: 第 4.2〜4.10 節(for、range、関数の定義)。データ構造は同じチュートリアルの第 5 章

検証バージョンと日付: Python 3.12 ドキュメント(確認日: 2026-10-30)

選定理由:

Python の反復処理、関数、コンテナを確認するための一次資料。

ソース前提知識:

Day 01〜06 の Python の式とファイルシステムの基礎

安全フォールバック(オフライン回復性):

必要な動作はすべて教材内で説明しているため、オフラインでも完了できます。

比較対象候補リソースと選定評価 (2)
The Python Language Reference: Compound statements ↗ compared_alternative [PSF License Version 2]

同じ構文を文法レベルで定義するリファレンスです。段階を追って学べる構成のため、チュートリアルの章を選びました。

同じ制御フローを講義のペースで扱う教材です。本カリキュラムではターミナルでの演習を通じて概念を扱っているため、採用を見送りました。

04 120 分

週次の独立チェック:Day 04〜06

独立習得チェック:証拠を提出するまで AI の支援も参考解答も使わない。受けた支援は正直に申告する。

前提条件

今日の活動 1〜3 を証拠付きで終えていること。回復先:Day 04(値)、Day 05(束縛と比較)、Day 06(条件と安全な Git)。

学習目標

支援なしで値・束縛・比較の結果を予測し、明示的な条件を使う小さな関数を一から実装し、安全な確認コマンドを記憶から書く。

手順

間隔をあけた復習: これは Day 04〜06 をまとめる週次の定着チェックである。証拠を提出するまで参考解答を開かず、AI も使わない。

1. 次のコードが出力する 3 行を紙に予測してから実行する:

print(repr("0"), bool("0"), "0" == 0)
x = ["a"]
y = x
x.append("é")
print(y)
x = ["a"]
y = x
x = x + ["é"]
print(y)

2. describe(raw) を一から書く:strip 後のテキストが空なら "empty"、10 進数字なら "digits"、それ以外は "text" を返す。""、" "、"42"、"42"(全角数字)、"猫" について予測してからテストする。
3. 使い捨てリポジトリでコミット前に変更を確認するために実行するコマンドと、追跡中ファイルへの未コミットの編集を破棄するコマンドを、記憶から列挙する。

演習と予測記録

提出物:3 行の予測と実際の出力、describe(raw) のコードと 5 つの予測・5 つの実測結果、安全な確認と復元のコマンド一覧、食い違いがあればその回復先の日。

独立習得基準

支援なしで:3 行の予測を先に書き、describe(raw) が空・空白のみ・全角 Unicode 数字を含む 5 ケースすべてに合格し、コマンド一覧が正しく、食い違いごとに回復先の日が書かれている。

出典リソースと来歴

linking PSF License Version 2

The Python Tutorial: More Control Flow Tools

著者・提供機関: Python Software Foundation | オリジナル出所URL ↗

該当セクション・タイムスタンプ: 第 4.2〜4.10 節(for、range、関数の定義)。データ構造は同じチュートリアルの第 5 章

検証バージョンと日付: Python 3.12 ドキュメント(確認日: 2026-10-30)

選定理由:

Python の反復処理、関数、コンテナを確認するための一次資料。

ソース前提知識:

Day 01〜06 の Python の式とファイルシステムの基礎

安全フォールバック(オフライン回復性):

必要な動作はすべて教材内で説明しているため、オフラインでも完了できます。

比較対象候補リソースと選定評価 (2)
The Python Language Reference: Compound statements ↗ compared_alternative [PSF License Version 2]

同じ構文を文法レベルで定義するリファレンスです。段階を追って学べる構成のため、チュートリアルの章を選びました。

同じ制御フローを講義のペースで扱う教材です。本カリキュラムではターミナルでの演習を通じて概念を扱っているため、採用を見送りました。