前回の投稿で技術ブログを開設する上での大方針や、利用するフレームワークの選定についてまとめました。 今回の投稿は前回の続きとして利用するテーマの選定や、どのようにして公開先したかについて綴っていきたいと思います!
Astroテーマ選定と構築方針
というわけでAstroを利用してブログサイトを構築することにしたわけですが、
ゼロからスクラッチで作るのも中々手間ではあるので有志の方が公開されているテーマを利用させてもらいました。
テーマ選定の際は次のように見た目や、維持のしやすさを重視しました。
- 自身が気に入るデザインなこと(大事だよね)
- ソースコード全体を見通せるようなある程度シンプルなテーマであること
- それなりに活発に開発されていること(スター数、コミット頻度 etc…)
- 技術ブログでよくある機能が一通り揃っていること
- コードを綺麗にレンダリングできること
- ホワイトモード、ダークモードを切り替えられること
- カテゴリ機能、記事一覧機能があること
- 検索機能があること(できれば)
テーマはAstroの公式ページから探すことができます。
選択肢は比較的あるわけですが上で挙げた観点を満たしていて、その上開発が途切れなさそうなAstro-Papaerを
本ブログのテーマとして採用することとしました。(割と被りがちではありますが、、、)
他にもFrostiや、Astro Microも採用候補にしてました。
またサイトを運営していくにあたりテーマをアップデートをすることが想定されますが、残念ながらAstroにはテーマをアップデートする仕組みが用意されていません。 アップデートの際は利用テーマのGitリポジトリから適宜差分を取り込んでいくことになります。(OSSのアップストリームとダウンストリームの関係に近いですね) そのためガッツリカスタマイズすると後々アップデートの際にしんどいだろうなと思い、カスタマイズは最低限とする方針としています。 この記事に執筆時点では、テーマカラーとfaviconの変更くらいしかカスタマイズしていません。
とはいえ読者にとってよりよくなるようなカスタマイズはしていきたいなと思ってます。 維持のしやすさと天秤にかけながらいい感じの落としどころを探っていきたいですね。
デプロイ先をどうしよっかって話
これでマークダウンで執筆した記事を元に、静的なサイトを生成できる状態にはなりました。 加えてそれらをどのようにして公開するかを考えなければなりませんね。
世の中には静的サイトをホストできるようなPaaSがいくつかあるので、これらが候補となるのかなと思います。
選択肢としてはVercel、Netlify、そしてCloudflare Pagesあたりでしょうか。
これらのPaaSはGithubと連携し、リポジトリに変更があった際に自動で再ビルド・公開するような仕組みが提供されています。
Githubのコードに変更を加えるだけでサイトに反映されるので、開発体験(執筆体験)は非常に高く、魅力的に感じました。
元々GitHub Pagesもデプロイ先の選択肢に入れていましたが、 自動ビルド、公開の仕組みをGithub Actionsなどで整備しなければいけないことや、 ビルドしたコードを保管するリポジトリを別途用意する必要があることなど、 上で挙げたPaaSと比べると少々手間がかかるため候補からは外してしまいました。
静的なサイトをホストするという点についてはVercel、Netlify、Cloudflare Pages の3では機能面での差はそこまでないように感じました。
VercelについてはVeercel PostgresやVercel KVなどのデータベースサービスも提供されています。
もしこのあたりのサービスと連携したい場合はVervelを選ぶとよいのではないでしょうか。
このブログは次の理由からCloudflare Pagesにデプロイすることとしています。
- このサイトのドメインをCloudflare Pagesで管理している
- 無料枠の範囲が他の2つのサービスと比べて広い
サービスページ記載の通りCloudflare Pagesの無料プランでは同時ビルド数と、月当たりのビルド回数のみが制限されています。とはいえ個人利用利用では気にならない範囲ですし、帯域制限やリクエスト数の制限も特になく、WAF等も付いているので非常に太っ腹ですね。
デプロイ自体はAstroの公式ドキュメントの通りに行い、ダッシュボードから数クリックでできました。 ビルドテンプレートをCloudflare側で用意してくれているのがありがたいですね。
まとめとこれから
ということで、長くなってしまいましたがこのブログを立ち上げるにあたって、どのようなツール・サービスを利用したか、 どのようなことを考えていたかを綴ってみました。
これからは
- 読みやすくなるようなカスタマイズ(フォント、OG画像生成)
- リンター、CIの導入
- Google Anarlyctsの導入
といったような、ブログ投稿を習慣化するような改善や、読者にとって嬉しいような改善をしていけたらと思ってます!