3秒でわかる
よく使う処理をまとめて再利用できるようにした部品の集まり。呼び出す側が主導権を持ったまま機能だけ borrow できます。
もう少し詳しく
どういうものか
ライブラリは、他の誰かが書いた処理を、自分のプログラムから呼んで使える形にまとめたものです。日付の計算、HTTP 通信、グラフ描画といった、多くの人が同じように必要とする処理が入っています。
import requests
res = requests.get("https://api.example.com/items")
print(res.status_code, res.json())この 3 行の裏側には、接続、リトライ、文字コードの判定、JSON の解釈といった処理が入っています。自分で書けば数百行になる部分を、呼び出すだけで済ませています。
なぜ必要か
書く量が減ることより、間違いが減ることのほうが効きます。通信のタイムアウト処理や日付のうるう年の扱いは、自作すると必ずどこかで抜けます。多くの人が使って直してきたコードを使うほうが、結果として安全です。
具体例
言語ごとに入手方法が決まっています。
| 言語 | 導入コマンド | 一覧が載る場所 |
|---|---|---|
| Python | pip install requests | PyPI |
| JavaScript | npm install axios | npm |
| Java | pom.xml に依存を書く | Maven Central |
つまずきやすいところ
ライブラリを入れれば入れるほど、更新の手間と壊れる可能性が増えます。3 行で済む処理のために依存を 1 つ増やすかどうかは、毎回考える価値があります。
選ぶ基準も要ります。最終更新が何年も前のものや、利用者が極端に少ないものは、問題が起きたときに情報が見つかりません。GitHub の更新日、Issue が放置されていないか、ドキュメントが整っているかを見ます。ライセンスの確認も、仕事で使うなら欠かせません。
バージョンの固定も忘れがちです。入れた日によって別のバージョンが入ると、動いていたコードが半年後に動かなくなります。
似た用語との違い
| ライブラリ | フレームワーク | |
|---|---|---|
| 呼ぶ側 | 自分のコードが呼ぶ | フレームワークが自分のコードを呼ぶ |
| 構成の自由 | 自分で決める | 決められた形に従う |
| 例 | requests、lodash | Django、React、Spring Boot |
主導権がどちらにあるかが分かれ目です。必要なときだけ自分から呼ぶのがライブラリ、決められた土台の上に自分の処理をはめ込む形になるのがフレームワークです。
覚え方
道具箱から工具を取り出して使うのがライブラリ、すでに組み上がった作業台に自分の部品を差し込むのがフレームワークです。
