【実務・中級編】meta charsetによる文字エンコーディング指定 – HTML実践ガイド

よう、諸君。フロントエンドの現場は相変わらずカオスか? 俺は相変わらずだ。日々、ブラウザの奇妙な挙動に頭を悩ませたり、JavaScriptの最新フレームワークに振り回されたりしながら、それでもなんとかページを形にしている。

さて、今日はちょっと地味だけど、でもめちゃくちゃ重要で、意外とみんな「これでいいんだっけ?」ってなってるかもしれない、あの `` について話そうと思う。特に、UTF-8指定の話だ。これ、一歩間違えると文字化けの元凶になるし、かといって難しく考える必要もない。現場で「これだけ押さえておけばOK」っていうポイントを、俺の経験談も交えながら、ガッツリ解説していくから、コーヒーでも用意して、ゆっくり読んでくれ。

なぜ `` が必要なのか? ~文字化けとの戦い~

まず、なぜ文字エンコーディングの指定が必要なのか、その根本から理解しておこう。

君たちが書いたHTMLファイルは、結局のところ、0と1の羅列だ。ブラウザはその0と1の羅列を受け取って、それを人間が読める文字(「あ」とか「い」とか、アルファベットとか)に変換して画面に表示してくれる。この「0と1の羅列を、どの文字に変換するか」というルールを決めているのが、文字エンコーディングなんだ。

昔は、日本語ならShift_JIS、欧文ならISO-8859-1、なんていう、それぞれ別のエンコーディングが使われていた。ところが、世の中には日本語の文字も、アルファベットも、絵文字も、ありとあらゆる文字が存在する。一つのエンコーディングでは、すべての文字を表現しきれない。そこで登場したのが、 UTF-8 だ。

UTF-8は、世界中のほとんどすべての文字を、一つのエンコーディングで表現できる、まさに「標準」と呼ぶにふさわしい規格だ。だから、最近のWebサイトで文字化けに悩まされることが少なくなったのは、UTF-8のおかげと言っても過言じゃない。

でも、ここで問題が発生する。ブラウザは、君のHTMLファイルを受け取ったとき、一体どのエンコーディングで解釈すればいいのか、最初はわからないんだ。もし、君がHTMLファイル内で「このファイルはUTF-8で書かれているよ!」と明示的に伝えてあげないと、ブラウザは「えーっと、たぶんこれかな?」と、勘で解釈しようとする。そして、その勘が外れたときに、あの忌々しい「文字化け」が発生するわけだ。

「ã‚“ã ‚ã ‚ã ‚」とか、「㠂㠂㠂」とか、あの悲惨な文字列を見たことがあるだろう?あれは、ブラウザがUTF-8で書かれたファイルを、Shift_JISだと思って無理やり解釈しようとした結果なんだ。

HTML5における `` の最適解 ~シンプル・イズ・ベスト~

さて、この文字化けを防ぐための `` 指定、昔はちょっと面倒だった。例えば、こんな感じだ。

これは、`http-equiv` 属性を使って、HTTPヘッダーのような情報をブラウザに伝えようとしていた名残だ。でも、HTML5になって、もっとシンプルで分かりやすい書き方が標準になった。それが、これだ。

たったこれだけ。これだけで、ブラウザに「このドキュメントはUTF-8でエンコードされていますよ!」と、明確に伝えることができる。

なぜこの書き方がベストなのか?

1. 簡潔性: コード量が圧倒的に少ない。開発者はもっと重要なことに集中できる。
2. 可読性: 何をしているかが一目瞭然。「文字コードはUTF-8です」と、そのまま読める。
3. HTML5標準: HTML5で推奨されている記述方法であり、将来的な互換性も高い。
4. ブラウザの早期認識: この `` タグは、HTMLのパース(解析)が始まる、できるだけ早い段階でブラウザに認識されることが重要だ。なぜなら、ブラウザが文字を解釈するルールを早期に確定させることで、後続のHTML要素の解釈をスムーズに進め、文字化けのリスクを最小限に抑えることができるからだ。

ブラウザは裏側でどう処理しているのか? ~想像力を働かせよう~

君が `` と書いたとする。ブラウザは、HTMLファイルをダウンロードし始めたら、まず最初に `` タグを探す。そして、その中の `` を見つける。

ブラウザの内部では、こんなイメージだ。

1. 「おっと、charset指定発見!」: ブラウザは、「あ、このファイルはUTF-8なんだな」と、内部のフラグを立てる。
2. 「よし、UTF-8モードで解析開始!」: その瞬間から、ブラウザは受け取ったバイト列を、UTF-8のルールに従って文字に変換していく。
3. 「文字化け、未然に防げたぜ!」: HTMLの解析が本格化し、テキストが表示される段階では、すでに正しい文字コードで解釈されているので、文字化けは起こらない。

もし、この `` がなかったら、ブラウザはHTMLのコンテンツをある程度読み進めてから、「あれ?これ、どの言語の文字なんだろう?」と推測しようとする。そして、その推測が外れたり、あるいは推測自体がうまくいかなかったりすると、文字化けが発生する。

だから、`` は、 `` タグの一番最初に書くのが、現場の鉄則だ。

現場で使える! クリーンなサンプルコード

さて、ここからは「これさえあれば間違いない」という、現場でそのまま使えるコード例を示す。

基本的なHTML5のテンプレート(UTF-8指定あり)






私の素晴らしいウェブサイト















こんにちは、世界!

これはUTF-8で正しく表示されるはずの日本語のテキストです。

This is an English text.

😊 絵文字もバッチリ!




