<?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>MUI ‣ てんハロ｜未経験エンジニアのIT学習ログ</title>
	<atom:link href="https://it-bokenki.com/tag/mui/feed/" rel="self" type="application/rss+xml" />
	<link>https://it-bokenki.com</link>
	<description>Hello Worldから、今日も生きてる</description>
	<lastBuildDate>Fri, 11 Jul 2025 04:53:42 +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>MUI ‣ てんハロ｜未経験エンジニアのIT学習ログ</title>
	<link>https://it-bokenki.com</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>MUIとは？ReactでおしゃれなUIがすぐ作れるライブラリを解説！</title>
		<link>https://it-bokenki.com/2025/06/14/mui/</link>
					<comments>https://it-bokenki.com/2025/06/14/mui/#respond</comments>
		
		<dc:creator><![CDATA[てんハロ運営者]]></dc:creator>
		<pubDate>Sat, 14 Jun 2025 05:57:41 +0000</pubDate>
				<category><![CDATA[React]]></category>
		<category><![CDATA[フロントエンド]]></category>
		<category><![CDATA[MUI]]></category>
		<guid isPermaLink="false">https://it-bokenki.com/?p=3274</guid>

					<description><![CDATA[<p>でじぼうです。 Reactでアプリを作っていると「もっと見た目を整えたい」「CSSがむずかしい」と感じたこと、ありませんか？そんなときに活躍するのが、MUI というライブラリです！ Instagramフォロワー数9,50 [&#8230;]</p>
<p>The post <a href="https://it-bokenki.com/2025/06/14/mui/">MUIとは？ReactでおしゃれなUIがすぐ作れるライブラリを解説！</a> first appeared on <a href="https://it-bokenki.com">てんハロ｜未経験エンジニアのIT学習ログ</a>.</p>]]></description>
										<content:encoded><![CDATA[<p>でじぼうです。</p>



<p>Reactでアプリを作っていると「もっと見た目を整えたい」「CSSがむずかしい」と感じたこと、ありませんか？そんなときに活躍するのが、<strong>MUI </strong>というライブラリです！</p>



<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>この記事は下記の方がおすすめ！<br></p>



<ul class="wp-block-list">
<li style="font-size:15px">MUIとは何か？</li>



<li style="font-size:15px">おしゃれなボタンやフォームをすぐ使いたい</li>



<li style="font-size:15px">ReactでUIを作っているけど、CSSが苦手</li>
</ul>
</div></div>



<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=3T911P+F006GI+51FE+NZROH">
<img fetchpriority="high" decoding="async" border="0" width="300" height="250" alt="" src="https://www27.a8.net/svt/bgt?aid=230528653907&#038;wid=001&#038;eno=01&#038;mid=s00000023513004030000&#038;mc=1"></a>
<img decoding="async" border="0" width="1" height="1" src="https://www11.a8.net/0.gif?a8mat=3T911P+F006GI+51FE+NZROH" alt=""></div>



<p class="has-text-align-center"><a href="https://px.a8.net/svt/ejp?a8mat=3T911P+F006GI+51FE+NWRNM">Instagramフォロワー数9,500人を越える人気のもち・大福店 えにかいたもち</a></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/usestate-watch-diff/" title="useStateとwatchの違いとは？フォーム入力の管理方法を解説！" 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 decoding="async" width="320" height="180" src="https://it-bokenki.com/wp-content/uploads/2025/06/２行-4-320x180.png" class="blogcard-thumb-image internal-blogcard-thumb-image wp-post-image" alt="" srcset="https://it-bokenki.com/wp-content/uploads/2025/06/２行-4-320x180.png 320w, https://it-bokenki.com/wp-content/uploads/2025/06/２行-4-120x68.png 120w, https://it-bokenki.com/wp-content/uploads/2025/06/２行-4-160x90.png 160w" sizes="(max-width: 320px) 100vw, 320px" /></figure><div class="blogcard-content internal-blogcard-content"><div class="blogcard-title internal-blogcard-title">useStateとwatchの違いとは？フォーム入力の管理方法を解説！</div><div class="blogcard-snippet internal-blogcard-snippet">ReactのuseStateとwatchの違いを初心者向けに解説！フォーム入力の管理方法と使い分けを具体例で紹介します。</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>
<p></p>
</div>



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



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



<h2 class="wp-block-heading"><span id="toc1">MUIとは？</span></h2>



<p><strong>MUI</strong>とは<strong>React専用のUIライブラリ</strong>です。<br><br>かんたんに言うと、Reactで使える「見た目が整ったパーツ（部品）」を集めたツール集です。<br><br><span class="badge">例</span></p>



<ul class="wp-block-list">
<li>ボタン</li>



<li>入力欄</li>



<li>ダイアログ（ポップアップ）</li>



<li>ナビゲーションバー</li>
</ul>



<p>などが、すでに整った見た目で提供されており、<strong>自分でCSSを書かなくてもキレイな画面が作れる</strong>のが特徴です。</p>



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



<h2 class="wp-block-heading"><span id="toc2">MUIのインストール方法</span></h2>



<p>MUIを利用するためには、UIコンポーネントライブラリをインストールしなければいけません。<br>以下のコマンドを実行します。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-bash" data-lang="Bash"><code>npm install @mui/material @emotion/react @emotion/styled</code></pre></div>



<p><code>@mui/material</code>：見た目の部品である、<strong>UIコンポーネントを提供</strong>するライブラリ</p>



<p><code>@emotion/react</code>：部品に<strong>スタイルを反映させる</strong>ライブラリ</p>



<p><code>@emotion/styled</code>：自分で部品の<strong>スタイルを定義する</strong>ライブラリ</p>



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



<h2 class="wp-block-heading"><span id="toc3">実際のコード</span></h2>



<p>下記の、統一感のあるフォームデザインを自分でCSSで整えるのは、意外と手間がかかります。</p>



<p>その点、MUIを使えばスタイルがあらかじめ用意されているため、<strong>見た目の整ったフォームを素早く実装することができます。</strong></p>



<figure class="wp-block-image size-large has-custom-border"><img loading="lazy" decoding="async" width="1024" height="724" src="https://it-bokenki.com/wp-content/uploads/2025/06/スクリーンショット-2025-06-14-14.17.39-1024x724.png" alt="MUIとは？ReactでおしゃれなUIがすぐ作れるライブラリを解説！" class="wp-image-3279" style="border-width:1px" srcset="https://it-bokenki.com/wp-content/uploads/2025/06/スクリーンショット-2025-06-14-14.17.39-1024x724.png 1024w, https://it-bokenki.com/wp-content/uploads/2025/06/スクリーンショット-2025-06-14-14.17.39-300x212.png 300w, https://it-bokenki.com/wp-content/uploads/2025/06/スクリーンショット-2025-06-14-14.17.39-768x543.png 768w, https://it-bokenki.com/wp-content/uploads/2025/06/スクリーンショット-2025-06-14-14.17.39-1536x1085.png 1536w, https://it-bokenki.com/wp-content/uploads/2025/06/スクリーンショット-2025-06-14-14.17.39.png 1738w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>送信ボタンを押下するとモーダル表示される</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="758" src="https://it-bokenki.com/wp-content/uploads/2025/06/スクリーンショット-2025-06-14-14.25.26-1024x758.png" alt="MUIとは？ReactでおしゃれなUIがすぐ作れるライブラリを解説！" class="wp-image-3280" srcset="https://it-bokenki.com/wp-content/uploads/2025/06/スクリーンショット-2025-06-14-14.25.26-1024x758.png 1024w, https://it-bokenki.com/wp-content/uploads/2025/06/スクリーンショット-2025-06-14-14.25.26-300x222.png 300w, https://it-bokenki.com/wp-content/uploads/2025/06/スクリーンショット-2025-06-14-14.25.26-768x569.png 768w, https://it-bokenki.com/wp-content/uploads/2025/06/スクリーンショット-2025-06-14-14.25.26-1536x1138.png 1536w, https://it-bokenki.com/wp-content/uploads/2025/06/スクリーンショット-2025-06-14-14.25.26.png 1750w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<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"><textarea class="code-block-pro-copy-button-textarea" aria-hidden="true" readonly>import {
  AppBar,             // 画面上部に固定されるヘッダー
  Toolbar,            // ヘッダーの中の横並びレイアウト用
  Typography,         // 見出しや本文などのテキスト表示
  Container,          // 中央寄せ＆余白ありの全体レイアウト枠
  TextField,          // 入力フォーム（名前・メールなど）
  Button,             // 押せるボタン（送信・閉じるなど）
  Grid,               // 要素を縦や横に並べるレイアウト
  Card,               // 情報を囲って見せるパネル（カード）
  CardContent,        // カード内に配置する中身
  Box,                // スタイル調整や余白をつけるための箱
  Paper,              // 白背景＋影のついたパネル
  Dialog,             // ポップアップウィンドウ（モーダル）
  DialogTitle,        // モーダルのタイトル部分
  DialogContent,      // モーダルの本文部分
  DialogActions       // モーダルのボタン部分（閉じるなど）
} from &#8220;@mui/material&#8221;;


import { useState } from &#8220;react&#8221;;

function ContactForm() {
  const [open, setOpen] = useState(false);

  return (
    &lt;>
      {/* AppBar：上部ナビゲーション */}
      &lt;AppBar position=&#8221;static&#8221;>
        &lt;Toolbar>
          &lt;Typography variant=&#8221;h6&#8243;>ABC会社 &#8211; お問い合わせ&lt;/Typography>
        &lt;/Toolbar>
      &lt;/AppBar>

      {/* Container：中央レイアウト */}
      &lt;Container maxWidth=&#8221;sm&#8221; sx={{ mt: 4 }}>
        {/* Box：フォーム全体の囲み */}
        &lt;Box component={Paper} elevation={3} p={4}>
          &lt;Typography variant=&#8221;h5&#8243; gutterBottom>
            お問い合わせフォーム
          &lt;/Typography>

          {/* Grid：縦並びレイアウト */}
          &lt;Grid container spacing={2} direction=&#8221;column&#8221;>
            {/* 名前入力 */}
            &lt;Grid item>
              &lt;TextField label=&#8221;お名前&#8221; fullWidth variant=&#8221;outlined&#8221; />
            &lt;/Grid>

            {/* メールアドレス入力 */}
            &lt;Grid item>
              &lt;TextField label=&#8221;メールアドレス&#8221; fullWidth variant=&#8221;outlined&#8221; />
            &lt;/Grid>

            {/* 件名 */}
            &lt;Grid item>
              &lt;TextField label=&#8221;件名&#8221; fullWidth variant=&#8221;outlined&#8221; />
            &lt;/Grid>

            {/* 内容 */}
            &lt;Grid item>
              &lt;TextField
                label=&#8221;お問い合わせ内容&#8221;
                fullWidth
                multiline
                rows={4}
                variant=&#8221;outlined&#8221;
              />
            &lt;/Grid>

            {/* 送信ボタン */}
            &lt;Grid item>
              &lt;Button
                variant=&#8221;contained&#8221;
                color=&#8221;primary&#8221;
                fullWidth
                onClick={() => setOpen(true)}
              >
                送信する
              &lt;/Button>
            &lt;/Grid>
          &lt;/Grid>
        &lt;/Box>

        {/* Card：会社案内パネル */}
        &lt;Box mt={4}>
          &lt;Card>
            &lt;CardContent>
              &lt;Typography variant=&#8221;h6&#8243;>ABC会社について&lt;/Typography>
              &lt;Typography variant=&#8221;body2&#8243; color=&#8221;text.secondary&#8221;>
                〒100-0001 東京都中央区サンプル1-2-3 営業時間：平日 9:00〜18:00
                電話：03-1234-5678
              &lt;/Typography>
            &lt;/CardContent>
          &lt;/Card>
        &lt;/Box>
      &lt;/Container>

      {/* Dialog：送信後モーダル */}
      &lt;Dialog open={open} onClose={() => setOpen(false)}>
        &lt;DialogTitle>送信完了&lt;/DialogTitle>
        &lt;DialogContent>
          &lt;Typography>
            お問い合わせありがとうございました。ABC会社より折り返しご連絡いたします。
          &lt;/Typography>
        &lt;/DialogContent>
        &lt;DialogActions>
          &lt;Button onClick={() => setOpen(false)} autoFocus>
            閉じる
          &lt;/Button>
        &lt;/DialogActions>
      &lt;/Dialog>
    &lt;/>
  );
}

export default ContactForm;</textarea><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>
<span class="line"><span style="color: #D8DEE9FF">  </span><span style="color: #8FBCBB">AppBar</span><span style="color: #ECEFF4">,</span><span style="color: #D8DEE9FF">             </span><span style="color: #616E88">// 画面上部に固定されるヘッダー</span></span>
<span class="line"><span style="color: #D8DEE9FF">  </span><span style="color: #8FBCBB">Toolbar</span><span style="color: #ECEFF4">,</span><span style="color: #D8DEE9FF">            </span><span style="color: #616E88">// ヘッダーの中の横並びレイアウト用</span></span>
<span class="line"><span style="color: #D8DEE9FF">  </span><span style="color: #8FBCBB">Typography</span><span style="color: #ECEFF4">,</span><span style="color: #D8DEE9FF">         </span><span style="color: #616E88">// 見出しや本文などのテキスト表示</span></span>
<span class="line"><span style="color: #D8DEE9FF">  </span><span style="color: #8FBCBB">Container</span><span style="color: #ECEFF4">,</span><span style="color: #D8DEE9FF">          </span><span style="color: #616E88">// 中央寄せ＆余白ありの全体レイアウト枠</span></span>
<span class="line"><span style="color: #D8DEE9FF">  </span><span style="color: #8FBCBB">TextField</span><span style="color: #ECEFF4">,</span><span style="color: #D8DEE9FF">          </span><span style="color: #616E88">// 入力フォーム（名前・メールなど）</span></span>
<span class="line"><span style="color: #D8DEE9FF">  </span><span style="color: #8FBCBB">Button</span><span style="color: #ECEFF4">,</span><span style="color: #D8DEE9FF">             </span><span style="color: #616E88">// 押せるボタン（送信・閉じるなど）</span></span>
<span class="line"><span style="color: #D8DEE9FF">  </span><span style="color: #8FBCBB">Grid</span><span style="color: #ECEFF4">,</span><span style="color: #D8DEE9FF">               </span><span style="color: #616E88">// 要素を縦や横に並べるレイアウト</span></span>
<span class="line"><span style="color: #D8DEE9FF">  </span><span style="color: #8FBCBB">Card</span><span style="color: #ECEFF4">,</span><span style="color: #D8DEE9FF">               </span><span style="color: #616E88">// 情報を囲って見せるパネル（カード）</span></span>
<span class="line"><span style="color: #D8DEE9FF">  </span><span style="color: #8FBCBB">CardContent</span><span style="color: #ECEFF4">,</span><span style="color: #D8DEE9FF">        </span><span style="color: #616E88">// カード内に配置する中身</span></span>
<span class="line"><span style="color: #D8DEE9FF">  </span><span style="color: #8FBCBB">Box</span><span style="color: #ECEFF4">,</span><span style="color: #D8DEE9FF">                </span><span style="color: #616E88">// スタイル調整や余白をつけるための箱</span></span>
<span class="line"><span style="color: #D8DEE9FF">  </span><span style="color: #8FBCBB">Paper</span><span style="color: #ECEFF4">,</span><span style="color: #D8DEE9FF">              </span><span style="color: #616E88">// 白背景＋影のついたパネル</span></span>
<span class="line"><span style="color: #D8DEE9FF">  </span><span style="color: #8FBCBB">Dialog</span><span style="color: #ECEFF4">,</span><span style="color: #D8DEE9FF">             </span><span style="color: #616E88">// ポップアップウィンドウ（モーダル）</span></span>
<span class="line"><span style="color: #D8DEE9FF">  </span><span style="color: #8FBCBB">DialogTitle</span><span style="color: #ECEFF4">,</span><span style="color: #D8DEE9FF">        </span><span style="color: #616E88">// モーダルのタイトル部分</span></span>
<span class="line"><span style="color: #D8DEE9FF">  </span><span style="color: #8FBCBB">DialogContent</span><span style="color: #ECEFF4">,</span><span style="color: #D8DEE9FF">      </span><span style="color: #616E88">// モーダルの本文部分</span></span>
<span class="line"><span style="color: #D8DEE9FF">  </span><span style="color: #8FBCBB">DialogActions</span><span style="color: #D8DEE9FF">       </span><span style="color: #616E88">// モーダルのボタン部分（閉じるなど）</span></span>
<span class="line"><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">@mui/material</span><span style="color: #ECEFF4">&quot;</span><span style="color: #81A1C1">;</span></span>
<span class="line"></span>
<span class="line"></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">useState</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">react</span><span style="color: #ECEFF4">&quot;</span><span style="color: #81A1C1">;</span></span>
<span class="line"></span>
<span class="line"><span style="color: #81A1C1">function</span><span style="color: #D8DEE9FF"> </span><span style="color: #88C0D0">ContactForm</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">const</span><span style="color: #D8DEE9FF"> </span><span style="color: #ECEFF4">[</span><span style="color: #D8DEE9">open</span><span style="color: #ECEFF4">,</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">setOpen</span><span style="color: #ECEFF4">]</span><span style="color: #D8DEE9FF"> </span><span style="color: #81A1C1">=</span><span style="color: #D8DEE9FF"> </span><span style="color: #88C0D0">useState</span><span style="color: #D8DEE9FF">(</span><span style="color: #81A1C1">false</span><span style="color: #D8DEE9FF">)</span><span style="color: #81A1C1">;</span></span>
<span class="line"></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;&gt;</span></span>
<span class="line"><span style="color: #D8DEE9FF">      </span><span style="color: #81A1C1">{</span><span style="color: #616E88">/* AppBar：上部ナビゲーション */</span><span style="color: #81A1C1">}</span></span>
<span class="line"><span style="color: #D8DEE9FF">      </span><span style="color: #81A1C1">&lt;</span><span style="color: #8FBCBB">AppBar</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">position</span><span style="color: #81A1C1">=</span><span style="color: #ECEFF4">&quot;</span><span style="color: #A3BE8C">static</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">Toolbar</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">Typography</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">h6</span><span style="color: #ECEFF4">&quot;</span><span style="color: #81A1C1">&gt;</span><span style="color: #D8DEE9FF">ABC会社 - お問い合わせ</span><span style="color: #81A1C1">&lt;/</span><span style="color: #8FBCBB">Typography</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">Toolbar</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">AppBar</span><span style="color: #81A1C1">&gt;</span></span>
<span class="line"></span>
<span class="line"><span style="color: #D8DEE9FF">      </span><span style="color: #81A1C1">{</span><span style="color: #616E88">/* Container：中央レイアウト */</span><span style="color: #81A1C1">}</span></span>
<span class="line"><span style="color: #D8DEE9FF">      </span><span style="color: #81A1C1">&lt;</span><span style="color: #8FBCBB">Container</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">maxWidth</span><span style="color: #81A1C1">=</span><span style="color: #ECEFF4">&quot;</span><span style="color: #A3BE8C">sm</span><span style="color: #ECEFF4">&quot;</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">sx</span><span style="color: #81A1C1">={</span><span style="color: #ECEFF4">{</span><span style="color: #D8DEE9FF"> </span><span style="color: #88C0D0">mt</span><span style="color: #ECEFF4">:</span><span style="color: #D8DEE9FF"> </span><span style="color: #B48EAD">4</span><span style="color: #D8DEE9FF"> </span><span style="color: #ECEFF4">}</span><span style="color: #81A1C1">}&gt;</span></span>
<span class="line"><span style="color: #D8DEE9FF">        </span><span style="color: #81A1C1">{</span><span style="color: #616E88">/* Box：フォーム全体の囲み */</span><span style="color: #81A1C1">}</span></span>
<span class="line"><span style="color: #D8DEE9FF">        </span><span style="color: #81A1C1">&lt;</span><span style="color: #8FBCBB">Box</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">component</span><span style="color: #81A1C1">={</span><span style="color: #D8DEE9">Paper</span><span style="color: #81A1C1">}</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">elevation</span><span style="color: #81A1C1">={</span><span style="color: #B48EAD">3</span><span style="color: #81A1C1">}</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">p</span><span style="color: #81A1C1">={</span><span style="color: #B48EAD">4</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">Typography</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">h5</span><span style="color: #ECEFF4">&quot;</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">gutterBottom</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;/</span><span style="color: #8FBCBB">Typography</span><span style="color: #81A1C1">&gt;</span></span>
<span class="line"></span>
<span class="line"><span style="color: #D8DEE9FF">          </span><span style="color: #81A1C1">{</span><span style="color: #616E88">/* Grid：縦並びレイアウト */</span><span style="color: #81A1C1">}</span></span>
<span class="line"><span style="color: #D8DEE9FF">          </span><span style="color: #81A1C1">&lt;</span><span style="color: #8FBCBB">Grid</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">container</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">spacing</span><span style="color: #81A1C1">={</span><span style="color: #B48EAD">2</span><span style="color: #81A1C1">}</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">direction</span><span style="color: #81A1C1">=</span><span style="color: #ECEFF4">&quot;</span><span style="color: #A3BE8C">column</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">{</span><span style="color: #616E88">/* 名前入力 */</span><span style="color: #81A1C1">}</span></span>
<span class="line"><span style="color: #D8DEE9FF">            </span><span style="color: #81A1C1">&lt;</span><span style="color: #8FBCBB">Grid</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">item</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">TextField</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">label</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">fullWidth</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">outlined</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;/</span><span style="color: #8FBCBB">Grid</span><span style="color: #81A1C1">&gt;</span></span>
<span class="line"></span>
<span class="line"><span style="color: #D8DEE9FF">            </span><span style="color: #81A1C1">{</span><span style="color: #616E88">/* メールアドレス入力 */</span><span style="color: #81A1C1">}</span></span>
<span class="line"><span style="color: #D8DEE9FF">            </span><span style="color: #81A1C1">&lt;</span><span style="color: #8FBCBB">Grid</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">item</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">TextField</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">label</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">fullWidth</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">outlined</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;/</span><span style="color: #8FBCBB">Grid</span><span style="color: #81A1C1">&gt;</span></span>
<span class="line"></span>
<span class="line"><span style="color: #D8DEE9FF">            </span><span style="color: #81A1C1">{</span><span style="color: #616E88">/* 件名 */</span><span style="color: #81A1C1">}</span></span>
<span class="line"><span style="color: #D8DEE9FF">            </span><span style="color: #81A1C1">&lt;</span><span style="color: #8FBCBB">Grid</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">item</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">TextField</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">label</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">fullWidth</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">outlined</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;/</span><span style="color: #8FBCBB">Grid</span><span style="color: #81A1C1">&gt;</span></span>
<span class="line"></span>
<span class="line"><span style="color: #D8DEE9FF">            </span><span style="color: #81A1C1">{</span><span style="color: #616E88">/* 内容 */</span><span style="color: #81A1C1">}</span></span>
<span class="line"><span style="color: #D8DEE9FF">            </span><span style="color: #81A1C1">&lt;</span><span style="color: #8FBCBB">Grid</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">item</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">TextField</span></span>
<span class="line"><span style="color: #D8DEE9FF">                </span><span style="color: #8FBCBB">label</span><span style="color: #81A1C1">=</span><span style="color: #ECEFF4">&quot;</span><span style="color: #A3BE8C">お問い合わせ内容</span><span style="color: #ECEFF4">&quot;</span></span>
<span class="line"><span style="color: #D8DEE9FF">                </span><span style="color: #8FBCBB">fullWidth</span></span>
<span class="line"><span style="color: #D8DEE9FF">                </span><span style="color: #8FBCBB">multiline</span></span>
<span class="line"><span style="color: #D8DEE9FF">                </span><span style="color: #8FBCBB">rows</span><span style="color: #81A1C1">={</span><span style="color: #B48EAD">4</span><span style="color: #81A1C1">}</span></span>
<span class="line"><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">outlined</span><span style="color: #ECEFF4">&quot;</span></span>
<span class="line"><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;/</span><span style="color: #8FBCBB">Grid</span><span style="color: #81A1C1">&gt;</span></span>
<span class="line"></span>
<span class="line"><span style="color: #D8DEE9FF">            </span><span style="color: #81A1C1">{</span><span style="color: #616E88">/* 送信ボタン */</span><span style="color: #81A1C1">}</span></span>
<span class="line"><span style="color: #D8DEE9FF">            </span><span style="color: #81A1C1">&lt;</span><span style="color: #8FBCBB">Grid</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">item</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>
<span class="line"><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">contained</span><span style="color: #ECEFF4">&quot;</span></span>
<span class="line"><span style="color: #D8DEE9FF">                </span><span style="color: #8FBCBB">color</span><span style="color: #81A1C1">=</span><span style="color: #ECEFF4">&quot;</span><span style="color: #A3BE8C">primary</span><span style="color: #ECEFF4">&quot;</span></span>
<span class="line"><span style="color: #D8DEE9FF">                </span><span style="color: #8FBCBB">fullWidth</span></span>
<span class="line"><span style="color: #D8DEE9FF">                </span><span style="color: #8FBCBB">onClick</span><span style="color: #81A1C1">={</span><span style="color: #ECEFF4">()</span><span style="color: #D8DEE9FF"> </span><span style="color: #81A1C1">=&gt;</span><span style="color: #D8DEE9FF"> </span><span style="color: #88C0D0">setOpen</span><span style="color: #D8DEE9FF">(</span><span style="color: #81A1C1">true</span><span style="color: #D8DEE9FF">)</span><span style="color: #81A1C1">}</span></span>
<span class="line"><span style="color: #D8DEE9FF">              </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;/</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">Grid</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">Grid</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">Box</span><span style="color: #81A1C1">&gt;</span></span>
<span class="line"></span>
<span class="line"><span style="color: #D8DEE9FF">        </span><span style="color: #81A1C1">{</span><span style="color: #616E88">/* Card：会社案内パネル */</span><span style="color: #81A1C1">}</span></span>
<span class="line"><span style="color: #D8DEE9FF">        </span><span style="color: #81A1C1">&lt;</span><span style="color: #8FBCBB">Box</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">mt</span><span style="color: #81A1C1">={</span><span style="color: #B48EAD">4</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">Card</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">CardContent</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">Typography</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">h6</span><span style="color: #ECEFF4">&quot;</span><span style="color: #81A1C1">&gt;</span><span style="color: #D8DEE9FF">ABC会社について</span><span style="color: #81A1C1">&lt;/</span><span style="color: #8FBCBB">Typography</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">Typography</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">body2</span><span style="color: #ECEFF4">&quot;</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">color</span><span style="color: #81A1C1">=</span><span style="color: #ECEFF4">&quot;</span><span style="color: #A3BE8C">text.secondary</span><span style="color: #ECEFF4">&quot;</span><span style="color: #81A1C1">&gt;</span></span>
<span class="line"><span style="color: #D8DEE9FF">                〒100-0001 東京都中央区サンプル1-2-3 営業時間：平日 9:00〜18:00</span></span>
<span class="line"><span style="color: #D8DEE9FF">                電話：03-1234-5678</span></span>
<span class="line"><span style="color: #D8DEE9FF">              </span><span style="color: #81A1C1">&lt;/</span><span style="color: #8FBCBB">Typography</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">CardContent</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">Card</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">Box</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">Container</span><span style="color: #81A1C1">&gt;</span></span>
<span class="line"></span>
<span class="line"><span style="color: #D8DEE9FF">      </span><span style="color: #81A1C1">{</span><span style="color: #616E88">/* Dialog：送信後モーダル */</span><span style="color: #81A1C1">}</span></span>
<span class="line"><span style="color: #D8DEE9FF">      </span><span style="color: #81A1C1">&lt;</span><span style="color: #8FBCBB">Dialog</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">open</span><span style="color: #81A1C1">={</span><span style="color: #D8DEE9">open</span><span style="color: #81A1C1">}</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">onClose</span><span style="color: #81A1C1">={</span><span style="color: #ECEFF4">()</span><span style="color: #D8DEE9FF"> </span><span style="color: #81A1C1">=&gt;</span><span style="color: #D8DEE9FF"> </span><span style="color: #88C0D0">setOpen</span><span style="color: #D8DEE9FF">(</span><span style="color: #81A1C1">false</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;</span><span style="color: #8FBCBB">DialogTitle</span><span style="color: #81A1C1">&gt;</span><span style="color: #D8DEE9FF">送信完了</span><span style="color: #81A1C1">&lt;/</span><span style="color: #8FBCBB">DialogTitle</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">DialogContent</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">Typography</span><span style="color: #81A1C1">&gt;</span></span>
<span class="line"><span style="color: #D8DEE9FF">            お問い合わせありがとうございました。ABC会社より折り返しご連絡いたします。</span></span>
<span class="line"><span style="color: #D8DEE9FF">          </span><span style="color: #81A1C1">&lt;/</span><span style="color: #8FBCBB">Typography</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">DialogContent</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">DialogActions</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">onClick</span><span style="color: #81A1C1">={</span><span style="color: #ECEFF4">()</span><span style="color: #D8DEE9FF"> </span><span style="color: #81A1C1">=&gt;</span><span style="color: #D8DEE9FF"> </span><span style="color: #88C0D0">setOpen</span><span style="color: #D8DEE9FF">(</span><span style="color: #81A1C1">false</span><span style="color: #D8DEE9FF">)</span><span style="color: #81A1C1">}</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">autoFocus</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;/</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">DialogActions</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">Dialog</span><span style="color: #81A1C1">&gt;</span></span>
<span class="line"><span style="color: #D8DEE9FF">    </span><span style="color: #81A1C1">&lt;/&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>
<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: #D8DEE9">ContactForm</span><span style="color: #81A1C1">;</span></span></code></pre></div>



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



<div class="wp-block-cocoon-blocks-blogcard blogcard-type bct-together is-style-normal-card">
<a href="https://it-bokenki.com/2025/06/11/zod/" title="Zodとは？React Hook Formとの連携でバリデーション実装" 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/２行-1-320x180.png" class="blogcard-thumb-image internal-blogcard-thumb-image wp-post-image" alt="" srcset="https://it-bokenki.com/wp-content/uploads/2025/06/２行-1-320x180.png 320w, https://it-bokenki.com/wp-content/uploads/2025/06/２行-1-120x68.png 120w, https://it-bokenki.com/wp-content/uploads/2025/06/２行-1-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">Zodとは？React Hook Formとの連携でバリデーション実装</div><div class="blogcard-snippet internal-blogcard-snippet">TypeScriptで使えるバリデーションライブラリ「Zod」の基本と、React Hook Formとの連携方法を解説します。</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>
<p></p>
</div>



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



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



<h2 class="wp-block-heading"><span id="toc4">こんなときにMUIはおすすめ！</span></h2>



<ul class="wp-block-list">
<li>デザインの統一感がほしいとき</li>



<li>手早く開発を進めたいとき</li>



<li>チーム開発で見た目を揃えたいとき</li>



<li>バリデーション付きのフォームなど、複雑なUIを早く実装したいとき</li>
</ul>



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



<h2 class="wp-block-heading"><span id="toc5">注意点・デメリット</span></h2>



<ul class="wp-block-list">
<li>クラス名で直接装飾しにくく、カスタマイズが難しいと感じることがある</li>



<li>内部でEmotion（CSS-in-JS）を使っているため、<strong><span class="marker">CSSの書き方が普通と少し違う</span></strong></li>
</ul>



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



<p><strong>◆ 普通のCSSの書き方</strong></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"><textarea class="code-block-pro-copy-button-textarea" aria-hidden="true" readonly>/* style.css */
.button {
  background-color: red;
}</textarea><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">/* style.css */</span></span>
<span class="line"><span style="color: #ECEFF4">.</span><span style="color: #D8DEE9">button</span><span style="color: #D8DEE9FF"> </span><span style="color: #ECEFF4">{</span></span>
<span class="line"><span style="color: #D8DEE9FF">  </span><span style="color: #D8DEE9">background</span><span style="color: #81A1C1">-</span><span style="color: #D8DEE9FF">color</span><span style="color: #ECEFF4">:</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">red</span><span style="color: #81A1C1">;</span></span>
<span class="line"><span style="color: #ECEFF4">}</span></span></code></pre></div>



<p><strong>◆ Emotion（CSS-in-JS）を使った書き方（MUIの場合）</strong></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"><textarea class="code-block-pro-copy-button-textarea" aria-hidden="true" readonly>import { styled } from &#8216;@mui/material/styles&#8217;;

const CustomButton = styled(&#8216;button&#8217;)({
  backgroundColor: &#8216;red&#8217;,
});
</textarea><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: #D8DEE9">styled</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">&#39;</span><span style="color: #A3BE8C">@mui/material/styles</span><span style="color: #ECEFF4">&#39;</span><span style="color: #81A1C1">;</span></span>
<span class="line"></span>
<span class="line"><span style="color: #81A1C1">const</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">CustomButton</span><span style="color: #D8DEE9FF"> </span><span style="color: #81A1C1">=</span><span style="color: #D8DEE9FF"> </span><span style="color: #88C0D0">styled</span><span style="color: #D8DEE9FF">(</span><span style="color: #ECEFF4">&#39;</span><span style="color: #A3BE8C">button</span><span style="color: #ECEFF4">&#39;</span><span style="color: #D8DEE9FF">)(</span><span style="color: #ECEFF4">{</span></span>
<span class="line"><span style="color: #D8DEE9FF">  </span><span style="color: #D8DEE9">backgroundColor</span><span style="color: #ECEFF4">:</span><span style="color: #D8DEE9FF"> </span><span style="color: #ECEFF4">&#39;</span><span style="color: #A3BE8C">red</span><span style="color: #ECEFF4">&#39;</span><span style="color: #ECEFF4">,</span></span>
<span class="line"><span style="color: #ECEFF4">}</span><span style="color: #D8DEE9FF">)</span><span style="color: #81A1C1">;</span></span>
<span class="line"></span></code></pre></div>



<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+CDC99U+2JK4+3B3ZA9">
<img loading="lazy" decoding="async" border="0" width="300" height="250" alt="" src="https://www26.a8.net/svt/bgt?aid=230629372748&#038;wid=001&#038;eno=01&#038;mid=s00000011866020006000&#038;mc=1"></a>
<img loading="lazy" decoding="async" border="0" width="1" height="1" src="https://www11.a8.net/0.gif?a8mat=3TB6RG+CDC99U+2JK4+3B3ZA9" alt=""></div><p>The post <a href="https://it-bokenki.com/2025/06/14/mui/">MUIとは？ReactでおしゃれなUIがすぐ作れるライブラリを解説！</a> first appeared on <a href="https://it-bokenki.com">てんハロ｜未経験エンジニアのIT学習ログ</a>.</p>]]></content:encoded>
					
					<wfw:commentRss>https://it-bokenki.com/2025/06/14/mui/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
