「CSSを書かずにレスポンシブなWebサイトを作る」——それを可能にしたのがBootstrapだ。2010年にTwitterが開発し、世界中のWeb開発現場で使われ続けるCSSフレームワークの全貌を解説する。Tailwind CSSとの使い分け、Bootstrap 5の新機能詳細、ダークモードの実装、よくあるアンチパターンまで収録する。
📌 この記事でわかること
・Bootstrap 5でjQueryが不要になった理由と4との具体的な違い
・Tailwind CSS vs Bootstrap——2026年の現場でどちらを選ぶかの判断フロー
・コンテナの3種類の使い分け、ダークモードの実装方法
・スペーシングユーティリティ(m-・p-)の完全解説
・よくあるアンチパターンと正しい使い方
1. Bootstrapとは——誕生の背景から理解する
Bootstrap(ブートストラップ)は、HTML・CSS・JavaScriptで構成されたオープンソースのCSSフレームワークだ。ボタン・ナビゲーションバー・フォーム・テーブルなどのUIコンポーネントがあらかじめ用意されており、クラス名をHTMLタグに追加するだけでデザインが完成する。
2010年、TwitterのエンジニアであるMark OttoとJacob Thorntonが、Twitterの社内ツールの開発効率を上げるために作った。バラバラだったフロントエンドのコードを統一するために生まれた——これがBootstrapの原点だ。2011年にGitHubでオープンソース化され、現在は独立したコミュニティベースで開発・メンテナンスが続けられている。
現行バージョンはBootstrap 5(最新マイナーは2025年8月リリースのv5.3.8)。2026年3月時点では次期メジャーバージョンBootstrap 6の開発も始まっているが、現時点では5系を学んでおけば問題ない。
2. Bootstrap 5の主要な新機能——4との決定的な違い
Bootstrap 4から5への移行は「バージョンアップ」というより「設計思想の転換」に近い。古い記事や教材のコードが動かないのは、この違いを知らないからであることが多い。
| 変更点 | Bootstrap 4 | Bootstrap 5(現行) |
|---|---|---|
| jQueryへの依存 | 必要(依存あり) | 不要(Vanilla JSに移行) |
| RTL(右→左言語)対応 | 非対応 | 標準対応 |
| CSS カスタムプロパティ | 一部 | 大幅に拡充 |
| ダークモード | 非対応 | 5.3以降で標準対応(data-bs-theme) |
| グリッドの列数 | 12列固定 | 12列固定+CSSグリッドオプション追加 |
| フォームのスタイル | 旧スタイル | 全面リデザイン。より一貫性が高い |
| インラインフォーム | form-inline(廃止済み) | row row-cols-lg-auto に変更 |
| ドロップダウン | Popper 1.x | Popper 2.xに移行 |
| XXLグリッドサイズ | なし | xxl(1400px以上)が追加 |
| カラーパレット | 旧パレット | 拡充されたカラーパレット+テキスト・背景・ボーダーの対応色追加 |
3. Bootstrapの特徴3つ
📱 レスポンシブWebデザインが標準搭載
Bootstrap最大の特徴。「モバイルファースト」の設計思想に基づいており、グリッドシステムを使うとPCでもスマートフォンでもタブレットでも崩れないレイアウトが実現できる。通常はデバイスごとに複数のCSSファイルを書くか複雑なmedia queryを書く必要があるが、Bootstrapならクラス名を追加するだけで自動的にレイアウトが切り替わる。
🧩 実用的なUIコンポーネントが揃っている
ボタン・フォーム・ナビゲーションバー・テーブル・モーダル・カード・アコーディオン・ドロップダウン・バッジ・プログレスバーなど、Webサイトでよく使うUI部品が一通り揃っている。デザイン知識がなくても、クラス名を追加するだけで一定以上の見栄えを確保できる。
👥 チーム開発でコードが統一される
同じクラス名ルールを使うため、チームメンバー全員が同じ書き方でコーディングできる。レビューがしやすく、新規メンバーが参加してもすぐにキャッチアップできる。デザインの「ちぐはぐ感」が出にくくなる。
⚡ 開発スピードが大幅に上がる
ゼロからCSSを書く場合に比べ、開発スピードが大幅に向上する。管理画面・コーポレートサイト・LP・プロトタイプなど「デザインの独自性よりスピードを優先する場面」で特に効果を発揮する。UI実装の時間が30〜50%削減されることも。
4. Bootstrapの種類
| 種類 | 概要 | 現在の状況 | 初心者の優先度 |
|---|---|---|---|
| Bootstrap本体 | 一般に「Bootstrap」といえばこれ。元はTwitterが開発したことから「Twitter Bootstrap」とも呼ばれたが現在は独立したOSS | 最新はv5.3.8。活発にメンテナンス中 | 最初に学ぶべきはこれだけ |
| Bootstrapテーマ・テンプレート | デザイン済みのテンプレートを適用する仕組み。bootswatchやStart Bootstrapで無料テーマを入手できる。かつての公式マーケットプレイスは2025年に閉鎖 | bootswatchが引き続き人気 | 本体を理解してから |
| ng-bootstrap | 「Angular」と組み合わせて使うライブラリ。AngularJSは2022年1月にサポート終了しており、現在は「ng-bootstrap」(Angular 2以降対応版)が主流 | Angularユーザー向け | Angularを使う場合のみ |
| WordPress向けBootstrapテーマ | WordPressと組み合わせるBootstrapテーマ。かつての「BootstrapWP」はほぼ更新停止。Bootstrap 5対応の「UnderStrap」などのスターターテーマが代替として人気 | UnderStrapが推奨 | WP制作をする場合のみ |
5. Bootstrap vs Tailwind CSS——2026年の使い分け判断
「BootstrapとTailwind CSSはどちらを学べばいい?」——これは2026年のフロントエンド学習で最もよく聞かれる質問だ。実務での判断基準を知っておくことは重要だ。
- デザイン済みコンポーネントをそのまま使える
- 「ボタン」「カード」「ナビバー」を素早く配置
- HTMLのクラス名だけで完結する
- CSSをほぼ書かずにサイトが完成
- バンドルサイズが大きめ(未使用CSSが含まれる)
- デフォルトのデザインに縛られる
- 低レベルのCSSクラスを組み合わせてデザインする
- 「flex」「gap-4」「bg-blue-500」などを直接記述
- 完全にオリジナルなデザインが作れる
- PurgeCSSで使用クラスのみを出力できる
- HTMLが長くなりやすい
- デザインの判断をすべて自分でする必要がある
| 場面・状況 | 推奨 | 理由 |
|---|---|---|
| 初心者がWeb開発を学び始める | Bootstrap | HTML・CSS基礎を学びながらデザインも完成する。成功体験を得やすい |
| 管理画面・社内ツールを素早く作る | Bootstrap | デザインの独自性より開発スピードを優先する場面に最適 |
| オリジナルデザインのサービスを作る | Tailwind CSS | Bootstrapのデフォルトデザインの「制限」を受けずに自由に設計できる |
| Next.js / Nuxt.js 等のモダンフレームワーク | Tailwind CSS | コンポーネント指向開発と相性が良い。shadcn/ui等のエコシステムが充実 |
| チームのCSSスキルにばらつきがある | Bootstrap | 同じクラス名ルールで統一されるため、コードレビューが楽 |
| デザイナーが作ったPixel完璧なデザインを実装 | Tailwind CSS | Bootstrapの既定スタイルを上書きするより自由度が高い |
| WordPressサイト制作 | Bootstrap | Bootstrap対応テーマが豊富で実績も多い |
6. メリット・デメリット
7. セットアップ方法(CDN・ダウンロード・npm)
Bootstrapの導入方法は3種類ある。初心者はCDN経由が最も手軽だ。
方法①:CDN経由(初心者推奨・最も手軽)
ファイルのダウンロード不要。HTMLにコードを数行追加するだけで完了する。
<link href=”https://cdn.jsdelivr.net/npm/bootstrap@5.3.8/dist/css/bootstrap.min.css”
rel=”stylesheet”
integrity=”sha384-64UC4BEhTGwk3eGpak…”
crossorigin=”anonymous”>
<!– bodyタグ閉じる直前にJSを読み込む –>
<script src=”https://cdn.jsdelivr.net/npm/bootstrap@5.3.8/dist/js/bootstrap.bundle.min.js”
integrity=”sha384-jdSIJTK9l6Xwxj3…”
crossorigin=”anonymous”></script>
方法②:公式サイトからダウンロード
インターネット接続がない環境や、ファイルを手元に管理したい場合に使う。getbootstrap.comから「Compiled CSS and JS」をダウンロードして解凍し、HTMLから相対パスで読み込む。
<link href=”css/bootstrap.min.css” rel=”stylesheet”>
<script src=”js/bootstrap.bundle.min.js”></script>
方法③:npmでインストール(Node.js環境)
ReactやVueなどのモダンなフレームワークと組み合わせる場合、またはWebpackやViteでビルドする場合に使う方法。未使用のCSSをPurge(削除)できるためファイルサイズを最小化できる。
npm install bootstrap
# yarnの場合
yarn add bootstrap
# JavaScriptファイルでインポート(例:main.js)
import ‘bootstrap/dist/css/bootstrap.min.css’
import ‘bootstrap’
最小限のHTMLテンプレート(スターター)
<html lang=”ja”>
<head>
<meta charset=”utf-8″>
<meta name=”viewport” content=”width=device-width, initial-scale=1″>
<link href=”https://cdn.jsdelivr.net/npm/bootstrap@5.3.8/dist/css/bootstrap.min.css” rel=”stylesheet”>
<title>Bootstrap 5 スターター</title>
</head>
<body>
<div class=”container”>
<h1>Hello, Bootstrap 5!</h1>
</div>
<script src=”https://cdn.jsdelivr.net/npm/bootstrap@5.3.8/dist/js/bootstrap.bundle.min.js”></script>
</body>
</html>
8. グリッドシステム——レスポンシブの核心
Bootstrapのグリッドシステムは「横幅を12列に分割して、各要素に何列分の幅を使うかをクラス名で指定する」仕組みだ。これがレスポンシブデザインの核心になる。
グリッドの基本ルール
<div class=”container”>
<!– ②rowで行を作る –>
<div class=”row”>
<!– ③col-{ブレークポイント}-{列数}で幅を指定 (合計12になるように) –>
<div class=”col-md-4″>左(4列分)</div>
<div class=”col-md-8″>右(8列分)</div>
</div>
</div>
ブレークポイント一覧
| クラス接頭辞 | 画面幅 | 対象デバイス | 使用例 |
|---|---|---|---|
| col-(なし) | 576px未満(全画面) | スマートフォン(縦) | col-12(常に全幅) |
| col-sm- | 576px以上 | スマートフォン(横) | col-sm-6(2列並び) |
| col-md- | 768px以上 | タブレット | col-md-4(3列並び) |
| col-lg- | 992px以上 | デスクトップ | col-lg-3(4列並び) |
| col-xl- | 1200px以上 | 大型デスクトップ | col-xl-2(6列並び) |
| col-xxl- | 1400px以上(Bootstrap 5新機能) | 超大型ディスプレイ | col-xxl-1(12列並び) |
実用的なグリッドの例(スマホ1列→タブレット2列→PC3列)
<div class=”row g-3″> <!– g-3はガター(列間の余白) –>
<div class=”col-12 col-md-6 col-lg-4″>カード①</div>
<div class=”col-12 col-md-6 col-lg-4″>カード②</div>
<div class=”col-12 col-md-6 col-lg-4″>カード③</div>
</div>
</div>
<!–
スマホ: 3枚を縦1列表示(col-12)
タブレット: 2列表示(col-md-6 = 12÷2)
PC: 3列表示(col-lg-4 = 12÷3)
–>
9. コンテナの種類と使い分け
多くの入門記事が「containerを使う」とだけ書いているが、実は3種類のコンテナがある。使い分けを知るとレイアウトの幅が広がる。
| クラス名 | 動作 | 最大幅 | 向いている場面 |
|---|---|---|---|
| container | 画面サイズに応じてステップ的に最大幅が変化する。左右に自動的に余白ができる | ブレークポイントごとに異なる(最大1320px) | 一般的なコンテンツ領域。ブログ記事・LPのメインコンテンツ |
| container-fluid | 常に親要素の100%幅になる。余白なし | 100%(画面端まで) | 全幅ヒーローエリア・ナビゲーションバー・フッター |
| container-{sm/md/lg/xl/xxl} | 指定したブレークポイント以下では100%幅、それ以上では固定幅になる | 指定サイズに応じて異なる | 特定のデバイス幅から余白を入れたい場合 |
<nav class=”navbar bg-dark container-fluid”>…</nav>
<!– メインコンテンツは中央寄せ・最大幅あり –>
<main class=”container py-5″>…</main>
<!– フッターは全幅 –>
<footer class=”container-fluid bg-dark text-white py-4″>…</footer>
10. スペーシングユーティリティ(m・p)——余白調整の完全解説
Bootstrapの余白調整は「m(margin)」と「p(padding)」のクラスで行う。これを覚えるだけでレイアウト調整がコードなしでできるようになる。
クラス名の構造
プロパティ:
- m — margin(外側の余白)
- p — padding(内側の余白)
方向(省略すると上下左右すべてに適用):
- t — top(上)/ b — bottom(下)/ s — start=left(左)/ e — end=right(右)
- x — 左右両方 / y — 上下両方
サイズ(0〜5 + auto):
- 0 — 0px / 1 — 4px / 2 — 8px / 3 — 16px / 4 — 24px / 5 — 48px / auto — 自動
<div class=”mt-3″>上に16pxの余白</div>
<div class=”mb-5″>下に48pxの余白</div>
<div class=”px-4″>左右に24pxのpadding</div>
<div class=”py-3″>上下に16pxのpadding</div>
<div class=”mx-auto”>左右のmarginをautoで中央揃え</div>
<div class=”m-0″>margin全方向を0に</div>
11. コンポーネント——よく使うものと実例コード
| カテゴリ | 主なコンポーネント |
|---|---|
| レイアウト系 | コンテナ(container・container-fluid)/グリッドシステム(col-)/スタック(vstack・hstack)/フロート(float-end等) |
| ナビゲーション系 | ナビゲーションバー(navbar)/ナビ・タブ(nav・nav-tabs)/パンくずリスト(breadcrumb)/ページネーション(pagination) |
| フォーム系 | 入力フォーム(form-control)/セレクトボックス(form-select)/チェックボックス(form-check)/バリデーションスタイル |
| インタラクション系 | モーダル(modal)/ドロップダウン(dropdown)/アコーディオン(accordion)/トースト(toast) |
| UI部品系 | ボタン(btn・btn-primary等)/カード(card)/バッジ(badge)/プログレスバー(progress) |
| 表示系 | テーブル(table・table-striped)/アラート(alert)/カルーセル(carousel)/スピナー(spinner) |
ボタン——最もよく使うコンポーネント
<button class=”btn btn-primary”>Primary</button>
<button class=”btn btn-secondary”>Secondary</button>
<button class=”btn btn-success”>Success</button>
<button class=”btn btn-danger”>Danger</button>
<button class=”btn btn-warning”>Warning</button>
<!– サイズ指定 –>
<button class=”btn btn-primary btn-lg”>大きいボタン</button>
<button class=”btn btn-primary btn-sm”>小さいボタン</button>
<!– アウトラインボタン(背景なし・枠線のみ) –>
<button class=”btn btn-outline-primary”>Outline</button>
カード——コンテンツを整理するのに便利
<img src=”…” class=”card-img-top” alt=”…”>
<div class=”card-body”>
<h5 class=”card-title”>カードのタイトル</h5>
<p class=”card-text”>カードの説明テキスト</p>
<a href=”#” class=”btn btn-primary”>詳しく見る</a>
</div>
</div>
ナビゲーションバー
<div class=”container”>
<a class=”navbar-brand” href=”#”>ロゴ</a>
<!– モバイル用ハンバーガーボタン –>
<button class=”navbar-toggler” type=”button” data-bs-toggle=”collapse” data-bs-target=”#navMenu”>
<span class=”navbar-toggler-icon”></span>
</button>
<div class=”collapse navbar-collapse” id=”navMenu”>
<ul class=”navbar-nav ms-auto”>
<li class=”nav-item”><a class=”nav-link active” href=”#”>ホーム</a></li>
<li class=”nav-item”><a class=”nav-link” href=”#”>概要</a></li>
<li class=”nav-item”><a class=”nav-link” href=”#”>お問い合わせ</a></li>
</ul>
</div>
</div>
</nav>
12. ダークモードの実装(Bootstrap 5.3以降)
Bootstrap 5.3で追加されたカラーモード(Color Mode)機能により、data-bs-theme属性を追加するだけでダークモード対応ができる。
<html lang=”ja” data-bs-theme=”dark”>
<!– 特定の要素だけダークモードにする –>
<div class=”card” data-bs-theme=”dark”>
<div class=”card-body”>このカードだけダーク</div>
</div>
<!– JavaScriptでダーク/ライトを切り替えるボタン –>
<button id=”themeToggle” class=”btn btn-outline-secondary”>🌙 ダークモード切替</button>
<script>
const btn = document.getElementById(‘themeToggle’);
btn.addEventListener(‘click’, () => {
const html = document.documentElement;
html.setAttribute(‘data-bs-theme’,
html.getAttribute(‘data-bs-theme’) === ‘dark’ ? ‘light’ : ‘dark’);
});
</script>
13. Bootstrap Iconsの使い方
Bootstrap Iconsは1,800種類以上のアイコンが無料・商用利用可のSVGアイコンセット。Bootstrap本体とは独立したパッケージなので、Bootstrapを使っていないプロジェクトでも利用できる。
<link rel=”stylesheet”
href=”https://cdn.jsdelivr.net/npm/bootstrap-icons@1.11.3/font/bootstrap-icons.min.css”>
<!– ②使いたいアイコンのクラス名をiタグに追加 –>
<i class=”bi bi-house”></i> <!– 家アイコン –>
<i class=”bi bi-person”></i> <!– 人物アイコン –>
<i class=”bi bi-search”></i> <!– 検索アイコン –>
<i class=”bi bi-heart-fill”></i> <!– ハート(塗りつぶし)アイコン –>
<i class=”bi bi-trophy-fill”></i> <!– トロフィーアイコン –>
<!– サイズはfont-sizeで変更 –>
<i class=”bi bi-star” style=”font-size: 2rem;”></i>
<!– ボタンにアイコンを組み合わせる –>
<button class=”btn btn-primary”>
<i class=”bi bi-download me-2″></i>ダウンロード
</button>
使いたいアイコン名はBootstrap Icons公式サイト(icons.getbootstrap.com)で検索できる。アイコン名に「-fill」をつけると塗りつぶし版になる。
14. よくあるアンチパターンと正しい使い方
Bootstrapを使い始めたばかりの初心者が陥りやすいミスを整理する。これを知っておくだけでコードの品質が大きく上がる。
| # | アンチパターン | 何が問題か | 正しい書き方 |
|---|---|---|---|
| 1 | Bootstrapのスタイルを!importantで上書きする |
どこで何が上書きされているか分からなくなる「!important地獄」に陥る | CSSカスタムプロパティ(変数)で上書きするか、より具体性の高いセレクターで上書きする |
| 2 | Bootstrap 4の記事のコードをコピーして使う | jQueryが必要・廃止されたクラス(form-inline等)が含まれるため動かないことがある | 必ず使用しているBootstrapのバージョンの公式ドキュメントを参照する |
| 3 | rowの中に直接コンテンツを置く | グリッドのガター(余白)が適用されず、レイアウトが崩れる | rowの中には必ずcol-*を置く。コンテンツはcol-*の中に入れる |
| 4 | containerを入れ子にする | 余白が二重になりレイアウトが意図しない幅になる | containerは1ページに1つが基本。入れ子にしない |
| 5 | オリジナルデザインなのに無理にBootstrapで実装する | Bootstrapのデフォルトスタイルとの戦いになり、書くCSSが増えてメリットが消える | オリジナルデザインはTailwind CSSや素のCSSで書く方が効率的 |
| 6 | インラインスタイルとBootstrapクラスを混在させる | どこにスタイルが定義されているか分からなくなる | できる限りBootstrapのユーティリティクラスを使い、インラインは最小限に |
15. よくある質問
Q. BootstrapはJavaScriptの知識がないと使えない?
A. HTMLとCSSの基礎知識があれば、JavaScriptを知らなくてもBootstrapの大部分は使える。ボタン・フォーム・カード・グリッドなどのコンポーネントはJavaScriptなしで動く。モーダル・ドロップダウン・アコーディオンなどインタラクティブなコンポーネントはBootstrapのJSファイルを読み込めば自動的に動作し、自分でJavaScriptを書く必要はない(data-bs-属性を指定するだけ)。
Q. Bootstrap 5でjQueryが不要になったのはなぜ?
A. Bootstrap 4まではjQueryに依存していたが、ブラウザ標準APIの進化によりjQueryがなくてもブラウザ間の差異が吸収できるようになった。Bootstrap 5ではVanilla JavaScript(素のJS)で書き直された。jQueryは追加の依存パッケージで、読み込みに時間がかかる。不要になったことでBootstrapはより軽くなった。
Q. BootstrapとTailwind CSSはどちらを先に学べばいい?
A. Web開発の学習を始めたばかりなら、まずBootstrapから学ぶことを推奨する。Bootstrapはコンポーネントをそのまま使えばデザインが完成するため「動くものが作れた」という成功体験を得やすい。Bootstrapで基礎を学んだ後にTailwind CSSに移行するのがスムーズ。
Q. Bootstrap 5でカスタムCSSを書く場合はどこに書けばいい?
A. 必ずBootstrapのCSSを読み込んだ後に自分のCSSファイルを読み込むこと。HTMLでの読み込み順は「Bootstrap CSS→自分のcustom.css」の順にする。Bootstrapのクラスを直接上書きするより、自分のクラスを追加して上書きする方がメンテナンスしやすい。
Q. BootstrapのデフォルトCSSをカスタマイズする方法は?
A. 2つの方法がある。①CSSカスタムプロパティ(変数)で上書き——Bootstrap 5はCSS変数を多用しているため、:rootに変数を上書きするだけで配色や余白を変更できる。②Sassでカスタマイズ——npmでBootstrapをインストールして、Sassのソースファイルを変数レベルから書き換える方法。小規模ならCSSカスタムプロパティで十分。
Q. Bootstrap 6はいつリリースされる?今から学習しても大丈夫?
A. 2026年3月時点でBootstrap 6の開発は始まっているが、リリース時期は未定。Bootstrap 5.3.xは引き続きサポートされるため、今からBootstrap 5を学んでおけば問題ない。基本的な概念(グリッドシステム・コンポーネントの使い方)は継続して使える知識になる。
Q. Bootstrapは商用利用できる?
A. MITライセンスで公開されているため、商用利用は完全に無料。個人サイト・企業サイト・SaaS・クライアントへの納品すべてで使える。Bootstrap Iconsも同様にMITライセンスで商用利用可能。
Q. Bootstrapを使うとSEOに影響がある?
A. Bootstrapを使うこと自体はSEOにマイナスの影響はない。ただし、CDN経由でBootstrap全体を読み込むとページの初期読み込みに余分なCSSが含まれるため、パフォーマンスがやや落ちる場合がある。Core Web Vitalsを重視する場合は、未使用のCSSを除去する方法を検討する。小〜中規模のサイトでは気にしなくてよいレベル。
本記事は2026年5月時点の情報をもとに作成しています。Bootstrap・Tailwind CSS等のバージョン・機能は変更される場合があります。最新情報は必ず公式ドキュメント(getbootstrap.com)でご確認ください。コードサンプルはBootstrap v5.3.8をベースにしています。