コードのポイント解説

  • ``: これはHTML5であることを宣言するものです。これがないと、ブラウザは「互換モード」という、古い仕様でレンダリングしようとする場合があります。必ず一番最初に書きましょう。
  • ``: ドキュメントの言語を日本語に指定しています。これは、検索エンジンやスクリーンリーダーがコンテンツを正しく解釈するために重要です。
  • ``: これが今日の主役。`` の一番最初に書くことで、ブラウザにUTF-8であることを早期に伝えます。
  • ``</b>: ページのタイトルです。検索結果に表示されたり、ブラウザのタブに表示されたりします。</li> <li><b>`<meta name="viewport" ...>`</b>: レスポンシブデザインの基本中の基本。スマホでの表示崩れを防ぎます。</li> <li><b>OGP設定 (`property=”og:…”`)</b>: SNSでシェアされたときの見た目を整えます。最近のWeb開発では必須と言っていいでしょう。</li> <li><b>Twitter Card設定 (`name=”twitter:…”`)</b>: Twitter(X)に特化した設定です。OGPと似ていますが、Twitterでの表示をより細かく制御したい場合に利用します。</li> <li><b>ファビコン (`<link rel="icon">`)</b>: ブラウザタブに表示されるアイコンです。</li> <li><b>CSS/JavaScriptの読み込み</b>: これらは`<head>`内や`<body>`の終了直前に置くのが一般的ですが、パフォーマンスとの兼ね合いで最適な場所が変わることもあります。現代では、`defer`属性を使ったJSの読み込みが主流ですね。</li> </ul> <h3><span id="toc8">まとめ:迷ったら、このUTF-8指定を!</span></h3> <p>さて、ここまで `<meta charset="UTF-8">` について、その重要性からHTML5での正しい書き方、そしてブラウザの裏側での処理まで、じっくり見てきた。</p> <p>現場で「あー、charsetどう書くんだっけ?」って迷ったら、今回紹介したこの形を思い出してほしい。</p> <p><meta charset="UTF-8"></p> <p>そして、それを `<head>` タグの、できるだけ<b>早い位置</b>に置く。これだけだ。<br /> これだけで、文字化けという、開発者にとって小さくないストレスから解放される。</p> <p>Web開発の世界は、常に進化していて、新しい技術やツールが次々と生まれてくる。でも、こういう基本的な部分をしっかり押さえていることが、結局は一番の近道なんだ。小手先のテクニックに飛びつく前に、土台をしっかり固める。それが、俺たちがプロとして、安定して良いものを作り続けるための秘訣だと思う。</p> <p>今日の話が、君たちの現場での開発の一助になれば幸いだ。また何か「これ、どうなの?」ってことがあったら、いつでも聞いてくれ。じゃあ、またな!</p> </div> <footer class="article-footer entry-footer"> <div class="entry-categories-tags ctdt-one-row"> <div class="entry-categories"><a class="cat-link cat-link-2" href="https://frontend.intronational.com/category/html/"><span class="fa fa-folder cat-icon tax-icon" aria-hidden="true"></span>HTML</a><a class="cat-link cat-link-8" href="https://frontend.intronational.com/category/html/%e3%83%ab%e3%83%bc%e3%83%88%e3%81%a8%e3%83%a1%e3%82%bf%e3%83%87%e3%83%bc%e3%82%bf%ef%bc%88html-head-meta-ogp%ef%bc%89/"><span class="fa fa-folder cat-icon tax-icon" aria-hidden="true"></span>ルートとメタデータ(html, head, meta, OGP)</a></div> </div> <div class="ad-area no-icon ad-content-bottom ad-rectangle ad-label-visible cf" itemscope itemtype="https://schema.org/WPAdBlock"> <div class="ad-label" itemprop="name" data-nosnippet>スポンサーリンク</div> <div class="ad-wrap"> <div class="ad-responsive ad-usual"><!-- レスポンシブコード --> <ins class="adsbygoogle" style="display:block" data-ad-client="ca-pub-7214025567716564" data-ad-slot="6558619545" data-ad-format="rectangle" data-full-width-responsive="true"></ins> <script> (adsbygoogle = window.adsbygoogle || []).push({}); </script></div> </div> </div> <div class="sns-share ss-col-3 bc-brand-color sbc-hide ss-bottom"> <div class="sns-share-message">シェアする</div> <div class="sns-share-buttons sns-buttons"> <a href="https://x.com/intent/tweet?text=%E3%80%90%E5%AE%9F%E5%8B%99%E3%83%BB%E4%B8%AD%E7%B4%9A%E7%B7%A8%E3%80%91meta+charset%E3%81%AB%E3%82%88%E3%82%8B%E6%96%87%E5%AD%97%E3%82%A8%E3%83%B3%E3%82%B3%E3%83%BC%E3%83%87%E3%82%A3%E3%83%B3%E3%82%B0%E6%8C%87%E5%AE%9A+%E2%80%93+HTML%E5%AE%9F%E8%B7%B5%E3%82%AC%E3%82%A4%E3%83%89&url=https%3A%2F%2Ffrontend.intronational.com%2F2026%2F07%2F01%2F%25e3%2580%2590%25e5%25ae%259f%25e5%258b%2599%25e3%2583%25bb%25e4%25b8%25ad%25e7%25b4%259a%25e7%25b7%25a8%25e3%2580%2591meta-charset%25e3%2581%25ab%25e3%2582%2588%25e3%2582%258b%25e6%2596%2587%25e5%25ad%2597%25e3%2582%25a8%25e3%2583%25b3%25e3%2582%25b3%25e3%2583%25bc%25e3%2583%2587%25e3%2582%25a3%25e3%2583%25b3%2F" class="sns-button share-button twitter-button twitter-share-button-sq x-corp-button x-corp-share-button-sq" target="_blank" title="Xでシェア" rel="nofollow noopener noreferrer" aria-label="Xでシェア"><span class="social-icon icon-x-corp"></span><span class="button-caption">X</span><span class="share-count twitter-share-count x-share-count"></span></a> <a href="//www.facebook.com/sharer/sharer.php?u=https%3A%2F%2Ffrontend.intronational.com%2F2026%2F07%2F01%2F%25e3%2580%2590%25e5%25ae%259f%25e5%258b%2599%25e3%2583%25bb%25e4%25b8%25ad%25e7%25b4%259a%25e7%25b7%25a8%25e3%2580%2591meta-charset%25e3%2581%25ab%25e3%2582%2588%25e3%2582%258b%25e6%2596%2587%25e5%25ad%2597%25e3%2582%25a8%25e3%2583%25b3%25e3%2582%25b3%25e3%2583%25bc%25e3%2583%2587%25e3%2582%25a3%25e3%2583%25b3%2F&t=%E3%80%90%E5%AE%9F%E5%8B%99%E3%83%BB%E4%B8%AD%E7%B4%9A%E7%B7%A8%E3%80%91meta+charset%E3%81%AB%E3%82%88%E3%82%8B%E6%96%87%E5%AD%97%E3%82%A8%E3%83%B3%E3%82%B3%E3%83%BC%E3%83%87%E3%82%A3%E3%83%B3%E3%82%B0%E6%8C%87%E5%AE%9A+%E2%80%93+HTML%E5%AE%9F%E8%B7%B5%E3%82%AC%E3%82%A4%E3%83%89" class="sns-button share-button facebook-button facebook-share-button-sq" target="_blank" title="Facebookでシェア" rel="nofollow noopener noreferrer" aria-label="Facebookでシェア"><span class="social-icon icon-facebook"></span><span class="button-caption">Facebook</span><span class="share-count facebook-share-count"></span></a> <a href="//b.hatena.ne.jp/entry/s/frontend.intronational.com/2026/07/01/%e3%80%90%e5%ae%9f%e5%8b%99%e3%83%bb%e4%b8%ad%e7%b4%9a%e7%b7%a8%e3%80%91meta-charset%e3%81%ab%e3%82%88%e3%82%8b%e6%96%87%e5%ad%97%e3%82%a8%e3%83%b3%e3%82%b3%e3%83%bc%e3%83%87%e3%82%a3%e3%83%b3/" class="sns-button share-button hatebu-button hatena-bookmark-button hatebu-share-button-sq" data-hatena-bookmark-layout="simple" target="_blank" title="はてブでブックマーク" rel="nofollow noopener noreferrer" aria-label="はてブでブックマーク"><span class="social-icon icon-hatena"></span><span class="button-caption">はてブ</span><span class="share-count hatebu-share-count"></span></a> <a href="//timeline.line.me/social-plugin/share?url=https%3A%2F%2Ffrontend.intronational.com%2F2026%2F07%2F01%2F%25e3%2580%2590%25e5%25ae%259f%25e5%258b%2599%25e3%2583%25bb%25e4%25b8%25ad%25e7%25b4%259a%25e7%25b7%25a8%25e3%2580%2591meta-charset%25e3%2581%25ab%25e3%2582%2588%25e3%2582%258b%25e6%2596%2587%25e5%25ad%2597%25e3%2582%25a8%25e3%2583%25b3%25e3%2582%25b3%25e3%2583%25bc%25e3%2583%2587%25e3%2582%25a3%25e3%2583%25b3%2F" class="sns-button share-button line-button line-share-button-sq" target="_blank" title="LINEでシェア" rel="nofollow noopener noreferrer" aria-label="LINEでシェア"><span class="social-icon icon-line"></span><span class="button-caption">LINE</span><span class="share-count line-share-count"></span></a> <a href="//www.pinterest.com/pin/create/button/?url=https%3A%2F%2Ffrontend.intronational.com%2F2026%2F07%2F01%2F%25e3%2580%2590%25e5%25ae%259f%25e5%258b%2599%25e3%2583%25bb%25e4%25b8%25ad%25e7%25b4%259a%25e7%25b7%25a8%25e3%2580%2591meta-charset%25e3%2581%25ab%25e3%2582%2588%25e3%2582%258b%25e6%2596%2587%25e5%25ad%2597%25e3%2582%25a8%25e3%2583%25b3%25e3%2582%25b3%25e3%2583%25bc%25e3%2583%2587%25e3%2582%25a3%25e3%2583%25b3%2F" class="sns-button share-button pinterest-button pinterest-share-button-sq" target="_blank" title="Pinterestでシェア" rel="nofollow noopener noreferrer" data-pin-do="buttonBookmark" data-pin-custom="true" aria-label="Pinterestでシェア"><span class="social-icon icon-pinterest"></span><span class="button-caption">Pinterest</span><span class="share-count pinterest-share-count"></span></a> <a role="button" tabindex="0" class="sns-button share-button copy-button copy-share-button-sq" data-clipboard-text="【実務・中級編】meta charsetによる文字エンコーディング指定 – HTML実践ガイド https://frontend.intronational.com/2026/07/01/%e3%80%90%e5%ae%9f%e5%8b%99%e3%83%bb%e4%b8%ad%e7%b4%9a%e7%b7%a8%e3%80%91meta-charset%e3%81%ab%e3%82%88%e3%82%8b%e6%96%87%e5%ad%97%e3%82%a8%e3%83%b3%e3%82%b3%e3%83%bc%e3%83%87%e3%82%a3%e3%83%b3/" title="タイトルとURLをコピーする" aria-label="タイトルとURLをコピーする"><span class="social-icon icon-copy"></span><span class="button-caption">コピー</span><span class="share-count copy-share-count"></span></a> </div><!-- /.sns-share-buttons --> </div><!-- /.sns-share --> <!-- SNSページ --> <div class="sns-follow bc-brand-color fbc-hide sf-bottom"> <div class="sns-follow-message">frontendintronationalをフォローする</div> <div class="sns-follow-buttons sns-buttons"> <a href="//feedly.com/i/discover/sources/search/feed/https%3A%2F%2Ffrontend.intronational.com" class="sns-button follow-button feedly-button feedly-follow-button-sq" target="_blank" title="feedlyで更新情報を購読" rel="nofollow noopener noreferrer" aria-label="feedlyで更新情報を購読"><span class="icon-feedly-logo"></span><span class="follow-count feedly-follow-count"></span></a> <a href="https://frontend.intronational.com/feed/" class="sns-button follow-button rss-button rss-follow-button-sq" target="_blank" title="RSSで更新情報を購読" rel="nofollow noopener noreferrer" aria-label="RSSで更新情報を購読"><span class="icon-rss-logo"></span></a> </div><!-- /.sns-follow-buttons --> </div><!-- /.sns-follow --> <div class="footer-meta"> <div class="author-info"> <span class="fa fa-pencil" aria-hidden="true"></span> <a href="https://frontend.intronational.com/author/frontendintronational/" class="author-link"> <span class="post-author vcard author" itemprop="editor author creator copyrightHolder" itemscope itemtype="https://schema.org/Person"> <meta itemprop="url" content="https://frontend.intronational.com/author/frontendintronational/"> <span class="author-name fn" itemprop="name">frontendintronational</span> </span> </a> </div> </div> </footer> </article> <div class="under-entry-content"> <aside id="related-entries" class="related-entries rect-entry-card"> <h2 class="related-entry-heading"> <span class="related-entry-main-heading main-caption"> 関連記事 </span> </h2> <div class="related-list"> <a href="https://frontend.intronational.com/2026/07/14/%e3%80%90%e5%ae%9f%e5%8b%99%e3%83%bb%e4%b8%ad%e7%b4%9a%e7%b7%a8%e3%80%91%e3%82%a2%e3%82%a6%e3%83%88%e3%83%a9%e3%82%a4%e3%83%b3%e3%82%a2%e3%83%ab%e3%82%b4%e3%83%aa%e3%82%ba%e3%83%a0%e3%81%ae%e7%8f%be/" class="related-entry-card-wrap a-wrap border-element cf" title="【実務・中級編】アウトラインアルゴリズムの現状と課題 – HTML実践ガイド"> <article class="post-2025 related-entry-card e-card cf post type-post status-publish format-standard hentry category-html-post category-header-nav-main-article-section-footer-post"> <figure class="related-entry-card-thumb card-thumb e-card-thumb"> <img src="https://frontend.intronational.com/wp-content/themes/cocoon-master/images/no-image-160.png" alt="" class="no-image related-entry-card-no-image" width="160" height="90" /> <span class="cat-label cat-label-2">HTML</span> </figure><!-- /.related-entry-thumb --> <div class="related-entry-card-content card-content e-card-content"> <h3 class="related-entry-card-title card-title e-card-title"> 【実務・中級編】アウトラインアルゴリズムの現状と課題 – HTML実践ガイド </h3> <div class="related-entry-card-snippet card-snippet e-card-snippet"> HTMLの「アウトラインアルゴリズム」という幻想を捨て、見出しで構造を語る理由フロントエンドの世界に足を踏み入れ、マークアップを学び始めると必ず一度は耳にするのが「セクショニング・コンテンツによるアウトライン生成」という概念です。「``や`... </div> </div><!-- /.related-entry-card-content --> </article><!-- /.related-entry-card --> </a><!-- /.related-entry-card-wrap --> <a href="https://frontend.intronational.com/2026/08/16/%e3%80%90%e3%83%86%e3%82%af%e3%83%8b%e3%82%ab%e3%83%ab%e3%83%bb%e4%b8%8a%e7%b4%9a%e7%b7%a8%e3%80%91before-after%e7%96%91%e4%bc%bc%e8%a6%81%e7%b4%a0%e3%81%ab%e3%82%88%e3%82%8b%e3%82%a4%e3%83%b3/" class="related-entry-card-wrap a-wrap border-element cf" title="【テクニカル・上級編】::before/::after疑似要素によるインライン装飾 – HTML実践ガイド"> <article class="post-2792 related-entry-card e-card cf post type-post status-publish format-standard hentry category-html-post category-a-span-strong-em-code-time-post"> <figure class="related-entry-card-thumb card-thumb e-card-thumb"> <img src="https://frontend.intronational.com/wp-content/themes/cocoon-master/images/no-image-160.png" alt="" class="no-image related-entry-card-no-image" width="160" height="90" /> <span class="cat-label cat-label-2">HTML</span> </figure><!-- /.related-entry-thumb --> <div class="related-entry-card-content card-content e-card-content"> <h3 class="related-entry-card-title card-title e-card-title"> 【テクニカル・上級編】::before/::after疑似要素によるインライン装飾 – HTML実践ガイド </h3> <div class="related-entry-card-snippet card-snippet e-card-snippet"> 疑似要素という名の「DOM汚染なき装飾」の深淵へWebフロントエンドの世界で、`::before` や `::after` 疑似要素を単なる「見た目の装飾ツール」と捉えているなら、それはあまりにも勿体ない。これらの疑似要素は、DOMツリーを... </div> </div><!-- /.related-entry-card-content --> </article><!-- /.related-entry-card --> </a><!-- /.related-entry-card-wrap --> <a href="https://frontend.intronational.com/2026/08/24/%e3%80%90%e5%85%a5%e9%96%80%e7%b7%a8%e3%80%91hyphens%e3%83%97%e3%83%ad%e3%83%91%e3%83%86%e3%82%a3%e3%81%ab%e3%82%88%e3%82%8b%e8%87%aa%e5%8b%95%e3%83%8f%e3%82%a4%e3%83%95%e3%83%8d%e3%83%bc%e3%82%b7/" class="related-entry-card-wrap a-wrap border-element cf" title="【入門編】hyphensプロパティによる自動ハイフネーション – HTML実践ガイド"> <article class="post-2889 related-entry-card e-card cf post type-post status-publish format-standard hentry category-html-post category-a-span-strong-em-code-time-post"> <figure class="related-entry-card-thumb card-thumb e-card-thumb"> <img src="https://frontend.intronational.com/wp-content/themes/cocoon-master/images/no-image-160.png" alt="" class="no-image related-entry-card-no-image" width="160" height="90" /> <span class="cat-label cat-label-2">HTML</span> </figure><!-- /.related-entry-thumb --> <div class="related-entry-card-content card-content e-card-content"> <h3 class="related-entry-card-title card-title e-card-title"> 【入門編】hyphensプロパティによる自動ハイフネーション – HTML実践ガイド </h3> <div class="related-entry-card-snippet card-snippet e-card-snippet"> こんにちは!フロントエンドの現場で日々コードと格闘しているライターです。Webサイトを作っていて、「英語の長い単語だけ、なぜか右端からはみ出してしまう……」「そこだけ不格好な空きができてしまう」なんて経験はありませんか?実はそれ、Webデザ... </div> </div><!-- /.related-entry-card-content --> </article><!-- /.related-entry-card --> </a><!-- /.related-entry-card-wrap --> <a href="https://frontend.intronational.com/2026/07/08/%e3%80%90%e5%ae%9f%e5%8b%99%e3%83%bb%e4%b8%ad%e7%b4%9a%e7%b7%a8%e3%80%91ogp%e3%81%aeogdescription%e3%83%97%e3%83%ad%e3%83%91%e3%83%86%e3%82%a3-html%e5%ae%9f%e8%b7%b5%e3%82%ac%e3%82%a4%e3%83%89/" class="related-entry-card-wrap a-wrap border-element cf" title="【実務・中級編】OGPのog:descriptionプロパティ – HTML実践ガイド"> <article class="post-1955 related-entry-card e-card cf post type-post status-publish format-standard hentry category-html-post category-html-head-meta-ogp-post"> <figure class="related-entry-card-thumb card-thumb e-card-thumb"> <img src="https://frontend.intronational.com/wp-content/themes/cocoon-master/images/no-image-160.png" alt="" class="no-image related-entry-card-no-image" width="160" height="90" /> <span class="cat-label cat-label-2">HTML</span> </figure><!-- /.related-entry-thumb --> <div class="related-entry-card-content card-content e-card-content"> <h3 class="related-entry-card-title card-title e-card-title"> 【実務・中級編】OGPのog:descriptionプロパティ – HTML実践ガイド </h3> <div class="related-entry-card-snippet card-snippet e-card-snippet"> 「なんとなく」で終わらせない。OGP `og:description` を武器に変える実装術現場でコードをレビューしていると、HTMLの `` タグ周りで「とりあえず動けばいいや」という妥協を感じることがよくあります。特に `og:desc... </div> </div><!-- /.related-entry-card-content --> </article><!-- /.related-entry-card --> </a><!-- /.related-entry-card-wrap --> <a href="https://frontend.intronational.com/2026/08/14/%e3%80%90%e3%83%86%e3%82%af%e3%83%8b%e3%82%ab%e3%83%ab%e3%83%bb%e4%b8%8a%e7%b4%9a%e7%b7%a8%e3%80%91time%e3%82%bf%e3%82%b0%e3%81%aedatetime%e5%b1%9e%e6%80%a7%e3%81%ae%e3%83%95%e3%82%a9%e3%83%bc/" class="related-entry-card-wrap a-wrap border-element cf" title="【テクニカル・上級編】timeタグのdatetime属性のフォーマット – HTML実践ガイド"> <article class="post-2759 related-entry-card e-card cf post type-post status-publish format-standard hentry category-html-post category-a-span-strong-em-code-time-post"> <figure class="related-entry-card-thumb card-thumb e-card-thumb"> <img src="https://frontend.intronational.com/wp-content/themes/cocoon-master/images/no-image-160.png" alt="" class="no-image related-entry-card-no-image" width="160" height="90" /> <span class="cat-label cat-label-2">HTML</span> </figure><!-- /.related-entry-thumb --> <div class="related-entry-card-content card-content e-card-content"> <h3 class="related-entry-card-title card-title e-card-title"> 【テクニカル・上級編】timeタグのdatetime属性のフォーマット – HTML実践ガイド </h3> <div class="related-entry-card-snippet card-snippet e-card-snippet"> なぜ今さら `` タグなのか? ― datetime属性が握る「セマンティクスの真髄」と型安全な実装戦略フロントエンドの世界において、HTMLタグの選定は単なる「マークアップの好み」ではない。それはブラウザのレンダリングエンジンや、検索エン... </div> </div><!-- /.related-entry-card-content --> </article><!-- /.related-entry-card --> </a><!-- /.related-entry-card-wrap --> <a href="https://frontend.intronational.com/2026/07/24/%e3%80%90%e3%83%86%e3%82%af%e3%83%8b%e3%82%ab%e3%83%ab%e3%83%bb%e4%b8%8a%e7%b4%9a%e7%b7%a8%e3%80%91before%e3%81%a8after%e3%81%ab%e3%82%88%e3%82%8b%e3%83%86%e3%82%ad%e3%82%b9%e3%83%88%e3%82%b3/" class="related-entry-card-wrap a-wrap border-element cf" title="【テクニカル・上級編】::beforeと::afterによるテキストコンテンツの挿入 – HTML実践ガイド"> <article class="post-2359 related-entry-card e-card cf post type-post status-publish format-standard hentry category-html-post category-p-h1-h6-hr-pre-post"> <figure class="related-entry-card-thumb card-thumb e-card-thumb"> <img src="https://frontend.intronational.com/wp-content/themes/cocoon-master/images/no-image-160.png" alt="" class="no-image related-entry-card-no-image" width="160" height="90" /> <span class="cat-label cat-label-2">HTML</span> </figure><!-- /.related-entry-thumb --> <div class="related-entry-card-content card-content e-card-content"> <h3 class="related-entry-card-title card-title e-card-title"> 【テクニカル・上級編】::beforeと::afterによるテキストコンテンツの挿入 – HTML実践ガイド </h3> <div class="related-entry-card-snippet card-snippet e-card-snippet"> 擬似要素の「甘美な罠」:`content` プロパティとアクセシビリティの深淵Web開発の現場において、`::before` や `::after` によるコンテンツ挿入は、もはや呼吸をするかのように自然なテクニックだ。CSSだけでアイコン... </div> </div><!-- /.related-entry-card-content --> </article><!-- /.related-entry-card --> </a><!-- /.related-entry-card-wrap --> </div> </aside> <div class="ad-area no-icon ad-below-related-posts ad-rectangle ad-label-visible cf" itemscope itemtype="https://schema.org/WPAdBlock"> <div class="ad-label" itemprop="name" data-nosnippet>スポンサーリンク</div> <div class="ad-wrap"> <div class="ad-responsive ad-usual"><!-- レスポンシブコード --> <ins class="adsbygoogle" style="display:block" data-ad-client="ca-pub-7214025567716564" data-ad-slot="6558619545" data-ad-format="rectangle" data-full-width-responsive="true"></ins> <script> (adsbygoogle = window.adsbygoogle || []).push({}); </script></div> </div> </div> <div id="pager-post-navi" class="pager-post-navi post-navi-default cf"> <a href="https://frontend.intronational.com/2026/07/01/%e3%80%90%e5%85%a5%e9%96%80%e7%b7%a8%e3%80%91meta-charset%e3%81%ab%e3%82%88%e3%82%8b%e6%96%87%e5%ad%97%e3%82%a8%e3%83%b3%e3%82%b3%e3%83%bc%e3%83%87%e3%82%a3%e3%83%b3%e3%82%b0%e6%8c%87%e5%ae%9a-html/" title="【入門編】meta charsetによる文字エンコーディング指定 – HTML実践ガイド" class="prev-post a-wrap border-element cf"> <div class="fa fa-chevron-left iconfont" aria-hidden="true"></div> <figure class="prev-post-thumb card-thumb"><img src="https://frontend.intronational.com/wp-content/themes/cocoon-master/images/no-image-160.png" alt="" class="no-image post-navi-no-image" width="120" height="68" /></figure> <div class="prev-post-title">【入門編】meta charsetによる文字エンコーディング指定 – HTML実践ガイド</div></a><a href="https://frontend.intronational.com/2026/07/01/%e3%80%90%e3%83%86%e3%82%af%e3%83%8b%e3%82%ab%e3%83%ab%e3%83%bb%e4%b8%8a%e7%b4%9a%e7%b7%a8%e3%80%91meta-charset%e3%81%ab%e3%82%88%e3%82%8b%e6%96%87%e5%ad%97%e3%82%a8%e3%83%b3%e3%82%b3%e3%83%bc/" title="【テクニカル・上級編】meta charsetによる文字エンコーディング指定 – HTML実践ガイド" class="next-post a-wrap cf"> <div class="fa fa-chevron-right iconfont" aria-hidden="true"></div> <figure class="next-post-thumb card-thumb"> <img src="https://frontend.intronational.com/wp-content/themes/cocoon-master/images/no-image-160.png" alt="" class="no-image post-navi-no-image" width="120" height="68" /></figure> <div class="next-post-title">【テクニカル・上級編】meta charsetによる文字エンコーディング指定 – HTML実践ガイド</div></a> </div><!-- /.pager-post-navi --> <!-- comment area --> <div id="comment-area" class="comment-area"> <section class="comment-list"> <h2 id="comments" class="comment-title"> コメント </h2> </section> <aside class="comment-form-wrap"> <button type="button" id="comment-reply-btn" class="comment-btn key-btn">コメントを書き込む</button> <div id="respond" class="comment-respond"> <h3 id="reply-title" class="comment-reply-title">コメントをどうぞ <small><a rel="nofollow" id="cancel-comment-reply-link" href="/2026/07/01/%e3%80%90%e5%ae%9f%e5%8b%99%e3%83%bb%e4%b8%ad%e7%b4%9a%e7%b7%a8%e3%80%91meta-charset%e3%81%ab%e3%82%88%e3%82%8b%e6%96%87%e5%ad%97%e3%82%a8%e3%83%b3%e3%82%b3%e3%83%bc%e3%83%87%e3%82%a3%e3%83%b3/#respond" style="display:none;">コメントをキャンセル</a></small></h3><form action="https://frontend.intronational.com/wp-comments-post.php" method="post" id="commentform" class="comment-form"><p class="comment-notes"><span id="email-notes">メールアドレスが公開されることはありません。</span> <span class="required">※</span> が付いている欄は必須項目です</p><p class="comment-form-comment"><label for="comment">コメント <span class="required">※</span></label> <textarea id="comment" name="comment" cols="45" rows="8" maxlength="65525" required="required"></textarea></p><p class="comment-form-author"><label for="author">名前 <span class="required">※</span></label> <input id="author" name="author" type="text" value="" size="30" maxlength="245" autocomplete="name" required="required" /></p> <p class="comment-form-email"><label for="email">メール <span class="required">※</span></label> <input id="email" name="email" type="text" value="" size="30" maxlength="100" aria-describedby="email-notes" autocomplete="email" required="required" /></p> <p class="comment-form-url"><label for="url">サイト</label> <input id="url" name="url" type="text" value="" size="30" maxlength="200" autocomplete="url" /></p> <p class="comment-form-cookies-consent"><input id="wp-comment-cookies-consent" name="wp-comment-cookies-consent" type="checkbox" value="yes" /> <label for="wp-comment-cookies-consent">次回のコメントで使用するためブラウザーに自分の名前、メールアドレス、サイトを保存する。</label></p> <p class="form-submit"><input name="submit" type="submit" id="submit" class="submit" value="コメントを送信" /> <input type='hidden' name='comment_post_ID' value='1705' id='comment_post_ID' /> <input type='hidden' name='comment_parent' id='comment_parent' value='0' /> </p></form> </div><!-- #respond --> </aside></div><!-- /.comment area --> </div> <div id="breadcrumb" class="breadcrumb breadcrumb-category sbp-main-bottom" itemscope itemtype="https://schema.org/BreadcrumbList"><div class="breadcrumb-home" itemscope itemtype="https://schema.org/ListItem" itemprop="itemListElement"><span class="fa fa-home fa-fw" aria-hidden="true"></span><a href="https://frontend.intronational.com" itemprop="item"><span itemprop="name" class="breadcrumb-caption">ホーム</span></a><meta itemprop="position" content="1" /></div><div class="breadcrumb-item" itemscope itemtype="https://schema.org/ListItem" itemprop="itemListElement"><span class="sp"><span class="fa fa-angle-right" aria-hidden="true"></span></span><span class="fa fa-folder fa-fw" aria-hidden="true"></span><a href="https://frontend.intronational.com/category/html/" itemprop="item"><span itemprop="name" class="breadcrumb-caption">HTML</span></a><meta itemprop="position" content="2" /></div></div> </main> <div id="sidebar" class="sidebar nwa cf" role="complementary"> <div class="ad-area no-icon ad-sidebar-top ad-auto ad-label-invisible cf" itemscope itemtype="https://schema.org/WPAdBlock"> <div class="ad-label" itemprop="name" data-nosnippet>スポンサーリンク</div> <div class="ad-wrap"> <div class="ad-responsive ad-usual"><!-- レスポンシブコード --> <ins class="adsbygoogle" style="display:block" data-ad-client="ca-pub-7214025567716564" data-ad-slot="6558619545" data-ad-format="auto" data-full-width-responsive="true"></ins> <script> (adsbygoogle = window.adsbygoogle || []).push({}); </script></div> </div> </div> <aside id="block-2" class="widget widget-sidebar widget-sidebar-standard widget_block widget_search"><form role="search" method="get" action="https://frontend.intronational.com/" class="wp-block-search__button-outside wp-block-search__text-button wp-block-search" ><label class="wp-block-search__label" for="wp-block-search__input-2" >検索</label><div class="wp-block-search__inside-wrapper" ><input class="wp-block-search__input" id="wp-block-search__input-2" placeholder="" value="" type="search" name="s" required /><button aria-label="検索" class="wp-block-search__button wp-element-button" type="submit" >検索</button></div></form></aside><aside id="block-3" class="widget widget-sidebar widget-sidebar-standard widget_block"><div class="wp-block-group is-layout-flow wp-block-group-is-layout-flow"><h2 class="wp-block-heading">最近の投稿</h2><ul class="wp-block-latest-posts__list wp-block-latest-posts is-layout-flow wp-block-latest-posts-is-layout-flow"><li><a class="wp-block-latest-posts__post-title" href="https://frontend.intronational.com/2026/09/30/%e3%80%90%e5%ae%9f%e5%8b%99%e3%83%bb%e4%b8%ad%e7%b4%9a%e7%b7%a8%e3%80%91-useeffect%e3%81%ae%e9%81%8e%e5%89%b0%e4%bd%bf%e7%94%a8%ef%bc%88over-using%ef%bc%89%e3%81%a8%e3%83%aa%e3%83%95%e3%82%a1%e3%82%af/">【実務・中級編】 useEffectの過剰使用(Over-using)とリファクタリング – React実践ガイド</a></li> <li><a class="wp-block-latest-posts__post-title" href="https://frontend.intronational.com/2026/09/30/%e3%80%90%e5%ae%9f%e5%8b%99%e3%83%bb%e4%b8%ad%e7%b4%9a%e7%b7%a8%e3%80%91-keyof-typeof%e3%81%ae%e7%b5%84%e3%81%bf%e5%90%88%e3%82%8f%e3%81%9b%e3%83%91%e3%82%bf%e3%83%bc%e3%83%b3-typescript%e5%ae%9f/">【実務・中級編】 keyof typeofの組み合わせパターン – TypeScript実践ガイド</a></li> <li><a class="wp-block-latest-posts__post-title" href="https://frontend.intronational.com/2026/09/30/%e3%80%90%e5%ae%9f%e5%8b%99%e3%83%bb%e4%b8%ad%e7%b4%9a%e7%b7%a8%e3%80%91-%e5%bc%b7%e5%88%b6%e5%90%8c%e6%9c%9f%e3%83%ac%e3%82%a4%e3%82%a2%e3%82%a6%e3%83%88%e3%81%ae%e6%a4%9c%e7%9f%a5%e3%81%a8%e5%9b%9e/">【実務・中級編】 強制同期レイアウトの検知と回避 – Webブラウザの仕組み実践ガイド</a></li> <li><a class="wp-block-latest-posts__post-title" href="https://frontend.intronational.com/2026/09/30/%e3%80%90%e3%83%86%e3%82%af%e3%83%8b%e3%82%ab%e3%83%ab%e3%83%bb%e4%b8%8a%e7%b4%9a%e7%b7%a8%e3%80%91-string%e3%81%ae%e3%82%a4%e3%83%86%e3%83%ac%e3%83%bc%e3%82%bf-symbol-iterator-javascript%e5%ae%9f/">【テクニカル・上級編】 Stringのイテレータ [Symbol.iterator] – JavaScript実践ガイド</a></li> <li><a class="wp-block-latest-posts__post-title" href="https://frontend.intronational.com/2026/09/30/%e3%80%90%e3%83%86%e3%82%af%e3%83%8b%e3%82%ab%e3%83%ab%e3%83%bb%e4%b8%8a%e7%b4%9a%e7%b7%a8%e3%80%91-modal-%e3%83%a2%e3%83%bc%e3%83%80%e3%83%ab%e7%96%91%e4%bc%bc%e3%82%af%e3%83%a9%e3%82%b9-css/">【テクニカル・上級編】 :modal モーダル疑似クラス – CSS実践ガイド</a></li> </ul></div></aside><aside id="block-4" class="widget widget-sidebar widget-sidebar-standard widget_block"><div class="wp-block-group is-layout-flow wp-block-group-is-layout-flow"><h2 class="wp-block-heading">最近のコメント</h2><div class="no-comments wp-block-latest-comments">表示できるコメントはありません。</div></div></aside> <div id="sidebar-scroll" class="sidebar-scroll"> <aside id="block-5" class="widget widget-sidebar widget-sidebar-scroll widget_block"><div class="wp-block-group is-layout-flow wp-block-group-is-layout-flow"><h2 class="wp-block-heading">アーカイブ</h2><ul class="wp-block-archives-list wp-block-archives"> <li><a href='https://frontend.intronational.com/2026/09/'><span class="list-item-caption">2026年9月</span></a></li> <li><a href='https://frontend.intronational.com/2026/08/'><span class="list-item-caption">2026年8月</span></a></li> <li><a href='https://frontend.intronational.com/2026/07/'><span class="list-item-caption">2026年7月</span></a></li> <li><a href='https://frontend.intronational.com/2026/06/'><span class="list-item-caption">2026年6月</span></a></li> <li><a href='https://frontend.intronational.com/2026/05/'><span class="list-item-caption">2026年5月</span></a></li> <li><a href='https://frontend.intronational.com/2026/04/'><span class="list-item-caption">2026年4月</span></a></li> </ul></div></aside><aside id="block-6" class="widget widget-sidebar widget-sidebar-scroll widget_block"><div class="wp-block-group is-layout-flow wp-block-group-is-layout-flow"><h2 class="wp-block-heading">カテゴリー</h2><ul class="wp-block-categories-list wp-block-categories-taxonomy-category wp-block-categories"> <li class="cat-item cat-item-3"><a href="https://frontend.intronational.com/category/css/"><span class="list-item-caption">CSS</span></a> </li> <li class="cat-item cat-item-30"><a href="https://frontend.intronational.com/category/css/css%e3%81%ae%e8%a8%98%e8%bf%b0%e5%a0%b4%e6%89%80%e3%81%a8%e8%aa%ad%e3%81%bf%e8%be%bc%e3%81%bf%e5%84%aa%e5%85%88%e9%a0%86%e4%bd%8d%ef%bc%88%e8%a9%b3%e7%b4%b0%e5%ba%a6-important%ef%bc%89/"><span class="list-item-caption">CSSの記述場所と読み込み優先順位(詳細度, !important)</span></a> </li> <li class="cat-item cat-item-2"><a href="https://frontend.intronational.com/category/html/"><span class="list-item-caption">HTML</span></a> </li> <li class="cat-item cat-item-4"><a href="https://frontend.intronational.com/category/javascript/"><span class="list-item-caption">JavaScript</span></a> </li> <li class="cat-item cat-item-117"><a href="https://frontend.intronational.com/category/react/props%e3%81%ab%e3%82%88%e3%82%8b%e3%83%87%e3%83%bc%e3%82%bf%e3%81%ae%e5%8f%97%e3%81%91%e6%b8%a1%e3%81%97%ef%bc%88%e3%83%81%e3%83%ab%e3%83%89%e3%83%ac%e3%83%b3%e5%b1%9e%e6%80%a7%e3%80%81%e3%82%b3/"><span class="list-item-caption">Propsによるデータの受け渡し(チルドレン属性、コンポーネントへの型付け)</span></a> </li> <li class="cat-item cat-item-7"><a href="https://frontend.intronational.com/category/react/"><span class="list-item-caption">React</span></a> </li> <li class="cat-item cat-item-116"><a href="https://frontend.intronational.com/category/react/react%e3%81%ae%e5%9f%ba%e6%9c%ac%e6%a6%82%e5%bf%b5%ef%bc%88%e4%bb%ae%e6%83%b3dom%e3%80%81jsx%e3%81%ae%e6%a7%8b%e6%96%87%e3%83%ab%e3%83%bc%e3%83%ab%e3%80%81%e3%82%b3%e3%83%b3%e3%83%9d%e3%83%bc%e3%83%8d/"><span class="list-item-caption">Reactの基本概念(仮想DOM、JSXの構文ルール、コンポーネントの分割設計)</span></a> </li> <li class="cat-item cat-item-6"><a href="https://frontend.intronational.com/category/typescript/"><span class="list-item-caption">TypeScript</span></a> </li> <li class="cat-item cat-item-101"><a href="https://frontend.intronational.com/category/typescript/typescript%e3%81%ae%e5%b0%8e%e5%85%a5%e3%81%a8%e7%92%b0%e5%a2%83%e6%a7%8b%e7%af%89%ef%bc%88tsconfig-json%e3%81%ae%e8%a8%ad%e5%ae%9a%ef%bc%89/"><span class="list-item-caption">TypeScriptの導入と環境構築(tsconfig.jsonの設定)</span></a> </li> <li class="cat-item cat-item-5"><a href="https://frontend.intronational.com/category/web%e3%83%96%e3%83%a9%e3%82%a6%e3%82%b6%e3%81%ae%e4%bb%95%e7%b5%84%e3%81%bf/"><span class="list-item-caption">Webブラウザの仕組み</span></a> </li> <li class="cat-item cat-item-11"><a href="https://frontend.intronational.com/category/html/%e3%82%a4%e3%83%b3%e3%83%a9%e3%82%a4%e3%83%b3%e8%a6%81%e7%b4%a0%e3%81%a8%e3%83%86%e3%82%ad%e3%82%b9%e3%83%88%e8%a3%85%e9%a3%be%ef%bc%88a-span-strong-em-code-time%ef%bc%89/"><span class="list-item-caption">インライン要素とテキスト装飾(a, span, strong, em, code, time)</span></a> </li> <li class="cat-item cat-item-9"><a href="https://frontend.intronational.com/category/html/%e3%82%bb%e3%82%af%e3%82%b7%e3%83%a7%e3%83%b3%e6%a7%8b%e6%88%90%e8%a6%81%e7%b4%a0%ef%bc%88header-nav-main-article-section-footer%ef%bc%89/"><span class="list-item-caption">セクション構成要素(header, nav, main, article, section, footer)</span></a> </li> <li class="cat-item cat-item-10"><a href="https://frontend.intronational.com/category/html/%e3%83%86%e3%82%ad%e3%82%b9%e3%83%88%e3%82%b3%e3%83%b3%e3%83%86%e3%83%b3%e3%83%84%e3%81%ae%e5%9f%ba%e6%9c%ac%ef%bc%88p-h1-h6-hr-pre%ef%bc%89/"><span class="list-item-caption">テキストコンテンツの基本(p, h1-h6, hr, pre)</span></a> </li> <li class="cat-item cat-item-57"><a href="https://frontend.intronational.com/category/javascript/%e3%83%87%e3%83%bc%e3%82%bf%e5%9e%8b%e3%81%a8%e5%9e%8b%e5%88%a4%e5%ae%9a%ef%bc%88%e3%83%97%e3%83%aa%e3%83%9f%e3%83%86%e3%82%a3%e3%83%96%e3%81%a8%e3%82%aa%e3%83%96%e3%82%b8%e3%82%a7%e3%82%af%e3%83%88/"><span class="list-item-caption">データ型と型判定(プリミティブとオブジェクト, typeof, 暗黙の型変換)</span></a> </li> <li class="cat-item cat-item-87"><a href="https://frontend.intronational.com/category/web%e3%83%96%e3%83%a9%e3%82%a6%e3%82%b6%e3%81%ae%e4%bb%95%e7%b5%84%e3%81%bf/%e3%83%96%e3%83%a9%e3%82%a6%e3%82%b6%e3%83%ac%e3%83%b3%e3%83%80%e3%83%aa%e3%83%b3%e3%82%b0%ef%bc%88%e6%8f%8f%e7%94%bb%ef%bc%9a%e3%83%aa%e3%83%95%e3%83%ad%e3%83%bc-%e3%83%aa%e3%83%9a%e3%82%a4%e3%83%b3/"><span class="list-item-caption">ブラウザレンダリング(描画:リフロー, リペイント, コンポジット合成)</span></a> </li> <li class="cat-item cat-item-86"><a href="https://frontend.intronational.com/category/web%e3%83%96%e3%83%a9%e3%82%a6%e3%82%b6%e3%81%ae%e4%bb%95%e7%b5%84%e3%81%bf/%e3%83%96%e3%83%a9%e3%82%a6%e3%82%b6%e3%83%ac%e3%83%b3%e3%83%80%e3%83%aa%e3%83%b3%e3%82%b0%ef%bc%88%e8%a7%a3%e6%9e%90%ef%bc%9ahtml%e3%83%91%e3%83%bc%e3%82%b9-dom-cssom%e3%83%84%e3%83%aa%e3%83%bc/"><span class="list-item-caption">ブラウザレンダリング(解析:HTMLパース, DOM/CSSOMツリー構築)</span></a> </li> <li class="cat-item cat-item-12"><a href="https://frontend.intronational.com/category/html/%e3%83%aa%e3%82%b9%e3%83%88%e3%81%a8%e8%a8%98%e8%bf%b0%e3%83%aa%e3%82%b9%e3%83%88%ef%bc%88ul-ol-li-dl-dt-dd%ef%bc%89/"><span class="list-item-caption">リストと記述リスト(ul, ol, li, dl, dt, dd)</span></a> </li> <li class="cat-item cat-item-8"><a href="https://frontend.intronational.com/category/html/%e3%83%ab%e3%83%bc%e3%83%88%e3%81%a8%e3%83%a1%e3%82%bf%e3%83%87%e3%83%bc%e3%82%bf%ef%bc%88html-head-meta-ogp%ef%bc%89/"><span class="list-item-caption">ルートとメタデータ(html, head, meta, OGP)</span></a> </li> <li class="cat-item cat-item-119"><a href="https://frontend.intronational.com/category/react/%e5%89%af%e4%bd%9c%e7%94%a8%e3%81%ae%e5%88%b6%e5%be%a1%ef%bc%88useeffect%e3%81%ae%e5%ae%9f%e8%a1%8c%e3%82%bf%e3%82%a4%e3%83%9f%e3%83%b3%e3%82%b0%e3%80%81%e3%82%af%e3%83%aa%e3%83%bc%e3%83%b3%e3%82%a2/"><span class="list-item-caption">副作用の制御(useEffectの実行タイミング、クリーンアップ関数、依存配列の制御)</span></a> </li> <li class="cat-item cat-item-102"><a href="https://frontend.intronational.com/category/typescript/%e5%9f%ba%e6%9c%ac%e3%81%ae%e5%9e%8b%e5%ae%9a%e7%be%a9%ef%bc%88boolean-number-string-array-tuple-any-unknown%ef%bc%89/"><span class="list-item-caption">基本の型定義(boolean, number, string, array, tuple, any, unknown)</span></a> </li> <li class="cat-item cat-item-31"><a href="https://frontend.intronational.com/category/css/%e5%9f%ba%e6%9c%ac%e3%82%bb%e3%83%ac%e3%82%af%e3%82%bf%e3%81%a8%e7%b5%84%e3%81%bf%e5%90%88%e3%82%8f%e3%81%9b%ef%bc%88%e3%82%bf%e3%82%b0-%e3%82%af%e3%83%a9%e3%82%b9-id-%e5%ad%90%e5%ad%ab%e3%83%bb/"><span class="list-item-caption">基本セレクタと組み合わせ(タグ, クラス, ID, 子孫・子・隣接)</span></a> </li> <li class="cat-item cat-item-56"><a href="https://frontend.intronational.com/category/javascript/%e5%a4%89%e6%95%b0%e3%81%a8%e3%82%b9%e3%82%b3%e3%83%bc%e3%83%97%ef%bc%88const-let-var-%e3%83%96%e3%83%ad%e3%83%83%e3%82%af%e3%82%b9%e3%82%b3%e3%83%bc%e3%83%97-%e5%b7%bb%e3%81%8d%e4%b8%8a%e3%81%92/"><span class="list-item-caption">変数とスコープ(const, let, var, ブロックスコープ, 巻き上げ)</span></a> </li> <li class="cat-item cat-item-32"><a href="https://frontend.intronational.com/category/css/%e5%b1%9e%e6%80%a7%e3%82%bb%e3%83%ac%e3%82%af%e3%82%bf%e3%81%a8%e7%96%91%e4%bc%bc%e3%82%af%e3%83%a9%e3%82%b9%ef%bc%88%e7%8a%b6%e6%85%8b%ef%bc%9ahover-focus-active-disabled%e7%ad%89%ef%bc%89/"><span class="list-item-caption">属性セレクタと疑似クラス(状態:hover, focus, active, disabled等)</span></a> </li> <li class="cat-item cat-item-58"><a href="https://frontend.intronational.com/category/javascript/%e6%96%87%e5%ad%97%e5%88%97%e6%93%8d%e4%bd%9c%ef%bc%88string%e3%83%a1%e3%82%bd%e3%83%83%e3%83%89%ef%bc%9aslice-replace-includes-%e3%83%86%e3%83%b3%e3%83%97%e3%83%ac%e3%83%bc%e3%83%88%e3%83%aa/"><span class="list-item-caption">文字列操作(Stringメソッド:slice, replace, includes, テンプレートリテラル)</span></a> </li> <li class="cat-item cat-item-1"><a href="https://frontend.intronational.com/category/uncategorized/"><span class="list-item-caption">未分類</span></a> </li> <li class="cat-item cat-item-118"><a href="https://frontend.intronational.com/category/react/%e7%8a%b6%e6%85%8b%e7%ae%a1%e7%90%86%e3%81%ae%e5%9f%ba%e6%9c%ac%ef%bc%88usestate%e3%81%ab%e3%82%88%e3%82%8b%e3%83%87%e3%83%bc%e3%82%bf%e4%bf%9d%e6%8c%81%e3%81%a8%e7%8a%b6%e6%85%8b%e6%9b%b4%e6%96%b0/"><span class="list-item-caption">状態管理の基本(useStateによるデータ保持と状態更新の非同期バグ対策)</span></a> </li> </ul></div></aside> </div> </div> </div> </div> <footer id="footer" class="footer footer-container nwa" itemscope itemtype="https://schema.org/WPFooter"> <div id="footer-in" class="footer-in wrap cf"> <div class="footer-bottom fdt-logo fnm-text-width cf"> <div class="footer-bottom-logo"> <div class="logo logo-footer logo-text"><a href="https://frontend.intronational.com/" class="site-name site-name-text-link" itemprop="url"><span class="site-name-text" itemprop="name about">HTML/CSS/JS専門の学習</span></a></div> </div> <div class="footer-bottom-content"> <nav id="navi-footer" class="navi-footer"> <div id="navi-footer-in" class="navi-footer-in"> </div> </nav> <div class="source-org copyright">© 2026 HTML/CSS/JS専門の学習.</div> </div> </div> </div> </footer> <div id="go-to-top" class="go-to-top"> <button class="go-to-top-button go-to-top-common go-to-top-hide go-to-top-button-icon-font" aria-label="トップへ戻る"><span class="fa fa-angle-double-up"></span></button> </div> <script type="speculationrules"> {"prefetch":[{"source":"document","where":{"and":[{"href_matches":"/*"},{"not":{"href_matches":["/wp-*.php","/wp-admin/*","/wp-content/uploads/*","/wp-content/*","/wp-content/plugins/*","/wp-content/themes/cocoon-child-master/*","/wp-content/themes/cocoon-master/*","/*\\?(.+)"]}},{"not":{"selector_matches":"a[rel~=\"nofollow\"]"}},{"not":{"selector_matches":".no-prefetch, .no-prefetch a"}}]},"eagerness":"conservative"}]} </script> <script id="wp-hooks-js" src="https://frontend.intronational.com/wp-includes/js/dist/hooks.min.js?ver=f0f188028580e8dc1255&fver=20260820095812"></script> <script id="wp-i18n-js" src="https://frontend.intronational.com/wp-includes/js/dist/i18n.min.js?ver=1dfe7db3940c23ea9216&fver=20260820095827"></script> <script id="wp-i18n-js-after"> wp.i18n.setLocaleData( { 'text direction\u0004ltr': [ 'ltr' ] } ); //# sourceURL=wp-i18n-js-after </script> <script id="swv-js" src="https://frontend.intronational.com/wp-content/plugins/contact-form-7/includes/swv/js/index.js?ver=6.1.5&fver=20260404072140"></script> <script id="contact-form-7-js-translations"> ( function( domain, translations ) { var localeData = translations.locale_data[ domain ] || translations.locale_data.messages; localeData[""].domain = domain; wp.i18n.setLocaleData( localeData, domain ); } )( "contact-form-7", {"translation-revision-date":"2025-11-30 08:12:23+0000","generator":"GlotPress\/4.0.3","domain":"messages","locale_data":{"messages":{"":{"domain":"messages","plural-forms":"nplurals=1; plural=0;","lang":"ja_JP"},"This contact form is placed in the wrong place.":["\u3053\u306e\u30b3\u30f3\u30bf\u30af\u30c8\u30d5\u30a9\u30fc\u30e0\u306f\u9593\u9055\u3063\u305f\u4f4d\u7f6e\u306b\u7f6e\u304b\u308c\u3066\u3044\u307e\u3059\u3002"],"Error:":["\u30a8\u30e9\u30fc:"]}},"comment":{"reference":"includes\/js\/index.js"}} ); //# sourceURL=contact-form-7-js-translations </script> <script id="contact-form-7-js-before"> var wpcf7 = { "api": { "root": "https:\/\/frontend.intronational.com\/wp-json\/", "namespace": "contact-form-7\/v1" } }; //# sourceURL=contact-form-7-js-before </script> <script id="contact-form-7-js" src="https://frontend.intronational.com/wp-content/plugins/contact-form-7/includes/js/index.js?ver=6.1.5&fver=20260404072140"></script> <script id="cookie-notice-front-js-before"> var cnArgs = {"ajaxUrl":"https:\/\/frontend.intronational.com\/wp-admin\/admin-ajax.php","nonce":"4b956e4ffe","hideEffect":"fade","position":"bottom","onScroll":false,"onScrollOffset":100,"onClick":false,"cookieName":"cookie_notice_accepted","cookieTime":2592000,"cookieTimeRejected":2592000,"globalCookie":false,"redirection":false,"cache":false,"revokeCookies":false,"revokeCookiesOpt":"automatic"}; //# sourceURL=cookie-notice-front-js-before </script> <script id="cookie-notice-front-js" src="https://frontend.intronational.com/wp-content/plugins/cookie-notice/js/front.min.js?ver=2.5.16&fver=20260404072100"></script> <script id="baguettebox-js-js" src="https://frontend.intronational.com/wp-content/themes/cocoon-master/plugins/baguettebox/dist/baguetteBox.min.js?ver=7.1.2&fver=20260403014114"></script> <script id="baguettebox-js-js-after"> (function($){ baguetteBox.run(".entry-content"); })(jQuery); //# sourceURL=baguettebox-js-js-after </script> <script id="slicknav-js-js" src="https://frontend.intronational.com/wp-content/themes/cocoon-master/plugins/slicknav/jquery.slicknav.min.js?ver=7.1.2&fver=20260403014114"></script> <script id="slicknav-js-js-after"> (function($){ $(".menu-header").slicknav({ label: "MENU", parentTag: "div", allowParentLinks: true, }); })(jQuery); //# sourceURL=slicknav-js-js-after </script> <script async data-wp-strategy="async" fetchpriority="low" id="comment-reply-js" src="https://frontend.intronational.com/wp-includes/js/comment-reply.min.js?ver=7.1.2&fver=20260820095852"></script> <script id="cocoon-js-js-extra"> var cocoon_localize_script_options = {"is_lazy_load_enable":null,"is_fixed_mobile_buttons_enable":"","is_google_font_lazy_load_enable":""}; //# sourceURL=cocoon-js-js-extra </script> <script id="cocoon-js-js" src="https://frontend.intronational.com/wp-content/themes/cocoon-master/javascript.js?ver=7.1.2&fver=20260403014113"></script> <script id="cocoon-child-js-js" src="https://frontend.intronational.com/wp-content/themes/cocoon-child-master/javascript.js?ver=7.1.2&fver=20260403014118"></script> <script id="googlesitekit-events-provider-contact-form-7-js" src="https://frontend.intronational.com/wp-content/plugins/google-site-kit/dist/assets/js/googlesitekit-events-provider-contact-form-7-fac2a8013ba5ba355cd0.js?fver=20260922014710" defer></script> <script id="googlesitekit-events-provider-content-events-js-before"> window._googlesitekit = window._googlesitekit || {}; window._googlesitekit.contentEvents = {"postID":1705,"isSinglePost":true,"hasVimeoEmbed":false}; //# sourceURL=googlesitekit-events-provider-content-events-js-before </script> <script id="googlesitekit-events-provider-content-events-js" src="https://frontend.intronational.com/wp-content/plugins/google-site-kit/dist/assets/js/googlesitekit-events-provider-content-events-c7172f3fd0e4d5ad62ef.js?fver=20260922014710" defer></script> <!-- Cookie Notice plugin v2.5.16 by Hu-manity.co https://hu-manity.co/ --> <div id="cookie-notice" role="dialog" class="cookie-notice-hidden cookie-revoke-hidden cn-position-bottom" aria-label="Cookie Notice" style="background-color: rgba(50,50,58,1);"><div class="cookie-notice-container" style="color: #fff"><span id="cn-notice-text" class="cn-text-container">よりよいエクスペリエンスを提供するため、当ウェブサイトでは Cookie を使用しています。引き続き閲覧する場合、Cookie の使用を承諾したものとみなされます。</span><span id="cn-notice-buttons" class="cn-buttons-container"><button id="cn-accept-cookie" data-cookie-set="accept" class="cn-set-cookie cn-button" aria-label="OK" style="background-color: #00a99d">OK</button></span><button type="button" id="cn-close-notice" data-cookie-set="accept" class="cn-close-icon" aria-label="いいえ" tabindex="0"></button></div> </div> <!-- / Cookie Notice plugin --> <script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-7214025567716564" crossorigin="anonymous"></script> <script>!function(d,i){if(!d.getElementById(i)){var j=d.createElement("script");j.id=i;j.src="//assets.pinterest.com/js/pinit_main.js";var w=d.getElementById(i);d.body.appendChild(j);}}(document,"pinterest-btn-js");</script> <div class="copy-info">タイトルとURLをコピーしました</div> <script> (function($){ const selector = '.copy-button';//clipboardで使う要素を指定 $(selector).click(function(event){ //クリック動作をキャンセル event.preventDefault(); //クリップボード動作 navigator.clipboard.writeText($(selector).attr('data-clipboard-text')).then( () => { $('.copy-info').fadeIn(500).delay(1000).fadeOut(500); }); }); })(jQuery); </script> </div><!-- #container --> </body> </html>