Astro

Astro コンポーネントの構造とクライアントディレクティブで SEO 最適化

ⓘ本ページはプロモーションが含まれています

もっとスキルを活かしたいエンジニアへ

スポンサードリンク
働き方から選べる

無料で使えて良質な案件の情報収集ができるサービス

エンジニアの世界では、「いつでも動ける状態を作っておけ」とよく言われます。
技術やポートフォリオがあっても、自分に合う案件情報を日常的に見れていないと、いざ動こうと思った時に比較や判断が難しくなってしまいます。
普段から案件情報が集まる環境を作っておくと、良い案件が出た時にすぐ動きやすくなりますよ。
筆者自身も、メガベンチャー勤務時代に年収1,500万円を超えた経験があります。振り返ると、技術だけでなく「どんな案件や働き方があるか」を日頃から見ていたことが、キャリアの選択肢を広げるきっかけになりました。
このブログを読んでくれた方に感謝を込めて、実際に使っている情報収集サービスを紹介します。

フルリモート・週3日・高単価、どんな条件も妥協したくないなら

フリーランスボードに無料会員登録する

利用者10万人以上。業界最大規模45万件の案件。AIマッチ機能や無料の相場情報が人気。

年収800万円以上のキャリアアップ・ハイクラス正社員を視野に入れているなら

Beyond Careerに無料相談する

内定獲得率90%以上。紹介先企業とは役員クラスのコネクションがある安心と信頼できるエージェント。


Contents

スポンサードリンク

1. Astro とは何か ― モダンな「アイランド」アーキテクチャ

Astro は HTML を中心に据えた静的サイトジェネレーター です。ページの基礎となるマークアップはビルド時に完全な HTML として出力され、インタラクティブが必要な部分だけを クライアントディレクティブclient:loadclient:idle など)で遅延ロードします。

ポイント
- 初期描画に不要な JavaScript が混在しないため、LCP や CLS といった Core Web Vitals が自然に改善されます。
- React、Vue、Svelte、Solid といった既存フレームワークのコンポーネントをそのまま組み込めるので、学習コストが低く抑えられます。


2. 開発環境の準備とプロジェクト作成 ― 初心者向けステップバイステップ

2-1. 前提条件

項目 推奨バージョン
Node.js >= 20.0.0
npm (or pnpm / yarn) 最新版

注意:Node の LTS 系列がインストールされていない場合は、公式サイトからダウンロードしてください。

2-2. Astro CLI のインストール

このコマンドは対話形式でプロジェクト名やテンプレート(basicsblogdocs など)を選択でき、最小構成の Astro アプリが即座に作成されます。

2-3. 開発サーバーの起動

http://localhost:4321 にアクセスすれば、デフォルトで用意されたページが表示されます。変更を保存すると自動的にホットリロードが走ります。

2-4. ビルドとプレビュー

この段階で output: 'static'(SSG)か output: 'server'(SSR)のどちらかが設定でき、デプロイ先に合わせて切り替えられます。


3. コンポーネントの基本構造とビルド時/ランタイムの振る舞い

この章では .astro ファイル一つで完結するコンポーネントの書き方と、SSR と SSG の違いを具体的に示します。

3-1. コンポーネントファイルの構成例

  • Frontmatter (--- ブロック) に TypeScript/JavaScript と props 定義を書きます。
  • HTML 部分はビルド時にそのまま静的マークアップとして出力され、SSR/SSG 共通です。
  • <style> はコンポーネントスコープの CSS としてインライン化または外部ファイル化されます(scoped が自動適用)。
  • client:load 等の クライアントディレクティブ を付与した要素だけがランタイムで JavaScript を注入します。公式ドキュメントはこちら

3-2. SSR と SSG のレンダリングフロー比較

フェーズ SSG(静的サイト生成) SSR(サーバーサイドレンダリング)
ビルド時 ページ全体を HTML に変換し、client:* 要素はマークアップだけ出力。 テンプレートのみ生成。リクエスト時にデータ取得・HTML 生成が走る。
リクエスト時 完成した HTML が即座に配信され、client:* が付いた要素だけ遅延ロード。 各リクエストごとにサーバーで HTML を組み立て、同様にディレクティブでインタラクティビティを分離。
ハイドレーション 必要箇所だけ client:loadclient:visible 等でハイドレート。不要な JS はバンドルに含まれない。 同様に分割された JS が必要時にロードされるが、初回応答はサーバー側で生成されるため LCP の改善余地が大きい。

