これはひとりアドベントカレンダーあざらしいっぴきの4日目の記事です。
今年は個人サイトをいっぱい作ったかもってことでいろいろな個人サイトの作り方をおさらいします。
メインで管理してる個人サイトは4つ。
どれもフレームワークはastro、デプロイ先はCloudflare Pagesを利用しています。 構成は大きくわけて3種です。
というわけで選択理由やメリデメについて語っていきます。
フレームワーク・デプロイ先編
先述した通りフレームワークはastro、デプロイ先はCloudflareです。
astroを選定した理由は単純にインタラクティブなものを作るわけではないシーンにおいて、Next.jsやNuxt.jsをいれるのはtoo muchだと思ったからです。またastroであれば局所的にReactをいれることもできるので、必要になったらそれでいいやと思ってます。今のところOGPの自動生成にしか使っていません。
Cloudflareはドメインの契約とサービスを同一にしたいという理由です。以前はVercelを利用していたのですが、Googleドメインのサービス終了でCloudflareにドメインを移管するのと同時期に、デプロイ先もCloudflare Pagesに移行しました。機能的な差はあんまり感じてないかも。Cloudflareは定期的にサイト訪問者数を送ってくれるので時々ビビるくらいですね(たまに跳ね上がってる時がある。何なんだろう)。
構成編
コンテンツは基本CMS利用パターン
コンテンツはほとんどCMSにおいてるパターンです。CMSはnewtを利用しています。 小説サイトがこの構成です。理由は『改行の挿入がめんどくさそう』というただそれだけです。
メリットとしては改行を挿入しなくて良くて楽という点。 デメリットは更新するのにブラウザを開く必要があるので、うっかり別のことをやってしまうことがあることです。あと、データの形を変更するときにCMS・コードの両方を見ないといけないので、データの持つ情報量を変更するときに面倒だなって感じです。改装時にちょっと面倒構造にしてしまって悩んでます。
わたしみたいな定期的に改装をしたがる人や、ページごとに色々変えたい欲が湧いてきちゃうタイプはCMSじゃない方がいいのかもしれません。小説サイトもCMS剥がそうかな?とちょっと思っています。
一部CMS利用
ポートフォリオの一部、制作物にCMSを利用にしています。理由は『Githubで画像を管理するのが面倒だったから』です。実際このくらいシンプルで再構築する可能性の低いデータならCMSの方が楽な気がします。実際このデータは私がこのサイトを作成してから3年くらいこの形な気がします。
メリットはページのデータ全部を管理するよりは導入ハードルが低いところ。デメリットは『このくらいなら別にJSONで良かったかも』と後から思うところです。
これには多分理由があって、このサイトは元々astroではなかったので、CDN目的でCMSを入れたんだと思います。多分。あんま覚えてないけど。
すべてGithub管理
らくがき倉庫・アルバムサイトはこれです。まさかのアルバムの写真をGithub管理しています。
理由は『CMSを使うのが面倒だったから』です。CMSはコンテンツの形がある程度決まっていれば便利なのですが、一方でデータの形を変更がしづらい・作りながら考えることが難しいという点があります。私は結構定期的にサイトに改装をいれてしまうので、変更しづらいのは私にとってひとつ大きなデメリットでした。また、改装頻度の割に更新頻度は低いので、CMSのメリットがあまり活かしきれてない面もありました。
正直いうと1番大きな理由は『小説サイトにおいて未利用の画像をCMSの画像一覧から判断つかないことが嫌だった』にあります。コードであれば呼び出してなければ未利用なんですが、現状私が利用しているCMSでは未利用かどうかを判断するのが難しい状態でした。そういう面からも『結局全部Githubがすっきりまとまるんじゃない?』と判断した、という経緯です。
メリットは更新するときに開くのがVSCodeなのでうっかりネットサーフィンがはじまらないところと、サイトを更新すると芝生が青くなるところです。芝生自慢する!芝生えてないところは出かけてた日だってことがわかりますね。
デメリットはたまに面倒に感じるところです。でも本業エンジニアなのでCMSのデータ管理よりはJSONとかObject, Arrayの管理の方が圧倒的に好きで得意なのでこっちの方が楽しいです。データも自分で好きに整理できるし。
結局何がおすすめ?
いにしえの個人サイトが好きな人間としては全部Githubが1番楽しいなあと思います。
私がわざわざ個人サイトを作るのは『いにしえの個人サイトがつくりたい』からで、私にとってのいにしえの個人サイトって1ページ1ページちょっとこだわったりとか、いたずらしてみたりとか、そういうのなんですよね。よそ様のサービス使った方が安定するし楽なのにそれをしないのは展示空間にこだわりたい気持ちがあるからなんですよね。
そのニーズを満たすのは結局『コンテンツとコードを同じところにおいておく』なのかなと思います。CMSは便利なんですが、便利=楽=自分にとってのやりたいこととは限らないということは判断軸として大事にしたいなあと思いました。そもそも楽さを求めるなら個人サイトなんかやらんのよね。
astroで個人サイト作るのはやや技術寄りの人間しかいない気がしますが、別のフレームワークや構成でもGithubで管理することはできるし、同じ悩みを抱える人に対してひとつの考え方の参考になればと思います。それではこれからも個人サイトが増えますように👋!
ちなみに個人サイト作るのにブログはなんではてなブログなのかというとブログを自分で構築するのは面倒な上に、CMSはコンテンツマネジメントシステムでブログに特化しているシステムではないので、はてなブログに比べると『ブログのエディタ画面』としてはイマイチになり、エディタがイマイチなので書くモチベが絶望的に低くなってしまうからです。既存サービスにのっかるのが良い時もある。