「PythonでJSONを扱いたい」
「Pythonの処理を高速化したい」
このような場合には、simplejsonがオススメです。
この記事では、JSONを高速に処理できるsimplejsonについて解説しています。
本記事の内容
- simplejsonとは?
- simplejsonのシステム要件
- simplejsonのインストール
- simplejsonの動作確認
それでは、上記に沿って解説していきます。
simplejsonとは?
simplejsonは、JSONエンコーダおよびデコーダです。
オープンソースのPythonライブラリとして公開されています。
ただ、Pythonには標準ライブラリとしてjsonモジュールが用意されています。
そして、jsonモジュールはJSONエンコーダおよびデコーダの機能を備えています。
そのため、simplejsonは必ずしもインストールする必要はないかもしれません。
しかし、simplejsonはjsonモジュールに比べて次の点で優れています。
- シンプル
- 高速
- 完全
- 正しい
- 拡張可能
とにかく、simplejsonを使わないと損だということです。
それに、simplejsonはjsonモジュールと同じように利用できます。
本当に全く同じように使えます。
このことは、後述の「simplejsonの動作確認」で説明しています。
以上、simplejsonについて説明しました。
次は、simplejsonのシステム要件を説明します。
simplejsonのシステム要件
現時点(2022年6月末)でのsimplejsonの最新バージョンは、3.17.6となります。
この最新バージョンは、2021年11月17日にリリースされています。
サポートOSに関しては、以下を含むクロスプラットフォーム対応です。
- Windows
- macOS
- Linux
サポート対象となるPythonのバージョンは、以下となっています。
何でもOKということですね。
でも、Python公式開発サイクルに従ったバージョンを利用しましょう。
バージョン | リリース日 | サポート期限 |
3.6 | 2016年12月23日 | 2021年12月23日 |
3.7 | 2018年6月27日 | 2023年6月27日 |
3.8 | 2019年10月14日 | 2024年10月 |
3.9 | 2020年10月5日 | 2025年10月 |
3.10 | 2021年10月4日 | 2026年10月 |
つまり、Python 3.7以降を利用しましょうということです。
もう、Python 3.6もサポート期限が切れていますからね。
まとめると、simplejsonはどんな環境でも動くと言えます。
OS、Pythonのバージョンを問わずに動きます。
以上、simplejsonのシステム要件を説明しました。
次は、simplejsonのインストールを説明します。
simplejsonのインストール
検証は、次のバージョンのPythonで行います。
$ python -V Python 3.10.2
まずは、現状のインストール済みパッケージを確認しておきます。
$ pip list Package Version ---------- ------- pip 22.1.2 setuptools 62.6.0 wheel 0.36.2
次にするべきことは、pipとsetuptoolsの更新です。
pipコマンドを使う場合、常に以下のコマンドを実行しておきましょう。
python -m pip install --upgrade pip setuptools
では、simplejsonのインストールです。
simplejsonのインストールは、以下のコマンドとなります。
pip install simplejson
simplejsonのインストールは、すぐに終わります。
終了したら、どんなパッケージがインストールされたのかを確認します。
$ pip list Package Version ---------- ------- pip 22.1.2 setuptools 62.6.0 simplejson 3.17.6 wheel 0.36.2
simplejsonには、依存するパッケージが存在していません。
そのため、既存環境への導入が容易に可能です。
以上、simplejsonのインストールを説明しました。
次は、simplejsonの動作確認を説明します。
simplejsonの動作確認
simplejsonの動作確認は、以下の処理を行います。
- load()によるJSONファイルの読み込み
- loads()によるJSON文字列の読み込み
全く同じことを次の記事において、検証しています。
上記記事は、標準ライブラリのjsonモジュールを用いた場合の検証です。
同じコーディングで同じことを検証できます。
もちろん、import文でモジュールを読み込む箇所は異なります。
でも、違いは本当にそこだけです。
それぞれの処理を下記で説明します。
load()によるJSONファイルの読み込み
まず、読み込みためのJSONファイルを用意します。
sample.json
{ "id" : 1, "name" : "ユーザー"}
このJSONファイルを読み込むコードは、以下。
import simplejson as json with open("sample.json", mode='r') as f: dict_json = json.load(f) print(type(dict_json)) print(dict_json)
上記を実行した結果、以下が表示されます。
<class 'dict'> {'id': 1, 'name': 'ユーザー'}
loads()によるJSON文字列の読み込み
こちらは、ファイルではなく文字列を読み込みます。
JSON文字列を読み込むコードは、以下。
import simplejson as json json_str = """{ "id" : 2, "name" : "ゆーざー"}""" dict_json = json.loads(json_str) print(type(dict_json)) print(dict_json)
上記を実行した結果、以下が表示されます。
<class 'dict'> {'id': 2, 'name': 'ゆーざー'}
まとめ
両方の処理において、コードと結果ともにjsonモジュールを利用した場合と同じです。
詳細については、上記で挙げた記事をご覧ください。
これは、置き換えが簡単にできることを示しています。
import json
↓
import simplejson as json
このようにコードを書き換えるだけです。
そうすれば、処理を高速化できます。
少ない労力でPythonを簡単に高速化できるということです。
以上、simplejsonの動作確認を説明しました。