【Python】レッスン5-08:モジュールを使いこなそう

ながみえ
【Python学習記事のアイキャッチ画像】Lesson5-8 モジュールを使いこなそう

一つ前のLessonでは静的メソッドについて学習しました。

今回はモジュールについて見ていきましょう。

Lesson1:基礎文法編
Lesson2:制御構造編
Lesson3:関数とスコープ編

Lesson4:データ構造編
Lesson5:オブジェクト指向編
・Lesson5-1:クラスの基本を理解しよう
・Lesson5-2:メソッドの基本を理解しよう
・Lesson5-3:カプセル化を理解しよう
・Lesson5-4:プロパティを理解しよう
・Lesson5-5:クラスの継承を理解しよう
・Lesson5-6:メソッドのオーバーライドを理解しよう
・Lesson5-7:静的メソッドを理解しよう
・Lesson5-8:モジュールを使いこなそう ◁今回はココ
・Lesson5-9:抽象クラスを理解しよう
・Lesson5-10:ミックスインを理解しよう
・Lesson5-11:データクラスを理解しよう
・練習問題5-1:モンスター捕獲ゲームを作ろう
・練習問題5-2:モンスターとのバトルゲームを作ろう
次のステップ:Python基礎習得者にお勧めの道5選(実務or副業)

<<前のページ

【Python学習記事のアイキャッチ画像】Lesson5-7 静的メソッドを理解しよう

Pythonの記事一覧

Python学習カテゴリの親ページ用アイキャッチ画像(テキスト&問題集)、記事一覧へのリンク案内

次のページ>>

【Python学習記事のアイキャッチ画像】Lesson5-9 抽象クラスを理解しよう

モジュールとは|コードを分けて賢く再利用する方法

Pythonのプログラムを効率的に記述するには「モジュール」を活用することが重要です。

モジュールはコードを整理し、再利用性を高める仕組みです。

本記事では、モジュールの基本から活用方法までを分かりやすく解説します。

【Python】勉強猫がノートパソコンを前にして学習を始める様子。記事内の学習スタート用イラスト

モジュールの概要とインポート方法

モジュールとは、Pythonコードを整理して再利用可能な単位としてまとめたものです。

一つのPythonファイル(拡張子が.py)がモジュールに該当します。

これを使用すると複雑なプログラムを分割して管理しやすくできるだけでなく、他のプログラムからそのコードを再利用できます。

例えば、最初から用意されている Python標準モジュールmath は数学的な計算を簡単に行える機能を提供します。

モジュールはimport文を使って読み込みます。

以下は基本的なインポート方法です。

import math	# mathモジュールのインポート

# モジュールの関数を使う
print(math.sqrt(16)) # mathモジュール内で定義されたsqrt()関数を使用
					 # 出力: 4.0

モジュール内の特定の要素だけをインポートすることも可能です。

from math import sqrt # mathモジュールのsqrt関数をインポート

print(sqrt(25))  # 出力: 5.0

さらに、インポート時に別名を付けて短縮することもできます。

import numpy as np # numpyモジュールをインポートし、このコード内ではnpという名前で使用

array = np.array([ 1, 2, 3]) # np(numpyモジュール)のarray()関数を使用
print(array)  # 出力: [ 1 2 3]

ここまでの記事で何度も使用してきた乱数生成のRandomも標準モジュールの一種です。

また、それ以外にも便利な標準モジュールは沢山用意されていますので、是非↓↓の記事で確認し、活用してください。

あわせて読みたい
Python標準ライブラリの厳選おすすめ11選【初心者から上級者まで必見】
Python標準ライブラリの厳選おすすめ11選【初心者から上級者まで必見】

自作モジュールの作成と利用方法

自作のモジュールも簡単に作れます。以下は自作モジュールの例です。

1. モジュールファイルの作成

モジュールとして使用するファイルは、通常通り作成します。

def say_hello(name): # say_hello関数の定義
    return f"Hello, {name}!"

上記のコードを書いたファイルを「greetings.py」というファイル名で保存します。

2. 自作モジュールのインポート

import greetings # 自作モジュールファイルのインポート

message = greetings.say_hello("Alice") # greetingsモジュールのsay_hello関数を呼び出し
print(message)   # 出力: Hello, Alice!

同じディレクトリにあるPythonファイルをモジュールとして利用できます。

コードを整理して再利用しやすくなるため、大規模なプロジェクトで特に有用です。

まとめ|コードを部品化して、再利用と見通しを手に入れよう

ここまでで、モジュールの役割(コードを“部品”としてまとめる)、基本の読み込み方、そして自作モジュールの作り方と使い方を一連の流れで確認しました。

これにより、複数ファイルに処理を分けて再利用性・保守性・見通しを高めつつ、必要な機能だけを明確に取り込む設計ができるようになります。

標準モジュールに頼りつつ、自分の共通ロジックを自作モジュールとして育てれば、“使い回せる道具箱”を手元に蓄えていけます。

まずは小さな関数をひとつのモジュールに切り出し、import で呼び出すところから始めましょう。

今日の一歩が、明日の開発スピードと品質を確実に押し上げます。

あわせて読みたい
Python標準ライブラリの厳選おすすめ11選【初心者から上級者まで必見】
Python標準ライブラリの厳選おすすめ11選【初心者から上級者まで必見】
Q
サイト改善アンケート|ご意見をお聞かせください(1分で終わります)

本サイトでは、みなさまの学習をよりサポートできるサービスを目指しております。
そのため、みなさまの「プログラミングを学習する理由」などをアンケート形式でお伺いしています。

1分だけ、ご協力いただけますと幸いです。

【Python】サイト改善アンケート
1.このサイトをどのように活用していますか?また、今後どのように活用したいですか?
5.気になっているサービス・商品があれば教えてください。
(複数選択可)
※ 特定の記事に関する内容の場合は、記事番号(Python Lesson〇-〇)をご記入願います。 また、ご質問はここではなく問い合わせフォームからお願いします。

練習問題:モジュールを使ってみよう

この記事で学習した「モジュール」を復習する練習問題に挑戦しましょう。

【Python】勉強猫がノートパソコンに向かい、練習問題に挑戦する様子。記事内の休憩用イラスト

問題|円の直径、面積、円周を計算するプログラムを作ろう

Pythonの標準モジュールmathを使用して、円の直径、面積、円周を計算するプログラムを作成してください。

このプログラムではユーザーから円の半径を入力してもらい、計算結果を画面に表示します。

以下の要件に従ってコードを完成させてください。

  1. mathモジュールをインポートし、円周率にmath.piを使用すること。
  2. 円の半径を入力として受け取ること。入力値が負の数や0の場合は、エラーメッセージを表示すること。
  3. 円の直径を計算すること(直径 = 半径 × 2)。
  4. 円の面積を計算すること(面積 = π × 半径²)。
  5. 円周を計算すること(円周 = 2 × π × 半径)。
  6. 計算結果を次のように表示すること:
    • 「直径: ○○」
    • 「面積: ○○」
    • 「円周: ○○」
  7. 入力が数値以外の場合、エラーメッセージを表示すること。

ただし、以下のような実行結果となるコードを書くこと。

円の半径を入力してください(例: 5): 5
直径: 10.00
面積: 78.54
円周: 31.42
円の半径を入力してください(例: 5): -2
半径は正の数を入力してください。
円の半径を入力してください(例: 5): 文字
数値を入力してください!

ヒント|難しいと感じる人だけ見よう

1からコードを組み立てることが難しい場合は、以下のヒントを開いて参考にしましょう。

Q
ヒント1【コードの構成を見る】

正解のコードは上から順に以下のような構成となっています。

1:円計算用の関数を定義し、妥当性チェックと計算結果のまとめ方を決める
 ・円周率は標準モジュールから取得して使う
 ・半径が0以下なら計算せずにエラーメッセージを返す
 ・直径, 面積, 円周を計算し、キー付きの入れ物(辞書)にまとめて返す

2:半径の入力を受け取り、計算を呼び出してエラー処理と結果表示を行う
 ・数値以外の入力に備えて、変換時のエラーを例外処理でキャッチする
 ・戻り値が文字列(エラー)か辞書(正常)かで分岐して扱いを変える
 ・表示はフォーマット指定で小数点以下2桁に整える(例::.2f

Q
ヒント2【穴埋め問題にする】

以下のコードをコピーし、コメントに従ってコードを完成させて下さい。

'''(穴埋め) 標準モジュール math をインポートする行を書く '''

def calculate_circle_properties(radius):
    if radius <= 0:
        # 半径が0以下の場合、エラーメッセージを返す
        return "半径は正の数を入力してください。"
    
    # math モジュールを使用して計算
    diameter = radius * 2					# 直径
    area = math.'''(穴埋め)''' * (radius ** 2)			# 面積
    circumference = 2 * '''(穴埋め)'''.pi * radius	# 円周

    # 結果を辞書形式で返す
    return {
        "直径": diameter,
        "面積": area,
        "円周": circumference
    }

# ====== ここから直接実行される処理 ======
try:
    # ユーザーから半径を入力
    radius = float(input("円の半径を入力してください(例: 5): "))
    # 計算結果を取得
    result = calculate_circle_properties(radius)
    # 結果を表示
    if isinstance(result, str):  # エラーメッセージが返ってきた場合
        print(result)
    else:
        print(f"直径: {result['直径']:.2f}")
        print(f"面積: {result['面積']:.2f}")
        print(f"円周: {result['円周']:.2f}")
except ValueError:
    # 数値以外が入力された場合のエラーメッセージ
    print("数値を入力してください!")

このヒントを見てもまだ回答を導き出すのが難しいと感じる場合は、先に正解のコードと解説を見て内容を理解するようにしましょう。

解答例|math.piで作る円計算ツール

例えば以下のようなプログラムが考えられます。

Q
正解コード
import math  # 標準モジュール "math" をインポート

def calculate_circle_properties(radius):
    """
    円の半径を受け取り、直径、面積、円周を計算する関数
    - math モジュールを使用して数学的な計算を行う
    """
    if radius <= 0:
        # 半径が0以下の場合、エラーメッセージを返す
        return "半径は正の数を入力してください。"
    
    # math モジュールを使用して計算
    diameter = radius * 2					# 直径
    area = math.pi * (radius ** 2)			# 面積
    circumference = 2 * math.pi * radius	# 円周

    # 結果を辞書形式で返す
    return {
        "直径": diameter,
        "面積": area,
        "円周": circumference
    }

try:
    # ユーザーから半径を入力
    radius = float(input("円の半径を入力してください(例: 5): "))
    # 計算結果を取得
    result = calculate_circle_properties(radius)
    # 結果を表示
    if isinstance(result, str):  # エラーメッセージが返ってきた場合
        print(result)
    else:
        print(f"直径: {result['直径']:.2f}")
        print(f"面積: {result['面積']:.2f}")
        print(f"円周: {result['円周']:.2f}")
except ValueError:
    # 数値以外が入力された場合のエラーメッセージ
    print("数値を入力してください!")

解答例の解説|math.piで作る円計算ツールの考え方

解答例の詳細解説は以下の通りです。

Q
詳細解説

円計算用の関数を定義

import math  # 標準モジュール "math" をインポート

def calculate_circle_properties(radius):
    """
    円の半径を受け取り、直径、面積、円周を計算する関数
    - math モジュールを使用して数学的な計算を行う
    """
    if radius <= 0:
        # 半径が0以下の場合、エラーメッセージを返す
        return "半径は正の数を入力してください。"
    
    # math モジュールを使用して計算
    diameter = radius * 2					# 直径
    area = math.pi * (radius ** 2)			# 面積
    circumference = 2 * math.pi * radius	# 円周

    # 結果を辞書形式で返す
    return {
        "直径": diameter,
        "面積": area,
        "円周": circumference
    }

このパートでは、標準モジュールを読み込んだうえで、半径から直径・面積・円周を求めるための専用関数を用意します。
半径が正の数かを最初に確認し、条件を満たさない場合は処理を止めてエラーメッセージを返します。
正しい半径であれば、円周率をモジュールから参照して必要な値を計算し、結果をひとまとめにして返します。
入出力は行わず「計算と結果の受け渡し」に責務を限定しているため、テストしやすく再利用もしやすい構成です。

計算を呼び出して結果表示

try:
    # ユーザーから半径を入力
    radius = float(input("円の半径を入力してください(例: 5): "))
    # 計算結果を取得
    result = calculate_circle_properties(radius)
    # 結果を表示
    if isinstance(result, str):  # エラーメッセージが返ってきた場合
        print(result)
    else:
        print(f"直径: {result['直径']:.2f}")
        print(f"面積: {result['面積']:.2f}")
        print(f"円周: {result['円周']:.2f}")
except ValueError:
    # 数値以外が入力された場合のエラーメッセージ
    print("数値を入力してください!")

このパートでは、まずユーザーから文字列として受け取った半径を数値に変換します。
変換に失敗した場合(文字が混じるなど)は、例外処理で受け止めて分かりやすいメッセージを表示します。
数値にできたら計算専用の関数を呼び出し、戻り値がエラーメッセージか計算結果かを判定して処理を分岐します。
エラーならそのまま表示、計算結果なら直径・面積・円周を取り出して、小数点以下2桁の体裁で整えて出力します。
入出力と例外処理をこのブロックに集約し、計算ロジックは関数に任せることで、役割が明確になり保守しやすくなります。

もっと分かりやすい学習サイトにするために

この記事を読んで「ここが分かりにくかった」「ここが難しかった」等の意見を募集しています。

世界一わかりやすいPython学習サイトにするため、ぜひ 問い合わせフォーム からご意見下さい。

<<前のページ

【Python学習記事のアイキャッチ画像】Lesson5-7 静的メソッドを理解しよう

Pythonの記事一覧

Python学習カテゴリの親ページ用アイキャッチ画像(テキスト&問題集)、記事一覧へのリンク案内

次のページ>>

【Python学習記事のアイキャッチ画像】Lesson5-9 抽象クラスを理解しよう

モジュールの疑問解消|FAQと用語のまとめ

初心者がつまずきやすいポイントをFAQとしてまとめ、またよく使う専門用語をわかりやすく整理しました。

理解を深めたいときや、ふと疑問に感じたときに役立ててください。

FAQ|モジュールに関するよくある質問

Q
Q1. モジュールとパッケージの違いは何ですか?

モジュールはPythonファイル単位で、パッケージはモジュールをまとめたディレクトリ構造のことを指します。

Q
Q2. モジュールの再利用性を高める方法は?

汎用的な処理を関数化して1つのモジュールにまとめ、必要なスクリプトからimportして使うことが有効です。

Q
Q3. importされたモジュールの中身を確認する方法は?

dir(モジュール名)で、そのモジュールに含まれる関数やクラスを一覧で確認できます。

Python用語集|モジュールに関する用語一覧

今回の記事で出てきた用語・関数などを一覧で紹介します。

このサイトに出てくる 全てのPython用語をまとめた用語集 も活用してください。

Python用語定義・使い方の概要解説記事へのリンク
モジュール関数やクラスなどの定義をまとめたPythonファイルで、import 文で読み込んで再利用できる本記事
標準モジュールPythonに最初から含まれているモジュール。追加インストール不要で使用可能本記事
math モジュール数学関数(平方根、三角関数、対数など)を提供する標準モジュール本記事
sqrt() 関数math モジュールの関数で、引数の平方根を返す本記事
numpy モジュール大規模な数値計算を効率的に行うための外部ライブラリ。多次元配列や線形代数処理などに対応本記事
array() 関数numpy モジュールで使われる配列作成関数。Pythonのリストを高性能な配列に変換する本記事
os モジュールファイルやディレクトリの操作、環境変数の取得など、OS依存の機能を提供する標準モジュール本記事
datetime モジュール日付や時刻の操作を行うための標準モジュール。現在日時の取得や日付計算などに利用本記事
json モジュールPythonオブジェクトとJSON形式の相互変換を行うための標準モジュール本記事
Ramdom モジュール擬似乱数の生成に関する関数を提供する標準モジュール。値のランダム選択やシャッフルなどに使用Lesson1-6
記事URLをコピーしました