7日目のゴール
7日目のテーマは
「def と関数呼び出しを“自分の言葉で説明できるレベル”にすること」です。
新しいテクニックを増やす日ではなく、
この 1 週間で学んだことを
「バラバラな知識」から「一本の考え方」にまとめる日です。
今日は、
関数とは何か
def は何をしているのか
関数呼び出しとは何をしているのか
関数をどう設計すると読みやすくなるのか
これを、コードと日本語の両方で整理していきます。
1週間の「関数ストーリー」を言葉で振り返る
関数の成長の階段をもう一度たどる
この 7 日間で、関数についてここまで来ました。
最初は
「何行かの処理に名前をつける」
というところから始まりました。
次に
「引数で入力を渡して、動きを変えられる」
ことを知りました。
さらに
「return で結果を返して、呼び出し側がそれを使える」
ようになりました。
そして
「入力専用・判定専用・表示専用・全体をまとめる」
というふうに、関数に“責任”を持たせて分ける
という設計の感覚まで来ました。
7日目のゴールは、
これを全部「自分の言葉で説明できる」状態にすることです。
def を「宣言」ではなく「約束」として捉える
def は「この名前の関数は、こう振る舞います」という約束
例えば、次のコードを見てください。
def greet_user(name):
print(f"{name}さん、こんにちは!")
Pythonこれは単に
「greet_user という関数を定義している」
だけではありません。
日本語にすると、こうです。
「greet_user という名前が呼ばれたら、
name という入力を受け取り、
その人に『こんにちは!』とあいさつします」
つまり def は、
「この名前の関数は、こういう責任を持ちます」
という“約束”をプログラムに書き込んでいるイメージです。
この感覚を持てると、
def の行を読むだけで
「この関数は何を担当しているのか」が見えてきます。
関数呼び出しを「命令」ではなく「依頼」として捉える
greet_user(“太郎”) は「お願いしている」
次のコードを見てください。
greet_user("太郎")
Pythonこれは単に
「関数を実行している」
ではなく、こう言い換えられます。
「greet_user さん、’太郎’ という名前を渡すので、
あなたのやり方であいさつしておいてください」
呼び出し側は、
「どうあいさつするか」には口を出しません。
それは def 側の責任です。
この分担ができているからこそ、
関数の中身を変えても、
呼び出し側を変えずに済みます。
関数を「役割の集まり」として設計する
小さなアプリを“関数の視点”で分解する
例えば、こんなアプリを考えます。
名前を聞く
空ならエラーを出す
空でなければあいさつする
今日の目標を表示する
これを関数の視点で分解すると、こうなります。
名前を聞く関数
空かどうかを判定する関数(または空でない入力を保証する関数)
あいさつする関数
目標を表示する関数
全体の流れを管理する関数(main)
実際のコードにすると、こうなります。
def print_box(message):
print()
print("==========")
print(message)
print("==========")
print()
def ask_non_empty_text(prompt):
while True:
text = input(prompt)
if text.strip() == "":
print("空では入力できません。もう一度入力してください。")
continue
return text
def greet_user(name):
print_box(f"{name}さん、こんにちは!")
def show_goal():
print_box("今日の目標:def と関数呼び出しを“説明できる”ようになる")
def main():
print_box("関数で処理をまとめるアプリ(7日目)")
name = ask_non_empty_text("あなたの名前を入力してください: ")
greet_user(name)
show_goal()
main()
Pythonここで大事なのは、
どの関数も「一文で説明できる」ことです。
print_box
メッセージを枠つきで表示する。
ask_non_empty_text
空ではない文字列が入力されるまで、何度でも聞き直す。
greet_user
名前を受け取り、その人にあいさつする。
show_goal
今日の学習目標を表示する。
main
アプリ全体の流れを管理する。
この「一文で説明できるかどうか」が、
関数設計の大きな基準になります。
自分の関数を「チェックする質問」を持つ
7日目で持っていてほしい“問い”
これから自分でコードを書くとき、
こんなふうに自分に質問してみてください。
この関数は、何をする関数?
一文で説明できる?
入力(引数)は何? 名前は分かりやすい?
結果を返す? 返さない? どっちが自然?
画面に触る関数? それとも値だけ扱う関数?
この処理、本当にこの関数の責任? 別に出せない?
この問いに答えながら def を書いていくと、
自然と「読みやすくて壊れにくいコード」になっていきます。
7日目のまとめ:あなたがもう持っている力
この 1 週間で、あなたはすでに
def で「処理に名前をつける」ことができる
引数で「入力を渡して動きを変える」ことができる
return で「結果を返して、呼び出し側で使う」ことができる
関数を「責任ごとに分けて、組み合わせてアプリを作る」ことができる
というところまで来ています。
ここから先は、
題材を変えながら、
同じパターンを何度も回していくだけです。
小さな電卓。
TODO リスト。
行きたい場所リスト。
学習記録アプリ。
どれも本質は同じです。
「どんな役割の関数が必要か」
「どんな入力を受け取り、どんな結果を返すか」
これを日本語で説明できる限り、
あなたはもう“自分でアプリを設計できる人”です。

