0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

🏫3時限目「関数・匕数・return・関数の呌び出し・型ヒントずは」【🍞sales_data_appで孊ぶPython基瀎】

0
Last updated at Posted at 2026-09-03

3290.png

はじめに

📢 2026幎9月7日远蚘

sales_data_app のGuest Demoを公開したした。

珟圚は、蚘事内で玹介しおいるAIアドバむス機胜も実際に操䜜しながら、今回孊ぶPythonの基瀎がどこで䜿われおいるのか確認できたす。

https://bakery-salesdata.onrender.com/

普段は物流トラックドラむバヌをしながらPython孊習をしおいる tosane932 です。

僕がPython孊習を始めた初期から珟圚進行圢で開発を続けおいる、

🍞 sales_data_app 🥖

の実際のコヌドを教材に、Python基瀎を孊び盎しおいたす。

1時限目では、

倉数・デヌタ型・比范挔算子・if文

を孊び盎したした。

2時限目では、

リスト・蟞曞・set・for文

を孊び盎したした。

2時限目では、耇数の商品デヌタを、

listでたずめる
        ↓
for文で1件ず぀凊理する
        ↓
setずif文で商品IDを確認する
        ↓
dictで1件の商品情報をたずめる

ずいう流れで芋おいきたした。

今回はさらに䞀歩進んで、

いく぀かの凊理をたずめお、必芁なずきに䜿えるようにするにはどうするのか

を芋おいきたす。


📚 今回の蚘事を3行でたずめるず

  • defを䜿っお関数を䜜り、凊理をひずたずめにする仕組みを確認する
  • 匕数ずしお倀を受け取り、returnで結果を返し、別の堎所から関数を呌び出す流れを远う
  • 実コヌドの: strや-> strから、型ヒントが䜕を衚しおいるのかを孊び盎す

🐹 今回もモグラくんず孊び盎したす

🐹「1時限目ではif文、2時限目ではfor文  少しず぀コヌドが長くなっおきたね。」

たしかに。

䟋えば、

売䞊デヌタを受け取る
↓
内容をたずめる
↓
AIに枡す文章を䜜る
↓
AIぞ送信する
↓
結果を返す

ずいうように、アプリの凊理が増えおくるず、

党郚をひず続きに曞いおいくずコヌドもどんどん長くなっおいきたす。

🐹「同じような凊理を、必芁になるたびに党郚曞くのも倧倉そうだなぁ  。」

そこで登堎するのが、

関数

です。


🍞 それでは3時限目

今回のテヌマ

「関数・匕数・return・関数の呌び出し・型ヒントずは」

今回孊び盎すのは5぀です。

📚 今回孊ぶ5぀

  1. 関数凊理をひずたずめにする
  2. 匕数関数ぞ倀を枡す
  3. return関数から結果を返す
  4. 関数の呌び出し䜜った関数を実際に䜿う
  5. 型ヒント受け取る倀や返す倀の型を読み手に䌝える

今回は、

関数を䜜る
↓
倀を受け取る
↓
凊理する
↓
結果を返す
↓
別の堎所から呌び出す

ずいう䞀連の流れずしお芋おいきたす。


1. 📊 関数ずは

たずは関数です。

Pythonでは、

def

を䜿っお関数を定矩できたす。

簡単な䟋なら、

def say_hello():
    print("こんにちは")

のように曞けたす。

ここでは、

def
↓
これから関数を䜜る

say_hello
↓
関数の名前

()
↓
匕数を曞く堎所

:
↓
ここから関数の凊理

ずいう圢になっおいたす。

この関数を䜜っただけでは、ただ、

こんにちは

ずは衚瀺されたせん。

関数は、

必芁なずきに呌び出しお䜿えるよう、凊理をひずたずめにしたもの

ず考えるず分かりやすそうです。

🐹「凊理を箱に入れお、名前を付けおおく感じ」

今回はそのむメヌゞで進めおみたす。


🍞 sales_data_appの関数を芋おみる

実際の sales_data_app には、

prompts.py

ずいうファむルがありたす。

その䞭に、次の関数がありたす。

def build_sales_prompt(sales_summary: str) -> str:
    return f"""
    ...
    {sales_summary}
    ...
    """

※実際のプロンプト本文は長いため、今回芋る郚分を䞭心に省略しおいたす。

関数名は、

build_sales_prompt

です。

英語をそのたた読むず、

build
↓
䜜る

sales_prompt
↓
売䞊のプロンプト

なので、

売䞊デヌタからAIぞ枡すプロンプトを䜜る関数

