Web用記事&ブログ記事販売ラボ

あなたのビジネスを伸ばす、プロ品質のWeb記事を。

Menu
  • ホーム
  • 免責事項
  • プライバシーポリシー
  • 運営者情報
  • お問い合わせ
Menu

Googleが確実にクロール!JavaScript動的コンテンツSEO完全攻略

Posted on 2026年3月5日 by web

第4章:具体的な実装テクニックと最適化戦略

ここでは、JavaScript動的コンテンツにおけるSEO課題を解決するための具体的な実装テクニックと戦略について解説します。

Pre-rendering戦略: SSR/SSG/ISRの活用

Googlebotがコンテンツを確実に認識するためには、JavaScriptが実行される前にコンテンツがHTMLとして利用可能であることが理想的です。そのための主要なアプローチがPre-renderingです。

SSR (Server-Side Rendering):
メリット:
初回ロード時に完全なHTMLをクライアントに返すため、Googlebotはすぐにコンテンツを認識し、インデックスに登録できます。
LCP(Largest Contentful Paint)が向上しやすく、ユーザー体験も改善されます。
ユーザーごとに内容が変わる動的なコンテンツ(ログイン後のダッシュボード、ECサイトの商品レビューなど)に適しています。
デメリット:
サーバー側でのレンダリング処理が必要なため、サーバーリソースの消費が増え、リクエストが多い場合はサーバー応答時間が長くなる可能性があります。
クライアント側でのJavaScriptハイドレーション(後述)に失敗すると、インタラクティブ性が失われることがあります。
主要フレームワーク: Next.js (getServerSideProps), Nuxt.js (asyncData/fetch), Remixなど。
SSG (Static Site Generation):
メリット:
ビルド時に全てのページがHTMLとして生成されるため、CDNから超高速で配信され、最高のパフォーマンスを実現します。
Googlebotは静的なHTMLをクロールするため、インデックス登録が確実かつ迅速に行われます。
サーバー負荷が非常に低い。
デメリット:
コンテンツの更新があるたびにビルドプロセスを実行する必要があり、大規模サイトや頻繁に更新されるサイトでは管理が複雑になることがあります。
リアルタイム性の高い動的なコンテンツには不向きです。
主要フレームワーク: Next.js (getStaticProps), Gatsby, Astro, Hugo (SSGフレームワーク自体)など。
ISR (Incremental Static Regeneration):
メリット:
SSGの高速性とSSRの動的な更新能力を兼ね備えています。ビルド時に静的ファイルを生成しつつ、一定時間経過後やリクエストに応じてバックグラウンドでページを再生成できます。
大規模な静的サイトでコンテンツを最新に保ちつつ、高速な配信を実現したい場合に有効です。
デメリット:
実装がやや複雑になることがあります。
主要フレームワーク: Next.js (getStaticProps with revalidateオプション)。

Dynamic Rendering:
Googleが推奨する手法の一つですが、慎重な適用が必要です。これは、通常のユーザーにはCSRでJavaScriptベースのコンテンツを提供し、検索エンジンのクローラーにはSSRでレンダリング済みのHTMLを提供する方法です。User-Agentによって出し分けるため、実装が複雑になり、設定ミスによってはクローキング(Googleのガイドライン違反)とみなされるリスクがあるため、現在は上記SSR/SSG/ISRがより推奨されます。

プログレッシブエンハンスメントとハイドレーション

プログレッシブエンハンスメント:
「すべてのユーザーと検索エンジン」に基本的なコンテンツと機能を提供し、JavaScriptが利用可能な環境でよりリッチな機能やインタラクションを追加する設計思想です。これにより、JavaScriptが無効な環境や古いブラウザでも基本的な情報にアクセスでき、Googlebotもコンテンツを確実に認識できます。
ハイドレーション:
SSRやSSGでサーバー側でレンダリングされたHTMLを、クライアント側でJavaScriptフレームワークが引き継ぎ、インタラクティブなイベントリスナーなどを付与してアプリケーションを「活動化」させるプロセスです。ハイドレーションが失敗したり遅延したりすると、ユーザーはページを見ることはできても、ボタンがクリックできないなど、期待するインタラクションが提供されない場合があります。

