Python | 1 日 90 分 × 7 日アプリ学習:関数で処理をまとめるアプリ(初級編)

Web APP Python
スポンサーリンク

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 リスト。
行きたい場所リスト。
学習記録アプリ。

どれも本質は同じです。

「どんな役割の関数が必要か」
「どんな入力を受け取り、どんな結果を返すか」

これを日本語で説明できる限り、
あなたはもう“自分でアプリを設計できる人”です。

タイトルとURLをコピーしました