FE EXAM

ライブラリ(再利用できる部品集)

再利用できる機能(関数やクラス)をまとめた部品集。

DIAGRAM
自作プログラム
ライブラリ(部品)
自作プログラム必要な機能をライブラリから呼び出す数学ライブラリsin / cos / sqrt日付ライブラリ日数計算 / 書式変換通信ライブラリHTTP通信 / JSON解析呼び出す(call)制御は自分のプログラム側
解説

📌
ライブラリとは

よく使う機能を「部品」として再利用自作プログラム部品1部品2部品3

ライブラリとは、よく使う機能(関数やクラス)を部品としてまとめ、いろいろなプログラムから再利用できるようにしたものです。関数とは「ある処理に名前を付けて呼び出せるようにしたかたまり」、クラスとは「データと処理をひとまとめにした設計図」のことです。

例えば「平方根を計算する」「日付を整形する」「インターネット通信をする」といった処理は多くのプログラムで必要になります。これらを毎回ゼロから書くのは大変なので、すでに用意された部品を呼び出して使うわけです。

身近な例で考えると、料理の市販ソースに似ています。出汁やソースを毎回一から作らなくても、できあいの製品を使えば短時間でおいしい料理が作れます。ライブラリも同じで、完成した部品を組み合わせることで開発を速く・確実にできます。

📌
静的/動的の違い

静的:ビルド時に同梱実行ファイル部品が中に入る動的:実行時に共有実行ファイル部品外部の部品を読み込む

ライブラリの取り込み方には大きく2種類あります。ここでビルドとは「書いたコードを実行できるファイルに変換する作業」のことです。
静的ライブラリ:ビルド時に部品を実行ファイルの中に組み込む方式
動的ライブラリ:実行時に部品を外部から読み込み、複数のプログラムで共有する方式

静的は1つのファイルで完結するため配布が簡単ですが、同じ部品が複数のプログラムに重複し、ファイルが大きくなります。動的は部品を1つだけ置いて使い回せるためメモリやディスクを節約できますが、その部品ファイルが無いと動かない、という弱点もあります。

📌
フレームワークとの違い

ライブラリ自分部品呼ぶフレームワーク(制御の反転)フレームワーク自分のコード呼ばれる

ライブラリとよく似た言葉にフレームワーク(=アプリ開発の土台となる骨組み)があります。両者の最大の違いは「どちらが主導権(制御)を握るか」です。
ライブラリ:開発者が必要なときに呼び出して使う部品(主導権は自分側)
フレームワーク:決められた枠組みに沿ってコードを書く(主導権はフレームワーク側)

フレームワークでは、自分のコードを「いつ呼ぶか」を決めるのはフレームワーク側です。このように主導権が逆転する仕組みを制御の反転(IoC=Inversion of Control)と呼びます。

身近な例で考えると、ライブラリは自分で具材を選んで作る手作り料理、フレームワークは穴を埋めるだけのレシピキットのようなものです。後者は決められた手順に従う代わりに、土台ができている分すばやく完成させられます。

📌
なぜライブラリを使うのか

毎回自前で書くと…時間がかかるバグが混入しやすい同じ処理を重複して書くライブラリを使うと…すぐに動く信頼性が高い本来の目的に集中できる

ライブラリを使う理由は「車輪の再発明をしないため」です。車輪の再発明とは、すでに誰かが作って使えるものを、また一から作り直すことのたとえです。

たとえば「日付を〇〇年〇〇月〇〇日の形式に変換する」処理は、どのアプリでも必要になりえます。これを毎回ゼロから書くと、時間がかかるうえ、バグ(不具合)が入り込むリスクがあります。世界中の人が使い、バグを修正してきたライブラリを呼び出すほうが、はるかに速くて安心です。
開発速度が上がる:すでに完成した部品を組み合わせるだけでよい
信頼性が高い:多くの人が使い、長期間かけてバグが直されている
本来の目的に集中できる:「アプリ独自の機能を作る」ことだけに時間を使える

これがライブラリを使う最大の理由です。「道具(ライブラリ)を賢く使う」こと自体が、エンジニアの大切なスキルの一つです。

📌
よく使われるライブラリの例

用途ごとに専用ライブラリがある数学計算日付操作HTTP通信JSON処理画像処理DB操作

ライブラリは目的ごとに無数に存在します。プログラミング言語ごとに代表的なものがあり、自分で探して組み合わせて使います。用途の例をいくつか挙げます。

用途ライブラリ名の例一言メモ
数学計算NumPy(Python)行列計算などを高速に処理
日付・時刻Day.js(JavaScript)日付の表示形式変換や差の計算
HTTP通信Axios(JavaScript)サーバにデータを送受信する
グラフ描画D3.js(JavaScript)データを図やグラフで見せる
DB操作JDBC(Java)データベースに接続して読み書き

これらはほんの一例です。使いたい機能のライブラリをインターネットで探して取り込む(=インストールする)のが現代の開発スタイルです。自分でゼロから書くより、「適切な部品を見つけて使いこなす力」がとても大切になります。

📝
練習問題

Q1. ライブラリの説明として最も適切なものはどれか。

Q2. 静的ライブラリと動的ライブラリの違いの説明として正しいものはどれか。

Q3. ライブラリとフレームワークの違いの説明として最も適切なものはどれか。

関連コンテンツ