おいしいブログ

ブログ開発後記 Vol.1

2017-12-26

最初のエントリーに書いた通り、まずは作業ログなんかを書き出していこうと思います。

What blog と How to make

どんなブログを作るか、と考えたときに、その中身についてはあまり考えがなく、何かに特化したブログを作りたいわけではなかったので、書きたいと思ったことがあれば書く、なければ書かないといった程度のモチベーションでいいかなということで、あまり深く考えていません?。

Simple, not multifunction  
fast, not rapid  
better, not the best  

というのを一番最初に決め、最初に小さく作って機能が欲しくなったらその時に考える、 simple, not multifunction に反さない程度に実装するといった感じで進めて行こうかなと。まぁいつも通りですね。fast, not rapid は、ちょっと前に話題になってた dev.to を見て、やっぱり表示速度が早いのは良いなと思ってしまった手前、もっさりした感じにはしたくないと思って速度はそれなりに気にしようと思い、最後の better, not the best はまぁ最高なものっていうのはしんどいので程々に・・といった感じで少し力を抜いて方針を決めました。

この時点で、自分でブログを用意する感が滲んでいますが。一応ブログサービスに登録してはい終了、というのも考えましたが、それもそれでつまらないので何か手を動かそうと。その次は、じゃあWordpress?と思ったものの、Wordpressはもっさり多機能なのでコンセプトに大いに反するということで却下。まぁ自分で作りましょう、と。AIだDeep LearningだSmart Speakerだと騒がしい2017年も終わろうというのにブログのフルスクラッチなんてやっているのは私くらいのものだろうと。そんなことはどうでも良いのです。Google Homeは買おうかなと思っていますが。

さて、フルスクラッチやるぜ?と決め込んだので、あとは深く考えずにさらっと以下のように決めました。

  • nginx
  • python3 + flask + gunicorn
  • DBはAmazon RDS(aurora, mysql)
  • その他、必要なインフラはAWSで構成する

実装する機能としては、DBに入っているデータを表示する。以上!ということで、ページ構成もトップとタグページと記事ページのみ。Google Tag Managerを入れてGAを放り込んだぐらいでSNS周りの余計な小物は一切いれない。もっさりするだけでそのもっさりに見合う価値が無いと思うし、そんなものがあろうとなかろうとでSNSが浸透した今じゃ拡散される時はされるし、大体何もないし、ひっそりと生きてても炎上する人/時っていうのは存在するので気にせず排除していきましょう。

バックエンドの方針とブログ機能の方針はある程度固まったので、次はフロントエンドを考えます。デザインについては、白黒のスッキリした感じで、大いにスペースを取って行きましょう。PC/モバイルの対応は最小限に両方対応。フロントエンドのビルドなんてやってられるかという感じなのでCSSは普通に書きます。JSもReactやVueなんかを使うようなアレでもないので素のJSで行きましょう。jQueryも必要ないので入れません。流行り廃りはあれど、Vanilla JSなら当面問題ないでしょう。というより、そもそもJSで実装する機能もないので入れるものが無いというのがほんとのところですが? 物を抑えながらCDNに頑張って頂く方針で行きます(その内)。

ブログと言えば画像です。さて、ブログの画像アップローダを作りますか?いいえ、作りません。S3に放り込んでリンク張って終わり。そんなもんで良いんです。ルートドメインは、S3を Static website hostingで使っていて、index.htmlを置いているお手軽ページです。空いている箱があるのと手前にCloud Frontがいるのでちょうどいいですね。
管理画面も作りたくなかったので作っていません。記事を書くにあたってHTMLを生成する必要があるわけですが、その手のエディターを作るのも、都度HTMLを書くのも嫌だったので、マークダウンを利用することにしました。MDを書いてDBに放り込む、読み出してきたらフロントでMD->HTML変換といったことをしています。これでお手軽にHTMLが生成できるので、あとはブログのスタイルに調整するだけで終わりました。

といった感じでさらさらさらと決めるとこを決めていったので、開発の手を動かすことが出来る状況が揃ってきました。

Production envirionment?

本番環境をどうしようかな、と考えた時に、適当なVPSを借りるか、AWS使うか、GCPを使うかの選択肢がありました。正直VPSは気にかけませんでしたが、AWS/GCPどちらにするかは迷ったところです。結局AWSにしたわけですがなんというわけでもなく、ただ単にGCPよりAWSのほうが自分が明るいというだけです。GCPももっと使いたいのですが。AWSに決めたはいいものの、じゃあAWSでどう構成するかを次に考える必要があるわけですが、そんな大したアクセス数も見込まれないので小さく選択。デプロイのことを考えてイメージ作ってポンなコンテナで決定。ところで最近 AWS Fargate なるものが出てきたので FargateとECS、どちらで行くか、と迷いましたが結局ECSにしました。Fargateは多くの人が踏み固めたあとに手を出します?

といった所で、 blog.mylde.com を開発を始めるまでざっくりですが開発面の諸々決めました。運用面の諸々が何一つ出来ていませんが、OIOI決めて行きます。(何度運用要件で苦い経験を経ても学習しない?)