Skip to content

Latest commit

 

History

13 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

sample-seiko — 株式会社サンプル精工 コーポレートサイト

架空の精密金属加工会社のコーポレートサイト。Astro で一から作り、静的ファイルとして Xserver から配信している。

公開先 → https://front-of-code.com/portfolio/sample-seiko/

これはポートフォリオで、クライアント案件ではない。この会社は実在しない。

そして現在も手を入れている。 画像はプレースホルダで、写真は入っていない。 構成と実装は動くが、見た目は仕上げ前。


English

A sample corporate website for a fictional precision metal-machining company, built with Astro and served as static files from Xserver.

Live → https://front-of-code.com/portfolio/sample-seiko/

This is a portfolio piece, not client work — the company does not exist. I built it to have something real to point at. Astro is one of the tools I use, not the destination I push clients toward. It is a full multi-page site rather than a landing page, because the sites I actually deal with are multi-page.

Still in progress. The images are placeholders — there is no photography yet. The structure and the build work; the visual pass is not finished.

Notes for anyone reading the code: Astro 7, output: 'static', a content collection for the news section, and a GitHub Actions job that builds and deploys over FTPS. The contact form is a demo and does not submit anything.


なぜこの業種か

作ったのは神戸。神戸は鉄鋼の街として栄えた土地で、いまも鉄工所や鉄に関わる会社が多く残っている。 会社は架空だが、業種と土地は架空ではない。

自分の下地もそちら側にある。高専では機械工学科で、情報学科ではなかった。 加えて、当時住んでいたマンションは、どうやら鉄工所の跡地に建っていた。

業種は、無難なデモの題材として選んだものではない。いちばん近くにあった実物を選んでいる。

ページ構成

ページ パス 内容
トップ / ヒーロー、強み、事例、設備、お知らせ
会社概要 /company 代表挨拶、会社情報、沿革、アクセス
加工事例 /works カテゴリフィルター付きの事例一覧
設備紹介 /equipment 設備一覧、品質管理体制
お知らせ /news/news/[slug] コンテンツコレクション(Markdown)
お問い合わせ /contact フォーム(デモ。送信は行わない)
プライバシーポリシー /privacy 個人情報の取り扱い

「お知らせ」を入れているのが要点。 更新のある領域を含まない構成は、移行の検証台にならない。 サイトの移行で難しいのは、いつも変わり続ける部分だから。

技術スタック

フレームワーク Astro 7.x(output: 'static' / base: '/portfolio/sample-seiko/'
お知らせ Astro のコンテンツコレクション(Markdown・src/content.config.ts の glob loader)
スタイリング カスタム CSS(CSS 変数)
和文書体 Noto Sans JP(Google Fonts)
ホスティング Xserver(静的配信)
デプロイ GitHub Actions → FTPS

開発

npm install
npm run dev      # http://localhost:4321
npm run build
npm run preview

デプロイ

main に push すると GitHub Actions が build して Xserver へ配信する。

  • FTPS(security: strict で転送する。平文 FTP は使わない
  • サードパーティの Action はコミット SHA で固定している(タグは動くため)。GitHub 純正の actions/* はタグ参照
  • ワークフローの permissionscontents: read のみ

必要な Secrets

Settings → Secrets and variables → Actions で設定する。

Secret 内容
FTP_SERVER FTP ホスト名(例: sv***.xserver.jp
FTP_USERNAME FTP ユーザー名
FTP_PASSWORD FTP パスワード
FTP_REMOTE_DIR アップロード先(例: /example.com/public_html/末尾スラッシュ必須

手動で上げる場合は npm run build して dist/ の中身を転送する。

お問い合わせフォームについて

現在のフォームはデモで、送信は行わない。 送信操作でモーダルを表示するだけ。

本番で使う場合は、src/pages/contact.astro<form>action を設定する。 Formspree か、Xserver のメールフォーム機能のどちらでもよい。

デザイン

想定した読み手

  • 神戸市周辺の中小製造業
  • 既存サイトの作り直し先を検討している事業者

カラーパレット

これはサンプル精工(架空企業)の配色であって、制作者のブランドカラーではない。

役割 Hex
メイン(ダークネイビー) #1a365d
アクセント(オレンジ) #dd6b20
背景(ライトグレー) #f7fafc

方針

  • 信頼感 — 堅実で落ち着いた配色
  • 清潔感 — 十分な余白と読みやすいタイポグラフィ
  • 技術力 — 精密さを感じさせるレイアウト

数値について

作ったものは測る。ただし他人のサイトから取った数値は公開しない。 数値を出すときは、自分で測ったものを、計測条件と一緒に出す。

フォントについて

Noto Sans JP を、セルフホストで読み込んでいる。 外部のフォント配信サービスには接続していない。

ビルド時に、出力した HTML に出てくる文字だけを含む WOFF2 を生成しているscripts/subset-fonts.mjs)。 @font-face は2個だけなので Layout.astro にインラインで置き、外部 CSS を1本も増やしていない。

  • font-display: swap —— 最初の描画は代替書体で出るので、フォントの取得が初期表示を止めない
  • 本文用(400)だけ <link rel="preload">
  • ウェイトは 400 と 700 の2本。 CSS 上の 500 は 400 に、600 は 700 に寄る(CSS のフォントマッチング)
  • 元データは @fontsource/noto-sans-jp(SIL OFL 1.1)を devDependency として持っている。版が固定されるので、手で置いたファイルより再現性が高い

astro dev ではフォントが出ない。 生成が astro build の後に走るため。開発中は代替書体で表示される。

なぜ「必要な分だけ生成する」のか —— 実測(2026-08-20)

@fontsource が配る unicode-range 分割版をそのまま読む方法も試した。結果は悪かった。

@fontsource をそのまま ビルド時サブセット(採用)
render-blocking な CSS 226,681 B(gzip 68,935 B) 8,295 B(gzip 2,080 B)
@font-face の数 248 2(インライン)
dist のフォントファイル 496 本 / 12.9 MB 2 本 / 250,040 B
dist 全体 約 14 MB 540 KB

⚠ 分割版は @font-face が248個あり、Astro がそれを1本の CSS にまとめて <head> に置く。 サイト本来の CSS は 8KB しかないのに、書体の宣言だけで critical path に gzip 67KB 積むことになる。 Web フォントを避ける理由としてよく挙がる構造を、別の形で作ってしまっていた。

2026-08-14 に一度やめて、2026-08-20 に戻した

一度は「Web フォントを読み込まない」方針にしてシステムフォントへ寄せた。そのときの理由3つは、いずれも成立していなかった。

当時の理由 実際
レンタルサーバーなので、外部から CSS を1本読むと render-blocking になる 誤り。 それは Google Fonts のような第三者への接続の話で、セルフホストなら起きない。 フォントファイル自体は render-blocking ではない
日本語のサブセット化は、更新のあるサイトで漢字が欠ける Astro では起きない。 更新すれば必ずビルドが走り、サブセットも作り直される。 WordPress の前提を持ち込んでいた
セルフホストは配信設定が要る 要らない。 ビルド時に同一オリジンへ吐かれる

⚠ そして副作用のほうが重かった。 システムフォントだけのサイトは、「システムフォントしか使えない人のサイト」に見える。

ライセンス

ライセンスを設定していない。 つまり法的には全著作権留保で、閲覧はできるが再利用の許諾は出していない。 これは意図的で、置き忘れではない。 ポートフォリオなので、読まれるために公開している。

No license. This is a portfolio sample, published to be read, not reused. If you want something similar built → https://front-of-code.com

About

架空企業コーポレートサイト - Astro × Xserver

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages