Tech Flow.

AstroでシンプルなMarkdownブログを作る

モチベーション

ポメラDM250を手に入れた時にHugoでポメラ上のGitHubからも更新可能なブログサイトを作ったものの、ポメラによって「あえてパブリックなネット上にはアウトプットしないこと(=内省)」の意義を考えさせられたので結局ブログ更新しないまま一年くらい。

エンジニアとしての情報発信ではなく、プライベートなオタク活動の場としてTwitterやPixivなど既存の大手サービスに頼ることの危険や文化的悪影響を改めて考えさせることが増え、シンプルな自作創作サイト作りの技術的検証の場としてエンジニアとしてのブログも作り直してみた。

技術スタックの悩みどころ

仕事では最近フルスタックに開発しており、フロントエンドではReactとTypescriptを使用中なため、今回のブログでもこれらを利用するつもりでした。
またGitHubリポジトリと連携可能なように魔改造したポメラで投稿用のMarkdownファイルを管理したかったこともあり、Gitベースのコンテンツ管理は必須にしたかった熱い想い。

デプロイ先は過去経験のあるCloudflare pages。GitHubからデプロイしやすいことと、独自ドメインを最近終了が決まったGoogle DomainからCloudflareに乗り換えたため。

一番悩んだのはフレームワーク。最初に想定して調査したのは下記の二つでした。

  • Next.js
    • メジャーどころ。仕事でも今後使う予定があり勉強にもうってつけ
    • が、学習してみてたかがブログサイト用途にしては正直重すぎると思った
  • Gatsby.js
    • 数年前だと個人ブログサイト構築で利用例が多かった
    • ただ中身がブラックボックスだとかの話があったり今後に難がありそうだったり

先述の通りそのうち創作サイトを作る練習も兼ねていたこともあり、その用途としてもどっちを選んでも一長一短が強すぎて悩ましい……と唸っていたところ、Gatsbyからの乗り換え例としてちらほら見かけたのが今回のAstroでした。

設計思想を調べてみると「複雑な機能は必要最小限でえーねん」的な部分が「そうそう、個人ブログサイト作るにしても創作サイト作るにしてもコレがやりたかっただけなんだよ!!!」と自分の要望にピッタリでした。

Astroベースにサイト構築してみた所感

期待通り、基本はHTML/CSSベースに、ちょっとJavascriptを使うような複雑な部分の注入だけ最小限ReactっぽいAstro構文で構築することができました。
Markdownの変換やページネーションなど、個人静的サイトやブログ作りで必要な機能も提供されているおかげで、週末だけでサクッと動くところまで達成。

「たかだかこの程度のことをやりたいのに、こんなに複雑なことをやらされるのもなぁ……」と思うことも、逆に機能が高度なぶんブラックボックスで中身が分からない仕組みを使わされて将来の互換性に不安を覚えるような場面もあまりなく。

リリースされてまだ日が浅くつい先日v3になったばかりですが、今のところごくシンプルな構成に維持できてる分、今後のバージョンアップについていくのも苦労しなさそうとの安心感があります。
(これは当然実際にやってみないと分からないけれども)

自分は仕事として技術を扱うに当たって「枯れた技術の水平思考」が大事だと思っていて(世間的には年々この思想は軽視されていくように感じるが、個人的には反比例するように年々重要性を増していると思っている)なので登場して一年ちょっとの新しいフレームワークに飛びつくなんて普段ならえ~気が進まないとか言うタイプですが。
そんな流行り物嫌いな人間をしてAstroは「そうそう、これこれ!」と楽しみながら使い進めることのできた新鋭の流行り物でした。

(Astro自体の設計思想が安易な流行り物へのアンチテーゼとも言えるので、ある意味私のような反応は自然な帰結かもしれない)

残った課題としては、万年個人的に苦手なレイアウト調整のほかに、ポメラだと.md形式のファイルが読めない(txtしか扱えない)から、ポメラでのブログ記事執筆時はいちいち拡張子をLinux OS側で変更する手間が面倒くさいことです。

キングジムさん、ポメラのmd形式のファイル対応ぜひにお願いします、なにとぞ……。