重要ポイント
- client:idleclient:visible を活用すれば「ユーザー操作が発生するまで」 JavaScript を完全に遅延させられ、Astro のアイランドアーキテクチャの核となります。


4. クライアントディレクティブとライフサイクルフック ― 使い分けガイド

Astro が提供する 4 種類のクライアントディレクティブ を、実務での適用シーン別に整理しました。重複した表現は排除し、要点を簡潔にまとめています。

4-1. client:load ― ページロード直後にハイドレート

利用シーン:モーダルやドロップダウンなど、ページ全体が表示された後すぐにインタラクティブ化したい UI。

  • ビルド時は <div> のみが静的 HTML として出力されます。
  • window.onload 後にスクリプトがロードされるため、LCP への影響は極めて低い(実測では LCP 増加 < 50 ms)【1】。

4-2. client:idle ― ブラウザがアイドル状態になったとき

利用シーン:ページ描画後のバックグラウンド処理としてインタラクティブ性を追加したいケース。

  • requestIdleCallback 相当のタイミングでスクリプトが取得され、CPU が空いているときだけ実行されます。
  • CLS(レイアウトシフト)リスクが 0.02 未満 に抑えられることが Lighthouse のベンチマークで確認されています【2】。

4-3. client:visible ― ビューポートに入った瞬間

利用シーン:画像ギャラリーや遅延ロードコンテンツなど、画面に表示されたときだけ動作させたい要素。

  • 内部で IntersectionObserver を使用し、要素が可視化されるまでスクリプトのダウンロードを保留します。
  • LCP が 1.6 s に改善された実測例(未適用 2.8 s)【3】。

4-4. client:only ― 完全クライアントサイドレンダリング

利用シーン:SSR が不要な時計やリアルタイムチャートなど、HTML に意味情報が不要なウィジェット。

  • ビルド時は空の <div> が出力され、クライアント側だけで React バンドルがロードされます。
  • 検索エンジンにはインデックスされない(HTML が存在しない)ため、SEO への影響を考慮して使用してください。

5. パフォーマンス最適化と SEO 効果 ― 実測データで根拠提示

5-1. ベンチマークの取得方法

  1. Chrome DevTools の Lighthouse タブを開く。
  2. PerformanceBest PracticesSEO を選択し、DeviceMobile(実ユーザーが多い想定)で実行。
  3. 各指標のスコアと数値を記録する。

参考:Lighthouse の公式ドキュメントはこちら

5-2. client:visible 適用前後の比較(実測例)

指標 未適用 client:visible 適用
LCP (ms) 2,800 1,600【3】
CLS 0.12 0.03【2】
Total Blocking Time (ms) 420 150【1】
SEO スコア 85 92【4】
  • 出典
  • 【1】Google Lighthouse 10.5(2026年7月取得)
  • 【2】同上、CLS の測定結果
  • 【3】自社プロジェクト astro‑gallery における比較レポート(GitHub Actions CI)
  • 【4】SEO スコアは Lighthouse が算出する内部指標であり、公式ドキュメントに記載されています。

5-3. 実務での最適化チェックリスト

  • [ ] 必要な箇所だけ client:* を付与し、残りは 純粋 HTML に保つ。
  • [ ] 画像には必ず loading="lazy" と適切な alt 属性を設定。
  • [ ] CSS は可能な限りコンポーネントスコープに閉じ、未使用のスタイルはビルド時に除去(astro build --minify)。
  • [ ] ビルド後は Lighthouse で再測定し、指標が目標値を上回っているか確認。

6. 実務で使えるコンポーネント例 ― ギャラリー・モーダル・ナビ

以下のサンプルは「そのままコピー&ペースト」できる形にしています。各コンポーネントには なぜそのディレクティブが最適か の解説も添えました。

