今回は本サイトを作るに当たって利用した技術とその技術を選択した背景を軽く書いておきたいと思います。
Clojureで静的サイトビルダーを自作
ウェブサイトを作る上でまず考えるのがWordPressなどのCMSを使う、またはJekyllやGatsbyなどの静的サイトビルダーを使うかのどちらかだと思います。
まずCMSか静的サイトビルダーかの選択では静的サイトビルダーを選択することにしました。 その理由は、サーバー側でプログラムやDBを動かす場合、セキュリティや運用の手間が増える、静的サイトと比べると画面表示のパフォーマンスも落ちるからです。
次に静的サイトビルダーのツール選択ですが、いまの自分にとって必要な機能は、HTMLでレイアウトを書く、Markdownで書いたコンテンツをレイアウトに沿ってHTMLに変換し出力することだけでした。
サイトを長く運用していく上で、ツールの使い方を覚えたりバージョンアップに追随していくのがめちゃくちゃ面倒くさいな〜と思う一方、自分のサイトを作るためにツールを自作するというのはドッグフーディング感あって楽しそうで、なおかつプログラミング技術の素振りにもなると考えたので、あえて静的サイトビルダーは自作することにしました。現在はサイト自体のソースコードに組み込まれていますが、機能がある程度整ってきたらOSSしていこうと思います。
プログラミング言語としてClojureを選択したのは単に自分が好きで使いこなせるようになりたいと思っている言語だからですが、Clojureで作るツールはJVMがあれば動くので、MacでもWindowsでも簡単に使える静的サイトビルダーというポジションをワンチャン狙えるかもしれないという気持ちが5%くらいはあるのでコツコツ育てて行きたいと思います。
ホスティングには仮想マシン(VM)を利用
サイトをホスティングする方法ですが、NetlifyやGitHubPagesを使う方法、S3やBLOBストレージなどのオブジェクトストレージに静的ファイルをおいてホスティングする方法、仮想マシンを借りてそこにWebサーバーを立てる方法があります。
僕が個人ウェブサイトを開発・運用する理由の一つは、仕事ではできないような基礎的な技術を練習するための素振りの場と使いたいというものです。
Netlify、GithubPages、S3、BLOBストレージなどはそこまで難しくなくやろうと思えば一日で使えますし、作ってあとはほぼ手間がいりません。 それだと素振りの場としては物足りないので、あえて仮想マシンにホスティングして様々な手間を掛けることで自分の技術を高める素振りの場として使おうと思います。
いまはAzureの仮想マシンを使っていますが、仕事ではAWSを使っているのでその練習のためにも、terraform + packer + AWS で今度サーバーを作って移行する予定です。
No Css Framewark
サイトを作るときにTwitter BootstarpのようなCSSフレームワークを使うことがよくあると思いますが、今回はサイトデザインを可能な限りシンプルにしたこともあり、CSSフレームワークを使わずにデザインしています。
CSSフレームワークは簡単にそれっぽいUIが作れるのが魅力ですが、長期的なメンテナンス性、自分にとって最適なデザインをするという意味では邪魔になることも多いので、意図的に使わないようにしています。
いまは素のCSSを使っていますが、今後デザイン要素が増えていくとSCSSなどのCSS拡張のためツールの導入は行うかもしれません。
今後やりたいこと
- AWSへのサーバー移行 with Terraform
- 静的サイトビルダーのOSS化
- AMPへの対応
- git pushをトリガーにした自動デプロイ