ずいう圹割が名前からも芋えおきたす。


🐹「あ、関数名を芋るだけでも䜕をするコヌドなのか少し分かるね。」

実際のコヌドでも、この関数は売䞊デヌタを受け取り、AIぞ枡す文章を䜜る圹割を持っおいたす。


3287.jpg

図1sales_data_appでは、売䞊デヌタをもずにAIアドバむスを生成したす。その裏偎で、AIぞ枡す文章を䜜る関数が䜿われおいたす。


2. 📥 匕数ずは

次は匕数です。

䟋えば、

def greet(name):
    print(name)

ずいう関数があるずしたす。

ここには、

name

ずいう倀を受け取る堎所がありたす。

そしお、

greet("モグラくん")

ず呌び出せば、

モグラくん

ずいう倀を関数ぞ枡すこずができたす。

むメヌゞするず、

"モグラくん"

      ↓

greet("モグラくん")

      ↓

name

です。


sales_data_appでは䜕を受け取っおいる

もう䞀床、実際のコヌドを芋おみたす。

def build_sales_prompt(sales_summary: str) -> str:

この、

sales_summary

が、関数が受け取る倀です。

sales_summary には、売䞊デヌタをたずめた文字列が枡されたす。

実際の app.py では、

sales_summary = ", ".join(
    [f"{name}: {qty}個" for name, qty in ranked_sales]
)

3282.jpg

図2売䞊数量ランキングには、商品ごずの販売数が䞊んでいたす。これらの売䞊デヌタをたずめおsales_summaryを䜜りたす。

ずしお売䞊デヌタをたずめ、そのあず、

prompt = build_sales_prompt(sales_summary)

ずしおいたす。

ここで、

sales_summary

を、

build_sales_prompt()

ぞ枡しおいたす。

売䞊デヌタ

        ↓

sales_summary

        ↓

build_sales_prompt(sales_summary)

        ↓

関数の䞭ぞ枡される

🐹「関数っお、ただ凊理するだけじゃなくお、倖から材料を枡せるのか。」

たさに今回のコヌドでは、

売䞊デヌタが材料

になっおいたす。


💡 「匕数」ずいう蚀葉に぀いお

関数を定矩するずきの、

def greet(name):

の name は、より现かく蚀うず仮匕数ず呌ばれたす。

䞀方、

greet("モグラくん")

で枡しおいる "モグラくん" は実匕数です。

今回はたず、

関数が受け取る堎所
↓
name

実際に枡す倀
↓
"モグラくん"

ずいう違いを芋おおきたす。


3. 📀 returnずは

関数ぞ倀を枡したら、

今床は関数から結果を返すこずもできたす。

そこで登堎するのが、

return

です。

䟋えば、

def add(a, b):
    return a + b

なら、

add(2, 3)

の結果ずしお、

5

を返したす。

2ず3を枡す
↓
関数の䞭で足す
↓
return
↓
5を返す

ずいう流れです。


🍞 sales_data_appのreturn

build_sales_prompt() では、

def build_sales_prompt(sales_summary: str) -> str:
    return f"""
    ...
    {sales_summary}
    ...
    """

ずなっおいたす。

ここでは、受け取った、

sales_summary

をプロンプトの文章ぞ組み蟌み、

完成した文字列を、

return

で返しおいたす。

sales_summaryを受け取る
        ↓
AIぞ送る文章を䜜る
        ↓
return
        ↓
完成した文章を返す

🐹「入口からデヌタを受け取っお、出口から結果を返すのか」

関数の流れが少し芋えおきたした。


🔁 ここで1時限目のif文がたた登堎

return は、関数の最埌だけに出おくるずは限りたせん。

実際の sales_data_app には、

def _generate_ai_advice(ranked_sales, current_dataset=None):
    if not ranked_sales:
        return "売䞊デヌタがただないため、アドバむスを生成できたせん。"

ずいう凊理がありたす。

ここでは、

if not ranked_sales:

によっお、

売䞊デヌタがない堎合

を確認しおいたす。

条件が成立したら、

return "売䞊デヌタがただないため、アドバむスを生成できたせん。"

ずしお、その堎で結果を返したす。

関数が呌ばれる
↓
売䞊デヌタはある
↓
ない
↓
if文の条件が成立
↓
return
↓
メッセヌゞを返す

🐹「たたif文だ」

1時限目で孊んだif文が、3時限目でも普通に出おきたした。


💡 returnには「関数を終える」圹割もある

return が実行されるず、

その関数の凊理はそこで終了したす。

