GASでWebスクレイピングをして競合情報を自動収集する

「競合サイトの価格・ニュース・求人情報を毎日チェックするのが手間すぎる」「情報収集に時間を取られて本業に集中できない」——そんな悩みを、Google Apps Script(GAS)のWebスクレイピング機能で一気に解決します。本記事では、GASだけで競合サイトの情報を自動収集し、スプレッドシートに蓄積する仕組みを、コードをコピペするだけで作れるよう丁寧に解説します。

GASには外部URLにHTTPリクエストを送るUrlFetchAppと、HTMLを解析するParserライブラリが備わっています。これらを組み合わせれば、プログラミング経験が浅い方でも本格的なスクレイピング自動化が実現できます。

この記事でできること

  • GASのUrlFetchAppで任意のWebページのHTMLを取得する
  • 正規表現を使って必要な情報(価格・タイトル・日付など)を抽出する
  • 収集したデータをGoogleスプレッドシートに自動で記録する
  • 毎日・毎時などのタイマートリガーで完全自動化する

事前準備(5分)

必要なものは以下だけです。費用はすべて無料です。

  • Googleアカウント
  • Googleスプレッドシート(新規作成でOK)
  • 収集対象のURL(競合サイト・ニュースサイトなど)

重要な注意点:スクレイピングを行う前に、対象サイトの利用規約とrobots.txtを必ず確認してください。スクレイピングを禁止しているサイトへの実施は規約違反になる場合があります。また、短時間に大量のリクエストを送るのは避け、クロール間隔は最低でも1時間以上空けるよう設計します。

STEP 1:スプレッドシートとGASエディタを準備する

まず情報を記録するスプレッドシートを用意します。

  • Googleドライブで新しいスプレッドシートを作成する
  • シート名を「競合情報」に変更する
  • 1行目に見出しを入力する:A1=「取得日時」、B1=「タイトル」、C1=「価格/内容」、D1=「URL」
  • メニューの「拡張機能」→「Apps Script」をクリックしてGASエディタを開く

STEP 2:HTMLを取得して情報を抽出するコードを書く

GASエディタのコードをすべて削除して、以下のコードを貼り付けます。このサンプルでは、架空の競合ECサイトの商品名と価格を取得する想定で構成しています。実際の対象サイトのHTML構造に合わせてセレクタ(正規表現)を変更してください。

// ===== 設定エリア(ここだけ編集する)=====
const TARGET_URLS = [
  "https://example-competitor.com/products/",  // 競合サイトURL1
  "https://example-news.com/category/tech/",   // ニュースサイトURL
];

// スプレッドシートID(URLの /d/ と /edit の間の文字列)
const SPREADSHEET_ID = "ここにスプレッドシートIDを入力";
const SHEET_NAME = "競合情報";
// =========================================

function scrapeCompetitorInfo() {
  const sheet = SpreadsheetApp
    .openById(SPREADSHEET_ID)
    .getSheetByName(SHEET_NAME);

  TARGET_URLS.forEach(url => {
    try {
      // HTMLを取得(最大待機5秒に設定)
      const response = UrlFetchApp.fetch(url, {
        muteHttpExceptions: true,
        followRedirects: true,
        headers: {
          "User-Agent": "Mozilla/5.0 (compatible; GAS-Bot/1.0)"
        }
      });

      // HTTPステータスチェック
      if (response.getResponseCode() !== 200) {
        Logger.log(`取得失敗: ${url} (ステータス: ${response.getResponseCode()})`);
        return;
      }

      const html = response.getContentText("UTF-8");

      // --- 抽出ロジック(対象サイトのHTML構造に合わせて変更)---
      // 例1:タグの内容を抽出
      const titleMatch = html.match(/<title[^>]*>([^<]+)<\/title>/i);
      const pageTitle = titleMatch ? titleMatch[1].trim() : "取得不可";

      // 例2:特定クラスの価格を抽出(例:<span class="price">¥1,980</span>)
      const priceMatch = html.match(/<span[^>]*class="[^"]*price[^"]*"[^>]*>([^<]+)<\/span>/i);
      const price = priceMatch ? priceMatch[1].trim() : "価格情報なし";

      // スプレッドシートに記録
      const now = new Date();
      sheet.appendRow([
        Utilities.formatDate(now, "Asia/Tokyo", "yyyy/MM/dd HH:mm:ss"),
        pageTitle,
        price,
        url
      ]);

      Logger.log(`記録完了: ${pageTitle} / ${price}`);

      // サーバー負荷軽減のため2秒待機
      Utilities.sleep(2000);

    } catch (e) {
      Logger.log(`エラー発生 (${url}): ${e.message}`);
    }
  });

  Logger.log("全URL処理完了");
}</code></pre>



<p>コードを貼り付けたら、<code>SPREADSHEET_ID</code>をご自身のスプレッドシートのIDに書き換えてください。IDはスプレッドシートのURLの<code>/d/</code>と<code>/edit</code>の間にある長い文字列です。</p>



<h2 class="wp-block-heading">STEP 3:正規表現を対象サイトに合わせてカスタマイズする</h2>



<p>スクレイピングで最も重要なのが「どこから何を取り出すか」の指定です。Chromeの開発者ツール(F12)でHTMLを確認しながら正規表現を調整します。</p>



<p>よく使うパターンをいくつか紹介します:</p>



<pre class="wp-block-code"><code>// パターン1:特定のIDを持つ要素の内容を取得
// 例:<div id="product-name">商品名テキスト</div>
const idMatch = html.match(/<div[^>]*id="product-name"[^>]*>([\s\S]*?)<\/div>/i);
const productName = idMatch ? idMatch[1].replace(/<[^>]+>/g, "").trim() : "";

// パターン2:メタタグからOGPタイトルを取得(多くのサイトで有効)
const ogTitleMatch = html.match(/<meta[^>]*property="og:title"[^>]*content="([^"]+)"/i);
const ogTitle = ogTitleMatch ? ogTitleMatch[1] : "";

// パターン3:特定テキストの後に続く数値を取得(価格など)
// 例:「価格:12,800円」という形式
const numMatch = html.match(/価格[::]\s*([\d,]+)円/);
const price = numMatch ? numMatch[1] + "円" : "";

// パターン4:リスト形式で複数件取得(最新ニュース一覧など)
// 例:<h2 class="entry-title"><a href="...">記事タイトル</a></h2>
const newsMatches = [...html.matchAll(/<h2[^>]*class="[^"]*entry-title[^"]*"[^>]*>[\s\S]*?<a[^>]*>([^<]+)<\/a>/gi)];
const newsTitles = newsMatches.map(m => m[1].trim());</code></pre>



<p>対象サイトのHTML構造を確認する手順:Chrome で対象ページを開く → F12キーで開発者ツール起動 → 「Elements」タブで取りたい情報のHTMLを確認 → 周辺のタグやクラス名を正規表現に組み込む、という流れです。</p>



<h2 class="wp-block-heading">STEP 4:タイマートリガーで毎日自動実行する</h2>



<p>手動実行で動作確認ができたら、タイマートリガーを設定して完全自動化します。</p>



<ul class="wp-block-list"><li>GASエディタ左側の時計アイコン(トリガー)をクリック</li><li>右下の「トリガーを追加」をクリック</li><li>実行する関数:<code>scrapeCompetitorInfo</code></li><li>イベントのソース:「時間主導型」</li><li>時間ベースのトリガーのタイプ:「日付ベースのタイマー」</li><li>時刻:「午前8時〜9時」(毎朝出社前に収集完了するよう設定)</li><li>「保存」をクリック</li></ul>



<p>これで毎朝8時台に自動でスクレイピングが実行され、スプレッドシートに最新情報が蓄積されていきます。</p>



