ウェブデザイナーをしているのに、自分のサイトだけがずっと後回しになっていました。クライアントのサイトは作るのに、自分のポートフォリオは「そのうち」のまま。

今回ようやく重い腰を上げて、ポートフォリオサイト(nigo-web.com)を立ち上げました。ポイントは3つです。

作りながらつまずいたところも含めて、全部書いておきます。同じように「自分のサイトを作りたいけど、続く気がしない」という人の参考になれば。ちなみに、この記事を書いている今も「明日も更新できるだろうか」とちょっと不安です。

なぜ作り直したのか

理由は2つありました。

ひとつは、転職やクラウドソーシングなどで「見せる場所」が必要だったこと。実績を聞かれたときに、URLを1つ渡せば良い状態にしておきたかった。

もうひとつが本題で、ポートフォリオサイトは「作って終わり」になりがちだということ。実績が増えたときに更新しようと思っても、結局そのまま放置してしまう。過去に作ったサイトが、まさにそうでした。

だから今回は、ブログを軸にしたポートフォリオにしました。毎日開いて更新する場所にしてしまえば、サイトが死なない。それに、実績一覧をきれいに並べるより、日々書いているものを読んでもらったほうが、自分がどういう人間かは伝わるんじゃないかと思ったんです。

「毎日スマホでSNSを開くみたいに、自分のサイトを開く」。それが今回の裏テーマでした。

WordPressではなくAstroを選んだ理由

最初はWordPressも普通に候補でした。情報は圧倒的に多いし、プラグインで何でもできる。

それでも今回 Astro を選んだのは、個人サイトとしての条件で考えたときに、こちらが有利だったからです。

1. 運用コストが0円

WordPressは基本的にレンタルサーバーが必要で、月500〜1,000円ほどかかります。Astroで作った静的サイトなら、Cloudflare Pagesの無料枠で公開できて0円。何年運用してもタダなのは、続ける前提のサイトでは大きい。

2. 表示が速い

Astroは基本的にJavaScriptを送らない設計で、コンテンツ主体のサイトだと素の状態でかなり速い。SEOを勉強したかったので、速度は最初から効かせておきたかった。

3. 保守がほぼいらない

WordPressは更新作業が定期的に発生するし、放置すると乗っ取りのリスクもあります。公開されるのが静的ファイルだけなら、そこを気にしなくていい。

意外と知られていない、ホスティングの落とし穴

無料の公開先といえばVercelも有名ですが、Vercelの無料プラン(Hobby)は広告掲載が規約で禁止されています。将来ちょっとでも収益化を考えるなら、ここは踏んではいけない地雷でした。

その点 Cloudflare Pagesは無料でも商用利用OK・帯域も無制限。「あわよくば収益化」の芽を残したかったので、最初からこちらを選びました。

念のため書いておくと、WordPressが悪いという話ではありません。案件の世界で需要が大きいことも知っています。今回は「個人が毎日更新する・0円・速い」という条件だったので、Astroが噛み合ったという話です。

サイトの構成

最終的にこうなりました。

そして、この構成のいちばんの目的が更新フローです。

  1. スマホでmicroCMSの管理画面を開く(ホーム画面に追加してある)
  2. 記事を書いて「公開」を押す
  3. 数分後には本番サイトに反映されている

裏ではWebhookでCloudflareのビルドが走っているだけですが、体感としては「SNSに投稿する感覚」に近い。PCを開かなくていいというのが、続けるうえで想像以上に大きいです。

写真も同じで、GR IIIxで撮ったスナップをスマホから上げれば、そのままギャラリーに並びます。撮影日やF値・シャッタースピードは写真のExifから自動で読むようにしたので、入力する手間もありません。

こだわった細部

見た目の部分でも、いくつか手をかけています。

トーンの設計

好きな雰囲気のサイトを2つ選んで、フォント・字間・余白を実際の数値まで調べてから、自分のサイトのルールを決めました。「なんとなく似せる」ではなく、数値で分解すると再現性が出ます。

写真を主役にしたかったので、色は無彩色4つだけ。差し色は持たせていません。

写真を主役にする

