この記事では、ダウンロード数トップ10のPythonライブラリの使い方をご紹介します。

また、自作ライブラリについてその目的と作成方法についても簡単に紹介。

役に立つライブラリ「厳選レシピ」についてもチェックしていきましょう。

ジャンルごとに分けて紹介しています。


トップ10ライブラリ:外部ライブラリ追加の為の必須ツール

setuptools

Pythonには豊富な標準ライブラリが備わっています。

プログラムの作成では、機能はなるべく自分で作らずに標準ライブラリの活用を検討しましょう。

基本的な機能は標準ライブラリにありますが、ない場合には外部(サードパーティー)から探します。

Pythonには、PyPI(Python Package Index)と呼ばれるサードパーティライブラリを管理している場所が存在。

2019年4月時点で約17.5万のライブラリパッケージが登録されているようです。

setuptoolsは、Anacondaをインストールすると一緒にインストールされます。

ライブラリの追加・削除には必須な機能です。


pip

pipはsetuptoolsと同じく新規ライブラリの追加・削除に利用されます。

setuptoolsと比較するとpipは使い勝手が良く、pipはsetuptoolsを使うことでインストールできます。

pipで一番重要な機能は、ファイルに必要なパッケージのリストとバージョンを書けば簡単にパッケージ管理を行える点です。

この機能はPythonを他のコンピュータや仮想環境に用意するときに効果を発揮します。


トップ10ライブラリ:外部システム連携・バージョンアップをカバーするライブラリ

simplejson

simplejsonは、Pythonに標準搭載されているjsonライブラリより高速でシンプルなライブラリです。

プログラミング初心者にとってjsonファイルは取っつきにくいかもしれません。

simplejsonを理解していただく為に、jsonの機能をまずご説明します。

JsonはJavaScript Object Notationという名前で、JavaScriptで構造化されたデータを表現する為のフォーマットです。

現在は、Web APIの入出力フォーマットとして多く利用されています。

また、データベース上にJsonフォーマットでデータ構造を保存する場合にも利用されています。

simplejsonとjsonでは使える関数が全く同じ。

異なる点は、simplejsonの方が頻繁にアップデートされている点です。

simplejsonは、関数のオプション引数が追加され、パフォーマンスが改善されています。

実行速度が気になるシチュエーションや新しい機能を利用したい場合などには、simplejsonの導入がオススメです。


botocore

botocoreは、AWS(Amazon Web Services) 上でPythonを利用する時に必要となるパッケージです。

AWS向けのローレベルインターフェースで、AWS CLIやboto3で現在使われています。

ダウンロードおよび設定用の単一のツールのみを使用しましょう。

コマンドラインから複数のAWSサービスを制御し、スクリプトを使用してこれらを自動化可能。

ローレベルインターフェイスによって、ハードウェアのレイヤーにアクセスして高度で複雑なAPIの作成を実現します。


requests

requestsは、PythonのHTTP通信ライブラリです。

requestsを使うとWebサイトの情報取得や画像の収集ができます。

GET、POSTといったHTTPのメソッドごとに対応インターフェースが用意されており、直感的に理解ができるでしょう。

利用者にとって分かりやすいライブラリです。

また、Pythonには標準でurllibというライブラリが存在します。

requestsはurllibよりもシンプルに、分かりやすくプログラムを作成できます。


six

sixはPython 2および3の互換性を担保するライブラリです。

両方のPythonバージョンで互換性のあるPythonコードを作成することを目的としています。

Pythonバージョン間の違いを平滑化するユーティリティ関数を提供。

sixはたった一つのPythonファイルだけで構成されています。

つまり、プロジェクトへコピーして簡単に利用できるということです。

ちなみに「six」という名前は、2*3が6であることから来ています。


トップ10ライブラリ:容易な日付コントロールを実現するライブラリ

dateutil

dateutilは標準ライブラリのdatetimeモジュールに対して、強力な拡張機能を提供します。

文字列形式の日付構文の解析ができ、parserモジュールがさまざまな日付文字列の解析をします。

また、相対的な日付の差の計算も可能。

relatovedaltaモジュールが柔軟な日付計算をします。

現在日時、現在日の取得、数か月後の日時取得、2つの日付指定からの差の取得などです。

そして、繰り返しルールが柔軟という特徴も。

rruleモジュールがカレンダーアプリケーションで使われる、繰り返し指定を実現します。


pytz

pytzによってはOlson tzデータベースをPythonで利用可能です。

このライブラリにより、正確にクロスプラットフォームのタイムゾーンを計算できます。

また、あいまいな時間の問題も解決できるでしょう。


スクリプト言語の操作を容易にするpyyaml

pyyamlは、YAMLフォーマットのデータを取り扱う為の機能を提供します。

YAMLはスクリプト言語と人間の読みやすさと相互作用のために設計されたデータのシリアル化形式です。

pyyamlはPython用のYAMLパーサー。

データ構造を簡単な記述で表現できることから広く使われています。

pyyamlを使うことで、アプリケーションの設定ファイルをYAMLフォーマットで記述し、利用できます。


Pythonとの簡易連携を実現するlxml

lxmlはPythonで使えるXMLやHTMLファイルの処理用ライブラリです。

機能が充実している上にとても使いやすいので人気があります。

