Contents
Astro フレームワークで静的サイトを構築する具体的な手順とノウハウの解説
Astroフレームワークは、SSG(静的サイト生成)に特化した現代的なツールとして注目を集めています。特に、高速なロード速度や最小限のリソース使用が求められる個人ブログ・ポートフォリオサイト向けに最適です。本記事では、Astroプロジェクトの立ち上げからホスティングまでをステップバイステップで解説し、実践的なビルドフローとノウハウをお伝えします。
Astroフレームワークの導入方法とプロジェクト構築
静的サイト構築にはまずAstroフレームワークの環境準備が不可欠です。Node.jsとnpm(またはyarn)をインストールし、CLIツールでプロジェクトを作成します。
Node.js環境の準備
AstroはJavaScriptベースのフレームワークであり、Node.js 16以降が必須です。最新バージョンは公式サイトで確認してください。
- 手順: https://nodejs.org からNode.jsをダウンロードし、インストールします。
Astro CLIによるプロジェクト初期化
Astro CLIを使用して新規プロジェクトを作成できます。テンプレート選択時にTypeScriptやReactのサポートも設定可能です。
-
コマンドラインで以下のコマンドを実行します。
bash
npm init astro my-project -
テンプレート選択画面が表示されるので、
Defaultを選択してください。 cd my-projectと移動し、npm installを実行して依存関係をインストールします。
注意: Astro CLIは最新版(v2.x以降)を使用することをお勧めします。古いバージョンではセキュリティアップデートが適用されない可能性があります。
MarkdownファイルとFrontmatterの活用法
AstroではMarkdownファイルを活用して、記事やページの内容を簡単に管理できます。これにより、コンテンツとデザインの分離がしやすくなります。
contentフォルダの役割
Astroプロジェクト内のcontent/フォルダにMarkdownファイルを配置します。このフォルダには、ブログ記事やFAQなど、サイトで使用するすべてのコンテンツが保存されます。
- 例:
/content
├── blog/
│ └── helloworld.md
└── about.md
Frontmatterでのメタデータ定義
Markdownファイルの冒頭にFrontmatterを記述します。ここには、ページタイトルやカテゴリなどのメタ情報が入ります。
|
1 2 3 4 5 6 |
--- title: "Astroで静的サイト構築" category: "Web開発" date: "2026-07-14" --- |
Tips: Frontmatterに記載されたメタデータは、コンポーネントから動的に読み込むことができます。これにより、ページ一覧の作成や検索機能の実装が簡略化されます。
.astroファイルの基本構文とコンポーネント分割技法
Astro独自の.astro拡張子を持つファイルでは、HTMLとJavaScriptを混在させることが可能ですが、最小限に抑えるのがポイントです。この形式により、高パフォーマンスなサイトが実現できます。
レイアウトコンポーネントの作成
共通するレイアウト(ヘッダーやフッターなど)は.astroファイルとして分離し、再利用します。
- 例:
astro
My Astro Site
共通部品の再利用方法
複数ページで使用するコンポーネント(ボタンやナビゲーション)は、@slotや<script>タグ内で定義します。
|
1 2 3 4 5 6 7 8 9 10 11 |
<script> const props = defineProps({ text: String, onClick: Function, }); </script> <button on:click={props.onClick}> {props.text} </button> |
実装例:
components/フォルダにコンポーネントを配置し、各ページで<Header />や<Button text="投稿" onClick={() => ...} />と呼び出します。
npm run buildコマンドによる静的サイト生成プロセス
Astroは、開発環境で動作するコンテンツを本番用に変換してくれる仕組みを持っています。ここでは、ビルド時の処理フローと最適化された出力結果について解説します。
ビルド時の処理フロー
npm run buildコマンドを実行すると、Astroは以下のような処理を行います:
- Markdownファイルの内容をHTMLに変換
- コンポーネントやスタイルを統合して最適化
- JavaScriptは不要な部分を除去(パフォーマンス向上)
最適化された出力結果
dist/フォルダに生成されたファイルは、以下のように最適化されています。
|
1 2 3 4 5 6 |
| 項目 | 内容 | |-------------|----------------------------------| | **HTML** | タグやスタイルが圧縮されている | | **CSS** | 共通部分を統合してサイズを抑える | | **JavaScript** | 不要なコードが削除されている | |
distフォルダの構成とホスティング手順(Bluehostなど)
Astroで生成されたdist/フォルダの中身は、Webサーバーにアップロードすることで即座にアクセス可能になります。ここでは、Bluehostなど一般的なホスティングサービスでの手順を解説します。
出力ディレクトリの階層
dist/フォルダには以下のような構成ができます:
|
1 2 3 4 5 6 7 8 9 |
/dist ├── index.html ├── blog/ │ └── helloworld.html ├── about.html └── assets/ ├── images/ └── css/ |
FTP経由でのアップロード手順
- Bluehostの管理画面からFTP接続情報を取得します。
- ファイル転送ソフト(FileZillaなど)で、
dist/フォルダ全体をアップロードします。 - サーバー上に
public_htmlフォルダがある場合は、dist/の中身をその中に配置してください。
注意事項: ホスティングサービスによっては
htdocsやwwwという名前のフォルダが使用されます。アップロード先の確認は必須です。
一般的なWebサーバーへの対応手順
- FTP接続で
dist/フォルダをアップロード - ホスティングサーバーのドキュメントルート(例:
public_html/)にファイルを配置 .htaccessや設定ファイルで静的コンテンツのキャッシュ設定を行う
GitHub ActionsによるCI/CD自動化設定例
Astroプロジェクトにおいて、手動でビルド・ホスティングを毎回行うのは非効率です。GitHub Actionsによって、コード変更時自動でサイトが更新される仕組みを構築できます。
workflow.ymlの基本構成
.github/workflows/deploy.ymlに以下のような設定を追加します:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
name: Deploy Astro Site on: push: branches: - main jobs: build-and-deploy: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - name: Setup Node.js uses: actions/setup-node@v3 with: node-version: '18.x' - name: Install dependencies run: npm install - name: Build site run: npm run build - name: Deploy to GitHub Pages uses: peaceiris/actions-gh-pages@v4 with: github_token: ${{ secrets.GITHUB_TOKEN }} publish_dir: ./dist |
本番環境への自動デプロイ
上記の設定により、mainブランチにプッシュされたコードは以下のように自動で反映されます:
- GitHub Actionsが自動的にAstroプロジェクトをビルド
dist/フォルダの内容をGitHub Pagesまたはホスティング先へアップロード
実装例: ポートフォリオサイトであれば、変更後30秒以内に最新版が公開されるようになります。
記事全体の要点整理
- AstroフレームワークはSSG(静的サイト生成)の最適な選択肢
- MarkdownとFrontmatterを活用し、コンテンツ管理を簡単化
.astroファイルでレイアウトやコンポーネントを分割し、再利用性を高めるnpm run buildにより、高性能な静的サイトが生成される- distフォルダの内容をFTP経由でホスティングサービスにアップロード
- GitHub ActionsでCI/CD自動化を実現し、開発効率を向上させる
Astroプロジェクトを立ち上げてみましょう。あなたの個人ブログやポートフォリオサイトが、最適な形で公開されます。