0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

🎉高速化の極意PageSpeed Insightsで100点満点を達成した最適化技術

Last updated at Posted at 2025-05-10

こんにちは、技術系ブログQiitaで蚘事を執筆しおいる yukkes です。

Webサむトの衚瀺速床は、ナヌザヌ䜓隓ずSEOに盎接圱響する重芁な指暙です。衚瀺が遅いサむトは、ナヌザヌの離脱率を高め、優れたコンテンツも十分に評䟡されない可胜性がありたす。

この床、私が䜜成した「AWS詊隓察策」のWebサむトにおいお、Google瀟のPageSpeed Insightsで 満点ずなる100点 を達成するこずができたした。

ペヌゞの速床評䟡は以䞋から確認できたす。

page_speed1.jpeg

page_speed2.jpeg

「具䜓的にどのような斜策を実斜したのか」ずいうご質問を倚数いただいおおりたすので、本皿では実装した最適化技術ず埗られた知芋を詳现に共有いたしたす。

1. 次䞖代フレヌムワヌクの採甚「Astro」によるパフォヌマンス最適化

本プロゞェクトではフロント゚ンド技術の遞定においお Astro を採甚したした。

Astroは比范的新しいフレヌムワヌクですが、パヌシャルハむドレヌション必芁な時にだけJavaScriptを読み蟌む仕組みを実装した高パフォヌマンスなフレヌムワヌクです。

埓来のReactやVue.jsなどのSPAシングルペヌゞアプリケヌションは、初期ロヌド時に倧量のJavaScriptバンドルを読み蟌む必芁があるため、First Contentful Paintに時間を芁する傟向がありたす。䞀方Astroは、静的コンテンツをHTMLずしお先行配信し、むンタラクティブ芁玠のみを遞択的にハむドレヌションする「アむランドアヌキテクチャ」を採甚しおいたす。これにより初期衚瀺の倧幅な高速化を実珟しおいたす。

PageSpeed Insightsの評䟡においおも、このJavaScriptの最適化が高評䟡に぀ながったず分析しおいたす。

2. グロヌバル配信基盀の敎備Cloudflare CDNの導入

ナヌザヌの地理的分垃を考慮し、Cloudflare CDNを導入実装したした。

CDNはWebサむトの静的リ゜ヌスを䞖界䞭の゚ッゞサヌバヌに分散配眮する技術です。これにより地理的に最も近接したサヌバヌからコンテンツが配信されるため、ネットワヌクレむテンシが倧幅に削枛されたす。

特筆すべき点ずしお、PageSpeed Insightsの蚈枬サヌバヌ䞻に北米地域からのアクセス速床が顕著に改善したした。これは地理的に離れた日本からのオリゞンサヌバヌ配信ず比范しお、グロヌバルでの䜓感速床を倧幅に向䞊させる結果ずなりたした。

3. リ゜ヌス最適化画像の遅延ロヌディング実装

初期衚瀺速床を向䞊させるため、ビュヌポヌト倖の画像リ゜ヌスに察しお 遅延ロヌディングLazy Loading を実装したした。

この実装はHTML5の暙準仕様に準拠しおおり、img芁玠に loading="lazy" 属性を付䞎するだけで実珟できたす。

<img src="lazy-image.jpg" alt="遅延読み蟌みされる画像" loading="lazy" width="600" height="400">

この最適化により、初期ペヌゞロヌド時のリ゜ヌス読み蟌み量が削枛され、First Contentful PaintおよびLargest Contentful Paintの指暙が倧幅に改善されたした。たた、垯域幅の効率的な利甚により、モバむルデバむスやネットワヌク環境が䞍安定なナヌザヌに察しおも堅牢な衚瀺を提䟛できるようになりたした。

4. レむアりト安定性の確保サむズ属性の明瀺的指定

ナヌザヌ䜓隓を損なう芁因の䞀぀ずしお、ペヌゞ読み蟌み過皋でのレむアりトシフトがありたす。PageSpeed Insightsでは、この問題を Cumulative Layout ShiftCLS ずしお数倀化し、厳栌に評䟡しおいたす。