<h2 class="wp-block-heading">STEP 5:動作確認とトラブルシュート</h2>



<p>エディタ上部の「実行」ボタンをクリックして動作を確認します。初回実行時はGoogleアカウントへのアクセス許可を求めるダイアログが表示されるので「許可」をクリックしてください。</p>



<p><strong>トラブルシュートチェックリスト</strong></p>



<ul class="wp-block-list"><li>「Exception: Address unavailable」エラー → 対象URLが存在するか・GASからアクセス可能なURLかを確認。一部の企業サイトはBot判定でブロックすることがある</li><li>スプレッドシートに何も記録されない → <code>SPREADSHEET_ID</code>が正しいか、シート名が「競合情報」と一致しているかを確認</li><li>文字化けする → <code>getContentText("UTF-8")</code>の文字コードをサイトに合わせて変更(”Shift_JIS”など)</li><li>価格や情報が「取得不可」になる → 開発者ツールでHTMLを再確認し、正規表現のパターンを修正する</li><li>「Exception: Quota exceeded」→ GASの1日の実行回数上限(無料版:90分/日)に達している。取得頻度を下げるか、実行間隔を広げる</li></ul>



<h2 class="wp-block-heading">応用:さらに便利にする拡張アイデア</h2>



<ul class="wp-block-list"><li><strong>差分検知アラート</strong>:前回取得データと比較して変化があった場合のみGmailやSlackで通知する(価格変動・新着記事の検知に最適)</li><li><strong>複数サイト一括管理</strong>:TARGET_URLSに対象URLを追加するだけで複数サイトを横断収集。スプレッドシートに「サイト名」列を追加して一元管理する</li><li><strong>GeminiAPIで要約・分析</strong>:収集したテキストをGemini APIに渡して「競合の最新動向まとめ」を自動生成し、毎朝メールで受け取る仕組みに発展させる</li><li><strong>グラフ自動生成</strong>:価格データを蓄積してスプレッドシートのグラフ機能で推移グラフを自動更新し、競合価格戦略の分析に活用する</li></ul>



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



<p>GASのUrlFetchAppと正規表現を組み合わせることで、競合サイトの情報収集を完全自動化できます。毎日30分かかっていた情報収集作業がゼロになり、その時間を分析・戦略立案に充てられます。</p>



<ul class="wp-block-list"><li>UrlFetchAppでHTTPリクエストを送り、サイトのHTMLを取得する</li><li>正規表現でタイトル・価格・日付などの必要情報を抽出し、スプレッドシートに記録する</li><li>タイマートリガーで毎日自動実行し、人手ゼロで情報収集を継続する</li><li>差分検知・AI要約と組み合わせることで「競合監視ダッシュボード」へと発展させられる</li></ul>



<p>スクレイピングの対象サイト選定、正規表現のカスタマイズ、Slack通知との連携など、さらに突っ込んだ自動化の仕組み構築についてはお気軽にご相談ください。</p>



<figure class="wp-block-image size-full"><a href="https://dx-jitsumu-labo.com/contact/"><img decoding="async" src="https://dx-jitsumu-labo.com/wp-content/uploads/2026/04/contact-cta-banner.png" alt="お問い合わせはこちら" class="wp-image-33"/></a></figure>

</div>
</div>



<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow" style="flex-basis:32%">
<div class="wp-block-group has-global-padding is-layout-constrained wp-container-core-group-is-layout-254f1302 wp-block-group-is-layout-constrained">
<h3 class="wp-block-heading" style="margin-top:0;margin-bottom:0.8em;font-weight:700;font-size:clamp(0.875em, 0.875rem + ((1vw - 0.2em) * 0.196), 1em);">📋 最近の記事</h3>