Lxmlは処理が高速なので、巨大ファイルや大量ファイルを扱う事ができます。

また、XMLの挙動を細かく制御でき、構文が不完全なXML修正を実行するのです。

同じく、HTMLに対してlxml.etree.HTMLPaserクラスが用意されており、htmlモジュールを使いHTMLのパースが可能です。

更にHTMLの書き換えも実施できます。


ライブラリの自作方法

自作モジュール準備

まずは作業をするための自作モジュールのディレクトリを作り、その中に移動します。

ディレクトリはわかりやすいようモジュール名と同じにするのが良いでしょう。

このディレクトリ内に、自作モジュールのためのファイルを用意します。

そして、ディレクトリ内に、モジュール名と同じディレクトリを作成します。


Pythonファイル作成

pipがこのモジュールを認識できるよう、Pythonファイルを作ります。


自作モジュールのインストール

ちなみに、作成した自作モジュールはPythonの公開リポジトリであるPypiに公開することも可能です。

Pypiに公開されたモジュールは世界中の開発者が利用できるようになります。

もしくは自作モジュールを一般公開にはせず、自分のGitリポジトリに置く事も可能です。


自作モジュールの呼び出し準備

自作モジュール呼び出しPythonコードを用意します。

自作モジュールの作業ディレクトリとは別の場所に、呼び出し側のコードを置くディレクトリを作りましょう。

そして中に呼び出しコードを置いておきます。

ローカルファイルシステムから、自作モジュールをインストールしましょう。


自作ライブラリを作ることによって得られるメリット

自作ライブラリを作ることで、使いまわしが可能です。

当たり前ですが、一度作った機能を、再び作る手間が省けます

また、結果的に作業時間の短縮にもつながります。

そして、ライブラリを公開すればフィードバックがもらえるでしょう。

他の人もそのコードを参照できます。使ってくれた人が、バグ報告や、機能追加などの連絡があります。


厳選レシピについて紹介:文字ハンドリングに効果を発揮

モジュールについては、サードパーティー提供のものだけではなく、当初からインストールされているものも含みます。

8つのモジュールをご紹介します。


unicodedata

unicodedataはUnicodeデータベースへのアクセス機能を提供します。

unicodedataはPythonに標準で付属するため、別途のインストールは不要です。

文字が半角か全角か調べることができます。

また、数値文字の属性取得も可能。

文字が数字の場合、その属性(decimal・digit・numeric)を調べることができます。

絵文字の名前を指定して、絵文字を取得することも可能です。

そして、文字列の正規化もできます。

半角カタカナと全角カタカナが混在している文章をどちらかに統一できるので便利です。


htmlentitydefs

htmlentitydefsはunicodedataと合わせて使うと効果を発揮します。

このモジュールはHTMLの実体文字参照(character entity reference)に関する辞書を提供します。

コードポイントから名前を取得、名前からコードポイントの取得ができます。


テストの効率向上に間違いなしなpandas

pandasは、データの前処理を行うライブラリです。このライブラリでは多様な分析を行うことが可能です。

Excelで行う行列を扱うことができます。

pandasでは、データの入力、データの並び替え、データの修正、CSVのエクスポート、簡易的な描画が可能です。

Excelでも同様の処理が可能です。

しかし、データ量が多いときや外部サービスとのデータ連携数が多い場合、複数のデータセットを扱う際はpandasを利用すると効率よく実行できます。


レスポンスが要求される並列処理に効果を発揮するmultiprocessing

プログラムの実行を高速化する為に並列処理が使われます。Multiprocessingは並列処理を可能とします。

手順を以下に示します。

  • プロセス生成
  • プロセス間でオブジェクトの交換
  • プロセス間での同期
  • 同時実行するプロセス数の制御

まずプロセスオブジェクトを作り、子プロセスを生成できます。

そして、プロセス間通信です。

通信のためにQueueとPipeの2つの手段が用意されています。

プロセス間での同期では複数プロセス実行の際にロックをかける事ができ、出力の混在を防ぐのです。

同時実行するプロセス数の制御では、Poolクラスを利用して使用プロセスの上限を設定できます。

上限値以上のプロセスがある場合、実行プロセスが終了次第、他のプロセスが実行されます。


キレイな印刷を楽々実現するpprint

Python標準のpprintモジュールを使用すると、以下のようにデータ構造を見やすい形式で出力可能です。

複数行で出力されている内容を1行でオブジェクトの内容が表示されます。

ディクショナリ要素がキー名でソートされ、長すぎる行が改行されて出力されます。

一方、出力する内容が短ければ改行は入りません。

indentオプションを使うと改行時のインデント幅を、sort_dictsオプションを使うとディクショナリをソートして出力制御ができます。

オブジェクトの整形結果を文字列として取得する事も可能です。

印刷する際に視覚的に見やすいものとするために活用できる、身近で便利なライブラリだといえるでしょう。


ライブラリを活用して賢く快適な開発をしよう

今回の記事では、Pythonのライブラリにフォーカスを当ててきました。

Pythonには、人気なものから便利なものまで様々なライブラリがリリースされています。

上手く活用すれば、圧倒的に効率良く開発をすることができるでしょう。

ぜひ、様々なライブラリを探し、試し、より快適に開発を進めてください。

開発期間の短縮や効率を上げることで、より良い成果物を作成することができるはずです。