文章を書いておける場所を作った。

ブログのようなものを作った。ここです。

アウトプットしていかないとダメなのでは…と急に意識が高まったので、雑に Markdown を書くだけで色々と良い感じなるような Web アプリケーションをしたためた次第です。

作るにあたって考えたこと

お金を掛けないようにしたい。

運用に必要なお金は固定費になるし、そういうのは節約すべきかなと。

幸い Google Cloud Platform の Always Free 枠で f1-micro を使っておけば本当にタダなので、それで出来る範囲のものを逆算して作っておけば良さそうだと思い至った。

転送量とか Cloud DNS 部分とかドメイン管理はお金かかるけど、ドメイン周りは必要経費だし、個人サイトの転送量などは微々たるものだろう。

インタラクティブにしたくない。

ブラウザはドキュメントビューワであってアプリケーションの実行環境では無い派なので、なるだけ 1 リクエストで描画に必要なものが全て返ってくるというシンプルさを突き詰めていきたい。

というか GCP の f1-micro はマジで死ぬほど弱いインスタンスなので、せいぜい静的ファイルを返すくらいしか出来ないんだよね。極力リクエスト数を抑えたいというのが大きい。

しかし考えてみればブログなんて https で html を返すだけだし、最低限 nginx が ssl の終端とキャッシュをこなしてくれれば良くて、裏の Web アプリケーションが重くても最初の 1 回だけで済む訳で、これは用途としては丁度良いのではという感じになった。

技術的なこと

なんやかんや便利だし書き慣れているのでアプリケーション部分は sinatra で書いている。

Markdown のレンダリングには redcarpet だし、シンタックスハイライトには rouge だし、テンプレート部分は slim + sass と、そんな変な作りではないのではと思ってる。

しかし sass で再帰を実装したら辛くなった話とかもあって、ここに書いた。

そうやって組んだ Web アプリケーションを Docker 化して CoreOS 上で動かしてる。

主に bundler のせいなのだけど、 Ruby で書いたアプリケーションを綺麗に Docker に乗せるのは若干めんどくさい。バッドノウハウもそこそこ貯まりつつある気はする。そういうことも書いておきたいと思ったので、一応ここに残した。

どちらかと言うと CoreOS を単体の f1-micro インスタンスで使ってる方が微妙ではあって、アプリケーションを Docker 化してるなら GCP にも AWS にもマネージドなコンテナ管理サービスあるじゃんという気持ちはあり、完全に仰る通りなのだが、それらは極限まで金を使わないような貧乏臭い使い方をすることが出来ない。仕方無くこうなってる。

おかげで systemd とか cloud-config 周りで地獄は見られるんだけど、勉強にもなって良いかなとも思う。

しかし一番時間が掛かったのは css を弄るところ。仕様が確定したデザインを粛々と実装に落とし込む作業自体はそこまで大変ではない。面倒臭い場合はあるけど。パソコンからでもスマートフォンからでも綺麗に見えそうなレイアウトを考える方が大変だった。世の中のデザイナさん達は凄い。いつもありがとうございます。

締め

redcarpet は Markdown から HTML を出力することをレンダリングと言っていて、sass は css を出力することをコンパイルと言っている。

この辺の言語感覚は面白いとも思うし難しいなとも思う。違和感の無い表現をしていきたい。