Pythonのモジュールとパッケージとライブラリとフレームワークの違い

1.Pythonのモジュールとパッケージとライブラリとフレームワークの違い

アイキャッチ画像のクレジットはPhoto by Julia Kadel on Unsplash

Pythonはpipコマンドやcondaコマンドで「他の人が作った便利なプログラム」を追加でインストールし、自分の作ったプログラムから呼び出して使わせて貰う事ができます。

この「他の人が作った便利なプログラム」は「モジュール(module)」、「パッケージ(package)」、「ライブラリ(library)」、「フレームワーク(framework)」など幾つかの呼び方があります。初心者が厳密な言葉の定義を気にする必要はあまりないのですが、用語で混乱してしまうかもしれないので以下にイメージを図示します。

モジュール < パッケージ < ライブラリ < フレームワークの順に巨大になります。

また、これらの用語はPython独自の用語ではなく、他のプログラミング言語やソフトウェア、ビジネス用語として違う定義で使われる時などもあり、用語が混同する場面は多々あります。

自分でパッケージを作るような段階になると、パッケージの構成についてもう少し深い知識が必要になりますが、当初は違いを意識する必要はほとんどないです。

「ほとんど同じもの。敢えていうなら、フレームワークは新しい概念や使い方を覚えなければいけないので習得がややシンドイ」くらいのイメージで良いと思います。

(1)Pythonのモジュールとは?

関数を一つのファイル(拡張子.py)にまとめたものです。

(2)Pythonのパッケージとは?

複数のモジュールを1つのディレクトリ/フォルダに格納したものです。外部のプログラムから簡単に呼び出せるようにするためにフォルダ内に__init__.pyを置きます。

(3)Pythonのライブラリとは?

厳密な定義は(おそらく)ないですが、様々なパッケージを集めて1つにまとめて扱いやすくしたものの総称です。

Pythonのライブラリとして良く紹介されるものはscikit-learn(サイキット・ラーン)で、「科学技術計算用のライブラリ」としてWikipediaなどでも紹介されてますが、scikit-learnの公式ページには「library」という表記は実はないです。

また自然言語処理で有名なNLTK(Natural Language Toolkit)も公式サイトで「リーディングプラットフォーム」であり「ライブラリとプログラムのスイート」と称しているので、やっぱりライブラリと言う概念は結構曖昧です。

(4)Pythonのフレームワークとは?

フレームワークはビジネス用語でも「問題解決に活用するための枠組みや考え方」と言う意味で使われる事がありますが、プログラミング言語の世界だと「使い方を指定される巨大なライブラリ」です。

貴方がPythonに熟練した上級者であってもフレームワークは「このフレームワークはこうやって使ってください」という使い方を枠組みとして指定してくるので、背後にある概念や使い方を改めて学習しなければ使いこなす事は困難です。

具体例で言えば、機械学習用のフレームワークであるTensorFlowやPytorchです。

 

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