PR

【Python】モジュール/パッケージ/ライブラリの違いを3分で解説

Python

Pythonの開発では、モジュールパッケージライブラリという3つの用語が頻繁に使われます。これらは関連性がありますが、それぞれ異なる意味と役割を持っています。それぞれの概念を理解することで、コードの整理、再利用、そして共有がより簡単になります。

モジュールパッケージライブラリ
定義Pythonのファイル(.py)モジュールの集まりのフォルダ関連するモジュールやパッケージの集まり
目的コードの再利用モジュールの整理とまとめコードの再利用と整理
特別な点インポート可能init.pyファイルを含む機能や作業を簡単に行うためのコードの集合
  • モジュール: Pythonのファイル(.py拡張子)で、関数、クラス、変数などを定義するための単位。モジュールはインポートにより他のPythonコードから再利用することが可能。
  • パッケージ: 複数のモジュールを整理して一緒にするためのフォルダ(ディレクトリ)。init.pyという特別なPythonファイルを含むことでPythonがパッケージとして認識。
  • ライブラリ: 関連するモジュールやパッケージの集まり。特定の機能や作業を簡単に行うために再利用できるコードの集合体を指す。

このページでは、それぞれの概念の違いを端的に説明します。

このページで学べる内容
  • モジュールとは?
  • パッケージとは?
  • ライブラリとは?
  • それぞれの違いと使い分け

Pythonエンジニアを目指す方であれば知らないと恥ずかしい超・基本知識の1つ。是非最後までご覧ください。

参考 Pythonの基本的な書き方・構文ルール

スポンサーリンク

Pythonのモジュールとは

早速、それぞれの用語の意味を解説していきます。

まずは、モジュール(module)から。

Pythonのモジュールは、Pythonのソースコードを記述したファイルのことを指します。つまり、任意のPythonコードを含む.pyという拡張子のファイル全てがモジュールと呼ばれます。

.py ファイル

例えば、以下のような内容のPythonファイルmymodule.pyを考えてみましょう。

# mymodule.py

def hello(name):
    print(f"Hello, {name}!")

pi = 3.1415926535

参考 def文

このファイルmymodule.pyモジュールとして機能します。これらは以下のようにインポートすることで、他のPythonファイルから使用することができます。

# main.py

import mymodule

mymodule.hello('World')
print(mymodule.pi)

### 出力結果 ###
# Hello, World
# 3.1415926535
モジュールと普通のスクリプトコードの違い
  • 普通のスクリプトコード: これは特定のタスクを達成するための一連のコードです。例えば、データを読み込み、それを処理し、結果を出力するという一連のフローが含まれます。普通のスクリプトはそれ自体が独立しており、他のコードから再利用されることを前提としていません。
  • モジュール: モジュールは再利用可能な関数、変数、クラスなどを定義するためのPythonファイルです。その目的は、これらの要素を他のPythonコードから再利用することです。モジュール自体には特定の実行フローは含まれず、主に関数やクラスの定義など、他のコードで利用されるための要素を提供します。

Pythonのパッケージとは

Pythonのパッケージは、関連する複数のモジュールを整理し、一緒にするためのフォルダ(ディレクトリ)です。パッケージを使用することで、モジュールを整理し、名前空間を管理することが容易になります。

ざっくり説明すると、パッケージ(英:Package)とは、モジュールを複数集めたもののことと説明できます。

Pythonでは、特定のフォルダがパッケージとして認識されるためには、そのフォルダ内に__init__.pyという名前のファイルが必要です。

図1:パッケージ

__init__.pyはパッケージの初期化を行うスクリプトであり、パッケージがインポートされたときに実行されます。__init__.pyは空でも構いませんが、このファイルが存在することで、Pythonはそのフォルダをパッケージとして扱います。

__init__.py」には何も記述されていなくてもOK。

特定の機能を開発する際に、モジュールをインポートするだけでは不十分な場合が多くあります。「もっと、豊富な機能があれば、、、。」というお悩みに答えることができるのがパッケージ。

パッケージの中のモジュールは、相互にimportしており機能が豊富に作りこまれています。パッケージをimportするだけで、簡単に複雑な機能を実現できる場合が多いです。

図2:パッケージとモジュールのイメージ

このように、パッケージを使用することで、関連するモジュールを一緒にして整理することができます。また、名前空間を管理し、モジュール間での名前の衝突を避けることも可能にします。

Pythonのライブラリとは

Pythonのライブラリは、関連するモジュールやパッケージの集まりで、特定の機能や作業を簡単に行うために再利用できるコードの集合体を指します。