重要なコンテンツのHTMLへの埋め込み

ファーストビューやSEO上重要なキーワードを含むコンテンツは、JavaScriptによる動的な読み込みに過度に依存せず、初期のHTMLに直接含めるように設計します。これにより、Googlebotは初期クロール段階でこれらのコンテンツを確実に発見できます。Ajaxでコンテンツを読み込む場合でも、レンダリング後にそのコンテンツが確実にDOMに存在し、可視状態になっていることを確認します。

内部リンク構造の最適化(aタグの使用)

標準的なタグとhref属性:
ナビゲーション、コンテンツ内のリンク、ページネーションなど、すべての内部リンクは標準的な
タグとhref属性を使用して記述します。JavaScriptフレームワークを使用している場合でも、Linkコンポーネントなどが最終的にタグとしてレンダリングされるようにします。
例:
商品名
History APIの活用:
SPAでページ遷移する際に、pushState()やreplaceState()メソッドを用いてブラウザの履歴を操作し、URLを適切に変更します。これにより、ユーザーとGooglebotは、各コンテンツに固有のURLでアクセスできるようになり、ブックマークや共有、検索エンジンのインデックスに適した状態を保てます。

メタデータの動的生成

タイトルタグ()、メタディスクリプション(<meta name="description">)、OGPタグ(<meta property="og:title">など)は、ページのコンテンツを正確に反映し、各ページでユニークである必要があります。JavaScriptでこれらのタグを動的に生成する際は、以下の点に注意します。</p> <p> レンダリング後の検証: Google Search ConsoleのURL検査ツールで「テスト済みページ」の「レンダリングされたHTMLを表示」を確認し、期待通りのメタデータがDOMに存在していることを検証します。<br /> 重複の回避: 複数のページで同じメタデータが生成されないように、テンプレートやロジックを工夫します。</p> <h3>Lazy Loadingの適切な実装</h3> <p>画像の遅延読み込み(Lazy Loading)は、ページのパフォーマンスを向上させる有効な手法ですが、SEOに悪影響を与えないように適切に実装する必要があります。</p> <p> loading=”lazy”属性:<br /> モダンブラウザが提供する<img>タグのloading=”lazy”属性は、最もシンプルで効果的なLazy Loading方法です。Googlebotもこの属性をサポートしています。<br /> Intersection Observer API:<br /> JavaScriptでカスタムなLazy Loadingを実装する場合、Intersection Observer APIを使用します。これは、要素がビューポートに入ったことを効率的に検知するためのAPIです。<br /> Googlebotはスクロールする:<br /> Googlebotは、Lazy Loadingされたコンテンツを発見するために、レンダリング後にページをスクロールします。しかし、重要なコンテンツがユーザーのインタラクション(クリックなど)を待って表示される場合、Googlebotがそれにアクセスできない可能性があります。ファーストビュー内のコンテンツや重要な画像は、Lazy Loadingを適用しないか、プレースホルダーを適切なサイズで配置し、CLSを発生させないようにします。</p> <h3>構造化データの活用</h3> <p>JSON-LD形式で構造化データをマークアップすると、GooglebotはJavaScriptによって動的に生成されたデータであっても、それを容易に読み取って理解できます。これは、リッチリザルト(検索結果に表示される特別な情報)に表示される可能性を高め、CTR(クリック率)の向上に寄与します。</p> <h2>第5章:監視、デバッグ、そして継続的な改善</h2> <p>JavaScript動的コンテンツのSEOは一度設定したら終わりではありません。Googlebotの挙動、ページのパフォーマンス、インデックス状況は常に変化するため、継続的な監視と改善が必要です。</p> <h3>Google Search Consoleの活用</h3> <p>Google Search Console(GSC)は、JavaScript SEOの状況を監視し、問題を特定するための最も重要なツールです。</p> <p> URL検査ツール:<br /> 特定のURLがGoogleにどのようにクロールされ、レンダリングされているかを確認できます。「公開URLをテスト」機能を使うと、Googlebotがそのページをどのようにレンダリングしているかのスクリーンショットや、レンダリングされたHTML、コンソールログなどを確認できます。これにより、JavaScriptエラーやリソースブロックなどの問題を特定できます。<br /> 特に、レンダリングされたHTMLに重要なコンテンツが含まれているか、メタデータが正しく反映されているかをチェックしましょう。<br /> カバレッジレポート:<br /> サイト全体のインデックス登録状況を把握できます。インデックス登録されたページ数、除外されたページ、エラーが発生したページなどが表示されます。JavaScript関連の問題でインデックスから除外されているページがないかを確認し、原因を特定して対処します。<br /> ウェブに関する主な指標レポート:<br /> Core Web Vitalsのパフォーマンスを監視します。LCP、FID、CLSのスコアが悪化している場合、JavaScriptの実行やレンダリングに問題がある可能性が高いです。具体的な改善提案も示されるため、積極的に活用します。<br /> モバイルユーザビリティ:<br /> モバイルフレンドリーな設計はSEOに不可欠です。JavaScriptでレスポンシブデザインを実装している場合でも、モバイルでの表示が適切であるかを確認します。</p> <h3>LighthouseとPageSpeed Insightsによるパフォーマンス診断</h3> <p>これらのツールは、ページのパフォーマンス、アクセシビリティ、SEO、ベストプラクティスに関する詳細なレポートを提供します。</p> <p> Lighthouse:<br /> Chromeブラウザの開発者ツールに統合されており、ローカル環境で詳細な診断を実行できます。JavaScriptの実行時間、レンダリングブロックリソース、最適化されていない画像など、パフォーマンスを低下させる原因を特定するのに役立ちます。<br /> PageSpeed Insights:<br /> ウェブ上でURLを入力するだけで、Googleのサーバーから実際のユーザーデータ(フィールドデータ)とラボデータに基づいたパフォーマンスレポートを確認できます。JavaScript関連のボトルネックや、Core Web Vitalsの改善点に関する具体的な提案が得られます。</p> <h3>ログ分析とエラーハンドリング</h3> <p> サーバーログ:<br /> ウェブサーバーのアクセスログを分析することで、Googlebotがサイトにどのようにアクセスしているか、どのリソースでエラーが発生しているかなどを把握できます。特に、GooglebotのUser-Agentを持つリクエストをフィルタリングして確認すると良いでしょう。<br /> クライアントサイドのエラーログ:<br /> JavaScriptのエラーは、コンテンツのレンダリングを妨げる可能性があります。Sentryなどのエラー監視ツールを導入し、JavaScriptのエラーをリアルタイムで検知・修正することで、Googlebotのレンダリング失敗を防ぎます。</p> <h3>レンダリングされたHTMLの確認</h3> <p>ブラウザの開発者ツールで「要素の検証」を開き、ページが完全にロードされた後のDOM構造を確認します。初期のHTMLソースと比べて、JavaScriptによって重要なコンテンツやリンクが正しく追加されているか、不要なエラーが発生していないかなどを目視でチェックすることも重要です。</p> <div class="page-links">Pages: <a href="https://web.bulog.jp/seo/88/" class="post-page-numbers">1</a> <span class="post-page-numbers current" aria-current="page">2</span> <a href="https://web.bulog.jp/seo/88/3/" class="post-page-numbers">3</a> <a href="https://web.bulog.jp/seo/88/4/" class="post-page-numbers">4</a></div> <div class="tag-cat-container"> <span class="tag-cat-container-strings"> Category:</span> <a href="https://web.bulog.jp/category/seo/" rel="category tag">SEO(検索エンジン最適化)</a> </div> </div><!-- .entry-content --> </article><!-- #post-88 --> <div class="mb_singlepost_nav"> <nav class="navigation post-navigation" aria-label="投稿"> <h2 class="screen-reader-text">投稿ナビゲーション</h2> <div class="nav-links"><div class="nav-previous"><a href="https://web.bulog.jp/sns/87/" rel="prev">← SNSエゴサーチ対策の決定版!ポジティブな言及を増やす仕掛け作り実践ガイド</a></div><div class="nav-next"><a href="https://web.bulog.jp/seo/89/" rel="next">PageSpeed Insightsスコア90超え!プラグインとコード削減で実現する爆速化テクニック →</a></div></div> </nav></div> </main><!-- #main --> </div><!-- #primary --> <aside id="secondary" class="featured-sidebar widget-area"> <section id="recent-posts-2" class="fbox swidgets-wrap widget widget_recent_entries"> <div class="swidget"><div class="sidebar-title-border"><h3 class="widget-title">最近の投稿</h3></div></div> <ul> <li> <a href="https://web.bulog.jp/ai/356/">AI文章のワンパターン結論を打破!視点変更プロンプトで独創性を生む秘訣</a> </li> <li> <a href="https://web.bulog.jp/seo/355/">PageSpeed Insightsスコア90+達成!厳選プラグインと不要コード削除戦略</a> </li> <li> <a href="https://web.bulog.jp/seo/354/">sitemap.xml優先順位設定の極意:SEO強化で重要記事を爆速クロールさせる秘策</a> </li> <li> <a href="https://web.bulog.jp/web/353/">B2B導入事例で意思決定者の信頼を勝ち取る!質問項目と構成の極意</a> </li> <li> <a href="https://web.bulog.jp/ai/352/">AI画像生成でコンテンツ力UP!記事に最適なアイキャッチ・図解を自作しSEOを加速</a> </li> <li> <a href="https://web.bulog.jp/ai/351/">AI活用で音声配信をSEOブログ化!書き起こし自動整形と検索上位化の秘訣</a> </li> <li> <a href="https://web.bulog.jp/seo/350/">E-E-A-T強化の肝!著者プロフィール・運営者情報を具体化する極意</a> </li> <li> <a href="https://web.bulog.jp/seo/349/">ドメインのパワーを解き放つ!無駄を省くカテゴリー整理とトピック厳選の基準</a> </li> <li> <a href="https://web.bulog.jp/blog/348/">ブログ特化型診断ツール設置!結果連動アフィリエイトで高収益達成の具体策</a> </li> <li> <a href="https://web.bulog.jp/sns/347/">採用と売上を最大化!社員アンバサダー戦略の導入効果と失敗を避ける運用術</a> </li> </ul> </section><section id="categories-2" class="fbox swidgets-wrap widget widget_categories"><div class="swidget"><div class="sidebar-title-border"><h3 class="widget-title">カテゴリー</h3></div></div> <ul> <li class="cat-item cat-item-2"><a href="https://web.bulog.jp/category/seo/">SEO(検索エンジン最適化)</a> </li> <li class="cat-item cat-item-3"><a href="https://web.bulog.jp/category/web/">Webマーケティング</a> </li> <li class="cat-item cat-item-4"><a href="https://web.bulog.jp/category/sns/">SNSマーケティング</a> </li> <li class="cat-item cat-item-5"><a href="https://web.bulog.jp/category/blog/">ブログ運営・アフィリエイト</a> </li> <li class="cat-item cat-item-6"><a href="https://web.bulog.jp/category/ai/">AI × ライティング</a> </li> </ul> </section><section id="archives-2" class="fbox swidgets-wrap widget widget_archive"><div class="swidget"><div class="sidebar-title-border"><h3 class="widget-title">アーカイブ</h3></div></div> <ul> <li><a href='https://web.bulog.jp/date/2026/04/'>2026年4月</a></li> <li><a href='https://web.bulog.jp/date/2026/03/'>2026年3月</a></li> <li><a href='https://web.bulog.jp/date/2026/02/'>2026年2月</a></li> </ul> </section><section id="pages-2" class="fbox swidgets-wrap widget widget_pages"><div class="swidget"><div class="sidebar-title-border"><h3 class="widget-title">その他</h3></div></div> <ul> <li class="page_item page-item-16"><a href="https://web.bulog.jp/privacy/">プライバシーポリシー</a></li> <li class="page_item page-item-14"><a href="https://web.bulog.jp/disclaimer/">免責事項</a></li> <li class="page_item page-item-11"><a href="https://web.bulog.jp/admin/">運営者情報</a></li> <li class="page_item page-item-40"><a href="https://web.bulog.jp/contact/">お問い合わせ</a></li> </ul> </section><section id="search-2" class="fbox swidgets-wrap widget widget_search"><form role="search" method="get" class="search-form" action="https://web.bulog.jp/"> <label> <span class="screen-reader-text">検索:</span> <input type="search" class="search-field" placeholder="検索…" value="" name="s" /> </label> <input type="submit" class="search-submit" value="検索" /> </form></section></aside><!-- #secondary --> </div> </div><!-- #content --> <footer id="colophon" class="site-footer clearfix"> <div class="content-wrap"> </div> <div class="site-info"> © 2026 Web用記事&ブログ記事販売ラボ <!-- Delete below lines to remove copyright from footer --> <span class="footer-info-right"> | Powered by <a href="https://superbthemes.com/minimalistblogger/" rel="nofollow noopener">Minimalist Blog</a> WordPress Theme </span> <!-- Delete above lines to remove copyright from footer --> </div><!-- .site-info --> </div> </footer> </div> <!-- Off canvas menu overlay, delete to remove dark shadow --> <div id="smobile-menu" class="mobile-only"></div> <div id="mobile-menu-overlay"></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/minimalist-writer/*","/wp-content/themes/minimalistblogger/*","/*\\?(.+)"]}},{"not":{"selector_matches":"a[rel~=\"nofollow\"]"}},{"not":{"selector_matches":".no-prefetch, .no-prefetch a"}}]},"eagerness":"conservative"}]} </script> <script type="text/javascript" src="https://web.bulog.jp/wp-includes/js/dist/hooks.min.js?ver=dd5603f07f9220ed27f1" id="wp-hooks-js"></script> <script type="text/javascript" src="https://web.bulog.jp/wp-includes/js/dist/i18n.min.js?ver=c26c3dc7bed366793375" id="wp-i18n-js"></script> <script type="text/javascript" id="wp-i18n-js-after"> /* <![CDATA[ */ wp.i18n.setLocaleData( { 'text direction\u0004ltr': [ 'ltr' ] } ); //# sourceURL=wp-i18n-js-after /* ]]> */ </script> <script type="text/javascript" src="https://web.bulog.jp/wp-content/plugins/contact-form-7/includes/swv/js/index.js?ver=6.1.5" id="swv-js"></script> <script type="text/javascript" id="contact-form-7-js-translations"> /* <![CDATA[ */ ( 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 type="text/javascript" id="contact-form-7-js-before"> /* <![CDATA[ */ var wpcf7 = { "api": { "root": "https:\/\/web.bulog.jp\/wp-json\/", "namespace": "contact-form-7\/v1" }, "cached": 1 }; //# sourceURL=contact-form-7-js-before /* ]]> */ </script> <script type="text/javascript" src="https://web.bulog.jp/wp-content/plugins/contact-form-7/includes/js/index.js?ver=6.1.5" id="contact-form-7-js"></script> <script type="text/javascript" src="https://web.bulog.jp/wp-content/themes/minimalistblogger/js/navigation.js?ver=20170823" id="minimalistblogger-navigation-js"></script> <script type="text/javascript" src="https://web.bulog.jp/wp-content/themes/minimalistblogger/js/skip-link-focus-fix.js?ver=20170823" id="minimalistblogger-skip-link-focus-fix-js"></script> <script type="text/javascript" src="https://web.bulog.jp/wp-content/themes/minimalistblogger/js/script.js?ver=20160720" id="minimalistblogger-script-js"></script> <script type="text/javascript" src="https://web.bulog.jp/wp-content/themes/minimalistblogger/js/jquery.flexslider.js?ver=20150423" id="flexslider-js"></script> <script type="text/javascript" src="https://web.bulog.jp/wp-content/themes/minimalistblogger/js/accessibility.js?ver=20160720" id="minimalistblogger-accessibility-js"></script> <script id="wp-emoji-settings" type="application/json"> {"baseUrl":"https://s.w.org/images/core/emoji/17.0.2/72x72/","ext":".png","svgUrl":"https://s.w.org/images/core/emoji/17.0.2/svg/","svgExt":".svg","source":{"concatemoji":"https://web.bulog.jp/wp-includes/js/wp-emoji-release.min.js?ver=6.9.4"}} </script> <script type="module"> /* <![CDATA[ */ /*! This file is auto-generated */ const a=JSON.parse(document.getElementById("wp-emoji-settings").textContent),o=(window._wpemojiSettings=a,"wpEmojiSettingsSupports"),s=["flag","emoji"];function i(e){try{var t={supportTests:e,timestamp:(new Date).valueOf()};sessionStorage.setItem(o,JSON.stringify(t))}catch(e){}}function c(e,t,n){e.clearRect(0,0,e.canvas.width,e.canvas.height),e.fillText(t,0,0);t=new Uint32Array(e.getImageData(0,0,e.canvas.width,e.canvas.height).data);e.clearRect(0,0,e.canvas.width,e.canvas.height),e.fillText(n,0,0);const a=new Uint32Array(e.getImageData(0,0,e.canvas.width,e.canvas.height).data);return t.every((e,t)=>e===a[t])}function p(e,t){e.clearRect(0,0,e.canvas.width,e.canvas.height),e.fillText(t,0,0);var n=e.getImageData(16,16,1,1);for(let e=0;e<n.data.length;e++)if(0!==n.data[e])return!1;return!0}function u(e,t,n,a){switch(t){case"flag":return n(e,"\ud83c\udff3\ufe0f\u200d\u26a7\ufe0f","\ud83c\udff3\ufe0f\u200b\u26a7\ufe0f")?!1:!n(e,"\ud83c\udde8\ud83c\uddf6","\ud83c\udde8\u200b\ud83c\uddf6")&&!n(e,"\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc65\udb40\udc6e\udb40\udc67\udb40\udc7f","\ud83c\udff4\u200b\udb40\udc67\u200b\udb40\udc62\u200b\udb40\udc65\u200b\udb40\udc6e\u200b\udb40\udc67\u200b\udb40\udc7f");case"emoji":return!a(e,"\ud83e\u1fac8")}return!1}function f(e,t,n,a){let r;const o=(r="undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope?new OffscreenCanvas(300,150):document.createElement("canvas")).getContext("2d",{willReadFrequently:!0}),s=(o.textBaseline="top",o.font="600 32px Arial",{});return e.forEach(e=>{s[e]=t(o,e,n,a)}),s}function r(e){var t=document.createElement("script");t.src=e,t.defer=!0,document.head.appendChild(t)}a.supports={everything:!0,everythingExceptFlag:!0},new Promise(t=>{let n=function(){try{var e=JSON.parse(sessionStorage.getItem(o));if("object"==typeof e&&"number"==typeof e.timestamp&&(new Date).valueOf()<e.timestamp+604800&&"object"==typeof e.supportTests)return e.supportTests}catch(e){}return null}();if(!n){if("undefined"!=typeof Worker&&"undefined"!=typeof OffscreenCanvas&&"undefined"!=typeof URL&&URL.createObjectURL&&"undefined"!=typeof Blob)try{var e="postMessage("+f.toString()+"("+[JSON.stringify(s),u.toString(),c.toString(),p.toString()].join(",")+"));",a=new Blob([e],{type:"text/javascript"});const r=new Worker(URL.createObjectURL(a),{name:"wpTestEmojiSupports"});return void(r.onmessage=e=>{i(n=e.data),r.terminate(),t(n)})}catch(e){}i(n=f(s,u,c,p))}t(n)}).then(e=>{for(const n in e)a.supports[n]=e[n],a.supports.everything=a.supports.everything&&a.supports[n],"flag"!==n&&(a.supports.everythingExceptFlag=a.supports.everythingExceptFlag&&a.supports[n]);var t;a.supports.everythingExceptFlag=a.supports.everythingExceptFlag&&!a.supports.flag,a.supports.everything||((t=a.source||{}).concatemoji?r(t.concatemoji):t.wpemoji&&t.twemoji&&(r(t.twemoji),r(t.wpemoji)))}); //# sourceURL=https://web.bulog.jp/wp-includes/js/wp-emoji-loader.min.js /* ]]> */ </script> </body> </html>