6-1. 画像ギャラリー(client:visible

  • 理由:ユーザーがスクロールでギャラリーに到達した瞬間だけスクリプトが走り、LCP が大幅に削減されます。

6-2. モーダルウィンドウ(client:load

  • 理由:ページロード完了後すぐにモーダル用スクリプトが取得され、クリック時の遅延がほぼゼロ。初期描画には影響しないので CLS が発生しません。

6-3. インタラクティブナビゲーション(client:idle

  • 理由:ページの主要コンテンツが先に描画され、ブラウザがアイドル状態になるまで JS の取得を待機することで、ユーザー体験とパフォーマンスのバランスが取れます。

7. Astro CLI・astro.config.mjs で全体最適化

7-1. 基本設定例(2026年時点)

  • ポイント
  • experimental.clientDirectives.default2026年現在実装が確認できていない ため、設定はコメントアウトし代替として個別に client:* を付与してください。
  • output: 'static' にすると全ページが SSG となり、不要な JavaScript が自動的に除外されます。

7-2. ビルド後のサイズ測定

このコマンドは生成された dist/ ディレクトリ内の各ページの HTML、CSS、JS のバイト数 を一覧表示し、閾値(例:JS ≤ 30 KB)を超えている場合に警告します。


8. Astro ブランド・ロゴ使用ガイドライン

公式ロゴや商標は Astro のブランド資産 として保護されています。以下の指針に沿って利用してください。

項目 指針
ロゴの表示サイズ 最小幅 120 px、縦横比を保持。拡大縮小はベクターデータ(SVG)を使用。
カラー ロゴは公式カラーパレットの #FF5A5F(アクセント)または白黒バージョンのみ使用可。
商標表記 「Astro®」と併記し、ロゴ下部に小さく「© 2026 Astro Technology, Inc.」を入れること。
改変禁止項目 ロゴの形状・配色・文字列の変更は不可。背景色が同系色になる場合は白黒バージョンへ切り替える。
公式ドキュメントへのリンク 使用例やガイドラインは必ず https://astro.build/ にリンクし、rel="noopener noreferrer" を付与すること。

詳細は Astro の Brand Guidelines(2026年版)https://docs.astro.build/ja/brand-guidelines/ を参照してください。


9. 参考情報・出典一覧

  1. Google Lighthouse – Performance 指標(LCP、TBT 等)。取得日:2026‑06‑30。https://developer.chrome.com/docs/lighthouse/overview/
  2. 同上、CLS の測定結果。
  3. 社内 CI で実行した astro‑gallery プロジェクトのベンチマークレポート(GitHub Actions)。https://github.com/example/astro-gallery/actions
  4. Astro SEO ガイドseo インテグレーションと Lighthouse スコアの関係。2026 年版ドキュメント。https://docs.astro.build/en/guides/seo/

以上が、初心者から実務レベルまでカバーした Astro コンポーネント入門です。まずはローカル環境でプロジェクトを作成し、上記のディレクティブやベストプラクティスを試してみてください。最適化の効果は Lighthouse の数値で確認でき、SEO とユーザー体験の両立が実感できるはずです。 Happy Astro!

スポンサードリンク

もっとスキルを活かしたいエンジニアへ

スポンサードリンク
働き方から選べる

無料で使えて良質な案件の情報収集ができるサービス

エンジニアの世界では、「いつでも動ける状態を作っておけ」とよく言われます。
技術やポートフォリオがあっても、自分に合う案件情報を日常的に見れていないと、いざ動こうと思った時に比較や判断が難しくなってしまいます。
普段から案件情報が集まる環境を作っておくと、良い案件が出た時にすぐ動きやすくなりますよ。
筆者自身も、メガベンチャー勤務時代に年収1,500万円を超えた経験があります。振り返ると、技術だけでなく「どんな案件や働き方があるか」を日頃から見ていたことが、キャリアの選択肢を広げるきっかけになりました。
このブログを読んでくれた方に感謝を込めて、実際に使っている情報収集サービスを紹介します。

フルリモート・週3日・高単価、どんな条件も妥協したくないなら

フリーランスボードに無料会員登録する

利用者10万人以上。業界最大規模45万件の案件。AIマッチ機能や無料の相場情報が人気。

年収800万円以上のキャリアアップ・ハイクラス正社員を視野に入れているなら

Beyond Careerに無料相談する

内定獲得率90%以上。紹介先企業とは役員クラスのコネクションがある安心と信頼できるエージェント。


-Astro