<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Cloudflare on Keyuki Blog</title>
    <link>https://blog.keyuki.net/tags/cloudflare/</link>
    <description>Recent content in Cloudflare on Keyuki Blog</description>
    <generator>Hugo</generator>
    <language>en</language>
    <lastBuildDate>Wed, 06 May 2026 19:00:00 +0900</lastBuildDate>
    <atom:link href="https://blog.keyuki.net/tags/cloudflare/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Xのリンクカードに画像が出ない原因を調べたら、featured_imageだけでは足りなかった</title>
      <link>https://blog.keyuki.net/posts/x-card-og-image-hugo-ananke/</link>
      <pubDate>Wed, 06 May 2026 19:00:00 +0900</pubDate>
      <guid>https://blog.keyuki.net/posts/x-card-og-image-hugo-ananke/</guid>
      <description>&lt;p&gt;こんなブログでも流入数を多少は増やしていきたいなという、気持ちで、試しに記事をXに投稿したとき、リンクカードに画像が出ませんでした。&lt;/p&gt;&#xA;&lt;p&gt;リンクカードというのは、XにURLを貼ったときに自動で表示される、タイトルと画像がセットになったあのプレビューのことです。ちゃんと出ると見栄えがいいし、クリックされやすくなる気がして、できれば表示させたいやつです。&lt;/p&gt;&#xA;&lt;p&gt;記事ページ自体を開くとアイキャッチ画像はちゃんと表示されていました。なのにXのカードには画像がない。「またX側の気まぐれか？」とも思ったのですが、せっかくなので原因をちゃんと調べることにしました。&lt;/p&gt;&#xA;&lt;h2 id=&#34;まずhtmlのソースを確認しました&#34;&gt;まずHTMLのソースを確認しました&lt;/h2&gt;&#xA;&lt;p&gt;Webページの裏側にはHTMLというファイルがあって、その中に「この記事のSNSカード用画像はこれです」という情報を埋め込む仕組みがあります。&lt;code&gt;og:image&lt;/code&gt; や &lt;code&gt;twitter:image&lt;/code&gt; といった「メタタグ」と呼ばれる記述がそれにあたります。&lt;/p&gt;&#xA;&lt;p&gt;まずそのメタタグが正しく出力されているかを確認しました。Hugo（このブログで使っている静的サイトジェネレーター）でサイトを一時的にビルドして、出力されたHTMLを調べました。&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;hugo --destination /private/tmp/keyuki-og-check --environment production&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;rg -n &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;og:image|twitter:image|twitter:card&amp;#34;&lt;/span&gt; /private/tmp/keyuki-og-check/posts&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;結果を見て、最初は「あ、タグ自体は出てる」と思いました。必要なメタタグは全部ありました。&lt;/p&gt;&#xA;&lt;p&gt;ところがよく見ると、どの記事もまったく同じURLを指していました。&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;&amp;lt;meta property=&amp;#34;og:image&amp;#34; content=&amp;#34;https://blog.keyuki.net/images/default-og.jpg&amp;#34; /&amp;gt;&#xA;&amp;lt;meta name=&amp;#34;twitter:image&amp;#34; content=&amp;#34;https://blog.keyuki.net/images/default-og.jpg&amp;#34; /&amp;gt;&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;記事ごとの画像ではなく、全記事共通の &lt;code&gt;default-og.jpg&lt;/code&gt; という1枚の画像を指していました。&lt;/p&gt;&#xA;&lt;p&gt;「メタタグがない」のではなく、「メタタグはあるけど、指している画像が全部同じ共通画像だった」という状態でした。&lt;/p&gt;&#xA;&lt;h2 id=&#34;原因は-featured_image-と-images-の役割の違い&#34;&gt;原因は &lt;code&gt;featured_image&lt;/code&gt; と &lt;code&gt;images&lt;/code&gt; の役割の違い&lt;/h2&gt;&#xA;&lt;p&gt;このブログはHugo + Anankeというテーマで動いています。記事を書くとき、ファイルの先頭に設定を書く欄（「フロントマター」と呼びます）があって、そこにアイキャッチ画像のURLを指定していました。&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-yaml&#34; data-lang=&#34;yaml&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;featured_image&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;https://images.keyuki.net/uploads/2026/05/example-eyecatch.png&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;これで記事ページにはちゃんと画像が表示されます。ところがXのリンクカードはここを見ていませんでした。&lt;/p&gt;&#xA;&lt;p&gt;Hugoには &lt;code&gt;featured_image&lt;/code&gt; とは別に、SNSカード用のメタタグを生成するための &lt;code&gt;images&lt;/code&gt; という設定項目があります。HugoのOGP（Open Graph Protocolの略で、SNSにURLを貼ったときの見え方を制御する仕組みです）は、&lt;code&gt;featured_image&lt;/code&gt; ではなく &lt;code&gt;images&lt;/code&gt; を参照して動きます。&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;code&gt;featured_image&lt;/code&gt; → 記事ページ上のアイキャッチ表示に使われる（Anankeテーマ固有の機能）&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;images&lt;/code&gt; → SNSカード用メタタグの生成に使われる（Hugo本体の機能）&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;&lt;code&gt;images&lt;/code&gt; を設定していなければ、Hugoはサイト全体のデフォルト画像（&lt;code&gt;default-og.jpg&lt;/code&gt;）で埋めます。今回まさにその状態でした。&lt;/p&gt;&#xA;&lt;h2 id=&#34;画像サイズにも落とし穴がありました&#34;&gt;画像サイズにも落とし穴がありました&lt;/h2&gt;&#xA;&lt;p&gt;共通の &lt;code&gt;default-og.jpg&lt;/code&gt; を確認してみたら、解像度が &lt;code&gt;7200x4800&lt;/code&gt;、ファイルサイズが約7.6MBもありました。&lt;/p&gt;&#xA;&lt;p&gt;Xのリンクカードには画像のサイズ制限があります。大きすぎる画像はカードに表示されません。共通画像はその条件を超えていたため、仮にフォールバックとして読み込まれていたとしても表示されなかった可能性が高いです。&lt;/p&gt;&#xA;&lt;p&gt;SNSカード用の画像は &lt;code&gt;1200x630&lt;/code&gt;（横1200px × 縦630px）のJPEGで、ファイルサイズは数百KB以内に抑えるのが安全とされています。&lt;/p&gt;&#xA;&lt;h2 id=&#34;修正した内容&#34;&gt;修正した内容&lt;/h2&gt;&#xA;&lt;h3 id=&#34;各記事のフロントマターに-images-を追加しました&#34;&gt;各記事のフロントマターに &lt;code&gt;images&lt;/code&gt; を追加しました&lt;/h3&gt;&#xA;&lt;p&gt;公開済みの記事のフロントマター（ファイル先頭の設定欄）に &lt;code&gt;images&lt;/code&gt; を追加しました。SNSカード用の画像はアイキャッチとは別に、1200x630で作り直したものを使っています。&lt;/p&gt;</description>
    </item>
    <item>
      <title>個人ブログに Google Analytics と Microsoft Clarity を入れた理由</title>
      <link>https://blog.keyuki.net/posts/analytics-clarity-cloudflare/</link>
      <pubDate>Wed, 06 May 2026 10:00:00 +0900</pubDate>
      <guid>https://blog.keyuki.net/posts/analytics-clarity-cloudflare/</guid>
      <description>&lt;p&gt;ブログを整え直している流れで、アクセス解析まわりも見直しました。&lt;/p&gt;&#xA;&lt;p&gt;もともと Cloudflare Web Analytics は使っていましたが、今回は Google Analytics 4 と Microsoft Clarity も追加しました。&#xA;アクセス数を細かく追いかけたいというより、どの記事が読まれているのか、どこから来ているのか、読者がページ内でどう動いているのかを見られるようにしたかったからです。&#xA;まあ、そもそも誰も見にきてないんですけどね。やってみたいだけですね。&lt;/p&gt;&#xA;&lt;h2 id=&#34;もともと使っていた-cloudflare-web-analytics&#34;&gt;もともと使っていた Cloudflare Web Analytics&lt;/h2&gt;&#xA;&lt;p&gt;Cloudflare Web Analytics は、個人ブログにはかなり相性がいいと思っています。&#xA;軽くて、Cookie に依存せず、プライバシー寄りの設計です。まず全体のページビューや訪問傾向をざっくり見るだけなら、これで十分な場面も多いです。&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://developers.cloudflare.com/web-analytics/about/&#34;&gt;公式の説明&lt;/a&gt; によると、JavaScript の beacon と Performance API を使ってデータを収集しており、訪問者の個人データは収集・使用しない設計になっています。Core Web Vitals などのパフォーマンス指標の傾向も確認できます。&lt;/p&gt;&#xA;&lt;p&gt;「何人くらい来ているのか」「どのページが見られているのか」を日々ざっくり把握するには、これで十分です。&lt;/p&gt;&#xA;&lt;h2 id=&#34;それでも-ga4-を追加した理由&#34;&gt;それでも GA4 を追加した理由&lt;/h2&gt;&#xA;&lt;p&gt;GA4 は正直、個人ブログには機能が多すぎる面もあります。&#xA;ただ、流入元やページごとの傾向を後から掘れるのは便利です。SNS に投稿した直後の反応、検索から読まれた記事、内部リンクで回遊された記事などを見たいとき、Cloudflare より細かい分析ができます。&lt;/p&gt;&#xA;&lt;p&gt;GA4 の主な強みを整理すると:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;リアルタイムレポート&lt;/strong&gt;: 直近 5分 / 30分のアクティブユーザー、閲覧ページ、イベントをざっくり確認できる。正確な流入元の内訳は、通常のトラフィック取得レポートで後から確認する用途に向く&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;トラフィック・ユーザー分析&lt;/strong&gt;: どこから来ているか（検索、SNS、直接など）の内訳を見る&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;探索（Explorations）&lt;/strong&gt;: 標準レポートより深く、フィルタやセグメントを組み合わせて分析できる&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;個人ブログでは全部使う必要はないです。「SNS に投稿したあと、どこから何人来たか」「検索から読まれている記事はどれか」といった目的を決めて、必要なところだけ見る使い方で十分だと思っています。&#xA;まだ書いたブログをSNSに投稿してないですね、やらないといけないですね。&lt;/p&gt;&#xA;&lt;p&gt;将来的に Search Console と接続してオーガニック検索の傾向を見たり、イベント設計をして内部リンクのクリックを追ったりもできるみたいですね。将来の選択肢は多い方がいいですからね。&lt;/p&gt;&#xA;&lt;h2 id=&#34;microsoft-clarity-を追加した理由&#34;&gt;Microsoft Clarity を追加した理由&lt;/h2&gt;&#xA;&lt;p&gt;Clarity は、数字というより読者の動きを見るために入れました。&#xA;他の人のブログで見て、なんだろうこれと思ってとりあえず、調べて、入れてみた感じです。&#xA;どこでスクロールが止まるのか、どのリンクが押されるのか、スマホで読みづらそうな箇所がないか。こういうことは、ページビューだけを見ていてもわかりません。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Hugoと Cloudflare Pages を組み合わせたブログ運用について</title>
      <link>https://blog.keyuki.net/posts/hugo-cloudflare-pages/</link>
      <pubDate>Mon, 05 Jan 2026 00:00:00 +0000</pubDate>
      <guid>https://blog.keyuki.net/posts/hugo-cloudflare-pages/</guid>
      <description>&lt;p&gt;このブログの元となっている「Hugoと Cloudflare Pages」についてまとめます。&lt;/p&gt;&#xA;&lt;p&gt;Hugo（ヒューゴ）と Cloudflare Pages を組み合わせたブログ運用は、&lt;strong&gt;「早い・安い・高セキュリティ」&lt;/strong&gt; みたいな感じです。&lt;/p&gt;&#xA;&lt;h3 id=&#34;1-全体の仕組み&#34;&gt;1. 全体の仕組み&lt;/h3&gt;&#xA;&lt;h4 id=&#34;step-1-記事の執筆ローカル環境&#34;&gt;Step 1: 記事の執筆（ローカル環境）&lt;/h4&gt;&#xA;&lt;p&gt;パソコン上で、Markdown（マークダウン）という記法を使って記事を書きます。&#xA;Hugoのコマンドを使えば、自分のPC内で瞬時にブログのプレビューを確認できます。&lt;/p&gt;&#xA;&lt;h4 id=&#34;step-2-保存と送信git-push&#34;&gt;Step 2: 保存と送信（Git Push）&lt;/h4&gt;&#xA;&lt;p&gt;記事を書き終えたら、そのファイルを「Git（ギット）」というバージョン管理ツールを使って、GitHubというインターネット上の「倉庫（リポジトリ）」へアップロード（Push）します。&lt;/p&gt;&#xA;&lt;p&gt;人間の作業はここまでです。&lt;/p&gt;&#xA;&lt;h4 id=&#34;step-3-自動検知とビルドcloudflare-pages&#34;&gt;Step 3: 自動検知とビルド（Cloudflare Pages）&lt;/h4&gt;&#xA;&lt;p&gt;GitHubに新しいファイルが届いたことを、Cloudflare Pagesが自動的に検知します。すると、Cloudflareのサーバー内でHugoが起動し、Markdownファイルを読み込んで、Webブラウザが表示できる「HTMLファイル」へと変換（ビルド）します。&lt;/p&gt;&#xA;&lt;h4 id=&#34;step-4-ブログの公開デプロイ&#34;&gt;Step 4: ブログの公開（デプロイ）&lt;/h4&gt;&#xA;&lt;p&gt;変換されたHTMLファイルは、Cloudflareにより、公開されます。&lt;/p&gt;&#xA;&lt;h3 id=&#34;2-wordpressとの違い&#34;&gt;2. WordPressとの違い&lt;/h3&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;th&gt;&lt;strong&gt;特徴&lt;/strong&gt;&lt;/th&gt;&#xA;          &lt;th&gt;&lt;strong&gt;WordPress（動的サイト）&lt;/strong&gt;&lt;/th&gt;&#xA;          &lt;th&gt;&lt;strong&gt;Hugo + CF Pages（静的サイト）&lt;/strong&gt;&lt;/th&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;strong&gt;仕組み&lt;/strong&gt;&lt;/td&gt;&#xA;          &lt;td&gt;&lt;strong&gt;注文を受けてから都度作成して表示する&lt;/strong&gt;&lt;/td&gt;&#xA;          &lt;td&gt;&lt;strong&gt;あらかじめ作って並べておく&lt;/strong&gt;&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;strong&gt;速度&lt;/strong&gt;&lt;/td&gt;&#xA;          &lt;td&gt;データベースから素材を探して表示するため、少し時間がかかる。&lt;/td&gt;&#xA;          &lt;td&gt;既にある完成品（HTML）を渡すだけなので、&lt;strong&gt;早い&lt;/strong&gt;。&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;strong&gt;セキュリティ&lt;/strong&gt;&lt;/td&gt;&#xA;          &lt;td&gt;データベースに侵入されるリスクがある。&lt;/td&gt;&#xA;          &lt;td&gt;HTMLファイルだけなので、ハッキングの余地がほぼない。&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;strong&gt;コスト&lt;/strong&gt;&lt;/td&gt;&#xA;          &lt;td&gt;サーバー代や管理費がかかることが多い。&lt;/td&gt;&#xA;          &lt;td&gt;個人のブログ程度なら、ほぼ&lt;strong&gt;無料&lt;/strong&gt;で運用可能。&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;hr&gt;&#xA;&lt;h3 id=&#34;3-メリット&#34;&gt;3. メリット&lt;/h3&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;strong&gt;圧倒的な表示速度:&lt;/strong&gt; Hugoが生成する静的HTMLは非常に軽く、一瞬で表示されます。&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;strong&gt;運用コストがほぼ0円:&lt;/strong&gt; Cloudflare Pagesは無料プランの枠が非常に大きく、独自ドメイン代（年間千円〜数千円）以外は無料で運用できるケースがほとんどです。&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;strong&gt;サーバー管理が不要:&lt;/strong&gt; ソフトウェアのアップデートやセキュリティパッチ当てなどの面倒な作業がありません。&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;strong&gt;バージョン管理:&lt;/strong&gt; 記事の履歴がGitに残るため、「間違って消した記事を元に戻す」といったことが簡単にできます。&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;hr&gt;&#xA;&lt;p&gt;わたしは現在、Obsidianというmd(マークダウン)形式のエディターを利用して、ブログを書いています。Obsidianはプラグインが豊富で、Gitも導入できることから、この構成での相性が良いと考えました。&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
