たとえるなら
DIYで使う既製品のパーツや工具箱です。棚を作るとき、ネジや蝶番(ちょうつがい)を一から自分で作る人はいませんよね。売っている部品を組み合わせれば、本来やりたかった「棚のデザイン」に集中できます。
もう少しくわしく
ライブラリ(library)は「図書館」の意味のとおり、よく使う機能をいつでも借りられるように集めた部品集です。「グラフを描く」「日付を計算する」「画像を縮小する」といった、多くの開発者が必要とする処理は、すでに誰かが部品として作って公開しています。自分のプログラムからその部品を呼び出せば、数行の記述で高度な機能を使えます。
現代の開発は、この部品の組み合わせで成り立っています。ひとつのサービスが数十から数百のライブラリを使っていることも珍しくありません。部品はパッケージ管理と呼ばれる仕組みでまとめて取り寄せ、どの部品のどの版を使っているかを一覧のファイルに記録します。世界中の開発者が部品を公開し合う文化(オープンソース)のおかげで、少人数でも高機能なサービスを作れます。
混同されやすいのがフレームワークとAPIです。ライブラリは必要なときに自分から呼び出す部品で、主導権は書く側にあります。フレームワークは逆に、用意された枠組みへ自分のコードを差し込む形になり、開発の進め方まで決まります。APIは呼び出し方の取り決めを指す言葉で、ライブラリが「部品そのもの」、APIが「その部品の使い方の窓口」という関係です。
現場では、新しい部品を入れるときに一声かけるのがふつうです。確かめるのは、使っている人が多いか、更新が続いているか、利用条件(ライセンス)が自社の使い方に合うか。入れるのは一瞬でも、後から外すのは大変なので、この確認は省きません。社内に前例があるかを先に調べると、同じ用途の部品が二つ混在する事態も避けられます。導入後は、新しい版が出たときにまとめて更新する作業が定期的に発生し、当番を決めている現場もあります。
落とし穴の代表は、数行で済む処理のために大きな部品を入れてしまうことです。管理する対象が増え、表示も重くなります。逆に、定番の部品があるのに自作して、抜け漏れのある実装を抱えるのもよくある失敗です。そして更新の放置。借りている部品にセキュリティ上の欠陥が見つかれば、それを使っているサービス全部が影響を受けます。
働きはじめたばかりの人は、自分で作る前に「定番の部品はありませんか」と聞く癖をつけてください。車輪の再発明をしない、が現場の合言葉です。一方で、勝手に部品を追加するのは避け、必ず相談してから入れます。何をしてくれる部品なのかを一文で言えるようになってから使うと、調べ方そのものも身につきます。エンジニアではない立場の人は、「ライブラリの更新作業」と言われたら、機能は増えないが放置できない保守作業だと受け取ってください。
無料で公開されている部品が多いぶん、利用条件(ライセンス)の確認は使う側の責任になります。商用利用の可否、表示義務、改変したときの公開義務など、条件は部品ごとに違います。判断に迷うときは、上長や法務に相談するのが安全です。また、無料の部品を手入れしているのはごく少数の開発者である場合も多く、使う側もその前提を知っておく意味があります。
現場での使われ方
「それ、いいライブラリがあるから自作しなくていいですよ」
その機能はすでに公開されている部品で実現できるので、ゼロから作る必要はないという助言です。「車輪の再発明をしない」が現場の合言葉で、まず探すのが先になります。
「ライブラリのバージョンを上げておいてください」
使っている部品を新しい版に更新してほしいという依頼です。不具合の修正やセキュリティ対策のために定期的に必要で、機能は増えないが後回しにできない作業です。
「そのライブラリ、ライセンスを確認してから入れましょう」
無料で使えるように見えても利用条件があるため、商用利用の可否などを調べてから採用したいという慎重な判断です。条件は部品ごとに違うので、毎回の確認が必要です。
「その部品、もう更新が止まっているみたいです」
作者が手入れをやめた部品なので、不具合や弱点が見つかっても直らない恐れがあるという指摘です。採用を見直すか、別の部品に乗り換えるかを考える材料になります。
よくある質問
ライブラリは無料で使えるのですか?
多くは無料で公開されていますが、それぞれに利用条件(ライセンス)が定められています。商用利用の可否や表示義務などの条件を確認して使うのがルールです。判断に迷うときは自分で決めず、上長や法務に相談するのがいちばん安全です。無料と書かれていても、条件なしという意味ではありません。
ライブラリとフレームワークの違いは何ですか?
ライブラリは必要なときに自分から呼び出して使う部品、フレームワークはその上に乗って開発する土台です。「呼び出すのがライブラリ、呼び出されるのがフレームワーク」と言われるように、主導権がどちら側にあるかが違います。土台は開発の進め方まで決めます。
ライブラリとAPIはどう違うのですか?
ライブラリは部品そのもの、APIはその部品や外部のサービスを呼び出すための取り決めを指します。ライブラリを使うときも、用意されたAPIに沿って呼び出すことになります。部品と、その使い方の窓口という関係だと考えるとわかりやすく、どちらの言葉が出てきても混乱しなくなります。
なぜライブラリを更新しないといけないのですか?
借りている部品に不具合やセキュリティ上の欠陥が見つかることがあり、放置すると自分のサービスがそのまま危険を抱えることになるためです。後回しにするほど新しい版との差が開き、まとめて上げるのが難しくなるので、少しずつ定期的に進めるのが基本です。担当や時期を決めている現場もあります。
ライブラリに頼ると実力が付かないのではないですか?
むしろ、部品をうまく選んで組み合わせる力そのものが現場では評価されます。すべて自作すると時間が足りず、品質も安定しません。中の仕組みを学びたいときは、仕事とは別に自分で小さく作ってみると、部品の中身と使い方の両方が理解でき、選ぶときの目も養われます。