トップのギャラリーは、写真が2列でゆっくり流れ続けるようにしました。撮った写真が増えるほど賑やかになるので、更新の動機にもなります。

速さ

Lighthouseはパフォーマンス・アクセシビリティ・ベストプラクティス・SEOの全4項目で100点。画像はビルド時にWebPへ変換して配信しているので、写真が多くても重くなりません。

思ったより、すんなりとはいかなかった

ここまで「こう作りました」という話ばかり書いてきましたが、実際は一直線ではありませんでした。むしろ、つまずいている時間のほうが長かったと思います。特に印象に残っている4つを書いておきます。

100点が、55点になった

表示速度をひととおり詰めて、Lighthouseで100点が出たときは素直にうれしかったです。

ただ、そのあと「日本語フォントも自分のサーバーから配信したほうが速いはず」と思って手を入れた瞬間、スコアが55点まで落ちました。表示されるまで17秒。何かの間違いだと思って測り直しましたが、何度やっても同じです。

原因は単純でした。日本語のフォントは、1書体で1MB近くある。英語フォントの感覚で太さ違いを3種類読み込んだら、3MB近くを最初に読ませることになっていたわけです。

結局、英字だけ自前で持って、日本語は外から非同期で読み込む形に落ち着きました。「自前で配信したほうが速い」という定石が、日本語では逆に働くことがある。これは覚えておこうと思います。

公開した記事の写真が、全部消えていた

最初の記事を公開して、スマホで自分のサイトを開いて、本文の写真が1枚も表示されていないのを見たときは血の気が引きました

原因はセキュリティ設定でした。「このサイトが読み込んでいい外部サービス」をあらかじめ列挙しておく仕組み(Content-Security-Policy)があるのですが、そこに記事の画像を置いているCMSのドメインを書き忘れていたんです。画像そのものは正常に配信されていて、ブラウザ側が拒否していただけ、という状態でした。

厄介なのは、この設定はローカルでは効かないので、本番に上げるまで気づけないこと。しかも、機能を足すたびに壊れます。フォントで一度踏んで、画像でまた踏みました。

写真を差し替えたら、また点数が落ちた

仮画像を、実際にGRで撮った写真に差し替えたときのこと。見た目は完璧、動作も正常。それでも念のため測ってみたら、100点が64点になっていました

調べると、6000ピクセルの元画像がそのまま配信されていました。リサイズの設定はしていたのに、1行だけ書き忘れていた項目があって、その場合は「元のサイズ」が使われる仕様だったんです。711KBの画像を、スマホに向かって送りつけていたことになります。

書き足したら65KBになりました。91%減です。見た目が同じだから気づけない、というのがいちばん怖いところでした。

iPhoneだけ、ガラスが曇る

キービジュアルの上に、すりガラスのような半透明のバーを置いています。Chromeで見ると狙いどおりの透明感が出るのに、iPhoneで見ると、ただの灰色の板でした

最初に立てた仮説は、外れました。直したつもりで見てもらったら「まだ直ってない」。結局、比較用のページを作って自分のiPhoneで実際に見比べるという、いちばん原始的な方法で切り分けました。

犯人は、背景をぼかす指定そのものでした。iOSのSafariは、この指定を「ぼかし」ではなく「不透明なグレー」として描いてしまうことがあるらしい。ぼかしをやめて、色の重ね方だけで質感を作る方向に変えたら、ようやく両方で同じに見えるようになりました。

こうして並べてみると、4つのうち3つは「見た目は正常なのに壊れている」タイプでした。目で見て確認するだけでは足りなくて、数字で測るか、実機で確かめるかしないと気づけない。今回いちばん学んだのは、たぶんこれです。

これから

まだ中身はスカスカですが、ここから毎日書いていこうと思っています。Web制作とAIのこと、好きなApple製品のこと、GRで撮った写真、それとなんでもない日常のこと。

作って終わりにしないための仕組みは、ひととおり用意できました。あとは書くだけ、なんですが、それがいちばん難しいことも知っています。とりあえず明日、GRで撮った写真を1枚上げるところから始めます。

制作のご依頼やご相談も受け付けているので、お気軽にどうぞ。これまでの制作実績も頑張って更新していきます。