ブログサイトをリニューアルして「Page Speed Insight対応」してみた

2025年の半ば頃に「バイブコーディング」という言葉が一般化してきたころに、このブログのリニューアルを考え始めました。実際、トップページと記事詳細ページはリニューアル版テンプレートを静的なHTMLで作っていました。

ただ、なかなか時間がそこから取ることができなくなり、どうやってa-blog cmsに組み込もうかなぁ…と考えてたら、a-blog cmsの開発元である「アップルップル」の山本 一道さんが相談に乗っていただけました。

2025年末〜2026年の頭までは、今自分が注力している「AR系」のイベントのために海外出張も多かったころからしばらく停滞したものの、2026年4月20日、一旦リニューアルをすることができました。

ちなみに、僕のブログは2005年当時からアップルップルさんの「a-blog」で始め、その次世代版となった「a-blog cms」でずっと運用させていただいています。

どうせリニューアルしたんだから、生成AI使って最適化してみたら…?

これでも一応まだWeb屋ですので、サイトを作ったらGoogle PageSpeed Insightを通す訳です。正確にはリニューアル前に通して調べていました。その時の数字がこちらです。

リニューアル前のデスクトップ版の結果

リニューアル前のスマホ版の結果

まぁ、長らくHTMLとかには全く手を入れていなかったので、そりゃそうだよなぁ…という感じでした。特にモバイル版はなかなか壊滅的な結果です。

先に結論をいうと、対策をしたらこうなりました

先にどう変わったのかをお伝えしておきますね…

リニューアル後のデスクトップ版の結果

リニューアル後のスマホ版の結果

まぁ、かなり良くなったのではないかな、とは思っています。これでどれぐらいのいわゆるSEO的な結果がでるのかは分からないのですが、ちゃんと追い込めば形になるのは達成感があって嬉しいです。

リニューアルで変わった大きな違い

リニューアルをした時に以下のことをしました。

  • サーバーを「さくらインターネット」から「X Server」の載せ替えた

  • PHPのバージョンを7.4.33→8.3系に上げた

  • a-blog cms のバージョンは最新まで上げた

  • a-blog cmsのテンプレートは全部ゼロから刷新した

これらの結果としての速度向上もあるとは思いますが、上記をした時点では、パフォーマンスは「80点ぐらい」でした。

Claudeが調べて、Claude Codeが実装支援

最近のバイブコーディングブームに乗って、名村も2026年2月ごろからもうほぼ毎日Claude Codeで何かを作っています。

やり方として、Claudeで「調査、や実装方法の検討をして、Claude Codeに引き渡す資料作成」、それを受けてClaude Codeで「実装自体の支援や実施を」をする、流れが名村は多いです。

Claudeに調査依頼をしてみました

ということで、今回の対応依頼、まずClaudeにこんな風に聞いてみました。

Xサーバーのレンタルサーバーで運用しているa-blog cmsの表示速度を極限まで早くしたいです。
Web上の事例や、HTMLの書き方的なアプローチを含めて、最善手となる方法を調査してください。

途中で細かい質問などをやり取りしながら、最終的にClaude Codeに引き渡す依頼書を作成してくれました。

Claude Codeに引き継ぎ

Claudeが作ってくれた指示書をマシンのClaude Code管理のこのブログ改修に関するプロジェクトディレクトリの /document/ディレクトリ配下に入れて、初回に読み込みをしてもらいました。そこから数時間、Claude Codeとの二人三脚が始まります。

Claude Codeにやってもらったこと

実際にClaude Codeと一緒に実施した表示速度の最適化のサマリーは以下でした。

  1. Tailwind CSS CDN の本番ビルド化

  2. LCP 画像の修正

  3. Google Analytics の遅延読み込み化

  4. Apple Podcast iframe の遅延読み込み

  5. 埋め込みリンクカード画像の CLS 修正

  6. bundle.css の preload 追加

  7. a-blog CMS キャッシュ設定の最大化

  8. Xserver パネル「XPageSpeed」設定

  9. .htaccess によるキャッシュ・ETag 最適化

  10. Cloudflare Free の導入

  11. member.csv のクリティカルパス外し

  12. 管理画面用 CSS のログイン時限定化

  13. Alpine.js の自前ホスト化

  14. LCP 画像の srcset + resizeImg 対応

  15. AVIF 画像変換対応

