18分で読める

個人Webサイト、どう作る? — Astro × Vercelで実現する個人ポートフォリオ

技術解説 Astro Web開発 ポートフォリオ 初心者向け
khides/website-boilerplate

Astro × Tailwind CSS × Vercel で作る個人サイトのボイラープレート

View on GitHub →

はじめに

「自分のWebサイトを作りたいけど、どこから始めればいいかわからない」

そんな悩みを抱えていませんか?

この記事では、私が運営するこのサイト「khides.com」を参考に、個人サイト構築でよくある疑問への回答をまとめていきます。

すぐに始めたい方へ

このサイトと同じ技術スタックで作られたボイラープレートを公開しています。クローンしてすぐに開発を始められます。

GitHub - khides/website-boilerplate

技術選定の背景を知りたい方は、この記事を読み進めてください。

この記事で解決できる疑問:

  • そもそも個人サイトって必要?
  • 技術は何を選べばいい?
  • 環境構築って難しくない?
  • デザインはどうすればいい?
  • 公開にお金はかかる?

個人サイトって本当に必要?SNSじゃダメ?

必須ではないけど、あると世界が広がります。

SNSやブログサービスも便利ですが、自分だけの場所を持つことには特別な意味があります。

項目SNS・ブログサービス自分のサイト
所有権サービス側自分
カスタマイズ制限あり自由
永続性サービス終了リスクあり自分次第
ブランディング他のユーザーと並列独自のドメインで差別化

自分の名刺代わりになり、ポートフォリオとして機能し、思考を発信する拠点になる——それが個人サイトの価値です。


そもそも、どんな方法がある?

個人サイトを作る方法は、大きく2つに分かれます。

方法代表例メリットデメリット
ノーコードWordPress、Wix、STUDIOコード不要、すぐ始められる月額費用、カスタマイズに限界
コーディングありAstro、Next.js、Hugo高速、無料運用可、自由度高い学習コストがかかる

ノーコード(WordPress等)を選ぶべき?

WordPressは世界で最も使われているCMSContents Management System)で、情報も豊富です。CMSとは、Webサイトのコンテンツ(文章、画像など)をブラウザ上の管理画面から作成・編集・管理できるシステムのこと。コードを書かずに記事を投稿したり、デザインを変更したりできます。

ただし、個人ポートフォリオにはWordPressはオーバースペックな場合も。

観点ノーコード(WordPress等)コーディングあり
初期コストサーバー代(月500〜1,000円〜)無料(Vercel等)
表示速度動的生成のため遅くなりがち静的HTMLで高速
セキュリティプラグイン脆弱性のリスク静的ファイルのみで安全
カスタマイズテーマ・プラグイン依存コードで自由自在
学習コスト低(GUI操作)中〜高
保守プラグイン更新・バックアップ必須ほぼ不要

ノーコードが向いている人:コードを書きたくない、すぐに始めたい、ブログ更新頻度が高い

コードを書くのが向いている人:コードを書ける/書きたい、高速なサイトが欲しい、無料で運用したい

この記事では、コードを書いて構築する方法を解説していきます。


コードを書くなら、どのアーキテクチャを選ぶ?

「コードを書いてサイトを作る」と決めたとして、次に迷うのがアーキテクチャの選択です。

方式正式名称仕組み代表例
SSGStatic Site Generationビルド時にHTMLを生成Astro、Hugo、Gatsby
SSRServer-Side Renderingリクエスト時にサーバーでHTML生成Next.js、Nuxt.js
SPASingle Page ApplicationブラウザでJavaScriptが描画React、Vue、Angular

個人ポートフォリオにはSSGが最適

観点SSGSSRSPA
表示速度◎ 最速(事前生成済み)○ サーバー処理あり△ JS読み込み後に描画
SEO◎ 完全な静的HTML○ 対応可能△ 追加対応が必要
サーバー費用◎ 不要(CDNのみ)× 常時稼働が必要◎ 不要
リアルタイム性△ 再ビルドが必要◎ 常に最新◎ 動的に更新可能
複雑さ◎ シンプル△ サーバー管理必要△ 状態管理が複雑

ポイント:個人サイトやブログは「コンテンツが頻繁に変わらない」「リアルタイム性が不要」「SEOが重要」という特性があります。これはまさにSSGの得意分野。

  • SSRが必要なケース:ユーザーごとに異なるコンテンツを表示(ECサイト、SNSなど)
  • SPAが必要なケース:複雑なUIインタラクション(管理画面、Webアプリなど)

個人ポートフォリオには、SSGで十分。むしろ最適解です。


何から始めればいい?どの技術を選ぶ?

「読む」がメインのサイトなら、Astroがおすすめ

なぜAstroなのか

Astroは2022年頃から注目されているフレームワークです。最大の特徴は「必要な部分だけJavaScriptを使う」という設計思想。

ブログやポートフォリオのような「読む」がメインのサイトでは、ほとんどのページが静的HTMLで十分。動きが必要な部分(メニューの開閉、フォームなど)だけReactを使えばいいんです。

他のフレームワークとの比較:

フレームワーク向いているケース学習コスト
Astroブログ、ポートフォリオ、LP低〜中
Next.jsWebアプリ、動的コンテンツ多め中〜高
Hugo超シンプルなブログ

このサイト(khides.com)の技術スタック

このサイトで採用している技術スタックはこちら:

役割技術選んだ理由
フレームワークAstro静的サイト生成、表示が高速
UIライブラリReact動きのある部分だけ使用
スタイリングTailwind CSS効率的なCSS設計
ホスティングVercel無料、高速、簡単デプロイ

環境構築は難しい?

必要なのは以下の2つだけ:

  1. Node.js(v18以上)— JavaScriptの実行環境
  2. Git— バージョン管理

インストールが終わったら、ターミナルで以下を実行:

npm create astro@latest my-portfolio
cd my-portfolio
npm run dev

ブラウザで http://localhost:4321 を開くと、Astroのウェルカムページが表示されます。


デザインはどうすればいい?

まずはシンプルに。Tailwind CSSで効率よく。

この記事では、デザインの設計方法論については触れずに、技術的なポイントだけ触れておきます。

このサイトではTailwind CSSを使っています。CSSを直接書く代わりに、HTMLにクラスを追加するだけでスタイリングできるので、開発効率が格段に上がります。

// tailwind.config.mjs(要点のみ)
export default {
  theme: {
    extend: {
      colors: {
        brand: '#D28363',      // メインカラー
        surface: '#FFFCFA',    // 背景色
        ink: '#3D3330',        // テキスト色
      },
    },
  },
};

カラーパレットを定義しておけば、text-brandbg-surfaceのようにクラス名で色を指定できます。一貫性のあるデザインが簡単に実現できます。


ブログ機能はどう実装する?

AstroのContent Collectionsを使えば、Markdownで記事が書けます。

Astroには「Content Collections」という機能があり、Markdownファイルで記事を管理できます。

// src/content/config.ts
import { defineCollection, z } from 'astro:content';

const blogCollection = defineCollection({
  type: 'content',
  schema: z.object({
    title: z.string(),
    description: z.string(),
    pubDate: z.date(),
    tags: z.array(z.string()).default([]),
  }),
});

export const collections = { blog: blogCollection };

あとは src/content/blog/ フォルダにMarkdownファイルを置くだけ。タイトルや日付はファイルの先頭(frontmatter)に書きます。

新しい記事を追加するのも簡単——ファイルを作って、GitHubにpushすれば自動で公開されます。


多言語対応はどうやるのか?

後から追加するより、最初から設計しておくと楽

このサイトは日本語と英語の両方に対応しています。正直、手間は2倍以上かかります。でも、こんなメリットがあります:

  • 海外の方にもリーチできる
  • 英語での発信力をアピールできる
  • 技術的なチャレンジとして面白い

Astroのi18n設定は意外とシンプル:

// astro.config.mjs(i18n部分のみ)
i18n: {
  defaultLocale: 'ja',
  locales: ['ja', 'en'],
  routing: {
    prefixDefaultLocale: true, // /ja/ と /en/ でルーティング
  },
}

URLが /ja/blog なら日本語、/en/blog なら英語。翻訳テキストはJSONファイルで管理しています。


SEO対策は何をすればいい?

最低限、メタタグとOGP設定をしておきましょう。

SEO(検索エンジン最適化)で最低限やるべきこと:

  1. タイトルとdescription— ページごとに設定
  2. OGP画像— SNSでシェアされたときに表示される画像
  3. 構造化データ— Googleに内容を正しく伝える
<!-- src/layouts/BaseLayout.astro(要点のみ)-->
<head>
  <title>{title}</title>
  <meta name="description" content={description} />

  <!-- OGP -->
  <meta property="og:title" content={title} />
  <meta property="og:description" content={description} />
  <meta property="og:image" content={ogImage} />

  <!-- 構造化データ -->
  <script type="application/ld+json" set:html={JSON.stringify(schema)} />
</head>

難しく考えなくて大丈夫。まずはこの3つを押さえておけば、あとから改善していけます。


どうやって公開する?費用は?

Vercelなら無料で、しかも簡単に公開できます。

公開までの流れ:

  1. GitHubにリポジトリを作成
  2. Vercelにサインアップ(GitHubアカウントでログイン)
  3. リポジトリをインポート
  4. 「Deploy」をクリック

以上です。数分で世界中からアクセスできるようになります。

カスタムドメイン(例:yourdomain.com)を使いたい場合は、ドメインを別途購入してVercelに設定します。年間1,000〜2,000円程度で取得できます。


公開後のメンテナンスは大変?

記事の追加はファイルを作るだけ

記事を追加する流れ

  1. src/content/blog/ja/.md ファイルを作成
  2. タイトルや日付を書く
  3. 本文をMarkdownで執筆
  4. git push する
  5. Vercelが自動でビルド&デプロイ

定期的にやること

# 依存パッケージの更新確認
npm outdated

# セキュリティチェック
npm audit

月に1回くらい、パッケージを最新に保っておくと安心です。


おわりに

「自分のサイトを作りたい」と思っている方へ。最初から完璧を目指す必要はありません。

まずは小さく始めて、少しずつ改善していくのがおすすめです。この記事で紹介した技術スタックなら、初心者でも十分に取り組めます。

このサイトと同じ技術を使用したボイラープレートは以下で公開しています。ぜひ参考にしてください。

質問やフィードバックがあれば、お問い合わせからお気軽にどうぞ。


ソースコード

khides/website-boilerplate

Astro × Tailwind CSS × Vercel で作る個人サイトのボイラープレート

View on GitHub →