高校情報Ⅰ プログラミングの関数・モジュール・ライブラリ(Python)(4か月目第4週)

Pythonでインフォマティクス

まなびの目標🎯
・プログラミングに重要なコードの再利用について知る。
・プログラミングにおける関数・モジュール・ライブラリを理解する。
・Pythonを例に関数・モジュール・ライブラリを使ってみる。
・確認テストで学びを復習!




1. はじめに

これまで、順次構造選択構造反復構造などを使ってプログラムを書いてきました。

高校情報Ⅰ プログラミング言語, Pythonで制御構造・リスト(4か月目第3週)
まなびの目標🎯・コンピュータが理解できる機械語について理解する。・プログラミング言語の役割や種類について理解する。・基本となる3つの制御構造(順次・分岐・反復)、リスト(配列)をPythonを例に働きや記述方法を学ぶ。・確認テストで学びを復...

簡単なプログラムであれば、上から順に指示のコードひとつひとつを書いて実行する、で、OKです!

ただ、コンピュータに任せるプログラムがどんどん複雑になると、コードの行数がどんどん長くなって。。
→ どこに何が書いてあるか、見つけるのも大変💦
→ 同じような計算や処理を何度も書くのも大変だし、、たとえコピペしても、最初のが間違えてたら全部書き直さなきゃいけない…T-T

こういう場合に有効なのが、コードの再利用です。例えば、一度書いたコードを何度も使い回すことで、プログラムを効率的かつ分かりやすく作ることができます。
プログラミングにとって、できるだけシンプルなコードにする、というのは永遠の目標でもあります💡

この記事では、プログラミングにおける関数モジュール、そしてライブラリという3つのキーワードを通して、コードを整理し、効率化する方法をPythonの例で見ていきましょう!

2. 関数

関数は、特定の処理をひとまとまりにしたものです。料理に例えるなら、「野菜を切る」「お米を炊く」といった、それぞれの工程に名前を付けて、必要なときにその工程を呼び出すイメージです💡

関数を使うと、以下のようなメリットがあります。
・コードが読みやすくなる(可読性の向上):何をする処理なのか、関数名を見るだけで分かりやすくなります。
・コードの再利用ができる:一度作った関数は、プログラムの様々な場所で何度でも呼び出して使うことができます。同じ処理を繰り返し書く手間が省けます。
・修正が楽になる:もし処理の内容を変更したくなっても、関数の定義部分を一つ直すだけで、関数を呼び出している全ての場所にその変更が反映されます。

関数の基本要素として、引数(ひきすう)戻り値があります。
・引数: 関数に渡す数値や情報のことです。これによって、関数は毎回異なるデータで同じ処理を実行できます。
戻り値: 関数が処理を終えた後に返す結果のことです。関数が計算した答えなどを受け取るために使います。

■Pythonでの関数の書き方と呼び出し方
Pythonで関数を作るには、def(define:定義するの略)というキーワードを使います。

def 関数名(引数1, 引数2, …):
 # 関数の本体(実行したい処理をココに書く)
 # インデント(字下げ)が必要
 return 戻り値 # 必要であれば値を返す

-例1: 引数も戻り値もないシンプルな関数 (メッセージを表示するだけの関数)

# Pythonの例:
def greet(): # 'greet'という名前の関数を定義
    print("こんにちは!") # 関数が呼び出されたらこの行が実行される

greet() # 関数を呼び出す。定義した処理が実行される。
# 出力結果:
こんにちは!

-例2: 引数はあるが、戻り値がない関数 (名前を受け取って、その名前を含んだメッセージを表示する関数)

# Pythonの例:
def say_hello(name): # 'name'という引数を受け取る関数を定義
    print(f"こんにちは、{name}さん!") # 受け取った名前を使ってメッセージを表示

say_hello("太郎") # '太郎' を引数として渡して関数を呼び出す
say_hello("花子") # 別の名前を渡して再度関数を呼び出す
# 出力結果:
こんにちは、太郎さん!
こんにちは、花子さん!

say_helloという同じ関数を、異なる引数(名前)で何度も呼び出すことで、コードの再利用をしています。

例3: 引数もあり、戻り値もある関数 (2つの数字を受け取って、その合計を計算し、結果を返す関数)

# Pythonの例:
def add_numbers(a, b): # 'a'と'b'という2つの引数を受け取る関数を定義 
  result = a + b # aとbを足し算して'result'に格納 
  return result # 'result'の値を関数の外に返す 
sum_result = add_numbers(10, 5) # 関数を呼び出し、戻り値(計算結果)を'sum_result'に受け取る 
print(f"合計は {sum_result} です。") # fはそれ以降を文字列として解釈する
another_sum = add_numbers(100, 200) # 別の数字でも再利用 
print(f"別の合計は {another_sum} です。")
# 出力結果:
合計は 15 です。
別の合計は 300 です。

このように、関数を使うことで、同じ計算処理を何回も書かずに、必要な場所で呼び出すだけで使えるようになります。これがコードの再利用の大きなメリットです。

3. モジュールとライブラリ

関数は、プログラムの特定の処理をひとまとまりにしたものでした。
モジュールライブラリは、そうしたまとまりをたくさん集めて整理したものです。

■モジュール
モジュールとは、関連する関数や変数などをひとつのPythonファイル(.py 拡張子を持つファイル)にまとめたものです。例えば、計算に関する関数だけを集めたファイル、文字処理に関する関数だけを集めたファイルなどです。自分で作った便利な関数を他のプログラムでも使いたいときに、モジュールとして保存しておくと、簡単に読み込んで再利用できます。

■ライブラリ
ライブラリは、複数のモジュールや、特定の目的(例:科学計算、画像処理、AI開発など)のために作られた非常に多くの便利な機能の集まりです。モジュールが「単体の道具」だとすると、ライブラリはそれらの道具を分類して入れた「工具箱全体」のようなイメージです。

プログラミングの世界では、すでに多くのプログラマーの方々が、様々な問題を解決するための便利な機能を開発し、ライブラリとして公開してくださっています。すでに誰かが作った便利な機能や計算方法を、わざわざゼロから自分で作り直すことなく、有効に使用することができます!

モジュールやライブラリを活用することで、以下のような大きなメリットがあります。
・自分で書くコードの量を大幅に減らせる: 複雑な処理も、モジュールやライブラリの関数を呼び出すだけで実現できます。
・専門的な計算や複雑な処理も簡単に実現できる: AIやデータ分析、画像処理など、専門知識が必要な分野でも、それらに特化したライブラリを使うことで、初心者でも高度な機能を利用できます。
・プログラム開発の効率が格段に上がる: 開発時間を短縮し、より多くの機能を持ったプログラムを効率的に作れるようになります。

3.1. Pythonでのモジュール

Pythonでモジュールライブラリを使うには、importというキーワードを使います。

ー例1: math モジュールを使った計算
mathモジュールは、数学的な計算に関する便利な関数や定数(円周率など)がまとまっています。

# Pythonの例:
import math # mathモジュールを読み込む

# 円周率πを表示
print(math.pi) # mathモジュールの中にある 'pi'(円周率)を使う

# 平方根(ルート)の計算
num = 16
sqrt_num = math.sqrt(num) # mathモジュールの中にある 'sqrt' 関数を使う
print(f"{num}の平方根は {sqrt_num} です。")
# 出力結果:
3.141592653589793
16の平方根は 4.0 です。

このように、math.という形でモジュール名をつけてから、その中の機能を利用します。

ー例2: randomモジュールを使った乱数生成
randomモジュールは、ランダムな数(乱数)を生成するための機能がまとまっています。ゲームやシミュレーションなどでよく使われます。

# Pythonの例import random # randomモジュールを読み込む

# 1から6までのランダムな整数を生成(サイコロの目をイメージ)
dice_roll = random.randint(1, 6) # randomモジュールの中にある 'randint' 関数を使う
print(f"サイコロの目は {dice_roll} です。")

# 0.0以上1.0未満のランダムな浮動小数点数を生成
rand_float = random.random()
print(f"ランダムな小数: {rand_float}")
# 出力結果:
サイコロの目は 3 です。
ランダムな小数: 0.87654321

ランダムなので、実行するたびに出力結果は変わります💡

3.2. Pythonでのライブラリ

Pythonには、標準で含まれるものから、インターネット上で公開されているものまで、非常に多くの便利なライブラリが存在します。ここでは、Pythonに標準で備わっている日付と時刻を扱うライブラリの簡単な例を見てみましょう。

ー例3: 日付と時刻を扱う datetime ライブラリ
datetime ライブラリは、日付や時刻を扱うための複数の機能(モジュール)を含む、Pythonの標準ライブラリのひとつです。今日の年月日を取得したり、特定の日付を計算したりできます。