それぞれでやってきたことをざっくりと記載しておきます。

Tailwind CSS CDN の本番ビルド化

諸事情で構築時にTailwind CSSを入れたのが僕ではなかったのですが、開発時に利用していた cdn.tailwindcss.com がそのままにしちゃっていました。このままだとブラウザで JIT コンパイルが走り、レンダーブロッキングと TBT 悪化の最大要因になるので、本番用に変更しました。

LCP 画像の修正

記事詳細ページのヒーロー画像に当たる部分に loading="lazy"  が付与されていて、ブラウザが意図的に読み込みを遅延が起こっていたので解除。
 loading="lazy"  を削除して、代わりに  fetchpriority="high"  を追加。

<head> 内に <link rel="preload" as="image"> を追加して、2 枚目以降には  loading="lazy"  を維持するように設定。

Google Analytics の遅延読み込み化

表示速度を最優先したので、運用性を考えたらa-blog cmsの管理画面からタグは登録するのですが、GA の gtag() 初期化がインライン記述で、HTML パース中にメインスレッドをブロックするで、footer側に持っていきました。

Apple Podcast iframe の遅延読み込み

ポッドキャスト紹介ページでは外部コンテンツをiframeで埋め込んでいるので、loading="lazy" したり、<head> へ <link rel="preconnect" href="https://embed.podcasts.apple.com"> を追加したりしました。

埋め込みリンクカード画像の CLS 修正

本文内の埋め込みリンクカード(.quoteImageContainer)に width / height が無く、画像読み込み時にレイアウトシフトが発生していたので、 .quoteImageContainer { aspect-ratio: 1200 / 630; } を設定。

bundle.css の preload 追加

<link rel="preload" href="/dest/bundle.css" as="style"> を追加して、メイン CSS の取得開始タイミングの前倒し。

a-blog cms キャッシュ設定の最大化

これはa-blog cms周りの設定の話です。

Xserver パネル「XPageSpeed」設定

  • CSS/JS 圧縮 ON

  • CSS/JS/画像の統合 ON

  • 小ファイルのインライン化 ON

  • ブラウザキャッシュ設定「全ての静的ファイル」ON

  • 画像最適化はあえて OFF(後述の WebP/AVIF 対応と競合するため)

  • JS 遅延読み込みも OFF(acms.js と競合してエラーが出るため)

.htaccess によるキャッシュ・ETag 最適化

静的アセット(画像・CSS・JS・フォント)に Cache-Control: public, max-age=31536000, immutable を設定したりしています。

Cloudflare Free の導入

CDNのCloudflare に登録をしました。アクセス数的には無料枠でいけると思うのと、今回は表示速度はできるところまで追い込む実験も兼ねていたので、導入。

member.csv のクリティカルパス外し

この「member.csv」はこのサイトの会員番号を処理しているものですが、読み込み場所が限られていたので、そこを細かく制御掛けました。これが地味に効果が高かったので、一般的なナレッジにはならないのですが、すんません…

管理画面用 CSS のログイン時限定化

ゲスト閲覧時にも acms-admin.min.css(70KB)が無条件読み込みされていたのを分岐処理をしました。

Alpine.js の自前ホスト化

jsdelivr CDN から読み込んでおり、キャッシュ TTL は 7 日。リピートアクセスでも再取得が頻発していたので以下を対応

  • Alpine.js 公式から v3.15.11(alpine.min.js / focus.min.js)をダウンロード

  • tailwind-blog/js/vendor/alpinejs/ に配置

  • .htaccess の静的アセット 1 年 immutable キャッシュが自動適用

LCP 画像の srcset + resizeImg 対応

記事ヒーロー画像が原寸 1280×720 のまま配信され、モバイル表示枠(665×374 相当)に対して過大だったのを制御を加えました。

AVIF 画像変換対応

a-blog cmsのエントリー時にはPNG/JPEG/GIF等をアップしているのですが、リニューアルのだいぶ前から自作したバッチ処理をCronで回して、アップされた画像を自動的にWebP画像を作る処理をくみこんでいました。
HTMLからのリクエストが当初のPNG/JPEG/GIFでも、同じファイル名でWebP画像があれば、それを吐き出すように.htaccessで処理していました。

今回そのバッチ処理にAVIF画像も生成する処理を加えて、同じファイル名で存在していれば…という優先順位を「AVIF→WebP→実体」となるようにしています。

物によってはWebPの方が軽くなることもあるけど、サイト全体としてはAVIFの方が軽くなっているのも調べたので、効果はあったかな?と思います。

やってみて成果がでてよかった

一般的な静的サイトやフレームワーク直書きのサイトなら「フルコントロール」で最適化ができますが、CMS の上に乗ったサイトはコアを触れないという前提で戦う必要があります。

その制約下で何ができて何ができないかを明確に切り分け、できる範囲を漏れなく潰していくアプローチが重要だなぁ…と改めて実感しました。またあくまで個人ブログなので、開発環境を用意していなかったのもあり、バックアップは結構細かく取って、何かあってもロールバックできるようにしたり、サーバーへのデプロイはGithub Actionsにしたり、ということで事故らないようには気をつけてやっていました。

本記事が同じように a-blog CMS や他の CMS 製サイトの速度改善に取り組んでいる方の参考になれば幸いです。

著者写真
この記事を書いた人
名村晋治 / 株式会社サービシンク

都内のWeb制作会社のWebディレクター兼代表取締役。 1994年にインターネットに出会い、1996年、学生4名でのWeb制作事業をはじめ、Web黎明期から多くの大手企業のサイト制作・開発に携わる。 2000年から2005年までは不動産検索サイト「LIFULL HOME"S」を運営する株式会社LIFULL、2005年から2009年までは都内のWeb制作会社の取締役として参画し、2010年に株式会社サービシンクを立ち上げ、代表を務める。 現在もWebディレクターとして現場でのPMを行う。 経験案件規模は直請けで10万円〜3億円。 過去900人以上が受講している「Webディレクター育成講座」は2000年より開催し今年で25年目。 2020年よりWebクリエイターへの情報提供のためのPodcast「Webディレクションやってますラジオ」を毎週金曜23時に配信中。 不動産テック協会 理事 2023年慶應義塾大学大学院経営管理研究科(MBA)取得

@yakumo

関連記事

この記事のハッシュタグ #SEO#PSI#Core Web Vitals#CMS#a-blog cms#Claude から関連する記事を表示しています。

関連記事

同じカテゴリー「Webディレクション」の新着記事を表示しています。

「Markdownをやめろ」は本当か?──Claude Code記事の煽りに踊らされないために、原典を正確に読む

2026年05月15日

「Markdownをやめろ」は本当か?──Claude Code記事の煽りに踊らされないために、原典を正確に読む

生成AIに「任せる」前に、人間が理解しておくべきこと

2026年05月14日

生成AIに「任せる」前に、人間が理解しておくべきこと

AIに手綱をつける——Claude Code で 150 コミットを重ねてわかったハーネスエンジニアリングの実践

2026年05月11日

AIに手綱をつける——Claude Code で 150 コミットを重ねてわかったハーネスエンジニアリングの実践

「Claude CodeにObsidianを組み合わせるべきだ」というSNSの声に飛びつく前に、確認しておくべきこと

2026年05月05日

「Claude CodeにObsidianを組み合わせるべきだ」というSNSの声に飛びつく前に、確認しておくべきこと

Webディレクターがサービシンクで得られる9つのこと

2026年04月21日

Webディレクターがサービシンクで得られる9つのこと

Webディレクター30年目が始まりました。

2025年04月02日

Webディレクター30年目が始まりました。