<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>CSS ‣ てんハロ｜未経験エンジニアのIT学習ログ</title>
	<atom:link href="https://it-bokenki.com/category/css/feed/" rel="self" type="application/rss+xml" />
	<link>https://it-bokenki.com</link>
	<description>Hello Worldから、今日も生きてる</description>
	<lastBuildDate>Thu, 17 Jul 2025 15:36:58 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.4</generator>

<image>
	<url>https://it-bokenki.com/wp-content/uploads/2025/06/cropped-ブログ　アイコン-32x32.png</url>
	<title>CSS ‣ てんハロ｜未経験エンジニアのIT学習ログ</title>
	<link>https://it-bokenki.com</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>【初心者向け】shadcn/uiとは？導入方法・使い方・メリットを徹底解説｜Tailwind対応のUIライブラリ</title>
		<link>https://it-bokenki.com/2025/07/18/shadcn-ui/</link>
					<comments>https://it-bokenki.com/2025/07/18/shadcn-ui/#respond</comments>
		
		<dc:creator><![CDATA[てんハロ運営者]]></dc:creator>
		<pubDate>Thu, 17 Jul 2025 15:36:58 +0000</pubDate>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[Next.js]]></category>
		<category><![CDATA[フロントエンド]]></category>
		<guid isPermaLink="false">https://it-bokenki.com/?p=4973</guid>

					<description><![CDATA[<p>未経験でも気軽に！サブスク型プログラミングスクール【Freeks】 困ってた自分に届けたい話 CSSって実装方法いろいろありますよね。 「とりあえず動くけど、チーム開発だとCSSが競合してグチャグチャになる…」「時間かけ [&#8230;]</p>
<p>The post <a href="https://it-bokenki.com/2025/07/18/shadcn-ui/">【初心者向け】shadcn/uiとは？導入方法・使い方・メリットを徹底解説｜Tailwind対応のUIライブラリ</a> first appeared on <a href="https://it-bokenki.com">てんハロ｜未経験エンジニアのIT学習ログ</a>.</p>]]></description>
										<content:encoded><![CDATA[<div style="text-align: center;"><a rel="nofollow" href="https://px.a8.net/svt/ejp?a8mat=457GS5+A4DB02+5JVK+BXQOH">
<img fetchpriority="high" decoding="async" border="0" width="300" height="250" alt="" src="https://www20.a8.net/svt/bgt?aid=250611125612&#038;wid=001&#038;eno=01&#038;mid=s00000025904002005000&#038;mc=1"></a>
<img decoding="async" border="0" width="1" height="1" src="https://www12.a8.net/0.gif?a8mat=457GS5+A4DB02+5JVK+BXQOH" alt=""></div>



<p class="has-text-align-center"><a href="https://px.a8.net/svt/ejp?a8mat=457GS5+A4DB02+5JVK+BX3J6">未経験でも気軽に！サブスク型プログラミングスクール【Freeks】</a></p>



<h2 class="wp-block-heading"><span id="toc1">困ってた自分に届けたい話</span></h2>



<p>CSSって実装方法いろいろありますよね。</p>



<ul class="wp-block-list">
<li><code>.css</code> ファイル作ってインポート</li>



<li>タグに <code>style={{}}</code> で直接書く</li>



<li>Sass や CSS Modules、Styled Components などのライブラリも…</li>
</ul>



<p>「とりあえず動くけど、チーム開発だとCSSが競合してグチャグチャになる…」<br>「時間かけてUI組んだのに、おしゃれにならない…」<br>そんな悩みを抱えていた自分が「これだ！」と思えたのが、<strong>shadcn/ui</strong> というUIライブラリでした。</p>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-1 sbs-stn sbp-r sbis-cb cf block-box"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://it-bokenki.com/wp-content/uploads/2023/05/名称未設定のデザイン-1-1-150x150.png" alt="てんハロ運営者" class="speech-icon-image"/></figure><div class="speech-name">てんハロ運営者</div></div><div class="speech-balloon">
<p>この記事は、同じように困っていた方への<strong>備忘録兼シェア</strong>として書いています。</p>
</div></div>



<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>



<h2 class="wp-block-heading"><span id="toc2">shadcn/uiとは？</span></h2>



<p><strong>shadcn/ui</strong> は、Tailwind CSS をベースにした、柔軟で拡張可能な UI コンポーネント集です。</p>



<p>よく使うパーツ（ボタン、モーダル、チェックボックスなど）がすぐ使える状態で提供され、しかも<strong>自分のプロジェクトに直接コンポーネントのコードが追加される</strong>のが特徴です。</p>



<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>



<h2 class="wp-block-heading"><span id="toc3">他のUIライブラリとの比較</span></h2>



<p><span class="keyboard-key">&#x274c; 普通のUIライブラリ（npmパッケージ）</span></p>



<ul class="wp-block-list">
<li><code>npm install</code> で <strong>ライブラリをインストールするだけ</strong></li>



<li>中身（ボタンの見た目など）は <strong>触れない・カスタムしにくい</strong></li>



<li>例：MUI、Chakra UI、Bootstrap</li>
</ul>



<div style="height:10px" aria-hidden="true" class="wp-block-spacer"></div>



<p><span class="keyboard-key">&#x2705; shadcn/ui（プロジェクトに直接追加される）</span></p>



<ul class="wp-block-list">
<li>コマンドで UI コンポーネントの<strong>実物のコードを自分のプロジェクトにコピー</strong>してくれる</li>



<li>コピーされたコンポーネントは <code>/components/ui/button.tsx</code> などに置かれる</li>



<li>自分で<strong>見た目や動きを好きに変更できる</strong>（完全に自作と同じ感覚）</li>
</ul>



<div style="height:10px" aria-hidden="true" class="wp-block-spacer"></div>



<p>&#x25b6; UIライブラリの比較表</p>



<figure class="wp-block-table"><table><thead><tr><th class="has-text-align-center" data-align="center">ライブラリ</th><th>カスタマイズ性</th><th>スタイリング</th><th>メンテナンス性</th><th class="has-text-align-center" data-align="center">使いやすさ</th></tr></thead><tbody><tr><td class="has-text-align-center" data-align="center"><strong>shadcn/ui</strong></td><td>◎（自由編集可）</td><td>Tailwind CSS（自由）</td><td>自分で管理（柔軟）</td><td class="has-text-align-center" data-align="center">◯</td></tr><tr><td class="has-text-align-center" data-align="center">MUI</td><td>△（props依存）</td><td>styled-components風</td><td>バージョン依存が強い</td><td class="has-text-align-center" data-align="center">◎</td></tr><tr><td class="has-text-align-center" data-align="center">Chakra UI</td><td>◯（props多い）</td><td>Emotionベース</td><td>安定している</td><td class="has-text-align-center" data-align="center">◎</td></tr><tr><td class="has-text-align-center" data-align="center">Tailwind UI</td><td>△（HTMLベース）</td><td>Tailwind CSS</td><td>商用ライセンス必要</td><td class="has-text-align-center" data-align="center">◯</td></tr><tr><td class="has-text-align-center" data-align="center">Bootstrap</td><td>×（固定）</td><td>独自CSS</td><td>重い＆レガシー</td><td class="has-text-align-center" data-align="center">△</td></tr></tbody></table></figure>



<p><strong>shadcn/uiは「柔軟さ」と「今風の設計」が強み。</strong><br>プロジェクトのデザインや設計方針にこだわりたいチームやエンジニアに向いています。</p>



<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>



<h2 class="wp-block-heading"><span id="toc4">shadcn/ui 導入手順</span></h2>



<p>下記の前提条件のもと、shadcn/ui 導入手順をご説明します。</p>



<ul class="wp-block-list">
<li>Next.js（React）プロジェクト</li>



<li>Tailwind CSSがすでに導入済み</li>
</ul>



<div style="height:10px" aria-hidden="true" class="wp-block-spacer"></div>



<h3 class="wp-block-heading"><span id="toc5">STEP１：初期化</span></h3>



<div class="hcb_wrap"><pre class="prism line-numbers lang-plain"><code># 初期セットアップ（初回のみ）
npx shadcn@latest init</code></pre></div>



<div style="height:10px" aria-hidden="true" class="wp-block-spacer"></div>



<p><span class="keyboard-key">&#x26a0;&#xfe0f; 注意「shadcn-ui@latest」は非推奨？</span></p>



<figure class="wp-block-image aligncenter size-large is-resized"><img decoding="async" width="1024" height="172" src="https://it-bokenki.com/wp-content/uploads/2025/07/スクリーンショット-2025-07-17-23.10.35-1024x172.png" alt="【初心者向け】shadcn/uiとは？導入方法・使い方・メリットを徹底解説｜Tailwind対応のUIライブラリ" class="wp-image-4974" style="width:691px;height:auto" srcset="https://it-bokenki.com/wp-content/uploads/2025/07/スクリーンショット-2025-07-17-23.10.35-1024x172.png 1024w, https://it-bokenki.com/wp-content/uploads/2025/07/スクリーンショット-2025-07-17-23.10.35-300x50.png 300w, https://it-bokenki.com/wp-content/uploads/2025/07/スクリーンショット-2025-07-17-23.10.35-768x129.png 768w, https://it-bokenki.com/wp-content/uploads/2025/07/スクリーンショット-2025-07-17-23.10.35.png 1178w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p><code>npx shadcn-ui@latest init</code> のコマンドは古いコマンドです。これを使うと「古い CLI です」とエラーが出ることがあります。<strong>現在は上記のように <code>shadcn</code> に名前が変更されています。</strong></p>



<div style="height:10px" aria-hidden="true" class="wp-block-spacer"></div>



<h3 class="wp-block-heading"><span id="toc6">STEP２：初期設定 バージョン</span></h3>



<div class="hcb_wrap"><pre class="prism line-numbers lang-plain"><code>Need to install the following packages:
shadcn@2.9.2
Ok to proceed? (y) y</code></pre></div>



<ul class="wp-block-list">
<li><code>shadcn</code> のバージョン <code>2.9.2</code> を一時的にインストールして使ってもいいか？</li>



<li><code>npx</code> は必要なパッケージをその場で取得して実行する</li>
</ul>



<p>という確認です。<br><code>y</code> を入力すれば、そのまま <code>shadcn</code> CLI が使えるようになります。</p>



<div style="height:10px" aria-hidden="true" class="wp-block-spacer"></div>



<h3 class="wp-block-heading"><span id="toc7">STEP３：初期設定 UIの色選択</span></h3>



<div class="hcb_wrap"><pre class="prism line-numbers lang-plain"><code>Which color do you want to use as base color?
  - Slate
  - Gray
  - Zinc
  - Neutral
  - Stone
  - Red
  - Blue
  - Green</code></pre></div>



<p>UIのカラー選択について聞かれています。</p>



<div style="height:10px" aria-hidden="true" class="wp-block-spacer"></div>



<p><span class="keyboard-key">&#x1f4dd; 補足：色選択の戦略</span></p>



<figure class="wp-block-table"><table><thead><tr><th class="has-text-align-center" data-align="center">カラー</th><th>特徴・印象</th><th>向いている用途</th><th>傾向・人気度</th></tr></thead><tbody><tr><td class="has-text-align-center" data-align="center"><strong>Gray</strong></td><td>標準的なグレー。無難で柔軟性が高い</td><td>BtoC向けUI全般。カラフルなアクセントと相性◎</td><td><strong>shadcn初期からの定番</strong></td></tr><tr><td class="has-text-align-center" data-align="center"><strong>Zinc</strong></td><td>クールでメカっぽい無機質な印象</td><td>開発者向けダッシュボード、技術系LPなど</td><td>最近人気上昇中</td></tr><tr><td class="has-text-align-center" data-align="center"><strong>Neutral</strong></td><td>脱色感のある、最も中立的な色合い</td><td>ミニマル・モダンなサイト向け</td><td>人気はやや低め</td></tr><tr><td class="has-text-align-center" data-align="center"><strong>Stone</strong></td><td>わずかに茶系の温かみあり</td><td>雑誌風UI、ナチュラル系、アート系LPなど</td><td>おしゃれ系・差別化目的で選ばれる</td></tr></tbody></table></figure>



<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>



<h3 class="wp-block-heading"><span id="toc8">STEP４：UIコンポーネントを追加</span></h3>



<p>下記のコマンドを実行すると　src/components/ui配下にそれぞれのUIファイルが作成されます。</p>



<figure class="wp-block-image aligncenter size-full is-resized"><img loading="lazy" decoding="async" width="434" height="246" src="https://it-bokenki.com/wp-content/uploads/2025/07/スクリーンショット-2025-07-17-23.31.33.png" alt="【初心者向け】shadcn/uiとは？導入方法・使い方・メリットを徹底解説｜Tailwind対応のUIライブラリ" class="wp-image-4975" style="width:300px;height:auto" srcset="https://it-bokenki.com/wp-content/uploads/2025/07/スクリーンショット-2025-07-17-23.31.33.png 434w, https://it-bokenki.com/wp-content/uploads/2025/07/スクリーンショット-2025-07-17-23.31.33-300x170.png 300w, https://it-bokenki.com/wp-content/uploads/2025/07/スクリーンショット-2025-07-17-23.31.33-120x68.png 120w, https://it-bokenki.com/wp-content/uploads/2025/07/スクリーンショット-2025-07-17-23.31.33-160x90.png 160w, https://it-bokenki.com/wp-content/uploads/2025/07/スクリーンショット-2025-07-17-23.31.33-320x180.png 320w, https://it-bokenki.com/wp-content/uploads/2025/07/スクリーンショット-2025-07-17-23.31.33-376x212.png 376w" sizes="auto, (max-width: 434px) 100vw, 434px" /></figure>



<p>Tailwind CSS のクラスを使ってスタイリングされており、即他のコンポーネントでimportして利用できます。フォルダ移動しても問題ありません。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-plain"><code># ボタンを追加
npx shadcn@latest add button

# inputタグを追加
npx shadcn@latest add input

# チェックボックスを追加
npx shadcn@latest add checkbox</code></pre></div>



<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>



<h2 class="wp-block-heading"><span id="toc9">shadcn/ui 実装</span></h2>



<div class="wp-block-kevinbatdorf-code-block-pro" data-code-block-pro-font-family="Code-Pro-JetBrains-Mono" style="font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span style="display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#2e3440ff"><svg xmlns="http://www.w3.org/2000/svg" width="54" height="14" viewBox="0 0 54 14"><g fill="none" fill-rule="evenodd" transform="translate(1 1)"><circle cx="6" cy="6" r="6" fill="#FF5F56" stroke="#E0443E" stroke-width=".5"></circle><circle cx="26" cy="6" r="6" fill="#FFBD2E" stroke="#DEA123" stroke-width=".5"></circle><circle cx="46" cy="6" r="6" fill="#27C93F" stroke="#1AAB29" stroke-width=".5"></circle></g></svg></span><span role="button" tabindex="0" style="color:#d8dee9ff;display:none" aria-label="Copy" class="code-block-pro-copy-button"><pre class="code-block-pro-copy-button-pre" aria-hidden="true"><textarea class="code-block-pro-copy-button-textarea" tabindex="-1" aria-hidden="true" readonly>import { Input } from "@/components/ui/input";
import { Checkbox } from "@/components/checkbox";
import { Button } from "@/components/ui/button";

export default function Home() {
  return (
      &lt;div className=" flex flex-col items-center space-y-4 mt-10">
        &lt;Input placeholder="メールアドレスを入力" className="w-&#91;18rem&#93;" />

        &lt;div className="flex items-center">
          &lt;Checkbox id="terms" />
          &lt;label htmlFor="terms" className="ml-2 text-sm">
            利用規約に同意する
          &lt;/label>
        &lt;/div>
        
        &lt;Button>送信&lt;/Button>
      &lt;/div>
  );
}</textarea></pre><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2"></path></svg></span><pre class="shiki nord" style="background-color: #2e3440ff" tabindex="0"><code><span class="line"><span style="color: #81A1C1">import</span><span style="color: #D8DEE9FF"> </span><span style="color: #ECEFF4">{</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">Input</span><span style="color: #D8DEE9FF"> </span><span style="color: #ECEFF4">}</span><span style="color: #D8DEE9FF"> </span><span style="color: #81A1C1">from</span><span style="color: #D8DEE9FF"> </span><span style="color: #ECEFF4">&quot;</span><span style="color: #A3BE8C">@/components/ui/input</span><span style="color: #ECEFF4">&quot;</span><span style="color: #81A1C1">;</span></span>
<span class="line"><span style="color: #81A1C1">import</span><span style="color: #D8DEE9FF"> </span><span style="color: #ECEFF4">{</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">Checkbox</span><span style="color: #D8DEE9FF"> </span><span style="color: #ECEFF4">}</span><span style="color: #D8DEE9FF"> </span><span style="color: #81A1C1">from</span><span style="color: #D8DEE9FF"> </span><span style="color: #ECEFF4">&quot;</span><span style="color: #A3BE8C">@/components/checkbox</span><span style="color: #ECEFF4">&quot;</span><span style="color: #81A1C1">;</span></span>
<span class="line"><span style="color: #81A1C1">import</span><span style="color: #D8DEE9FF"> </span><span style="color: #ECEFF4">{</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">Button</span><span style="color: #D8DEE9FF"> </span><span style="color: #ECEFF4">}</span><span style="color: #D8DEE9FF"> </span><span style="color: #81A1C1">from</span><span style="color: #D8DEE9FF"> </span><span style="color: #ECEFF4">&quot;</span><span style="color: #A3BE8C">@/components/ui/button</span><span style="color: #ECEFF4">&quot;</span><span style="color: #81A1C1">;</span></span>
<span class="line"></span>
<span class="line"><span style="color: #81A1C1">export</span><span style="color: #D8DEE9FF"> </span><span style="color: #81A1C1">default</span><span style="color: #D8DEE9FF"> </span><span style="color: #81A1C1">function</span><span style="color: #D8DEE9FF"> </span><span style="color: #88C0D0">Home</span><span style="color: #ECEFF4">()</span><span style="color: #D8DEE9FF"> </span><span style="color: #ECEFF4">{</span></span>
<span class="line"><span style="color: #D8DEE9FF">  </span><span style="color: #81A1C1">return</span><span style="color: #D8DEE9FF"> (</span></span>
<span class="line"><span style="color: #D8DEE9FF">      </span><span style="color: #81A1C1">&lt;div</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">className</span><span style="color: #81A1C1">=</span><span style="color: #ECEFF4">&quot;</span><span style="color: #A3BE8C"> flex flex-col items-center space-y-4 mt-10</span><span style="color: #ECEFF4">&quot;</span><span style="color: #81A1C1">&gt;</span></span>
<span class="line"><span style="color: #D8DEE9FF">        </span><span style="color: #81A1C1">&lt;</span><span style="color: #8FBCBB">Input</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">placeholder</span><span style="color: #81A1C1">=</span><span style="color: #ECEFF4">&quot;</span><span style="color: #A3BE8C">メールアドレスを入力</span><span style="color: #ECEFF4">&quot;</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">className</span><span style="color: #81A1C1">=</span><span style="color: #ECEFF4">&quot;</span><span style="color: #A3BE8C">w-&#91;18rem&#93;</span><span style="color: #ECEFF4">&quot;</span><span style="color: #D8DEE9FF"> </span><span style="color: #81A1C1">/&gt;</span></span>
<span class="line"></span>
<span class="line"><span style="color: #D8DEE9FF">        </span><span style="color: #81A1C1">&lt;div</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">className</span><span style="color: #81A1C1">=</span><span style="color: #ECEFF4">&quot;</span><span style="color: #A3BE8C">flex items-center</span><span style="color: #ECEFF4">&quot;</span><span style="color: #81A1C1">&gt;</span></span>
<span class="line"><span style="color: #D8DEE9FF">          </span><span style="color: #81A1C1">&lt;</span><span style="color: #8FBCBB">Checkbox</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">id</span><span style="color: #81A1C1">=</span><span style="color: #ECEFF4">&quot;</span><span style="color: #A3BE8C">terms</span><span style="color: #ECEFF4">&quot;</span><span style="color: #D8DEE9FF"> </span><span style="color: #81A1C1">/&gt;</span></span>
<span class="line"><span style="color: #D8DEE9FF">          </span><span style="color: #81A1C1">&lt;label</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">htmlFor</span><span style="color: #81A1C1">=</span><span style="color: #ECEFF4">&quot;</span><span style="color: #A3BE8C">terms</span><span style="color: #ECEFF4">&quot;</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">className</span><span style="color: #81A1C1">=</span><span style="color: #ECEFF4">&quot;</span><span style="color: #A3BE8C">ml-2 text-sm</span><span style="color: #ECEFF4">&quot;</span><span style="color: #81A1C1">&gt;</span></span>
<span class="line"><span style="color: #D8DEE9FF">            利用規約に同意する</span></span>
<span class="line"><span style="color: #D8DEE9FF">          </span><span style="color: #81A1C1">&lt;/label&gt;</span></span>
<span class="line"><span style="color: #D8DEE9FF">        </span><span style="color: #81A1C1">&lt;/div&gt;</span></span>
<span class="line"><span style="color: #D8DEE9FF">        </span></span>
<span class="line"><span style="color: #D8DEE9FF">        </span><span style="color: #81A1C1">&lt;</span><span style="color: #8FBCBB">Button</span><span style="color: #81A1C1">&gt;</span><span style="color: #D8DEE9FF">送信</span><span style="color: #81A1C1">&lt;/</span><span style="color: #8FBCBB">Button</span><span style="color: #81A1C1">&gt;</span></span>
<span class="line"><span style="color: #D8DEE9FF">      </span><span style="color: #81A1C1">&lt;/div&gt;</span></span>
<span class="line"><span style="color: #D8DEE9FF">  )</span><span style="color: #81A1C1">;</span></span>
<span class="line"><span style="color: #ECEFF4">}</span></span></code></pre></div>



<div style="height:10px" aria-hidden="true" class="wp-block-spacer"></div>



<p>&#x25b6; 実際に表示されるUI</p>



<figure class="wp-block-image aligncenter size-full is-resized has-custom-border"><img loading="lazy" decoding="async" width="950" height="392" src="https://it-bokenki.com/wp-content/uploads/2025/07/スクリーンショット-2025-07-17-23.37.45.png" alt="【初心者向け】shadcn/uiとは？導入方法・使い方・メリットを徹底解説｜Tailwind対応のUIライブラリ" class="wp-image-4977" style="border-width:1px;width:594px;height:auto" srcset="https://it-bokenki.com/wp-content/uploads/2025/07/スクリーンショット-2025-07-17-23.37.45.png 950w, https://it-bokenki.com/wp-content/uploads/2025/07/スクリーンショット-2025-07-17-23.37.45-300x124.png 300w, https://it-bokenki.com/wp-content/uploads/2025/07/スクリーンショット-2025-07-17-23.37.45-768x317.png 768w" sizes="auto, (max-width: 950px) 100vw, 950px" /></figure>



<p>たった数行のコードで、ここまでスタイリッシュなフォームが作れます！<br>初期化してから10分かからないくらいです。とても簡単です。</p>



<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>



<h2 class="wp-block-heading"><span id="toc10">知っておきたい実装方法「スタイルの切り替えスイッチ」</span></h2>



<p>CSSを書いていると、同じ見た目のように見えて少しだけスタイルが違う、というパターンが増えてきます。</p>



<div style="height:0px" aria-hidden="true" class="wp-block-spacer"></div>



<p><span class="keyboard-key">たとえば…</span></p>



<ul class="wp-block-list">
<li>青い「送信」ボタン</li>



<li>赤い「削除」ボタン</li>



<li>枠だけの「戻る」ボタン</li>
</ul>



<p>こんなふうに種類を切り替えたい時に、<strong>毎回 className を条件分岐するのって大変です。</strong>そんなときに便利なのが、<strong><code>variant</code> という考え方</strong>です。</p>



<div style="height:10px" aria-hidden="true" class="wp-block-spacer"></div>



<h3 class="wp-block-heading"><span id="toc11">variant を使うと、スタイルの管理が楽！</span></h3>



<p><code>variant</code> はざっくり言うと、「スタイルの種類をキーワードで切り替える仕組み」です。</p>



<p>ボタンを例にすると、このように実装できます。</p>



<div class="wp-block-kevinbatdorf-code-block-pro" data-code-block-pro-font-family="Code-Pro-JetBrains-Mono" style="font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span style="display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#2e3440ff"><svg xmlns="http://www.w3.org/2000/svg" width="54" height="14" viewBox="0 0 54 14"><g fill="none" fill-rule="evenodd" transform="translate(1 1)"><circle cx="6" cy="6" r="6" fill="#FF5F56" stroke="#E0443E" stroke-width=".5"></circle><circle cx="26" cy="6" r="6" fill="#FFBD2E" stroke="#DEA123" stroke-width=".5"></circle><circle cx="46" cy="6" r="6" fill="#27C93F" stroke="#1AAB29" stroke-width=".5"></circle></g></svg></span><span role="button" tabindex="0" style="color:#d8dee9ff;display:none" aria-label="Copy" class="code-block-pro-copy-button"><pre class="code-block-pro-copy-button-pre" aria-hidden="true"><textarea class="code-block-pro-copy-button-textarea" tabindex="-1" aria-hidden="true" readonly>import { Button } from "@/components/ui/button";

export default function Home() {
  return (
      &lt;div className=" flex flex-col items-center space-y-4 mt-10">
        &lt;Button>デフォルト&lt;/Button>
        &lt;Button variant="destructive">削除&lt;/Button>
        &lt;Button variant="outline">戻る&lt;/Button>
      &lt;/div>
  );
}
</textarea></pre><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2"></path></svg></span><pre class="shiki nord" style="background-color: #2e3440ff" tabindex="0"><code><span class="line"><span style="color: #81A1C1">import</span><span style="color: #D8DEE9FF"> </span><span style="color: #ECEFF4">{</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">Button</span><span style="color: #D8DEE9FF"> </span><span style="color: #ECEFF4">}</span><span style="color: #D8DEE9FF"> </span><span style="color: #81A1C1">from</span><span style="color: #D8DEE9FF"> </span><span style="color: #ECEFF4">&quot;</span><span style="color: #A3BE8C">@/components/ui/button</span><span style="color: #ECEFF4">&quot;</span><span style="color: #81A1C1">;</span></span>
<span class="line"></span>
<span class="line"><span style="color: #81A1C1">export</span><span style="color: #D8DEE9FF"> </span><span style="color: #81A1C1">default</span><span style="color: #D8DEE9FF"> </span><span style="color: #81A1C1">function</span><span style="color: #D8DEE9FF"> </span><span style="color: #88C0D0">Home</span><span style="color: #ECEFF4">()</span><span style="color: #D8DEE9FF"> </span><span style="color: #ECEFF4">{</span></span>
<span class="line"><span style="color: #D8DEE9FF">  </span><span style="color: #81A1C1">return</span><span style="color: #D8DEE9FF"> (</span></span>
<span class="line"><span style="color: #D8DEE9FF">      </span><span style="color: #81A1C1">&lt;div</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">className</span><span style="color: #81A1C1">=</span><span style="color: #ECEFF4">&quot;</span><span style="color: #A3BE8C"> flex flex-col items-center space-y-4 mt-10</span><span style="color: #ECEFF4">&quot;</span><span style="color: #81A1C1">&gt;</span></span>
<span class="line"><span style="color: #D8DEE9FF">        </span><span style="color: #81A1C1">&lt;</span><span style="color: #8FBCBB">Button</span><span style="color: #81A1C1">&gt;</span><span style="color: #D8DEE9FF">デフォルト</span><span style="color: #81A1C1">&lt;/</span><span style="color: #8FBCBB">Button</span><span style="color: #81A1C1">&gt;</span></span>
<span class="line"><span style="color: #D8DEE9FF">        </span><span style="color: #81A1C1">&lt;</span><span style="color: #8FBCBB">Button</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">variant</span><span style="color: #81A1C1">=</span><span style="color: #ECEFF4">&quot;</span><span style="color: #A3BE8C">destructive</span><span style="color: #ECEFF4">&quot;</span><span style="color: #81A1C1">&gt;</span><span style="color: #D8DEE9FF">削除</span><span style="color: #81A1C1">&lt;/</span><span style="color: #8FBCBB">Button</span><span style="color: #81A1C1">&gt;</span></span>
<span class="line"><span style="color: #D8DEE9FF">        </span><span style="color: #81A1C1">&lt;</span><span style="color: #8FBCBB">Button</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">variant</span><span style="color: #81A1C1">=</span><span style="color: #ECEFF4">&quot;</span><span style="color: #A3BE8C">outline</span><span style="color: #ECEFF4">&quot;</span><span style="color: #81A1C1">&gt;</span><span style="color: #D8DEE9FF">戻る</span><span style="color: #81A1C1">&lt;/</span><span style="color: #8FBCBB">Button</span><span style="color: #81A1C1">&gt;</span></span>
<span class="line"><span style="color: #D8DEE9FF">      </span><span style="color: #81A1C1">&lt;/div&gt;</span></span>
<span class="line"><span style="color: #D8DEE9FF">  )</span><span style="color: #81A1C1">;</span></span>
<span class="line"><span style="color: #ECEFF4">}</span></span>
<span class="line"></span></code></pre></div>



<div style="height:10px" aria-hidden="true" class="wp-block-spacer"></div>



<p>&#x25b6; 実際に表示されるUI</p>



<figure class="wp-block-image aligncenter size-full is-resized has-custom-border"><img loading="lazy" decoding="async" width="424" height="388" src="https://it-bokenki.com/wp-content/uploads/2025/07/スクリーンショット-2025-07-17-23.46.27.png" alt="【初心者向け】shadcn/uiとは？導入方法・使い方・メリットを徹底解説｜Tailwind対応のUIライブラリ" class="wp-image-4979" style="border-width:1px;width:293px;height:auto" srcset="https://it-bokenki.com/wp-content/uploads/2025/07/スクリーンショット-2025-07-17-23.46.27.png 424w, https://it-bokenki.com/wp-content/uploads/2025/07/スクリーンショット-2025-07-17-23.46.27-300x275.png 300w" sizes="auto, (max-width: 424px) 100vw, 424px" /></figure>



<p>文字列で渡すだけで、見た目がガラッと変わります。<br>この <code>variant="◯◯"</code> がスタイルの切り替えスイッチになるんです。</p>



<div style="height:10px" aria-hidden="true" class="wp-block-spacer"></div>



<h3 class="wp-block-heading"><span id="toc12">中身はカスタマイズOK！</span></h3>



<p>実はこの <code>variant</code> の仕組みは <code>button.tsx</code> に定義されています。</p>



<p>たとえば以下のように書かれています。</p>



<div class="wp-block-kevinbatdorf-code-block-pro" data-code-block-pro-font-family="Code-Pro-JetBrains-Mono" style="font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span style="display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#2e3440ff"><svg xmlns="http://www.w3.org/2000/svg" width="54" height="14" viewBox="0 0 54 14"><g fill="none" fill-rule="evenodd" transform="translate(1 1)"><circle cx="6" cy="6" r="6" fill="#FF5F56" stroke="#E0443E" stroke-width=".5"></circle><circle cx="26" cy="6" r="6" fill="#FFBD2E" stroke="#DEA123" stroke-width=".5"></circle><circle cx="46" cy="6" r="6" fill="#27C93F" stroke="#1AAB29" stroke-width=".5"></circle></g></svg></span><span role="button" tabindex="0" style="color:#d8dee9ff;display:none" aria-label="Copy" class="code-block-pro-copy-button"><pre class="code-block-pro-copy-button-pre" aria-hidden="true"><textarea class="code-block-pro-copy-button-textarea" tabindex="-1" aria-hidden="true" readonly>// components/ui/button.tsx の一部
const buttonVariants = cva(
  "inline-flex items-center justify-center text-sm font-medium",
  {
    variants: {
      variant: {
        default:
          "bg-primary text-primary-foreground shadow-xs hover:bg-primary/90",
        destructive:
          "bg-destructive text-white shadow-xs hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60",
        outline:
          "border bg-background shadow-xs hover:bg-accent hover:text-accent-foreground dark:bg-input/30 dark:border-input dark:hover:bg-input/50",
      },
    },
    defaultVariants: {
      variant: "default",
    },
  }
);</textarea></pre><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2"></path></svg></span><pre class="shiki nord" style="background-color: #2e3440ff" tabindex="0"><code><span class="line"><span style="color: #616E88">// components/ui/button.tsx の一部</span></span>
<span class="line"><span style="color: #81A1C1">const</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">buttonVariants</span><span style="color: #D8DEE9FF"> </span><span style="color: #81A1C1">=</span><span style="color: #D8DEE9FF"> </span><span style="color: #88C0D0">cva</span><span style="color: #D8DEE9FF">(</span></span>
<span class="line"><span style="color: #D8DEE9FF">  </span><span style="color: #ECEFF4">&quot;</span><span style="color: #A3BE8C">inline-flex items-center justify-center text-sm font-medium</span><span style="color: #ECEFF4">&quot;</span><span style="color: #ECEFF4">,</span></span>
<span class="line"><span style="color: #D8DEE9FF">  </span><span style="color: #ECEFF4">{</span></span>
<span class="line"><span style="color: #D8DEE9FF">    </span><span style="color: #88C0D0">variants</span><span style="color: #ECEFF4">:</span><span style="color: #D8DEE9FF"> </span><span style="color: #ECEFF4">{</span></span>
<span class="line"><span style="color: #D8DEE9FF">      </span><span style="color: #88C0D0">variant</span><span style="color: #ECEFF4">:</span><span style="color: #D8DEE9FF"> </span><span style="color: #ECEFF4">{</span></span>
<span class="line"><span style="color: #D8DEE9FF">        </span><span style="color: #88C0D0">default</span><span style="color: #ECEFF4">:</span></span>
<span class="line"><span style="color: #D8DEE9FF">          </span><span style="color: #ECEFF4">&quot;</span><span style="color: #A3BE8C">bg-primary text-primary-foreground shadow-xs hover:bg-primary/90</span><span style="color: #ECEFF4">&quot;</span><span style="color: #ECEFF4">,</span></span>
<span class="line"><span style="color: #D8DEE9FF">        </span><span style="color: #88C0D0">destructive</span><span style="color: #ECEFF4">:</span></span>
<span class="line"><span style="color: #D8DEE9FF">          </span><span style="color: #ECEFF4">&quot;</span><span style="color: #A3BE8C">bg-destructive text-white shadow-xs hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60</span><span style="color: #ECEFF4">&quot;</span><span style="color: #ECEFF4">,</span></span>
<span class="line"><span style="color: #D8DEE9FF">        </span><span style="color: #88C0D0">outline</span><span style="color: #ECEFF4">:</span></span>
<span class="line"><span style="color: #D8DEE9FF">          </span><span style="color: #ECEFF4">&quot;</span><span style="color: #A3BE8C">border bg-background shadow-xs hover:bg-accent hover:text-accent-foreground dark:bg-input/30 dark:border-input dark:hover:bg-input/50</span><span style="color: #ECEFF4">&quot;</span><span style="color: #ECEFF4">,</span></span>
<span class="line"><span style="color: #D8DEE9FF">      </span><span style="color: #ECEFF4">},</span></span>
<span class="line"><span style="color: #D8DEE9FF">    </span><span style="color: #ECEFF4">},</span></span>
<span class="line"><span style="color: #D8DEE9FF">    </span><span style="color: #88C0D0">defaultVariants</span><span style="color: #ECEFF4">:</span><span style="color: #D8DEE9FF"> </span><span style="color: #ECEFF4">{</span></span>
<span class="line"><span style="color: #D8DEE9FF">      </span><span style="color: #88C0D0">variant</span><span style="color: #ECEFF4">:</span><span style="color: #D8DEE9FF"> </span><span style="color: #ECEFF4">&quot;</span><span style="color: #A3BE8C">default</span><span style="color: #ECEFF4">&quot;</span><span style="color: #ECEFF4">,</span></span>
<span class="line"><span style="color: #D8DEE9FF">    </span><span style="color: #ECEFF4">},</span></span>
<span class="line"><span style="color: #D8DEE9FF">  </span><span style="color: #ECEFF4">}</span></span>
<span class="line"><span style="color: #D8DEE9FF">)</span><span style="color: #81A1C1">;</span></span></code></pre></div>



<p>つまり、この <code>button.tsx</code> ファイルを<strong>自由に編集</strong>ができます！</p>



<p>たとえば、次のように <code>variant</code> に <code>custom</code> を追加すれば…</p>



<div class="wp-block-kevinbatdorf-code-block-pro" data-code-block-pro-font-family="Code-Pro-JetBrains-Mono" style="font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span style="display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#2e3440ff"><svg xmlns="http://www.w3.org/2000/svg" width="54" height="14" viewBox="0 0 54 14"><g fill="none" fill-rule="evenodd" transform="translate(1 1)"><circle cx="6" cy="6" r="6" fill="#FF5F56" stroke="#E0443E" stroke-width=".5"></circle><circle cx="26" cy="6" r="6" fill="#FFBD2E" stroke="#DEA123" stroke-width=".5"></circle><circle cx="46" cy="6" r="6" fill="#27C93F" stroke="#1AAB29" stroke-width=".5"></circle></g></svg></span><span role="button" tabindex="0" style="color:#d8dee9ff;display:none" aria-label="Copy" class="code-block-pro-copy-button"><pre class="code-block-pro-copy-button-pre" aria-hidden="true"><textarea class="code-block-pro-copy-button-textarea" tabindex="-1" aria-hidden="true" readonly>custom: "bg-purple-500 text-white hover:bg-purple-600"</textarea></pre><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2"></path></svg></span><pre class="shiki nord" style="background-color: #2e3440ff" tabindex="0"><code><span class="line"><span style="color: #D8DEE9FF">custom</span><span style="color: #ECEFF4">:</span><span style="color: #D8DEE9FF"> </span><span style="color: #ECEFF4">&quot;</span><span style="color: #A3BE8C">bg-purple-500 text-white hover:bg-purple-600</span><span style="color: #ECEFF4">&quot;</span></span></code></pre></div>



<p>オリジナルのスタイルが使えるようになります。</p>



<div class="wp-block-kevinbatdorf-code-block-pro" data-code-block-pro-font-family="Code-Pro-JetBrains-Mono" style="font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span style="display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#2e3440ff"><svg xmlns="http://www.w3.org/2000/svg" width="54" height="14" viewBox="0 0 54 14"><g fill="none" fill-rule="evenodd" transform="translate(1 1)"><circle cx="6" cy="6" r="6" fill="#FF5F56" stroke="#E0443E" stroke-width=".5"></circle><circle cx="26" cy="6" r="6" fill="#FFBD2E" stroke="#DEA123" stroke-width=".5"></circle><circle cx="46" cy="6" r="6" fill="#27C93F" stroke="#1AAB29" stroke-width=".5"></circle></g></svg></span><span role="button" tabindex="0" style="color:#d8dee9ff;display:none" aria-label="Copy" class="code-block-pro-copy-button"><pre class="code-block-pro-copy-button-pre" aria-hidden="true"><textarea class="code-block-pro-copy-button-textarea" tabindex="-1" aria-hidden="true" readonly>&lt;Button variant="custom">カスタム&lt;/Button></textarea></pre><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2"></path></svg></span><pre class="shiki nord" style="background-color: #2e3440ff" tabindex="0"><code><span class="line"><span style="color: #81A1C1">&lt;</span><span style="color: #8FBCBB">Button</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">variant</span><span style="color: #81A1C1">=</span><span style="color: #ECEFF4">&quot;</span><span style="color: #A3BE8C">custom</span><span style="color: #ECEFF4">&quot;</span><span style="color: #81A1C1">&gt;</span><span style="color: #D8DEE9FF">カスタム</span><span style="color: #81A1C1">&lt;/</span><span style="color: #8FBCBB">Button</span><span style="color: #81A1C1">&gt;</span></span></code></pre></div>



<p>と書くだけで、紫色のカスタムボタンが表示されます。</p>



<p>ライブラリに依存せず、<strong>自分好みのデザインに柔軟にカスタマイズできる</strong>のが shadcn/ui の大きな魅力です。</p>



<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>



<h2 class="wp-block-heading"><span id="toc13">shadcn/ui のメリット・デメリット</span></h2>



<p><span class="keyboard-key">メリット</span></p>



<ul class="wp-block-list">
<li>&#x2705; <strong>自由に編集できる</strong><br>コードがプロジェクトに含まれるため、業務要件に合わせて修正可能</li>



<li>&#x2705; <strong>Tailwindと相性抜群</strong><br>スタイリングが統一され、CSS設計に悩まなくて済む</li>



<li>&#x2705; <strong>導入が簡単</strong><br><code>npx shadcn@latest add xxx</code> でどんどん追加できる</li>



<li>&#x2705; <strong>全てオープンな React コンポーネント</strong><br>依存性を最小限に抑えられる</li>
</ul>



<div style="height:10px" aria-hidden="true" class="wp-block-spacer"></div>



<p><span class="keyboard-key">デメリット</span></p>



<ul class="wp-block-list">
<li>&#x274c; <strong>バージョン管理は自己責任</strong><br>一括更新されないのでメンテの工夫が必要</li>



<li>&#x274c; <strong>生成ファイルが増える</strong><br>チーム内で「どこから来たファイルか」把握する工夫が必要</li>
</ul>



<div style="height:10px" aria-hidden="true" class="wp-block-spacer"></div>



<p>UIライブラリで次におすすめなのはこちらです&#x1f91e;</p>



<div class="wp-block-cocoon-blocks-blogcard blogcard-type bct-together is-style-normal-card">
<a href="https://it-bokenki.com/2025/06/14/mui/" title="MUIとは？ReactでおしゃれなUIがすぐ作れるライブラリを解説！" class="blogcard-wrap internal-blogcard-wrap a-wrap cf"><div class="blogcard internal-blogcard ib-left cf"><div class="blogcard-label internal-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail internal-blogcard-thumbnail"><img loading="lazy" decoding="async" width="320" height="180" src="https://it-bokenki.com/wp-content/uploads/2025/06/２行-5-320x180.png" class="blogcard-thumb-image internal-blogcard-thumb-image wp-post-image" alt="" srcset="https://it-bokenki.com/wp-content/uploads/2025/06/２行-5-320x180.png 320w, https://it-bokenki.com/wp-content/uploads/2025/06/２行-5-120x68.png 120w, https://it-bokenki.com/wp-content/uploads/2025/06/２行-5-160x90.png 160w" sizes="auto, (max-width: 320px) 100vw, 320px" /></figure><div class="blogcard-content internal-blogcard-content"><div class="blogcard-title internal-blogcard-title">MUIとは？ReactでおしゃれなUIがすぐ作れるライブラリを解説！</div><div class="blogcard-snippet internal-blogcard-snippet">MUIはReactで美しいUIを簡単に作れるライブラリ。豊富なコンポーネントと柔軟なカスタマイズが魅力です。</div></div><div class="blogcard-footer internal-blogcard-footer cf"><div class="blogcard-site internal-blogcard-site"><div class="blogcard-favicon internal-blogcard-favicon"><img loading="lazy" decoding="async" src="https://www.google.com/s2/favicons?domain=https://it-bokenki.com" alt="" class="blogcard-favicon-image internal-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain internal-blogcard-domain">it-bokenki.com</div></div></div></div></a>
</div>



<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>



<h2 class="wp-block-heading"><span id="toc14">どんなプロジェクトに向いてる？</span></h2>



<figure class="wp-block-table"><table><thead><tr><th class="has-text-align-center" data-align="center">向いているプロジェクト</th><th>理由</th></tr></thead><tbody><tr><td class="has-text-align-center" data-align="center">BtoB SaaS系</td><td>UIに一貫性が必要で、カスタマイズ性が重要</td></tr><tr><td class="has-text-align-center" data-align="center">スタートアップ</td><td>開発速度が早く、軽量で変更に強い構成が求められる</td></tr><tr><td class="has-text-align-center" data-align="center">小〜中規模チーム開発</td><td>全員が同じUIスタイルを使いやすくなる</td></tr><tr><td class="has-text-align-center" data-align="center">Tailwindを使っている</td><td>スタイリングが完全に統一できる</td></tr></tbody></table></figure>



<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-1 sbs-stn sbp-l sbis-cb cf block-box"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://it-bokenki.com/wp-content/uploads/2023/05/名称未設定のデザイン-1-1-150x150.png" alt="てんハロ運営者" class="speech-icon-image"/></figure><div class="speech-name">てんハロ運営者</div></div><div class="speech-balloon">
<p>おつかれさまでした！</p>
</div></div><p>The post <a href="https://it-bokenki.com/2025/07/18/shadcn-ui/">【初心者向け】shadcn/uiとは？導入方法・使い方・メリットを徹底解説｜Tailwind対応のUIライブラリ</a> first appeared on <a href="https://it-bokenki.com">てんハロ｜未経験エンジニアのIT学習ログ</a>.</p>]]></content:encoded>
					
					<wfw:commentRss>https://it-bokenki.com/2025/07/18/shadcn-ui/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>絶対サイズ・相対サイズってなに？CSSでのフォントサイズ設定</title>
		<link>https://it-bokenki.com/2024/07/09/css-font-size/</link>
					<comments>https://it-bokenki.com/2024/07/09/css-font-size/#respond</comments>
		
		<dc:creator><![CDATA[てんハロ運営者]]></dc:creator>
		<pubDate>Tue, 09 Jul 2024 06:56:07 +0000</pubDate>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[フロントエンド]]></category>
		<guid isPermaLink="false">https://it-bokenki.com/?p=2789</guid>

					<description><![CDATA[<p>ウェブサイトのフォントサイズ設定方法を解説。絶対サイズと相対サイズの違い、remの利点、実際の使用状況について詳しく説明します。</p>
<p>The post <a href="https://it-bokenki.com/2024/07/09/css-font-size/">絶対サイズ・相対サイズってなに？CSSでのフォントサイズ設定</a> first appeared on <a href="https://it-bokenki.com">てんハロ｜未経験エンジニアのIT学習ログ</a>.</p>]]></description>
										<content:encoded><![CDATA[<h2 class="wp-block-heading"><span id="toc1">絶対サイズ vs 相対サイズ vs キーワード値</span></h2>



<p>フォントサイズの指定方法には、<strong>絶対サイズ</strong>・<strong>相対サイズ</strong>・<strong>キーワード値</strong>があります。それぞれの利点と欠点を見ていきましょう。</p>



<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>



<h2 class="wp-block-heading"><span id="toc2">選択肢①：絶対サイズ</span></h2>



<p><code>px</code>（ピクセル）など、固定されたサイズを指定します。</p>



<p><span class="badge">利点</span>： 一貫したサイズが保証される。</p>



<p><span class="badge-grey">欠点</span>： レスポンシブデザインが難しい。</p>



<div style="height:5px" aria-hidden="true" class="wp-block-spacer"></div>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="735" height="158" src="https://it-bokenki.com/wp-content/uploads/2024/07/image-7.png" alt="CSSのfontサイズの設定方法：おすすめの選択肢と実際の使用状況" class="wp-image-2790" srcset="https://it-bokenki.com/wp-content/uploads/2024/07/image-7.png 735w, https://it-bokenki.com/wp-content/uploads/2024/07/image-7-300x64.png 300w" sizes="auto, (max-width: 735px) 100vw, 735px" /></figure>



<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>



<h2 class="wp-block-heading"><span id="toc3">選択肢②：相対サイズ</span></h2>



<p><code>em</code>や<code>rem</code>、<code>%</code>など、親要素やルート要素に対する相対的なサイズを指定します。</p>



<p><span class="badge">利点</span>：レスポンシブデザインに適している。</p>



<p><span class="badge-grey">欠点</span>：親要素のサイズに依存するため、設定が複雑になる場合がある。</p>



<div style="height:5px" aria-hidden="true" class="wp-block-spacer"></div>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="740" height="399" src="https://it-bokenki.com/wp-content/uploads/2024/07/image-8.png" alt="CSSのfontサイズの設定方法：おすすめの選択肢と実際の使用状況" class="wp-image-2791" srcset="https://it-bokenki.com/wp-content/uploads/2024/07/image-8.png 740w, https://it-bokenki.com/wp-content/uploads/2024/07/image-8-300x162.png 300w" sizes="auto, (max-width: 740px) 100vw, 740px" /></figure>



<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>



<div style="text-align: center;">
<a rel="nofollow" href="https://px.a8.net/svt/ejp?a8mat=3TB6RG+C3TBLE+4RIG+BYT9D">
<img loading="lazy" decoding="async" border="0" width="468" height="60" alt="" src="https://www26.a8.net/svt/bgt?aid=230629372732&#038;wid=001&#038;eno=01&#038;mid=s00000022228002010000&#038;mc=1"></a>
<img loading="lazy" decoding="async" border="0" width="1" height="1" src="https://www16.a8.net/0.gif?a8mat=3TB6RG+C3TBLE+4RIG+BYT9D" alt="">
</div>



<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>



<h2 class="wp-block-heading"><span id="toc4">選択肢③：キーワード値</span></h2>



<p>CSSには、<code>small</code>、<code>medium</code>、<code>large</code>などのキーワード値もあります。これはブラウザによって定義された相対的なサイズです。</p>



<p><span class="badge">利点</span>：シンプルで読みやすい。一貫した相対サイズを簡単に設定できる。</p>



<p><span class="badge-grey">欠点</span>：具体的なサイズの調整ができない。ブラウザごとに解釈が異なる場合がある。</p>



<div style="height:5px" aria-hidden="true" class="wp-block-spacer"></div>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="739" height="162" src="https://it-bokenki.com/wp-content/uploads/2024/07/image-9.png" alt="CSSのfontサイズの設定方法：おすすめの選択肢と実際の使用状況" class="wp-image-2792" srcset="https://it-bokenki.com/wp-content/uploads/2024/07/image-9.png 739w, https://it-bokenki.com/wp-content/uploads/2024/07/image-9-300x66.png 300w" sizes="auto, (max-width: 739px) 100vw, 739px" /></figure>



<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>



<h2 class="wp-block-heading"><span id="toc5">おすすめのフォントサイズの設定方法</span></h2>



<p>現代のWEBデザインにおいて、相対サイズの<code>rem</code>を使用することが最も推奨されます。</p>



<p>これにより、ルート要素のサイズに基づいてフォントサイズを設定でき、レスポンシブデザインが簡単になります。</p>



<div style="height:5px" aria-hidden="true" class="wp-block-spacer"></div>



<figure class="wp-block-image size-full is-resized"><img loading="lazy" decoding="async" width="738" height="512" src="https://it-bokenki.com/wp-content/uploads/2024/07/image-10.png" alt="" class="wp-image-2793" style="width:737px;height:auto" srcset="https://it-bokenki.com/wp-content/uploads/2024/07/image-10.png 738w, https://it-bokenki.com/wp-content/uploads/2024/07/image-10-300x208.png 300w" sizes="auto, (max-width: 738px) 100vw, 738px" /></figure>



<div style="height:11px" aria-hidden="true" class="wp-block-spacer"></div>



<h2 class="wp-block-heading"><span id="toc6">実際の現場での使用状況</span></h2>



<p>多くのプロフェッショナルなウェブデザイナーや開発者は、以下の理由から<code>rem</code>を使用しています。</p>



<ul class="wp-block-list">
<li>一貫したユーザー体験を提供できる。</li>



<li>メンテナンスが簡単。</li>



<li>レスポンシブデザインに適している。</li>
</ul>



<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>



<p class="has-text-align-center"><a href="https://px.a8.net/svt/ejp?a8mat=3TB6RG+CLOBQQ+2PEO+1HNL1E">ココナラのクリエイターに依頼する</a></p>



<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>



<h2 class="wp-block-heading"><span id="toc7">まとめ</span></h2>



<p>ウェブサイトのフォントサイズを設定する際は、相対サイズの<code>rem</code>を使用することをオススメします。</p>



<p>絶対サイズの<code>px</code>も一部のケースでは有用ですが、全体的なデザインの一貫性を保つためには相対サイズの方が適しています。</p>



<p></p>



<p>状況に応じて、設定してみてください！</p>



<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>



<div class="wp-block-cocoon-blocks-blogcard blogcard-type bct-pickup">
<a href="https://it-bokenki.com/2024/07/09/html%e3%81%a7%e3%81%ae%ef%bc%9cscript%ef%bc%9e%e3%82%bf%e3%82%b0%e3%81%ae%e3%83%99%e3%82%b9%e3%83%88%e3%81%aa%e9%85%8d%e7%bd%ae%e4%bd%8d%e7%bd%ae%e3%81%a8%e3%81%af%ef%bc%9f/" title="HTMLでの＜script＞タグのベストな配置位置とは？" class="blogcard-wrap external-blogcard-wrap a-wrap cf" target="_blank"><div class="blogcard external-blogcard eb-left cf"><div class="blogcard-label external-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail external-blogcard-thumbnail"><img loading="lazy" decoding="async" src="https://it-bokenki.com/wp-content/uploads/cocoon-resources/blog-card-cache/2a4ac94c3ab58a282f9d9cda62d777c9.png" alt="" class="blogcard-thumb-image external-blogcard-thumb-image" width="160" height="90" /></figure><div class="blogcard-content external-blogcard-content"><div class="blogcard-title external-blogcard-title">HTMLでの＜script＞タグのベストな配置位置とは？</div><div class="blogcard-snippet external-blogcard-snippet">HTMLでのタグの最適な配置場所を解説。ページの表示速度とユーザー体験を向上させるコツを紹介します。</div></div><div class="blogcard-footer external-blogcard-footer cf"><div class="blogcard-site external-blogcard-site"><div class="blogcard-favicon external-blogcard-favicon"><img loading="lazy" decoding="async" src="https://www.google.com/s2/favicons?domain=https://it-bokenki.com/2024/07/09/html-script-tag-placement/" alt="" class="blogcard-favicon-image external-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain external-blogcard-domain">it-bokenki.com</div></div></div></div></a>
</div><p>The post <a href="https://it-bokenki.com/2024/07/09/css-font-size/">絶対サイズ・相対サイズってなに？CSSでのフォントサイズ設定</a> first appeared on <a href="https://it-bokenki.com">てんハロ｜未経験エンジニアのIT学習ログ</a>.</p>]]></content:encoded>
					
					<wfw:commentRss>https://it-bokenki.com/2024/07/09/css-font-size/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