# Pythonの例: 
from datetime import date # datetimeライブラリの中のdateモジュールを読み込む 
today = date.today() # 今日の日付を取得する 
print(f"今日は {today.year}年 {today.month}月 {today.day}日 です。") 

# 特定の日付を作成 
my_birthday = date(2007, 7, 29) # 2007年7月29日の日付オブジェクトを作成 
print(f"私の誕生日は {my_birthday} です。")
# 出力結果:
今日は 2025年 7月 29日 です。
私の誕生日は 2007-07-29 です。

上記を実行した日によって「今日は~」の部分は変わります💡

4. まとめ

今回の記事を通して、プログラミングを効率的に進めるための強力な味方、「関数」と「モジュール・ライブラリ」について学びました。プログラミングにおいて、「できるだけシンプルで分かりやすいコードにする」ということは永遠の目標です。関数とモジュールは、まさにその目標を達成するための強力なツールとなります。

関数は、特定の処理をひとまとまりにしたものです。これを使うことで、コードは読みやすくなり、同じ処理を何度も書かずに再利用できるようになります。
モジュールは、関連する関数などをひとつのファイルにまとめたもので、ライブラリは、複数のモジュールなどを集めて整理したものです。これらを活用することで、私たちはゼロからすべてを作る手間を省き、より高度な機能も簡単にプログラムに取り入れることができます

関数を使って問題を小さな部品に分けて考えたり、モジュールやライブラリを活用して便利な道具を使いこなしたりすることは、複雑なプログラムを作成する上で非常に重要です。

5. 確認クイズ

Q1. プログラムの複雑化を防ぎ、効率的にコードを書くための考え方で、一度書いたコードを何度も使い回すことを何と言いますか?

  • コードの再利用
  • コードの複雑化
  • コードの重複

正解!正解!

不正解!不正解!

コードの再利用

ヒント:同じコードを何度も書く手間を省き、修正の手間も減らすことができます。

Q2. Pythonで独自の関数を定義する際に使用するキーワードは何ですか?

  • import
  • print
  • def

正解!正解!

不正解!不正解!

def

ヒント:関数名を定義する際に、その前に置く「define」を短縮した言葉です。

Q3. 関数に何か処理させるための「材料」として、関数に渡す数値や情報のことを何と呼びますか?

  • 戻り値
  • 変数
  • 引数

正解!正解!

不正解!不正解!

引数

ヒント:関数を使うときにカッコの中に書く、関数への「入力」となるものです。

Q4. 関数が計算した結果などを関数の外に返す際に使うキーワードは何ですか?

  • import
  • print
  • return

正解!正解!

不正解!不正解!

return

ヒント:関数から「結果を返す」ときに使う英単語です。

確認クイズは、いかがでしたでしょうか?今回の学習内容が、皆さんの情報活用能力を高める一助となれば幸いです。閲覧いただき、ありがとうございました!

※本記事 教科書該当範囲

教科書名 該当章
新編情報Ⅰ(東京書籍) 3章 28. 発展的なプログラム2
最新情報I(実教出版) 第6章 2節 2. 関数を使用したプログラム
高校情報ⅠPython(東京書籍) 第6章 31. プログラミングの基本, 33. 関数

本サイトは、教科書をベースに構成しています。使える「情報Ⅰ」を目指し、毎週新しい記事を発信予定です。

高校情報Ⅰ プログラミング言語, Pythonで制御構造・リスト(4か月目第3週)
まなびの目標🎯・コンピュータが理解できる機械語について理解する。・プログラミング言語の役割や種類について理解する。・基本となる3つの制御構造(順次・分岐・反復)、リスト(配列)をPythonを例に働きや記述方法を学ぶ。・確認テストで学びを復...
高校情報Ⅰ 時系列分析と回帰分析(4か月目第1週)
まなびの目標🎯・時間と共に変化する時系列データから、時系列分析を行って将来を予測してみよう!・2つの異なるデータの関係性(相関関係)を調べよう!・散布図と回帰直線を使って、データ間の関係を説明しよう!・相関関係と因果関係の重要な違いを理解し...
高校情報Ⅰ 基本統計量とヒストグラム、箱ひげ図(3か月目第4週)
まなびの目標🎯・基本統計量を知ろう!データの全体の傾向をつかむのは大事!・データの中心や散らばりを把握することの重要性を理解しよう!・データの分布を可視化する方法を知ろう!最後、確認クイズもありますので、是非見ていって下さい♬■目次1. 基...

本記事に対し、お気づきの点ございましたらお問い合わせよりご連絡頂けますと幸いです。




 

コメント

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