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

Web APP Python
スポンサーリンク

5日目のゴール

5日目のテーマは
「関数を“役割ごとに分けて、アプリ全体を組み立てる”こと」です。

ここまでであなたはすでに、

def で関数を定義できる
引数で入力を渡せる
return で結果を返せる
関数同士を呼び合える

というところまで来ています。

今日はそこから一歩進んで、

入力する関数
判断する関数
表示する関数
全体をまとめる関数

というふうに「責任ごとに関数を分けて」、
小さなアプリを“設計する感覚”を育てます。


関数に「責任」を持たせるという考え方

1つの関数に何でも詰め込むと読めなくなる

例えば、こんな関数を想像してみてください。

ユーザーから入力を受け取る
入力が空かチェックする
数字かどうかチェックする
メッセージを表示する
結果を返す

これを全部1つの関数に入れると、
「この関数は何をしているのか?」が一言で説明できなくなります。

5日目で目指したいのは、
「1つの関数は、1つの責任だけ持つ」
という状態です。

「入力を受け取る関数」
「チェックする関数」
「表示する関数」
「全体を流す関数」

こう分けると、
コードも頭の中も一気に整理されます。


入力専用の関数を作る

役割を「入力だけ」に絞る

まずは「ユーザーから文字列を1つ受け取るだけ」の関数を作ります。

def ask_text(prompt):
    return input(prompt)
Python

この関数の責任は、
「画面にメッセージを出して、入力された文字列を返す」
それだけです。

使う側はこうなります。

name = ask_text("名前を入力してください: ")
print("あなたの名前は", name, "ですね。")
Python

ここでのポイントは、
「入力の方法」を関数の中に閉じ込めた
ということです。

あとで GUI にしたくなっても、
ask_text の中身だけ変えれば済みます。


判定専用の関数を作る

例:空文字かどうかを判定する関数

入力が空かどうかを判定する処理も、
関数にしてしまいます。

def is_empty(text):
    return text.strip() == ""
Python

この関数の責任は、
「渡された文字列が“実質的に空かどうか”を True / False で返す」
それだけです。

使う側はこうなります。

user_input = ask_text("何か入力してください: ")

if is_empty(user_input):
    print("空の入力です")
else:
    print("入力されました:", user_input)
Python

ここでの深掘りポイントは、
if 文の条件が“日本語に近くなる”ことです。

if text.strip() == "": より
if is_empty(text): の方が、
「何を判定しているか」が一目で分かります。


表示専用の関数を作る

例:メッセージを枠で囲んで表示する関数

見た目を整える処理も、関数にまとめられます。

def print_box(message):
    print("==========")
    print(message)
    print("==========")
Python

この関数の責任は、
「渡されたメッセージを“枠つき”で表示する」
それだけです。

使う側はこうなります。

print_box("関数練習アプリへようこそ")
print_box("処理が完了しました")
Python

ここでのポイントは、
「見た目のルール」を1か所に集めたことです。

枠のデザインを変えたくなったら、
print_box の中身だけ変えれば、
アプリ全体の見た目が一気に変わります。


全体をまとめる main 関数を作る

「流れだけを書く」関数

ここまで作った部品を組み合わせて、
アプリ全体の流れを管理する関数を作ります。

def main():
    print_box("関数で処理をまとめるアプリ(5日目)")

    name = ask_text("あなたの名前を入力してください: ")

    if is_empty(name):
        print_box("名前が入力されませんでした。終了します。")
        return

    print_box(f"{name}さん、こんにちは!")

    goal = "今日の目標:関数に“責任”を持たせて分けて書く"
    print_box(goal)
Python

最後に、これを書いて実行します。

main()
Python

ここでの深掘りポイントは、
main の中には「流れ」しか書いていないことです。

「何をするか」は他の関数に任せて、
「どの順番でやるか」だけを main が決めています。


5日目のミニアプリ:入力チェックつきあいさつアプリ

今日の学びを全部入れたコード

def print_box(message):
    print("==========")
    print(message)
    print("==========")


def ask_text(prompt):
    return input(prompt)


def is_empty(text):
    return text.strip() == ""


def main():
    print_box("関数で処理をまとめるアプリ(5日目)")

    name = ask_text("あなたの名前を入力してください: ")

    if is_empty(name):
        print_box("名前が空だったので、あいさつできません。")
        return

    print_box(f"{name}さん、こんにちは!")
    print_box("今日のテーマ:def と関数呼び出しで処理を整理する")


main()
Python

このアプリを、役割ごとに言葉で説明してみます。

print_box
「メッセージを枠で囲んで表示する」

ask_text
「メッセージを表示して、ユーザーの入力を返す」

is_empty
「文字列が実質的に空かどうかを判定する」

main
「アプリ全体の流れを管理する」

そして、
「どこで入力しているか」「どこで判定しているか」「どこで表示しているか」
が一目で分かる構造になっています。


つまずきポイントをもう一段深く押さえる

「関数が多いと逆に分かりにくくない?」問題

関数を増やすと、
「どこに何があるか分からなくなるのでは?」
と不安になるかもしれません。

ここで大事なのは、
「1つの関数を一文で説明できるか」です。

説明できるなら、その関数は“ちょうどいい大きさ”。
説明できないなら、その関数は“やりすぎ”。

今日の例でいうと、

「ユーザーから名前を聞いて、空ならエラーを出して、
そうでなければあいさつして、目標も表示する」

これを1つの関数にすると、
説明が長くなりすぎます。

だからこそ、
入力・判定・表示・流れ
に分けているわけです。


5日目のまとめ:今日つかんでほしい感覚

今日の本質はこれです。

関数は「書きやすくするための道具」ではなく
“責任を分けて、アプリを整理するための道具”である。

入力専用の関数
判定専用の関数
表示専用の関数
全体をまとめる関数

というふうに分けると、

どこで何が起きているか
どこを直せばいいか

が、すぐに分かるようになる。

ここまで来ているあなたなら、
6日目・7日目で
「自分のアプリを自分で評価・改善する」
という段階に、自然に進んでいけます。

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