Railsでブログ自作(2024)

2024/01/05

こんにちは osyoyu です。

ブログシステム自作のシーズンですね。ご多分に漏れずブログシステムを作ってました。実はこれは最初の記事ではなくて、こっそり事前に2023年の振り返り記事などを書いたりしています。

ちょっと気に入っているのが記事のタイトルを未設定のままにすると投稿日がタイトルになる仕様で、タイトルをつけるほどでもない2段落ぐらいの文を投稿しやすくなった、気がしてます。

ブログシステム自作のモチベーション

目的は一応ちゃんとあって、一定量のリクエストを受けるRubyのWebサーバーがほしかったというのが大きいところ。最近Rubyプロファイラを開発していて、プロファイル対象のひとつとしてWebサーバーがほしかったのです。正常に動作しているか分からない、パフォーマンスペナルティも計測していないようなプロファイラを導入できる雑な場が必要なのでした。

このようなわけなので、Ruby製ではないもの(Next.js)や静的サイトジェネレーター(Jekyll, Astro, etc...)は選べなくて、普通にRailsになっています。プロファイラがにぎやかなflamegraphを生成できるようにCPUの節約はまったく努力していなくて、みなさまにお届けしているHTMLはリクエストのたびにMarkdownから生成しています。すごく無駄!

手癖だけでコードを書いているうちに、これが自分用のRailsのリファレンスになると少し便利かもな、みたいなことも考えたりしてました。仕事で6, 7年Railsを書いていると、自分なりの「型」というものが固まっていて、それをまとめたコードベースになるかもな…… という雰囲気。ただ、ブログシステムというのはRailsでは本当になんの工夫もなく作れてしまう類のものなので、そこまで役に立つかはやや不明。

自作する意義はあるのか

過去にブログシステムを自作したときは「Webで食っていくならブログぐらいは自作してあるべき」と考えていたらしいです。そんな感じのことは今もほんのり思いつつも、実際に自作するとなると作るべき機能が山ほどある(参考: The Surprisingly High Table Stakes of Modern Blogs)わけだし、無理にしょぼいサイトを作るぐらいならば素直にはてなブログを使ったほうが良いだろうな、という気持ちです。はてなブログは機能が超充実していて普通にすごい。

と言いつつも、自分のサイトの一部としてブログをホストしていること自体が記事を書くモチベーションにつながっていたりして、人間の感情は複雑だなぁと思っています。


素敵で便利な新規投稿画面

ページの見た目・はてなスター

あまりモダン(?)な雰囲気を作りたくなかったので、字幅普通、行間狭め(1.6em)、横幅広め(950px)として流行を外した(?)つもりです。ださいけど読みにくくはない、ぐらいに落ち着いているとうれしいですが、どうでしょう。

普段は和文と欧文の間に半角スペースを入れているのですが、そのうち text-autospaceサポートがChromeにくるということで、それに期待してなるべく入れないように頑張ってます。

記事の下にはてなスターボタンを設置してます。ページの一部を引用してスターをつけられる機能がすごく好きです。ブクマボタンも合わせて貼ったらページがいい感じにおたくっぽくなりました。よろしくお願いします。

構成・デプロイ

アプリ自体は先述した通りRails製で、何かをすごく工夫している点はないです(強いて言えばルーティングぐらい)。デプロイはVPS上にHashicorp Nomadを使ってやっていて、こちらも何かしら特別な仕掛けがあるわけでもなし。Nomadは何もしなくてもすてきなコンソールがついてきてよい。

AWSを使っていないのはECSもALBも高いのと、それこそ仕事で散々触っているので……。というところ。自家 Kubernetes (K3s) はこの間クラスタのお世話をあきらめました。EKS/GKEはもっと高いのでもっとなしです。


高速化の努力ゼロでこのスコア

おわり

事前に数記事投稿しておくコスい作戦でa static blog with 3 postsの状態はとりあえず脱せそうなのでめでたい。プロファイリングの対象としてもRubyがCPUを多少なりとも使ってくれないと意義が全然ないので、記事を書き続けて少しはトラフィックを稼ぎたいところです。