<ul class="wp-block-latest-posts__list has-dates wp-block-latest-posts"><li><a class="wp-block-latest-posts__post-title" href="https://dx-jitsumu-labo.com/gas-chart-slack-send/">GASでグラフ・チャートを自動生成してSlackに送信する</a><time datetime="2026-04-23T00:21:16+09:00" class="wp-block-latest-posts__post-date">2026年4月23日</time></li>
<li><a class="wp-block-latest-posts__post-title" href="https://dx-jitsumu-labo.com/gas-qr-code-generator/">GASでQRコードを自動生成する方法</a><time datetime="2026-04-22T22:13:42+09:00" class="wp-block-latest-posts__post-date">2026年4月22日</time></li>
<li><a class="wp-block-latest-posts__post-title" href="https://dx-jitsumu-labo.com/gas-web-scraping/">GASでWebスクレイピングをして競合情報を自動収集する</a><time datetime="2026-04-22T21:50:42+09:00" class="wp-block-latest-posts__post-date">2026年4月22日</time></li>
<li><a class="wp-block-latest-posts__post-title" href="https://dx-jitsumu-labo.com/gas-youtube-data-api/">GASでYouTube Data APIを使って動画情報を自動取得する</a><time datetime="2026-04-22T17:11:54+09:00" class="wp-block-latest-posts__post-date">2026年4月22日</time></li>
<li><a class="wp-block-latest-posts__post-title" href="https://dx-jitsumu-labo.com/gas-holiday-detection/">GASで祝日・休日を自動判定する【Googleカレンダー活用】</a><time datetime="2026-04-20T07:34:57+09:00" class="wp-block-latest-posts__post-date">2026年4月20日</time></li>
</ul>


<hr class="wp-block-separator has-alpha-channel-opacity is-style-wide is-style-wide--2" style="margin-top:1.5em;margin-bottom:1.5em"/>



<h3 class="wp-block-heading" style="margin-top:0;margin-bottom:0.8em;font-weight:700;font-size:clamp(0.875em, 0.875rem + ((1vw - 0.2em) * 0.196), 1em);">🏷️ カテゴリー</h3>


<ul class="wp-block-categories-list wp-block-categories">	<li class="cat-item cat-item-3"><a href="https://dx-jitsumu-labo.com/category/gas-automation/">GAS・自動化</a>
</li>
	<li class="cat-item cat-item-1"><a href="https://dx-jitsumu-labo.com/category/uncategorized/">Uncategorized</a>
</li>
	<li class="cat-item cat-item-4"><a href="https://dx-jitsumu-labo.com/category/project-management/">プロジェクト管理</a>
</li>
	<li class="cat-item cat-item-5"><a href="https://dx-jitsumu-labo.com/category/efficiency/">業務効率化</a>
</li>
</ul></div>
</div>
</div>

		
		<div class="wp-block-group has-global-padding is-layout-constrained wp-block-group-is-layout-constrained" style="padding-top:var(--wp--preset--spacing--60);padding-bottom:var(--wp--preset--spacing--60)">
			
		</div>
		
		
		
<div class="wp-block-group alignwide is-layout-flow wp-block-group-is-layout-flow" style="margin-top:var(--wp--preset--spacing--60);margin-bottom:var(--wp--preset--spacing--60);">
	
	<nav class="wp-block-group alignwide is-content-justification-space-between is-nowrap is-layout-flex wp-container-core-group-is-layout-9b36172e wp-block-group-is-layout-flex" aria-label="投稿ナビゲーション" style="border-top-color:var(--wp--preset--color--accent-6);border-top-width:1px;padding-top:var(--wp--preset--spacing--40);padding-bottom:var(--wp--preset--spacing--40)">
		<div class="post-navigation-link-previous wp-block-post-navigation-link"><span class="wp-block-post-navigation-link__arrow-previous is-arrow-arrow" aria-hidden="true">←</span><a href="https://dx-jitsumu-labo.com/gas-youtube-data-api/" rel="prev">GASでYouTube Data APIを使って動画情報を自動取得する</a></div>
		<div class="post-navigation-link-next wp-block-post-navigation-link"><a href="https://dx-jitsumu-labo.com/gas-qr-code-generator/" rel="next">GASでQRコードを自動生成する方法</a><span class="wp-block-post-navigation-link__arrow-next is-arrow-arrow" aria-hidden="true">→</span></div>
	</nav>
	