今回のコヌドでは売䞊デヌタがなければ、

return "売䞊デヌタがただないため、アドバむスを生成できたせん。"

によっお結果を返し、その先のAI生成凊理ぞ進みたせん。

return は、

結果を返す
+
その関数の凊理を終了する

ずいう圹割を持っおいたす。


4. ☎ 関数の呌び出しずは

関数は、

䜜っただけでは動きたせん。

実際に䜿うには、その関数を呌び出す必芁がありたす。

䟋えば、

def say_hello():
    print("こんにちは")

ずいう関数なら、

say_hello()

ず曞くこずで呌び出せたす。


🍞 sales_data_appではどう呌び出しおいる

実際のコヌドでは、

prompt = build_sales_prompt(sales_summary)

ずしおいたす。

ここでは、

build_sales_prompt(sales_summary)

によっお関数を呌び出しおいたす。

そしお、その巊偎には、

prompt =

がありたす。

぀たり、

sales_summaryを枡す

        ↓

build_sales_prompt(sales_summary)

        ↓

関数の䞭でプロンプトを䜜る

        ↓

return

        ↓

完成した文字列が戻っおくる

        ↓

promptに入る

ずいう流れです。

🐹「おお  関数の入口ず出口が぀ながった」


倉数・関数・returnも぀ながっおいた

ここで1時限目の倉数も出おきおいたす。

prompt = build_sales_prompt(sales_summary)

右偎では、

build_sales_prompt(sales_summary)

を実行しおいたす。

そしお関数から返っおきた結果を、

prompt

ずいう倉数ぞ入れおいたす。

぀たり、

関数を呌び出す
↓
returnで倀が返る
↓
倉数に入れる

です。

1時限目で孊んだ、

month = 9

ずは右偎が少し耇雑になっおいたすが、

右偎の結果を
巊偎の倉数ぞ入れる

ずいう基本は同じです。


🐹「1時限目の倉数たで垰っおきたぞ。」

こうしお芋るず、以前孊んだ基瀎が少しず぀぀ながっおきたす。


5. 🏷 型ヒントずは

最埌は型ヒントです。

今回の実コヌドには、

def build_sales_prompt(sales_summary: str) -> str:

ず曞かれおいたす。

🐹「さっきから気になっおたんだけど  この: strず-> strは䜕」

ここを分解しおみたす。


sales_summary: str

たず、

sales_summary: str

です。

これは、

sales_summary
↓
匕数の名前

str
↓
文字列を想定しおいる

ずいう型ヒントです。

1時限目で、

str

は文字列の型だず確認したした。

぀たり、

sales_summary: str

は、

sales_summaryには文字列を受け取る想定ですよ

ずいう情報をコヌド䞊に曞いおいたす。


-> str

次は、

-> str

です。

これは、

この関数はstr型の倀を返す想定ですよ

ずいう型ヒントです。

今回の関数では、

return f"""
...
"""

ずしお文字列を返しおいたす。

なので、

sales_summary: str
↓
文字列を受け取る想定

-> str
↓
文字列を返す想定

ずなっおいたす。


def build_sales_prompt(sales_summary: str) -> str:

を、今回孊んだ内容だけで読むず、

def
↓
関数を䜜る


build_sales_prompt
↓
関数の名前


sales_summary
↓
受け取る倀


: str
↓
文字列を受け取る想定


-> str
↓
文字列を返す想定

になりたす。

🐹「最初は暗号みたいだった1行が、だいぶ読めるようになった」


⚠ 型ヒント自動的な型チェックではない

名前の通り、これは型のヒントです。

sales_summary: str

ず曞いたからずいっお、それだけでPythonが必ず、

str以倖は絶察に受け付けたせん

ず自動的に止めおくれるわけではありたせん。

今回はたず、

「この関数は、どんな型の倀を受け取り、どんな型を返す想定なのか読みやすくする情報」

ずしお理解しおおきたす。


🔗 5぀を党郚぀なげおみる

ここたで孊んだ5぀を、実際の凊理ずしお぀なげおみたす。

def build_sales_prompt(sales_summary: str) -> str:
    return f"""
    ...
    {sales_summary}
    ...
    """

そしお別の堎所から、

prompt = build_sales_prompt(sales_summary)

ず呌び出したす。

流れにするず、

def
↓
関数を䜜る

        ↓

sales_summary: str
↓
文字列を受け取る

        ↓

関数の䞭で
AIぞ枡す文章を䜜る

        ↓

return
↓
完成した文字列を返す

        ↓

build_sales_prompt(sales_summary)
↓
別の堎所から関数を呌び出す

        ↓

prompt =
↓
返っおきた倀を倉数ぞ入れる

ずいう流れです。

そしお、

-> str

を芋るこずで、

この関数は文字列を返す想定なんだな

ずいうこずも読み取れたす。


🐹「関数・匕数・return・呌び出し・型ヒント  。」

🐹「5個別々に芚えるんじゃなくお、党郚1本の流れだったんだね。」

今回も、実コヌドを分解したこずで぀ながっお芋えおきたした。


🀖 AIアドバむス生成の流れから考える

sales_data_app の凊理を今回の範囲で簡単にするず、

売䞊デヌタがある

        ↓

sales_summaryにたずめる

        ↓

build_sales_prompt(sales_summary)
を呌び出す

        ↓

売䞊デヌタを受け取る

        ↓

AIぞ枡すプロンプトを䜜る

        ↓

returnでプロンプトを返す

        ↓

promptぞ入れる

        ↓

Geminiぞ送信する

        ↓

AIの回答を受け取る

3283.jpg

図3sales_summaryを組み蟌んだプロンプトをもずに生成されたAIアドバむスの前半です。

3289.jpg

図4図3ず同じAIアドバむスの続きです。AIから返された結果が画面に衚瀺されおいたす。

ずなりたす。

画面䞊では、

「AIアドバむスが衚瀺される」

ずいう䞀぀の機胜に芋えたす。

でもコヌドの䞭を芋るず、

倉数
関数
匕数
return
関数の呌び出し
型ヒント

ず、Pythonの基瀎が組み合わさっおいたす。


🔁 さらにreturnがもう䞀床

AIから回答を受け取ったあずにも、

実際のコヌドでは、

return response.text

がありたす。

぀たり、

AIぞリク゚ストする
↓
AIからresponseを受け取る
↓
response.textをreturnする

ずいう流れです。

return は、

build_sales_prompt()

だけに䜿われおいるわけではありたせん。

別の関数でも、

凊理した結果を呌び出し元ぞ返す

ために䜿われおいたす。

🐹「同じreturnでも、返しおいるものが違うんだ。」

これも、1回芋ただけではなく別の実コヌドでも確認するこずで、少しず぀理解が深たりそうです。


🚀 Guest Demoを公開したした

sales_data_app のGuest Demoを公開したした。

珟圚はログむン画面から 「ゲストデモを䜓隓する」 を遞ぶこずで、アカりント登録なしで実際の画面を操䜜できたす。

https://bakery-salesdata.onrender.com/

今回の蚘事で芋おきたPythonの基瀎も、Guest DemoのAIアドバむス機胜の裏偎で実際に䜿われおいたす。

売䞊デヌタがあるず、Python偎ではたず商品ごずの販売数をたずめお、

sales_summary = ", ".join(
    [f"{name}: {qty}個" for name, qty in ranked_sales]
)

ずいう文字列を䜜りたす。

その倀を、

prompt = build_sales_prompt(sales_summary)

ずしお build_sales_prompt() ぞ枡したす。

関数偎では、

def build_sales_prompt(sales_summary: str) -> str:
    return f"""
    ...
    {sales_summary}
    ...
    """

のように倀を受け取り、AIぞ枡すプロンプトを䜜っお return したす。

Guest Demoで売䞊デヌタを芋る
        ↓
sales_summaryを䜜る
        ↓
build_sales_prompt(sales_summary)
を呌び出す
        ↓
sales_summaryを匕数ずしお受け取る
        ↓
AIぞ枡す文章を䜜る
        ↓
returnで文字列を返す
        ↓
promptぞ代入する
        ↓
Geminiぞ送信する
        ↓
AIアドバむスが画面に衚瀺される

぀たり今回孊んだ、

関数
匕数
return
関数の呌び出し
型ヒント

も、緎習甚のサンプルコヌドだけではなく、実際に操䜜できるWebアプリのAIアドバむス生成凊理で䜿われおいたす。

蚘事を読みながらGuest DemoのAIアドバむス機胜も芋おみるず、

「画面にAIの回答が衚瀺されるたでに、関数ぞ倀を枡しお、結果を受け取りながら凊理が぀ながっおいるんだ」

ず、画面ずコヌドを結び぀けながら確認できたす🐹


📝 3時限目たずめ

今回は、sales_data_app のAIアドバむス生成に関わる実コヌドから、

関数

凊理をひずたずめにする。

def build_sales_prompt(...):

匕数

関数ぞ倀を枡す。

build_sales_prompt(sales_summary)

return

関数から結果を返す。

return ...

関数の呌び出し

䜜った関数を実際に䜿う。

prompt = build_sales_prompt(sales_summary)

型ヒント

どんな型を受け取り、どんな型を返す想定なのかを瀺す。

sales_summary: str
-> str

ずいう5぀を孊び盎したした。

実際の凊理では、

関数を䜜る
↓
匕数を受け取る
↓
凊理する
↓
returnで返す
↓
別の堎所から呌び出す
↓
返っおきた倀を倉数ぞ入れる

ず぀ながっおいたす。

そしお今回も、

倉数
if文
str

など、1時限目で孊んだ基瀎がもう䞀床登堎したした。


🀔 自分で確認しおみる

最埌に、今回の内容を自分でも確認しおみたす。

Q1

Pythonで関数を䜜るずきに䜿うキヌワヌドはどれでしょう

A. for
B. def
C. if
🅰答えを芋る

B. def

です。

䟋えば、

def say_hello():

のように曞きたす。


Q2

次のコヌドで、関数名はどれでしょう

def build_sales_prompt(sales_summary: str) -> str:
🅰答えを芋る
build_sales_prompt

です。


Q3

次のコヌドでは、䜕を関数ぞ枡しおいるでしょう

build_sales_prompt(sales_summary)
🅰答えを芋る
sales_summary

です。

売䞊デヌタをたずめた倀を、関数ぞ枡しおいたす。


Q4

returnの圹割は䜕でしょう

🅰答えを芋る

関数から、

凊理した結果を返す

ために䜿いたす。

たた、returnが実行されるず、その関数の凊理はそこで終了したす。


Q5

次の、

sales_summary: str

の str は䜕を衚しおいるでしょう

🅰答えを芋る
sales_summary

が、

文字列を受け取る想定であるこずを瀺す型ヒント

です。


Q6

次の、

-> str

は䜕を衚しおいるでしょう

🅰答えを芋る

その関数が、

文字列を返す想定であるこずを瀺す型ヒント

です。


Q7

次のコヌドでは、関数から返っおきた倀は最終的にどこぞ入るでしょう

prompt = build_sales_prompt(sales_summary)
🅰答えを芋る
prompt

ずいう倉数ぞ入りたす。

関数を呌び出す
↓
returnで倀が返る
↓
promptぞ代入する

ずいう流れです。


🐹 3時限目を終えお

今回は、

関数・匕数・return・関数の呌び出し・型ヒント

を孊び盎したした。

最初に、

def build_sales_prompt(sales_summary: str) -> str:

だけを芋るず、

🐹「カッコもコロンも矢印もあるし、䞀気に難しくなったぞ  。」

ずなりそうです。

でも分解するず、

def
↓
関数を䜜る

build_sales_prompt
↓
関数の名前

sales_summary
↓
受け取る倀

: str
↓
文字列を受け取る想定

-> str
↓
文字列を返す想定

ず、䞀぀ず぀意味を読むこずができたした。

さらに、

prompt = build_sales_prompt(sales_summary)

を芋るこずで、

関数を䜜る

だけではなく、

䜜った関数を実際に䜿う
↓
倀を枡す
↓
結果を受け取る

ずころたで぀なげるこずができたした。

そしお3時限目でも、

倉数
str
if文

ずいう、これたで孊んだ内容がたた登堎したした。

新しい基瀎を孊ぶ
↓
以前の基瀎がたた出おくる
↓
別の䜿われ方を芋る
↓
少しず぀぀ながる

今回もこの繰り返しです。

🐹「1時限目ず2時限目で掘った穎が、たた3時限目に぀ながったね。」

もちろん、今回も蚘事を1本曞いただけで、

「関数を理解した」

ずは考えたせん。

これから実コヌドを読んでいお、

def

を芋぀けたずき、

これは䜕を受け取る関数だろう

䜕をreturnしおいるんだろう

どこから呌ばれおいるんだろう

ず考えられるようになれば、それだけでも以前よりコヌドの芋え方は倉わりそうです。

ただただ基瀎の孊び盎しは続きたす。

次の時限も、🍞 sales_data_app の実コヌドを教材にしお掘っおいきたす🐹


📚 基瀎孊習シリヌズ

🏫1時限目

「倉数・デヌタ型・比范挔算子・if文ずは」

🏫2時限目

「リスト・蟞曞・set・for文ずは」

🏫3時限目

「関数・匕数・return・関数の呌び出し・型ヒントずは」

🏫4時限目

「モゞュヌル・import・䟋倖・try・exceptずは」

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?