Skip to content

Repository files navigation

ポートフォリオサイト

Astro + Tailwind CSS でつくった、日本語 / 英語切り替え対応のポートフォリオサイトです。 黒背景 + オレンジ/赤/黄のフラットな配色で、プロフィール・作品一覧・ソフトウェア配布・ YouTube / ニコニコ動画 / SoundCloud の埋め込み再生をまとめています。

🗺️ サイト構成(ナビゲーション)

ページ 内容
ホーム (/) ヒーロー(名前・キャッチコピー)+ 再生できる作品プレビュー3件
プロフィール (/about/) 自己紹介・スキル(未設定なら非表示)・連絡先(未設定なら非表示)
作品 (/works/) 音楽・映像・文章の作品一覧。カテゴリー×サブカテゴリー(ボカロ曲か否か)で絞り込み可
ソフトウェア (/software/) 音楽制作用ソフトウェア・その他の一覧。各アイテムは専用の説明ページを持つ

英語版はすべて /en/ 配下に同じ構成であります(例: /en/works/)。 「メディア」という独立ページは存在しません(Works/Softwareに統合済み)。ただしホームの 再生プレビュー用に media コレクションは引き続き使っています。

✏️ コンテンツを追加する

1. 音楽・映像・文章の作品を追加する(/works/ に載る)

src/content/works/ に新しい .json ファイルを追加します(ファイル名 = 自由な英数字ID)。

{
  "title_ja": "曲のタイトル",
  "title_en": "Song Title",
  "thumb": "https://nicovideo.cdn.nimg.jp/thumbnails/xxxx/xxxx",
  "category": "music",
  "subcategory": "vocaloid",
  "links": [{ "label": "ニコニコ動画", "url": "https://www.nicovideo.jp/watch/smXXXXXXXX" }],
  "date": "2026-09-05",
  "featured": true
}
  • category: "music" | "video" | "writing"(このどれかなら /works/ に表示される)
  • subcategory: category が "music" のときだけ "vocaloid" か "other" を指定(それ以外は省略可)
  • desc_ja / desc_en: 基本は省略でよい(音楽・映像・文章では説明文は表示しない運用にしている)
  • featured: true にすると、日付が新しい順で上位3件がホームの再生プレビューにも出る (※ホームに出したい場合は、同じ内容を src/content/media/ にも追加する必要がある。下記参照)

2. ソフトウェアを追加する(/software/ に載り、専用ページも自動生成される)

同じく src/content/works/ に追加しますが、category を "software" にします。

