レイアウト

ページ構造やコンテンツ配置など、レイアウトに関するUIコンポーネントやライブラリの比較

このページでわかること

  • アコーディオン・タブ・サイドバー・アプリシェル・ヒーロー・リサイザブルパネルなど、画面構造を組み立てるレイアウトUIの違いと使い分け
  • Mantine・Ant Design・shadcn/ui・Chakra UI・MUI・CSS Grid/Flexboxでの実装比較
  • コンテンツ量・階層の深さ・モバイル対応など、シーン別の選定基準
  • 複数レイアウトの組み合わせパターンと、実装時のハマりどころ

レイアウトUIとは

レイアウトUIは、画面上の情報を整理し、階層と優先度を視覚的に伝える構造要素。コンテンツとナビゲーションの関係、要素間の余白、ブレークポイントごとの並びを規定し、ユーザーが情報を見つけやすい状態を作る。

Webアプリケーションでよく使われるのは「アプリシェル」(ヘッダー+サイドバー+メイン)と、その内部で使う「タブ」「アコーディオン」「リサイザブルパネル」の組み合わせ。コンテンツの量や種類によって最適な構造が変わる。

本ページでは、React で使われる代表的なレイアウトUIを取り上げ、ライブラリごとの実装と特性を比較する。

目的別の選び方

◎ 推奨 / ◯ 適合 / △ 条件付き / − 該当なし

UI種類多量コンテンツ階層が深いモバイル主な用途
アプリシェル△(要レスポンシブ)管理画面・ダッシュボード全体構造
タブ平行な複数ビュー切替
アコーディオンFAQ・設定・縦長コンテンツ
サイドバー△(折りたたみ必要)ナビ・ツール群
ヒーローLP・トップページ印象付け
リサイザブルパネルエディタ・3カラム表示

AppShell・ページレイアウト

詳細を見る →

AppShellとCSS Grid/Flexboxによるページレイアウトパターンの比較

My App
Home
Users
Settings
メインコンテンツ
MantineShadcn/uiAnt DesignCSS Grid/Flex

サイドバー・ドロワー(Sidebar / Drawer)

詳細を見る →

折りたたみ・アイコン表示・オーバーレイ型ドロワー対応のナビゲーション用サイドバーの実装比較

Navigation
Dashboard
Analytics
Settings
MantineShadcn/uiAnt DesignChakra UI

タブ(Tabs)

詳細を見る →

コンテンツを切り替えて表示するタブUIの実装比較。variant・type・配置などの違いをインタラクティブに確認

概要
分析
設定
通知3
プロジェクト概要
MantineAnt DesignShadcn/uiChakra UICSS / Tailwind

アコーディオン(Accordion)

詳細を見る →

クリックで開閉するアコーディオンUIの実装比較。variant・複数展開・アニメーションの違いをインタラクティブに確認

📋基本的な使い方
アニメーション
アクセシビリティ
MantineAnt DesignChakra UIShadcn/uiCSS / Tailwind

リサイズ可能なパネル(Resizable Panels)

詳細を見る →

ドラッグで幅・高さを自在に変更できる分割パネルUIの実装比較。折りたたみ・スナップ・ネスト分割などの違いをインタラクティブに確認

📁 Explorer
▾ src/
▸ public/
▸ app/
import { Panel }
from 'react-resizable-panels'
<PanelGroup>
✓ 分割完了
react-resizable-panelsAllotmentCSS / React

ヒーローセクション(Hero Section)

詳細を見る →

ページ最上部の大型ビジュアルエリア。キャッチコピー・サブテキスト・CTAボタンを組み合わせた実装パターンの比較

あなたのビジネスを加速する
無料で始める
詳しく見る
Mantineshadcn/uiCSS / Tailwind

組み合わせパターン

  • 管理画面: アプリシェル + サイドバー + タブ(メイン内)
  • エディタアプリ: リサイザブルパネル + サイドバー
  • マーケティングサイト: ヒーロー + タブ(機能紹介)+ アコーディオン(FAQ)
  • モバイルアプリ: タブバー + アコーディオン(メニュー)

よくある質問

タブとアコーディオンはどう使い分ける?

タブは「同じ階層の選択肢を切り替える」とき、アコーディオンは「縦に詰めたい情報を折りたたむ」ときに使う。タブは一度に1つだけ表示するのに対し、アコーディオンは複数開けることが多い。モバイルではタブよりアコーディオンの方が縦スクロールで読みやすい場合が多い。

アプリシェルとレイアウトコンポーネントの違いは?

アプリシェルは「ヘッダー・サイドバー・メイン・フッター」のような画面全体の枠組みを指す。Mantine AppShell や shadcn/ui の Layout コンポーネントが該当する。一方、「レイアウトコンポーネント」は Stack・Group・Grid・Flex のような部分配置用ヘルパーを指すことが多い。

リサイザブルパネルが必要なのはどんな時?

VS Code のようなエディタアプリや、3カラム以上の情報を密に表示するダッシュボードで便利。ユーザーが見たい領域を広げられる柔軟さが価値になる。一般的なWebサイトでは過剰なケースが多い。

モバイルでサイドバーを表示する最適解は?

ハンバーガーメニューと組み合わせてオーバーレイ表示するのが定番。Mantine AppShell.Navbar の breakpoint 指定や、shadcn/ui の Sheet を使うと、デスクトップでは固定、モバイルでは開閉という挙動が手軽に作れる。

おすすめライブラリ

  • • Mantine AppShell - ヘッダー・サイドバー・メインを統合するレイアウトシェル
  • • react-resizable-panels - 軽量なドラッグリサイズ対応パネル
  • • shadcn/ui - Radix UIベースでアクセシビリティが高く、Tabs・Accordion・Sidebar・AppShellなど主要レイアウトコンポーネントを網羅
  • • Radix UI Tabs / Accordion - アクセシブルなヘッドレスUIコンポーネント
  • • react-masonry-css - CSSベースの軽量メイソンリーレイアウト
  • • Allotment - VS Code風のリサイズ可能な分割ビュー