4.

JavaScript ライブラリ完全ガイド — jQuery/Lodash/Axios/Three.js から選定基準まで

編集
この記事の要点
  • ライブラリは特定機能を提供する部品。フレームワークと違い「呼び出す側が主導権を持つ」
  • 定番: Lodash (ユーティリティ) / Axios (HTTP) / Day.js (日付) / Three.js (3D)
  • 可視化: Chart.js (簡単) / D3.js (低レベル / 自由度高) / ECharts
  • UI 部品: Swiper (スライダー) / Tippy.js (ツールチップ) / FullCalendar
  • 導入は npm/yarn/pnpm または CDN。Bundle サイズ削減には Tree Shaking 対応版を選ぶ

ライブラリとは

JavaScript ライブラリとは、特定の目的に絞った機能をひとまとめにした再利用可能なコード群です。呼び出す側 (アプリケーション) が主導権を持ち、必要なタイミングで関数やクラスを呼び出します。

これに対して フレームワークは「制御の反転 (IoC)」が起こり、フレームワーク側が主導でアプリケーションのコード (コンポーネント / ルーティングハンドラなど) を呼び出します。

ライブラリとフレームワークの違い

観点ライブラリフレームワーク
主導権アプリケーション側フレームワーク側 (IoC)
導入必要な部分にだけ使うプロジェクト全体の設計を規定
Lodash, Axios, Day.js, Three.jsReact, Vue, Angular, Next.js
学習コスト低い (API のみ)高い (アーキ全体)
差し替え容易 (Axios → fetch など)困難 (React → Vue は実質書き直し)

定番ライブラリ早見表

カテゴリライブラリ主な用途備考
DOM 操作jQuery$.ajax / $(selector) / アニメーション歴史的。新規採用は非推奨
ユーティリティLodashdebounce / cloneDeep / groupByES2015+ で代替可も依然強力
HTTP クライアントAxiosXHR ラッパ、インターセプタfetch API でも代替可
日付Day.js / date-fnsformat / parse / diffMoment.js は非推奨
3DThree.jsWebGL の高水準ラッパゲーム / 可視化
グラフChart.js / D3.js棒 / 折れ線 / 散布図D3 は低レベル自由度高
スライダーSwiperカルーセル / スワイプ UIモバイル特化
ツールチップTippy.js / Popper.jsポップオーバ / メニュー位置調整Tippy は Popper ベース
バリデーションZod / Yup型安全なフォーム検証TypeScript 推し
状態管理Zustand / JotaiReact 用軽量 storeRedux 代替

導入方法

npm / yarn / pnpm でインストール

# npm
npm install lodash axios dayjs

# yarn
yarn add lodash axios dayjs

# pnpm (推奨: 高速 / ディスク節約)
pnpm add lodash axios dayjs

# 開発専用 (型定義など)
npm install -D @types/lodash

ES Modules で import

// ESM (推奨)
import axios from 'axios';
import dayjs from 'dayjs';
import { debounce, cloneDeep } from 'lodash-es';  // ★ Tree Shaking 対応

// 個別 import (Bundle サイズ削減)
import debounce from 'lodash/debounce';

// CommonJS (Node の旧形式)
const axios = require('axios');
const { debounce } = require('lodash');

CDN 利用 (ビルド環境なしで使える)

<!-- Swiper の例 -->
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/swiper@11/swiper-bundle.min.css">
<script src="https://cdn.jsdelivr.net/npm/swiper@11/swiper-bundle.min.js"></script>
<script>
  const swiper = new Swiper('.swiper', { loop: true });
</script>

<!-- ES Modules CDN (esm.sh / unpkg) -->
<script type="module">
  import dayjs from 'https://esm.sh/dayjs@1';
  console.log(dayjs().format('YYYY-MM-DD'));
</script>

Tree Shaking でバンドルサイズ削減

未使用コードを除外する仕組み。ESM 形式のライブラリでのみ働きます:

// ❌ NG: ライブラリ全体を取り込む (Lodash 約 70KB)
import _ from 'lodash';
_.debounce(fn, 300);

// ✅ Tree Shaking 対応 (lodash-es は ESM 出力)
import { debounce } from 'lodash-es';

// ✅ 個別 import (CommonJS でも有効)
import debounce from 'lodash/debounce';

// 計測: 各ライブラリのサイズを Bundlephobia で確認
// https://bundlephobia.com/package/lodash

ライブラリ選定の基準

チェック項目確認方法
メンテナンス継続npm の最終リリース日 / GitHub の commit 頻度
週間ダウンロード数npmjs.com / npmtrends.com
バンドルサイズbundlephobia.com
Tree Shaking 対応package.json に "sideEffects": false
TypeScript 型定義パッケージに .d.ts 同梱 or @types/xxx あり
ライセンスMIT / Apache-2.0 推奨。GPL は商用注意
セキュリティ脆弱性npm audit / Snyk / Socket

jQuery は今でも使うべきか?

結論: 新規プロジェクトでは不要。理由:

  • DOM 操作 → document.querySelectorAll() で十分
  • Ajax → fetch() / axios
  • アニメーション → CSS Transitions / Web Animations API
  • イベント → addEventListener()

ただし WordPress / 古い管理画面では依然主役なので、保守要員としては学んで損はありません。

FAQ

Q: ライブラリとフレームワーク、どちらを選ぶべき?
A: 小規模 / 部分導入 → ライブラリ。アプリ全体を作る → フレームワーク。

Q: ライブラリが多すぎて選べない
A: 「週間ダウンロード数」「最終更新日」「TypeScript サポート」の 3 軸で絞ると失敗しにくい。npmtrends.com で複数比較が便利です。

Q: CDN と npm、どちらで入れるべき?
A: 本番ビルドする SPA → npm。プロトタイプ / 小さなページ → CDN。ただし CDN はサブリソース完全性 (SRI) ハッシュを付けてセキュリティを担保しましょう。

編集
Post Share
子ページ
  1. jQuery
同階層のページ
  1. 環境構築
  2. 文法
  3. プラットフォーム
  4. ライブラリ
  5. フレームワーク
  6. テンプレートエンジン
  7. ビルトインオブジェクト
  8. エラー一覧
  9. よくある事例

最近更新/作成されたページ