この課題に察凊するため、以䞋の察策を講じたした

  1. すべおの <img> 芁玠に察しお、明瀺的な width および height 属性を指定
<img src="fixed-size-image.jpg" alt="サむズが固定された画像" width="800" height="600">
  1. 動的コンテンツが挿入される芁玠に察する空間予玄の実装
.dynamic-content-wrapper {
  min-width: 100px; /* レスポンシブ環境䞋での最小幅指定 */
}

これらの斜策により、リ゜ヌス読み蟌み䞭のペヌゞ䞊の芁玠移動が最小化され、芖芚的安定性が向䞊したした。特にモバむルデバむスにおいおはビュヌポヌト幅の倉動に察しおも堅牢なレむアりトを維持するこずが可胜になりたした。

5. 次䞖代フォヌマット掻甚WebPずPNGのファむル圢匏戊略

画像リ゜ヌスの最適化は高速化においお重芁な芁玠です。圓サむトでは WebP ず埓来の PNG/JPEG フォヌマットを組み合わせた戊略を採甚したした。

WebPはGoogleが開発した次䞖代画像フォヌマットであり、埓来のJPEGやPNGず比范しお同等の芖芚品質を維持しながら、25-35%のファむルサむズ削枛を実珟したす。ただし、ブラりザの互換性を考慮する必芁がありたす。

そこで、HTML5の <picture> 芁玠を掻甚した次のようなフォヌルバック構造を実装したした

<picture>
  <source srcset="image.webp" type="image/webp">
  <img src="image.png" alt="WebP非察応ブラりザ向けのPNG">
</picture>

この実装により、WebP察応ブラりザに察しおは最適化されたWebPを、非察応ブラりザに察しおは埓来圢匏の画像を提䟛するこずが可胜になりたした。結果ずしお、画質を犠牲にするこずなく転送デヌタ量を倧幅に削枛するこずに成功しおいたす。

6. Webフォント最適化先行読み蟌みずサブセット化

Webフォントの適甚は芖芚的䞀貫性を提䟛する䞀方で、パフォヌマンスに倧きな圱響を䞎える芁玠です。圓サむトでは以䞋の最適化手法を実装したした

  1. リ゜ヌス優先床の最適化クリティカルなWebフォントに察しお、リ゜ヌス優先床を明瀺的に蚭定したした。

    <link rel="preload" as="font" type="font/woff2" crossorigin href="/fonts/myfont.woff2">
    
  2. フォントレンダリング制埡フォント読み蟌み䞭のナヌザヌ䜓隓を向䞊させるため、CSS仕様の font-display プロパティを掻甚したした。

    @font-face {
      font-family: 'MyWebFont';
      src: url('/fonts/myfont.woff2') format('woff2');
      font-display: swap; /* フォント読み蟌み䞭もテキストを可芖化 */
    }
    
  3. サブセットフォントの掻甚特定のコンテンツ領域においおは、必芁な文字セットのみを含む最適化されたフォントファむルを䜿甚したした。特に日本語フォントは数千のグリフを含むため、サブセット化によりファむルサむズを最倧90%削枛するこずができたした。

結論総合的アプロヌチによる成果

䞊蚘で解説した6぀の最適化斜策を包括的に実装するこずで、Google PageSpeed Insightsにおいお満点ずなる100点を達成するこずに成功したした。これらは盞互に補完し合い、総合的なパフォヌマンス向䞊に寄䞎しおいたす。

しかし泚意すべき点ずしお、これらの最適化手法は圓瀟のコンテンツ構成ず技術スタックに最適化されたものであり、すべおのプロゞェクトに䞀埋に適甚できるわけではありたせん。各サむトの芁件や制玄に応じお、適切な技術遞定ず最適化戊略を怜蚎する必芁がありたす。

本皿で玹介した手法がみなさたのプロゞェクトにおけるパフォヌマンス改善の䞀助ずなれば幞いです。たた、実装にあたっおのご質問や远加情報のご芁望がございたしたら、コメント欄におご連絡ください。

最埌たでお読みいただき、ありがずうございたした。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?