リファクタリングをPythonで実践!基本手法とコード例・注意点まで
- 1.そもそもライブラリとは?
- 2.Pythonのライブラリとは?
- 3.Pythonでよく使う標準ライブラリ5選!
- 4.Pythonでお勧めの外部ライブラリ5選!
- 5.Pythonで外部ライブラリをインストールする方法
1.そもそもライブラリとは?
Pythonでプログラミングする際に必ず使うのが「ライブラリ」です。「ライブラリ」とは、特殊な機能を持った関数やクラスを一つにまとめたもので、インターネット経由で誰でも自らのPythonプログラムにインストールして使うことができます。
「ライブラリ」を使わないと実現できない機能がたくさんあります。だから、「ライブラリ」を使いこなすことはPythonプログラマーの必須条件です。
①ライブラリの基本的な使い方
ライブラリは、使う前に
import ライブラリ名
と書き、プログラムにインポートします。ファイル単位でどのライブラリを使うのか全て書きます。
ファイルごとに使うライブラリをいちいち書くのは一見めんどくさそうですが、これは、Pythonのコードをファイルごとに独立させるためです。ファイルごとに独立していると何がいいかというと、そのファイルだけを取り出してテストできるのです。こうやってPythonは開発効率を高めています。
importの仕方はいろいろあります。
import ライブラリ名
と書くと、ライブラリ全体がimportされます。ただし使うときに
ライブラリ名.関数名又はクラス名
と書かなくてはなりません。
from ライブラリ名 import 関数名又はクラス名
と書くと、そのライブラリの中の特定の関数やクラスだけをインポートします。このときは使うときにただ関数名やクラス名を書けば済みます。
ライブラリにそのファイル内だけで通用する別名をつけておくこともできます。
import ライブラリ名 as 別名
こうすると、そのファイル内では「別名」がライブラリ名の代わりになります。
2.Pythonのライブラリとは?
Pythonのライブラリは、Pythonをインストールすると最初から組み込まれている標準ライブラリと、pipというライブラリ管理ソフトでインストールする外部ライブラリに大きく分かれます。それぞれについて解説します。
①標準ライブラリとは?
OSの機能を使うためのもの、計算を強化するもの、日付時刻を管理するものなどが含まれます。標準ライブラリを使うことで、自分でゼロからプログラムを書かなくても済みます。
②外部ライブラリとは?
これは本当に用途が様々です。初心者のうちは、この記事で後ほど紹介する5つのライブラリを押さえておけばいいでしょう。メリットはやはり、自分でゼロからプログラムを書かなくても済む点です。
3.Pythonでよく使う標準ライブラリ5選!
Pythonでよく使うライブラリをご紹介します。
①sys
Pythonプログラムの実行を停止するなど、OSの機能を使うときに使います。厳密に言うと「インタプリタ」関係の機能、ということになるのですが、この記事では説明しません。
②math
計算を強化するためのライブラリです。三角関数や対数などの数学関数、円周率や自然対数の底などの各種定数などが入っています。
③datetime
日付と時刻のためのライブラリです。文字列から日付時刻に変換したり、逆に日付時刻から文字列を取得したりできます。現在時刻を取得することもできます。
datetimeにはロケールという機能があり、「グリニッジ標準時からの時差」を日付時刻に持たせることができます。このため、グローバルなWebサイトのバックで動くPythonプログラムでdatetimeを用いると、うまく日付時刻を処理できます。
④time
datetimeが日付と時刻を扱うライブラリであるのに対して、timeはもっと単純に時間を扱うためのライブラリです。
例えば、
time.sleep(5)
とするとプログラムの実行が5秒間停止します。
⑤tkinter
標準で組み込まれている、デスクトップアプリ開発のためのライブラリです。UIの部品、イベント処理(何が押されたらどういう処理をするか)のための機構などが備わっています。比較的簡単なデスクトップアプリ開発に用いられます。
簡単なデスクトップアプリと言っても、ラベル、ボタン、入力フィールド、チェックボックス、ラジオボタンの他、スピンボックスや表タイプの表示領域なども入っていますので、tkinterを使えば立派なデスクトップアプリが開発できます。更に、開発したアプリはPythonとtkinterのみに依存していますので、WindowsでもMacでもLinux系OSでも動作します。
4.Pythonでお勧めの外部ライブラリ5選!
Pythonでお勧めの外部ライブラリを5つご紹介します。
①dateutil
datetimeと連動して、時間の計算をするためのライブラリです。dateutilを使うと時間の計算が簡単にできるようになります。
②Numpy
mathを更に拡張したもので、数学処理に欠かせないライブラリです。例えば、方程式(微分方程式も!)を解かせたりすることができます。行列計算も含まれていますので、機械学習には欠かせません。複素数や積分もカバーしていますので、複素積分もできます。理系の大学生が学ぶ数学であればほぼ処理できます。
③Pillow
画像処理を行うためのライブラリです。複雑な画像処理でも簡単な記述でできます。画像処理には他にOpenCVというライブラリもありますが、OpenCVは高度な処理向けに最適化されていますので、目的に応じて使い分けましょう。
④openpyxl
ExcelをPythonから扱うためのライブラリです。openpyxl を使うことで、Excel VBAで書くより処理時間を高速化できます。事務処理には欠かせません。
Excelのブックを作り、シートを作り、セルに値を書き込み、計算し、セルに色を付けたり罫線を引いたりといったExcelで通常行う処理ならだいたいできますが、グラフをExcel内に作るなどの高度なExcel処理はできません。ですが、収集したデータからExcelファイルを作るなどの目的では、十分実用的です。
⑤Django
Djangoはライブラリというか、「フレームワーク」という、開発全体のあり方を定義づけるような巨大なライブラリです。Webシステム開発に使います。たとえば有名なところでは、YouTubeもDjangoを使って構築されています 。
Webシステムで行う処理のうちDjangoでできない処理はないと断言しても構わないほど機能が強力です。Djangoを採用する開発現場も日に日に増えています。その代わり入門者には学習量が多いライブラリで、本が何冊も出ているほどです。入門者に親しみやすいWebシステムのライブラリでは、Flaskというライブラリもあります。
5.Pythonで外部ライブラリをインストールする方法
外部ライブラリを管理するには、コマンドラインで使うpipというライブラリ管理ソフトを使います。pipはPythonをインストールすると標準でついてきます。外部ライブラリをインストールするときは
pip install ライブラリ名
をコマンドラインから実行するだけです(Pythonインタプリタからではなくコマンドラインから実行するという点に注意してください)。これだけで、最新版のライブラリがあなたのマシンのPythonにインストールされます。
また、importするときのライブラリ名と、pipするときのライブラリ名が違うライブラリもあるので、注意しましょう。
6.インストール済みライブラリの一覧と格納場所を確認する
インストール済のライブラリの一覧と格納場所を確認する方法は簡単です。
pip list
で今自分のマシンにインストールされているライブラリの一覧が確認できます。筆者のマシンでは次のようになりました。
PS D:\> pip list
Package Version
-------------------- ----------
amqp 2.6.1
appdirs 1.4.4
astroid 2.4.2
beautifulsoup4 4.9.3
billiard 3.6.4.0
boto3 1.16.63
botocore 1.19.63
bs4 0.0.1
cachetools 4.2.1
camelot-py 0.8.2
celery 4.3.1
certifi 2020.11.8
cffi 1.14.3
chardet 3.0.4
click 7.1.2
colorama 0.4.4
confuse 1.4.0
cryptography 3.2.1
cycler 0.10.0
decorator 4.4.2
distlib 0.3.1
dnspython 1.16.0
Elixir 0.7.1
et-xmlfile 1.0.1
eventlet 0.30.2
filelock 3.0.12
greenlet 1.0.0
idna 2.10
isort 5.6.4
jdcal 1.4.1
Jinja2 2.11.2
jmespath 0.10.0
kiwisolver 1.3.1
kombu 4.6.11
lazy-object-proxy 1.4.3
lxml 4.6.2
MarkupSafe 1.1.1
matplotlib 3.3.4
mccabe 0.6.1
numpy 1.18.0
opencv-python 4.4.0.46
openpyxl 3.0.5
pandas 1.1.4
pbr 5.5.1
pdfminer.six 20201018
Pillow 8.1.2
pip 21.1.3
pipenv 2020.11.15
pycparser 2.20
pycryptodome 3.10.1
pylint 2.6.0
pyparsing 2.4.7
PyPDF2 1.26.0
python-amazon-sp-api 0.2.3
python-dateutil 2.8.1
pytz 2020.4
pywin32 300
PyYAML 5.4.1
redis 3.2.0
requests 2.25.0
s3transfer 0.3.4
selenium 3.141.0
setuptools 49.2.1
six 1.15.0
sortedcontainers 2.3.0
soupsieve 2.2
SQLAlchemy 0.7.10
sqlalchemy-migrate 0.13.0
sqlparse 0.4.1
Tempita 0.5.2
toml 0.10.2
urllib3 1.26.2
vine 1.3.0
virtualenv 20.4.3
virtualenv-clone 0.5.4
wrapt 1.12.1
xlrd 0.7.1
xlwt 0.7.2
ライブラリ名とバージョンが表示されてますね。
pip show ライブラリ名
でライブラリの格納場所が確認できます。筆者のマシンのnumpyで実行したところ以下のようになりました。
PS D:\> pip show numpy
Name: numpy
Version: 1.18.0
Summary: NumPy is the fundamental package for array computing with Python.
Home-page: https://www.numpy.org
Author: Travis E. Oliphant et al.
Author-email: None
License: BSD
Location: c:\users\etooy\appdata\local\programs\python\python39\lib\site-packages
Requires:
Required-by: pandas, opencv-python, matplotlib, camelot-py
この表示のLocationがライブラリの実体ファイルの格納場所です。