</div>


		
<div class="wp-block-comments wp-block-comments-query-loop" style="margin-top:var(--wp--preset--spacing--70);margin-bottom:var(--wp--preset--spacing--70)">
	
	<h2 class="wp-block-heading has-x-large-font-size">コメント</h2>
	
	
	

	

		<div id="respond" class="comment-respond wp-block-post-comments-form">
		<h3 id="reply-title" class="comment-reply-title">コメントを残す <small><a rel="nofollow" id="cancel-comment-reply-link" href="/gas-web-scraping/#respond" style="display:none;">コメントをキャンセル</a></small></h3><form action="https://dx-jitsumu-labo.com/wp-comments-post.php" method="post" id="commentform" class="comment-form"><p class="comment-notes"><span id="email-notes">メールアドレスが公開されることはありません。</span> <span class="required-field-message"><span class="required">※</span> が付いている欄は必須項目です</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></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 /></p>
<p class="comment-form-email"><label for="email">メール <span class="required">※</span></label> <input id="email" name="email" type="email" value="" size="30" maxlength="100" aria-describedby="email-notes" autocomplete="email" required /></p>
<p class="comment-form-url"><label for="url">サイト</label> <input id="url" name="url" type="url" 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><img src="http://dx-jitsumu-labo.com/wp-content/siteguard/1075110087.png" alt="CAPTCHA"></p><p><label for="siteguard_captcha">上に表示された文字を入力してください。</label><br /><input type="text" name="siteguard_captcha" id="siteguard_captcha" class="input" value="" size="10" aria-required="true" /><input type="hidden" name="siteguard_captcha_prefix" id="siteguard_captcha_prefix" value="1075110087" /></p><p class="form-submit wp-block-button"><input name="submit" type="submit" id="submit" class="wp-block-button__link wp-element-button" value="コメントを送信" /> <input type='hidden' name='comment_post_ID' value='376' id='comment_post_ID' />
<input type='hidden' name='comment_parent' id='comment_parent' value='0' />
</p><p style="display: none !important;" class="akismet-fields-container" data-prefix="ak_"><label>Δ<textarea name="ak_hp_textarea" cols="45" rows="8" maxlength="100"></textarea></label><input type="hidden" id="ak_js_1" name="ak_js" value="221"/><script>document.getElementById( "ak_js_1" ).setAttribute( "value", ( new Date() ).getTime() );</script></p></form>	</div><!-- #respond -->
	
</div>


	</div>
	
	
<div class="wp-block-group alignwide has-global-padding is-layout-constrained wp-block-group-is-layout-constrained" style="padding-top:var(--wp--preset--spacing--60);padding-bottom:var(--wp--preset--spacing--60)">
	
	<h2 class="wp-block-heading alignwide has-small-font-size" style="font-style:normal;font-weight:700;letter-spacing:1.4px;text-transform:uppercase">投稿をさらに読み込む</h2>
	

	
	<div class="wp-block-query alignwide is-layout-flow wp-block-query-is-layout-flow">
		<ul class="alignfull wp-block-post-template is-layout-flow wp-container-core-post-template-is-layout-3ee800f6 wp-block-post-template-is-layout-flow"><li class="wp-block-post post-382 post type-post status-publish format-standard hentry category-gas-automation">
			
			<div class="wp-block-group alignfull is-content-justification-space-between is-nowrap is-layout-flex wp-container-core-group-is-layout-154222c2 wp-block-group-is-layout-flex" style="border-bottom-color:var(--wp--preset--color--accent-6);border-bottom-width:1px;padding-top:var(--wp--preset--spacing--30);padding-bottom:var(--wp--preset--spacing--30)">
				<h3 class="wp-block-post-title has-large-font-size"><a href="https://dx-jitsumu-labo.com/gas-chart-slack-send/" target="_self" >GASでグラフ・チャートを自動生成してSlackに送信する</a></h3>
				<div class="has-text-align-right wp-block-post-date"><time datetime="2026-04-23T00:21:16+09:00"><a href="https://dx-jitsumu-labo.com/gas-chart-slack-send/">2026年4月23日</a></time></div>
			</div>
			
		</li><li class="wp-block-post post-379 post type-post status-publish format-standard has-post-thumbnail hentry category-gas-automation">
			
			<div class="wp-block-group alignfull is-content-justification-space-between is-nowrap is-layout-flex wp-container-core-group-is-layout-154222c2 wp-block-group-is-layout-flex" style="border-bottom-color:var(--wp--preset--color--accent-6);border-bottom-width:1px;padding-top:var(--wp--preset--spacing--30);padding-bottom:var(--wp--preset--spacing--30)">
				<h3 class="wp-block-post-title has-large-font-size"><a href="https://dx-jitsumu-labo.com/gas-qr-code-generator/" target="_self" >GASでQRコードを自動生成する方法</a></h3>
				<div class="has-text-align-right wp-block-post-date"><time datetime="2026-04-22T22:13:42+09:00"><a href="https://dx-jitsumu-labo.com/gas-qr-code-generator/">2026年4月22日</a></time></div>
			</div>
			
		</li><li class="wp-block-post post-376 post type-post status-publish format-standard has-post-thumbnail hentry category-gas-automation">
			
			<div class="wp-block-group alignfull is-content-justification-space-between is-nowrap is-layout-flex wp-container-core-group-is-layout-154222c2 wp-block-group-is-layout-flex" style="border-bottom-color:var(--wp--preset--color--accent-6);border-bottom-width:1px;padding-top:var(--wp--preset--spacing--30);padding-bottom:var(--wp--preset--spacing--30)">
				<h3 class="wp-block-post-title has-large-font-size"><a href="https://dx-jitsumu-labo.com/gas-web-scraping/" target="_self" >GASでWebスクレイピングをして競合情報を自動収集する</a></h3>
				<div class="has-text-align-right wp-block-post-date"><time datetime="2026-04-22T21:50:42+09:00"><a href="https://dx-jitsumu-labo.com/gas-web-scraping/">2026年4月22日</a></time></div>
			</div>
			
		</li><li class="wp-block-post post-372 post type-post status-publish format-standard has-post-thumbnail hentry category-gas-automation">
			
			<div class="wp-block-group alignfull is-content-justification-space-between is-nowrap is-layout-flex wp-container-core-group-is-layout-154222c2 wp-block-group-is-layout-flex" style="border-bottom-color:var(--wp--preset--color--accent-6);border-bottom-width:1px;padding-top:var(--wp--preset--spacing--30);padding-bottom:var(--wp--preset--spacing--30)">
				<h3 class="wp-block-post-title has-large-font-size"><a href="https://dx-jitsumu-labo.com/gas-youtube-data-api/" target="_self" >GASでYouTube Data APIを使って動画情報を自動取得する</a></h3>
				<div class="has-text-align-right wp-block-post-date"><time datetime="2026-04-22T17:11:54+09:00"><a href="https://dx-jitsumu-labo.com/gas-youtube-data-api/">2026年4月22日</a></time></div>
			</div>
			
		</li></ul>
	</div>
	
</div>


</main>


<footer class="wp-block-template-part">
<div class="wp-block-group has-global-padding is-layout-constrained wp-block-group-is-layout-constrained" style="padding-top:var(--wp--preset--spacing--60);padding-bottom:var(--wp--preset--spacing--50)">
	
	<div class="wp-block-group alignwide is-layout-flow wp-block-group-is-layout-flow">
		

		
		<div class="wp-block-group alignfull is-content-justification-space-between is-layout-flex wp-container-core-group-is-layout-e5edad21 wp-block-group-is-layout-flex">
			
			<div class="wp-block-columns is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex">
				
				<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow" style="flex-basis:100%"><h2 class="wp-block-site-title"><a href="https://dx-jitsumu-labo.com" target="_self" rel="home">DX実務ラボ</a></h2>

				
				</div>
				

				
				<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow">
					
					<div style="height:var(--wp--preset--spacing--40);width:0px" aria-hidden="true" class="wp-block-spacer"></div>
					
				</div>
				
			</div>
			

			
			<div class="wp-block-group is-content-justification-space-between is-layout-flex wp-container-core-group-is-layout-570722b2 wp-block-group-is-layout-flex">
				<nav class="is-vertical wp-block-navigation is-layout-flex wp-container-core-navigation-is-layout-fe9cc265 wp-block-navigation-is-layout-flex"><ul class="wp-block-navigation__container  is-vertical wp-block-navigation"><li class=" wp-block-navigation-item wp-block-navigation-link"><a class="wp-block-navigation-item__content"  href="#"><span class="wp-block-navigation-item__label">ブログ</span></a></li><li class=" wp-block-navigation-item wp-block-navigation-link"><a class="wp-block-navigation-item__content"  href="#"><span class="wp-block-navigation-item__label">このサイトについて</span></a></li><li class=" wp-block-navigation-item wp-block-navigation-link"><a class="wp-block-navigation-item__content"  href="#"><span class="wp-block-navigation-item__label">よくある質問</span></a></li><li class=" wp-block-navigation-item wp-block-navigation-link"><a class="wp-block-navigation-item__content"  href="#"><span class="wp-block-navigation-item__label">投稿者</span></a></li></ul></nav>

				<nav class="is-vertical wp-block-navigation is-layout-flex wp-container-core-navigation-is-layout-fe9cc265 wp-block-navigation-is-layout-flex"><ul class="wp-block-navigation__container  is-vertical wp-block-navigation"><li class=" wp-block-navigation-item wp-block-navigation-link"><a class="wp-block-navigation-item__content"  href="#"><span class="wp-block-navigation-item__label">イベント</span></a></li><li class=" wp-block-navigation-item wp-block-navigation-link"><a class="wp-block-navigation-item__content"  href="#"><span class="wp-block-navigation-item__label">ショップ</span></a></li><li class=" wp-block-navigation-item wp-block-navigation-link"><a class="wp-block-navigation-item__content"  href="#"><span class="wp-block-navigation-item__label">パターン</span></a></li><li class=" wp-block-navigation-item wp-block-navigation-link"><a class="wp-block-navigation-item__content"  href="#"><span class="wp-block-navigation-item__label">テーマ</span></a></li></ul></nav>
			</div>
				
		</div>
		

		
		<div style="height:var(--wp--preset--spacing--70)" aria-hidden="true" class="wp-block-spacer"></div>
		

		
		<div class="wp-block-group alignfull is-content-justification-space-between is-layout-flex wp-container-core-group-is-layout-91e87306 wp-block-group-is-layout-flex">
			
			<p class="has-small-font-size">Twenty Twenty-Five</p>
			
			
			<p class="has-small-font-size">
				Designed with <a href="https://ja.wordpress.org" rel="nofollow">WordPress</a>			</p>
			
		</div>
		
	</div>
	
</div>


