← Works へ戻る

Keiru ポートフォリオサイト

10世代目です。9回作り直しました。
決まらなかったのはデザインではなく、何を見せるかのほうでした。

PCでの表示
タブレットでの表示
スマートフォンでの表示

モックアップではなく、実際のサイトをそのまま撮っています(1440 / 834 / 390px)。

なぜ作ったか

作ったものを置く場所が欲しかった。それだけのはずでした。公開するまでに9回作り直しています。

途中で気づいたのは、迷っていたのが見た目ではなかったことです。製造業のDXの話を前に出すと、その業界向けの会社に見える。かといって個人開発の話ばかりだと、仕事の相談は来ない。ここに答えを出さないまま、デザインだけを何度も変えていました。

いまの形は、そこにようやく決着をつけたものです。トップは「作ったもの」と「できること」だけ。実務の実績は別のページに置きました。

このサイトでやっていること

  • 作品9件のカタログ(カテゴリ絞り込み・ページ送り・スマホは横スクロール)
  • 部屋の絵の中にあるテレビでYouTubeを再生(スクロールに合わせてテレビが点きます)
  • 自前の音楽プレーヤー(5曲。同時に鳴るのは1曲だけです)
  • note・Zenn の最新記事と YouTube の最新動画を自動反映(エッジで6時間キャッシュ)
  • お問い合わせフォーム(迷惑送信対策と、受付確認の自動返信つき)
  • 日本語 / 英語の切り替え(全ページ)

どう作ったか

フレームワークは使っていません。ビルドもしていません。依存パッケージはゼロで、HTMLとCSSとJavaScriptをそのまま書いています。配信は Cloudflare Pages、フォームや外部APIの取得は Pages Functions です。

実装は Claude Code と一緒に進めました。ただ、効いたのは書く速さより残し方のほうでした。「なぜこうしたか」「何をやめたか」を、そのつどリポジトリの中の文書に書き足しています。数週間後に同じところで迷わずに済みますし、AIに経緯を説明し直す手間も要りません。

HTMLCSSJavaScriptCloudflare PagesPages FunctionsClaude Code

詰まったところ

うまくいかなかったものも、そのまま書いています。

1. 背景の3D演出で、ファンが回った

課題
第7世代のとき、背景に Three.js でガラスの波を敷きました。しばらくして「低スペックのPCだとファンが回る」と指摘をもらいました。
やったこと
描画を間引き、いちばん重い屈折の表現を切り、遅い端末では自動で品質を落とすところまで作りました。
結果
それでも端末ごとに見え方も負荷も変わります。第9世代で、演出そのものをやめました。派手さより「どの端末でも同じ」を取った形です。いちばん効いたのは、消したことでした。

2. 見えないレイヤーが、クリックを奪っていた

課題
ボタンを押しても何も起きない。見た目はどこも壊れていません。
やったこと
その座標に実際どの要素があるのか、ブラウザに聞きました。別のセクションの透明な面が、画面全体に居座っていました。
結果
親でクリックを無効にしても、子が有効なら効きません。それ以来、押せるかどうかは見た目で判断せず、座標で確かめるようにしています。

3. 直したのに、古いまま届く

課題
表示を速くするため、CSSや画像は1年キャッシュさせています。更新してもURLを変えなければ、訪問者には最長1年、古いものが出続けます
やったこと
変更したら全ページの版番号を同じ値に上げる。それと、配信が終わる前に新しいURLを開かない。開いてしまうと、その番号に古い内容が焼き付きます。
結果
速さと更新のしやすさは、仕組みだけでは両立できませんでした。ここは手順で守っています。

数字

世代
10(9回作り直し)
依存パッケージ
0(ビルドなし)
配信するJS
36KB / 1ファイル
ページ
7枚 + API 3本

こうしたサイトの制作・改修のご相談も受け付けています。

メールで相談する