例えば、データ分析を行うためのpandasライブラリや、数値計算を行うためのnumpyライブラリ、ウェブスクレイピングを行うためのbeautifulsoupライブラリなどがあります。

ライブラリを使用することで、そのライブラリが提供する特定の機能や手続きを簡単に利用することができます。これにより、自分でその機能を一から実装する必要がなくなり、開発の効率が大幅に向上します。

例えば、次のコードはmathライブラリを使用して、数値の平方根を計算しています。

import math

print(math.sqrt(16))  # 結果: 4.0

ここではmathライブラリのsqrt関数を使用しています。sqrt関数は平方根を計算する機能を提供しており、この機能を利用することで、自分で平方根を計算するロジックを実装する必要がありません。

このように、ライブラリは特定の機能や手続きを再利用可能な形で提供し、それによってコードの開発を助けます。

Python:標準ライブラリ

Pythonには、基本的な機能を提供する一連のライブラリが標準で付属しています。これらをまとめて「標準ライブラリ」と呼びます。

標準ライブラリには、日付や時間の処理を行うdatetime、ファイルやディレクトリの操作を行うos、数学的な関数を提供するmathなど、様々な基本的な機能を提供するモジュールが含まれています。

例えば、print関数(これは初心者の方もよく使う関数かと思います)。これは、標準ライブラリの中で定義されている関数の1つです。

標準ライブラリはPythonとともにインストールされるため、追加のインストールを必要とせずに使用することが可能。これにより、Pythonプログラムの作成に必要な基本的な機能が手元に常に揃っている状態を作り出せるのです。

Python:外部ライブラリ

外部ライブラリとはその名の通り、標準に付属していないライブラリのことです。

したがって、まずはダウンロードを行い、その後に後述するimport文を利用してインポートしないと利用することができません。

外部ライブラリには、Web開発を支援するDjango、データ分析を容易にするpandas、機械学習のためのscikit-learnなど、多岐にわたる機能を提供するライブラリがあります。これらのライブラリはPythonのパッケージ管理システムであるpipを通じてインストールし、利用することができます。

これらの外部ライブラリは、特定の問題を解決したり、特定のタスクを実行するための高度な機能を提供するため、Pythonの強力なエコシステムの一部となっています。

モジュール/パッケージ/ライブラリのまとめ

これまで説明してきたように、モジュール、パッケージ、ライブラリはそれぞれ異なる概念ですが、密接に関連しています。それぞれがコードの再利用性を向上させ、管理を容易にする役割を果たしています。

  • モジュールは再利用可能な関数、変数、クラスを含むPythonファイルで、個々のファイルとしてコードを再利用するための基本的な単位。
  • パッケージは関連するモジュールを整理し、一緒にするためのフォルダ(ディレクトリ)で、モジュールの集合体として機能します。パッケージはモジュールを一緒にすることで、コードをさらに整理し、管理を容易にします。
  • ライブラリは関連するモジュールやパッケージの集まりで、再利用可能なコードの大規模な集合体を指します。ライブラリは、特定の機能や手続きを提供することで、プログラムの開発を助けます。

このように、モジュール、パッケージ、ライブラリはそれぞれが一種の「コードのまとまり」を表しています。それぞれのまとまりの規模が違い、それぞれが異なる目的と役割を果たしますが、すべてがPythonプログラミングにおけるコードの再利用と組織化に重要な役割を果たしています。

始めてPythonを勉強するのは結構難しいですよね。

でもその悩みを抱えているのは一人じゃありません。全てのPython使いが同じ道を進んできました。

Pythonをはじめとするプログラミングスキルを武器に、時間と場所に捉われない自由な生き方を目指してみませんか?今すぐ行動したい方は以下の記事をチェック!

読者料典 Python入門:学習カリキュラム ←こちらから!

このWebサイトは現役のエンジニアが以下3点を目的として運営しています。

  1. 勉強:一度理解した内容を忘れないように。
    → アウトプットは「最強のインプット」である! 
  2. 備忘:忘れたとしても後から見返せるように。
    → 未来の自分への「お手紙」を書いています。 
  3. 共有:〇〇ってこうだったんだ!の感動をシェアできるように。
    → あなたの知識は誰かにとっての「価値ある情報」です。 

副業ブログの始め方はこちらから

スポンサーリンク
Python
シェアする
ビズドットオンラインをフォローする
blank
ビズドットオンライン
タイトルとURLをコピーしました