</footer>
</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/twentytwentyfive/*","/*\\?(.+)"]}},{"not":{"selector_matches":"a[rel~=\"nofollow\"]"}},{"not":{"selector_matches":".no-prefetch, .no-prefetch a"}}]},"eagerness":"conservative"}]}
</script>
			<script>
			window.addEventListener('pageshow', function(event) {
				var isBackForward = false;
				if (window.performance && typeof performance.getEntriesByType === 'function') {
					var perfEntries = performance.getEntriesByType('navigation');
					isBackForward = perfEntries.length > 0 && perfEntries[0].type === 'back_forward';
				}
				if (event.persisted || isBackForward) {
					window.location.reload();
				}
			});
			</script>
			<script type="module" src="https://dx-jitsumu-labo.com/wp-includes/js/dist/script-modules/block-library/navigation/view.min.js?ver=b0f909c3ec791c383210" id="@wordpress/block-library/navigation/view-js-module" fetchpriority="low" data-wp-router-options="{"loadOnClientNavigation":true}"></script>
<script src="https://dx-jitsumu-labo.com/wp-includes/js/comment-reply.min.js?ver=6.9.4" id="comment-reply-js" async data-wp-strategy="async" fetchpriority="low"></script>
<script id="wp-block-template-skip-link-js-after">
	( function() {
		var skipLinkTarget = document.querySelector( 'main' ),
			sibling,
			skipLinkTargetID,
			skipLink;

		// Early exit if a skip-link target can't be located.
		if ( ! skipLinkTarget ) {
			return;
		}

		/*
		 * Get the site wrapper.
		 * The skip-link will be injected in the beginning of it.
		 */
		sibling = document.querySelector( '.wp-site-blocks' );

		// Early exit if the root element was not found.
		if ( ! sibling ) {
			return;
		}

		// Get the skip-link target's ID, and generate one if it doesn't exist.
		skipLinkTargetID = skipLinkTarget.id;
		if ( ! skipLinkTargetID ) {
			skipLinkTargetID = 'wp--skip-link--target';
			skipLinkTarget.id = skipLinkTargetID;
		}

		// Create the skip link.
		skipLink = document.createElement( 'a' );
		skipLink.classList.add( 'skip-link', 'screen-reader-text' );
		skipLink.id = 'wp-skip-link';
		skipLink.href = '#' + skipLinkTargetID;
		skipLink.innerText = '内容をスキップ';

		// Inject the skip link.
		sibling.parentElement.insertBefore( skipLink, sibling );
	}() );
	
//# sourceURL=wp-block-template-skip-link-js-after
</script>
<script src="https://dx-jitsumu-labo.com/wp-includes/js/dist/hooks.min.js?ver=dd5603f07f9220ed27f1" id="wp-hooks-js"></script>
<script src="https://dx-jitsumu-labo.com/wp-includes/js/dist/i18n.min.js?ver=c26c3dc7bed366793375" id="wp-i18n-js"></script>
<script id="wp-i18n-js-after">
wp.i18n.setLocaleData( { 'text direction\u0004ltr': [ 'ltr' ] } );
//# sourceURL=wp-i18n-js-after
</script>
<script src="https://dx-jitsumu-labo.com/wp-content/plugins/contact-form-7/includes/swv/js/index.js?ver=6.1.5" id="swv-js"></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:\/\/dx-jitsumu-labo.com\/wp-json\/",
        "namespace": "contact-form-7\/v1"
    }
};
//# sourceURL=contact-form-7-js-before
</script>
<script src="https://dx-jitsumu-labo.com/wp-content/plugins/contact-form-7/includes/js/index.js?ver=6.1.5" id="contact-form-7-js"></script>
<script src="https://dx-jitsumu-labo.com/wp-content/plugins/honeypot/includes/js/wpa.js?ver=2.3.04" id="wpascript-js"></script>
<script id="wpascript-js-after">
wpa_field_info = {"wpa_field_name":"ijdsgk2926","wpa_field_value":196541,"wpa_add_test":"no"}
//# sourceURL=wpascript-js-after
</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://dx-jitsumu-labo.com/wp-includes/js/wp-emoji-release.min.js?ver=6.9.4"}}
</script>
<script type="module">
/*! 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://dx-jitsumu-labo.com/wp-includes/js/wp-emoji-loader.min.js
</script>
</body>
</html>