AstroでWebサイトを作る(デザイナー的ワークフロー)

サイトリニューアル、技術面のお話。

Tue Mar 04

ExcalidrawでWebデザイン

前回の記事では「何故サイトをリニューアルするに至ったのか」その理由について書きましたが、今回は技術面についてのお話をしたいと思います。

1. サイトの目的とツール決め

まず、時とともにブレてしまわないようサイトの方向性を固めるとともに、制作ツールに必要な条件を考えていきます。

その上で、条件に合うツールを選定していきます。

  1. 準備ツール
    • Excalidraw:オープンソースのホワイトボードアプリ。紙とペンのような使い心地が取り掛かりの敷居を低くしてくれます。
    • Figma:仕事で普段使いしているワイヤーフレーム作成ツールなので。
  2. 開発ツール
    • Webサイト生成ツール:Astro
      • 近頃広く使われている、個人サイト制作が楽になったとの声が多数の静的Webサイト生成ツール。
      • Git、GitHub、Netlify、Cloudflare、React、Tailwind CSS等のプラットフォームやフレームワークと連携できるのがポイント。
      • HugoとVue.JSの知識が生かせるのもポイント。
      • Hugoではできなかった.mdファイル内へのHTMLタグの埋め込みが可能。
    • CSSフレームワーク:Tailwind CSS
      • 仕事で使ってみて、いかにCSSコーディングを時短できるかに驚いたので。
      • 技術の進歩に伴い頻繁にアップデートされるので、サイト管理もローメンテナンスで行けます。
    • コードエディター:Visual Studio Code
      • 使用した拡張機能:WSL、Astro、Git Graph、JavaScript Debugger Companion Extension
  3. 画像系ツール
    • Photoshop
      • 定番の画像処理ソフト。
    • Blender
      • お気に入りのオールインワン3Dツール。

2. 準備

インスピレーション探し+知識のアップデート

今回の目的の一つに「Webデザイン・開発の知識&スキル向上」があるので、色々なサイトのスクリーンショットを取って分析するところから制作を始めていきます。

良いデザインだと思ったサイトの

他にも良いWebデザインとは何か理解を深めるためにYouTube動画を見てみたり。

チュートリアルでAstroの仕様を把握

HUGO(静的Webサイト生成ツール)やVue.JSに慣れているとはいえ、Astroが私にとって基本から学ばないといけない未知のツールであることに変わりはありません。学習効果を最大化するという意味では、ステップバイステップ形式のチュートリアルがかなり役立ちました。 (しかもここで作ったサンプルサイトはテンプレートとして使い回せますし)

3. デザイン

1. コンセプト

2. ラフスケッチ

デザイン作業はいつもラフスケッチから始まります。 今回はExcalidraw(と紙とペン)を使って、以下のページの構成を描いていきました。

そして色合いやフォントの組み合わせについても考えていきます。

@font-face {
  font-family: 'heading';
  src: local("Futura"), local("Trebuchet MS"), local("ヒラギノ角ゴ ProN"), local("Hiragino Kaku Gothic ProN"), local("游ゴシック"), local("YuGothic"), local("Yu Gothic"), local("メイリオ"), local("Meiryo"), local("MS ゴシック"), local("MS Gothic"), local("HiraKakuProN-W3");
  font-weight: normal;
  font-style: normal;
  font-display: swap;
}
@font-face {
  font-family: 'reading';
  src: local("Andale Mono"), local("Consolas"), local("ヒラギノ角ゴ ProN"), local("Hiragino Kaku Gothic ProN"), local("游ゴシック"), local("YuGothic"), local("Yu Gothic"), local("メイリオ"), local("Meiryo"), local("MS ゴシック"), local("MS Gothic"), local("HiraKakuProN-W3");
  font-weight: normal;
  font-style: normal;
  font-display: swap;
}

3. Figmaで実際の見え方を検討する

ラフ案のデザインが実現可能かをテストしたり最終的な形を決めるため、Figmaで各ページのPC・スマートフォン用レイアウトを組み立てていきます。

4. Astroでコーディング

最終的な見た目を決めた後、先に作ったサンプルサイトのコードを編集していきます。

まずは機能の追加から。

そして以下の工程から実際のコーディングを進めていきました。

  1. global.cssにCSS変数(font familyやカラーコードなど)を加えて
  2. header.astro、navigation.astro、footer.astroなど、使い回すためのAstroコンポーネントを作っていきました。

個人的に、アセットの流用がプロジェクト進行やサイトの運営を楽にする鍵だと考えているので、いかにコードを流用可能にするかはかなり重要なポイントでした。 なので、この段階では「実装を進める中でどんなコンポーネントが必要になってくるか」をできるだけ予測するよう意識しました。

5. GitHub→Cloudflare Pagesにデプロイ

コーディングが終わったら、サイトをCloudflare Pagesにデプロイします。

でも何故チュートリアルおすすめのNetlifyではなくCloudflare Pagesにしたのか? 理由は簡単で、(2025年2月現在)Cloudflareのアジア圏データセンター数が、数ヶ所だけのNetlifyより格段に多かったからです。 画像多めで使用地域の異なる言語を複数扱うサイトなので、どこからでもスピーディーに接続できるというのはかなり大事だなと。

公開までに取ったステップは以下の通り。

  1. 新しいGitHubレポジトリを作成します。
  2. Cloudflareにサインアップします。
  3. Cloudflare Pages projectを作成し、先に作ったGitHubレポジトリのコードから自動でデプロイするよう連携させます。
  4. カスタムドメイン設定(erikaobama.com)をして完了です。