{
  "title_ja": "プラグイン名",
  "title_en": "Plugin Name",
  "desc_ja": "説明文。ここは省略せずに書く(専用ページの本文になる)。",
  "desc_en": "Description text (this becomes the body of the dedicated page).",
  "thumb": "/images/xxx-placeholder.svg",
  "category": "software",
  "version": "1.0.0",
  "links": [
    { "label": "ダウンロード (Windows)", "url": "https://github.com/.../releases/download/vX.X.X/xxx.zip" },
    { "label": "GitHubで見る", "url": "https://github.com/.../xxx" }
  ],
  "date": "2026-09-05",
  "featured": false
}
  • category: "software" にすると、カードのリンクは自動的に サイト内の専用説明ページ (/works/{ファイル名}/ と /en/works/{ファイル名}/)になる。links はそのページの中に表示される
  • version を書くとタイトル横に v1.0.0 のように表示される(省略可)
  • category: "other" も /software/ ページに表示される(音楽制作ソフト以外の雑多な公開物用)
  • 配布ファイルの置き場所は GitHub Releases を推奨(gh release create または GitHub の Releases 画面から。実例: https://github.com/LiamLech/pith/releases)

3. ホームで再生できる動画・音源を追加する(media コレクション)

src/content/media/ に新しい .json ファイルを追加します。

{
  "type": "niconico",
  "embedId": "smXXXXXXXX",
  "title_ja": "曲のタイトル",
  "title_en": "Song Title",
  "date": "2026-09-05",
  "featured": true,
  "category": "vocaloid"
}
  • type: "youtube"(embedId は動画ID)/ "niconico"(embedId は sm... ID)/ "soundcloud"(embedId はトラックの公開URLそのもの)
  • category: "vocaloid" | "other"(今は表示上の用途は無いが、将来フィルターを復活させる時のために残してある)
  • featured: true の新しい順で上位3件がホームに表示される
  • ニコニコの動画情報(タイトル・タグ・投稿日)は http://ext.nicovideo.jp/api/getthumbinfo/{ID} で、 YouTubeは https://www.youtube.com/oembed?url=...&format=json で取得できる(投稿日は取れないことがある)

4. プロフィール・SNS・アバターを編集する

src/data/site.ts を編集する:

  • name / handle / tagline_ja / tagline_en / bio_ja / bio_en / email
  • avatar: 画像パス。avatarCredit を書くとプロフィールページの写真下に小さくクレジット表記が出る (ホームのヒーローには出さない仕様)
  • socialLinks: 配列に { label, url, icon } を追加/削除。icon は SocialLinks.astro の icons オブジェクトにあるものだけアイコン表示される。無いアイコン名を使うとラベルの先頭2文字が出る
  • skills_ja / skills_en: 空配列なら About ページのスキル欄自体が非表示になる

🎨 デザイントークン(src/styles/global.css)

  • 背景は黒ベース(ライト/ダークどちらのテーマでも黒。--color-bg / --color-bg-elevated)
  • 主役の3色: --color-accent-1(オレンジ)/ --color-accent-2(赤)/ --color-accent-3(黄)。 タグ・SNSアイコン・作品バッジなどは、この3色を順番に使い回す accentCycle パターンで実装している (特定の色だけに偏らないようにするため)
  • グラデーションはサイト内で 1箇所だけ(ホームの見出し下の細いバー、.gradient-rule)。 ボタン・バッジなど他の場所は意図的にすべてフラットな単色にしてある
  • --color-border はグレーではなく、背景色にオレンジを32%混ぜた色(color-mix())。 ダークテーマに切り替えても自動で追従する
  • 角丸は控えめ(--radius-lg: 0.85rem / --radius-md: 0.5rem)。丸いボタンの多用は避けている (再生ボタンのアイコンだけは例外的に円形)

🧞 コマンド

コマンド 内容
npm install 依存パッケージのインストール
npm run dev 開発サーバー起動(http://localhost:4321)
npm run build dist/ に本番ビルドを出力
npm run preview ビルド結果をローカルで確認

開発サーバーを起動したまま content.config.ts(スキーマ)を変更すると、まれに 「The collection "works" does not exist or is empty」という警告が出たまま直らないことがある。 その場合は npx astro dev stop してから npm run dev で再起動すれば直る (npm run build は毎回まっさらな状態から実行されるので、この問題は起きない)。

🌐 デプロイ

GitHub (LiamLech/sakura-portfolio) → Vercel の自動デプロイ構成。main に push するだけで 本番サイトが更新される。Vercel のドメインは Project Settings → Domains から変更できる (*.vercel.app は小文字・ハイフンのみ。大文字やアンダースコアは使えない)。

独自ドメインを取得した場合は、Vercel の Domains でドメインを追加したあと、 astro.config.mjs の site と public/robots.txt の Sitemap: 行を新しいURLに更新すること (OGPとサイトマップの生成に使われる)。

🔧 将来「動的サイト」にしたくなったら

このプロジェクトは Astro のハイブリッドレンダリングにそのまま乗せ替えられる構成にしてある。

  1. npx astro add vercel でアダプタを追加
  2. 動的にしたいページ/APIだけ export const prerender = false; を追加(他のページは静的のまま)
  3. src/pages/api/*.ts に API エンドポイントを追加(例: お問い合わせフォームの送信処理)
  4. 必要に応じて Turso / Vercel Postgres / Supabase などのDBや、headless CMS を追加

サイトを作り直す必要はなく、同じリポジトリ・同じデプロイ先のまま拡張できる。

📝 ブログについて

未実装だが、src/content.config.ts にコメントで雛形を残してある。 src/content/blog/ja/*.md のような Markdown コレクションを追加すれば、いつでも組み込める。

About

あさくらさくら ポートフォリオサイト (Astro)

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages