blog

[middleman] [s3]
Middleman * Amazon S3で低コスト、運用なしのエンジニアブログを作った話 #01

はじめに

この記事は foodison advent calendar 2015 の2日目の記事です。

こんにちは、2015年10月からデザイナーとして入社した野中です。
前職はクラスメソッドという会社で8年間ほどWebサイト関係の管理をしていました。8年前となると Wordpress でWebサイトを作ることが多く、前職でも Wordpress でサイトを作ることがほとんどでした。そんな経験上、次に作るなら静的サイトジェネレータを使おうと考えていたところ、アドベントカレンダーをやることになったのでMiddlemanを使ってブログを立ち上げました。

この連載では Middleman * Amazon S3 でエンジニアブログを作った経緯を3,4回に分けつつ、どんな考え方でどんな風にMiddlemanを使っているのか紹介していきたいと思います。第1回は Wordpress をやめて Middleman でブログを作ることになった経緯についてです。

Wordpress の辛さ

10年近く Wordpress でWebサイトを運用してきて、辛い思いをしたところを挙げてみます。

  • AWSを使いたいけど、EC2、RDSインスタンスは安くない
  • AWSでスケールアウトできる構成を作るには専門的な知識がいる
  • インフラやWordpressのメンテナンスコストがかかる
  • セキュリティリスクがある
  • ページ・記事に複雑なレイアウトを導入する際の編集がし難い
  • 専門的な知識のない方がビジュアルエディタやHTMLエディタで編集したページの修正が辛い
  • これらを考慮してサイトを立ち上げようとするとリリースまで時間がかかる

インフラの辛さを解消するには AMIMOTOWordpress.com VIP 等のホスティングサービスを使うのが手っ取り早いです。
他の辛さはいつかcalypsoあたりが解決してくれると良いなと思っています。

関連記事

Wordpress(CMS) が必要になる条件

辛いところはありつつも、どうしても CMS が必要になること多々あると思います。
この場合は覚悟を決めて何かしらの CMS を導入するか、開発するしかありません。

  • 専門的な知識がないメンバーでサイトを更新したい
  • 更新する人数が数十名いる
  • 権限管理や承認フローが必要
  • 大量の画像を管理する
  • お問い合わせなどのフォームが必要(回避策はある)

CMSを使わないという選択肢

CMSを使う必要がなければ MiddlemanJekyllHugo などの静的サイトビルドツールを使える可能性が出てきます。コーポレートサイト等で静的サイトビルドツールを使える条件としてはこんなことがあると思います。

  • 静的ビルドツールを扱えるデザイナー、エンジニアがいる
  • サイト更新を上記のメンバーが行えるよう情報や権限を集約できる
  • お問い合わせフォームの機能を外出しできる(FormKeepやGoogleスプレッドシートのフォーム等)

これらの条件が揃ったなら、個人的には静的サイトビルドツールでサイトを運用したいですね。というかできるだけ静的サイトビルドツールを使ってWebサイトを作る方向に持って行きたい。その方が格段に開発・運用効率は良くなります。

Middleman * Amazon S3 の良いところ

CMSを使わないという選択肢がとれる場合、Middleman * Amazon S3は一つの候補になります。
もちろん、他の静的サイトビルドツールでも同じような良さがあると思います。

Middleman の良さ

  • 短時間でサイトを公開できる
  • Ruby、Ruby on Railsの知見が使える
  • Git, Githubで管理できる
  • Markdownで記事を書ける
  • 拡張機能でAmazon S3やサーバに簡単に同期できる
  • CIが使えて好きなエディタで作業できる

Amazon S3 の良さ

  • 堅牢・安全でダウンタイムがない
  • 高速でいくらでもスケール可能
  • 低コストで従量課金、初期費用なし
  • バージョニング可

Middleman の課題

良いところばかり挙げましたがMiddlemanにもいくつか課題があります。

記事数によるデプロイ時間の増加

ブログの記事数が増えてくるとビルドに時間がかかるらしいので数百ぐらい記事たまった頃には移行を検討しないといけないかもしれませんね。将来的にはHugoに作り替えるとか、MiddlemanのV4も近々リリースされるようなのでその辺の動向を見つつ考えたいと思います。

MiddlemanからHugoへ移行した

画像の管理

Amazon S3 にデプロイするのであれば、画像も一緒に Git 管理するのも1つの手だけれども、画像の量が増えるとビルド処理の負担になります。なので、このブログでは画像を Git の対象から外すために、簡易的ですがPOSTアップロードの機能を使ってAmazon S3 に直接アップロードする方法を用意しました。POSTアップロードした画像のURLをMarkdownに直接埋め込めば良いだけなのでリポジトリも汚れません。

アップロード画面イメージ

まとめ

今回はMiddlemanでブログを作ることになった経緯を紹介しました。このブログ以外にもMiddlemanを活用しているエンジニアブログの紹介記事があるのでこちらもどうぞ。次回からどのようにMiddlemanでブログを作っているのか紹介したいと思います。

次回:Middleman * Amazon S3で低コスト、運用なしのエンジニアブログを作った話 #02