HerokuのFreeプラン
サービスを運用するにあたり、極力サーバ費用をおさえたいというのは当然の話で、無料枠でいかにサービスを維持できるかが肝だと考えています。
最近立ち上げたサービスはHerokuの無料枠で稼働させており、いずれアクセスが増えてきた際にはコストを徐々にかけていかなければいけないですが、極力このままでいけるところまではいきたいです。
Herokuの無料枠については、Google先生に色々きいてみると、何度かルールの改定が入っているようで何が最新なのかよくわかりませんでした。
そこで改めて本家の情報を確認してみたので、備忘もかねてこちらにあげておきます。
あくまでも2016年10月9日時点の情報ですが、「1アカウント全体で1ヶ月1,000時間(クレカ登録していなければ550時間)までは無料枠で使える」ようです。1日24時間×31日で考えた場合、744時間ですのでアプリケーション1個であればフル稼働できそうです。
以前はアプリケーション1個でも24時間はできなかったという情報もあったので、これは朗報かも。
ただ、Herokuの無料プランだと30分間何もアクセスが無いとインスタンスが止まるという仕様が入っています。リリース前はこの仕様は気になりませんが、リリース後は「アクセスが少ない⇒インスタンスが止まる⇒久々にアクセスが発生するとページ読み込み時間が遅い⇒リピート率が落ちる⇒アクセスが伸びない⇒・・・」という負のスパイラルに入ってしまいかねないので、インスタンスを止めないようなちょっとした仕掛けを入れたいと思います。(SEO的な観点でもページ読み込み速度は重要視されているようですし)
その仕掛けというのは「herokuのアドオンで使用できるHeroku Schedulerで定期的に自分のサイトにアクセスさせる」です。
単純に「curl サイトURL」でもいいのですが、標準出力にHTMLが吐かれてしまうため、HTTPのステータスコードのみ出力するようにしています。
しばらくこれで様子を見て、ユーザや検索エンジンがどう反応するのか見てみたいと思います。
タスク管理ツール「Jooto」
皆さん、タスク管理はどうしていますか?
脳みそで記憶、メモ帳、付箋、ホワイトボード、Excel、Redmine、Backlogなどなど、世の中には色々なツールが出回っています。(「脳みそで記憶」は信頼性が低いので、おすすめしませんがw)
現在、自分1人でサイトの開発をしており、タスクを他人と共有することがないので、最初は「脳みそで記憶」に頼っていましたが、限界を感じはじめ、タスク管理ツールの導入を検討しました。
もともと本業でRedmineやBacklogを使ったことがありましたが、個人で使うにはちょっと大袈裟かなと思い、ちょうどいいのが無いかなとググってみました。
いくつか見ている中で「いいなぁ」と思ったのが、タイトルにもなっている「Jooto」です。
まずTOPページが最近のトレンドに乗ってか、シンプル!「Simple is best!」をモットーとしている自分としてはまずはこの点で1ポイント付けました。
利用は簡単で、Facebookログイン、Googleログインに対応しているので、どちらかのアカウントがあれば会員登録ほぼ無しで利用可能です。
実際のタスクボード(一応内容はぼかしています)はこちらですが、至ってシンプルであり、直感的に使えるので、いい感じで開発をすすめることができます。
ここまででも十分使うメリットはありそうだなと思いますが、Jootoに決めた最も大きな理由は「iPhoneアプリがある」ことです。(Androidアプリは無さそう)
移動中や食事中などどんな時でもタスク管理ツールにアクセスでき、ネイティブアプリならではのサクサク感でストレス無く使えるので、「あ、このタスクやったほうがいいかも!」と思いついた時にすぐにタスク登録できます。
これ、超いい感じです。「思いついた時にすぐできる」というのがとても大事なんですね。
まだまだ他にもすぐれた機能があるようなので、興味のある方はこちらもぜひ。
機能紹介| タスク・プロジェクト管理ツールJooto(ジョートー)
node.jsでcsrf対策
node.jsでcsrf対策を行う必要がありましたが、csurfというモジュールを使うことで簡単に実装できました。
実装するにあたり、サーバサイドでのcsrf対策用トークンを何に保存するか決める必要がありますが、私はcookieで行うことにしました。セッションストレージで行うやり方もありますが、やや実装が手間そうなので・・・
私の開発したソースコードから関連する場所を抜粋しておきます。
var app = express(); var cookieParser = require('cookie-parser'); var csrf = require('csurf'); app.use(cookieParser()); app.use(csrf({cookie: true}));
あと、おまけですが、node.jsにはミドルウェアという機能があり、色々な処理をつなげていくことができます。
例えば、リクエストをルーティングする前に共通処理を入れることができます。
これによって、アクセス時にログを出力するようにしたりできます。
うーん、超便利。まだまだnode.jsは奥が深そうですね。
Bootstrap4
新しい物好きなので、Bootstrap4を触ってみました。ベータ版だけど。
基本的にBootstrap3と大きな違いは無いけど、自分が気に入った違いをあげるとすれば、カード型デザインに対応したことでしょうか。
最近どのサイトもカード型デザインを採用してきているため、Bootstrapが対応してくれたのは大変ありがたいです。
個人的にはカード型+無限スクロール対応が最強だと今は思っているので、最近作ったOwaraiTubeはまさにその組み合わせにしています。
Bootstrap4はまだベータ版のため、一日も早く正式版が出るのを待っています!
Githubで草生やすw
Githubのプロフィールのcontributionsに色をつけることを、色味から「草生やす」というようです。
これは私のGithubアカウントのcontributionsです。
今年の7月くらいから一日も欠かさずに草生やすことを自分に課してきました。
昔からGithubアカウントは持っていたのですが、ほとんど草が生えていなくて、正直エンジニアとして恥ずかしいと思ったので、何があろうとも草を絶やさないようにしようと決めました。
決めたはいいけど、本職はマネジメント業務がメインなので、いざGithubに何かコミットしようとしてもどうすればいいのかわからず、とりあえず最初はlinuxのコマンドを自分で書いてみようと思い、c言語でcatコマンドの亜種を作り、コミットしたりしていました。
それに慣れてきたら、シェルスクリプトを書いてみたり、node.jsの自己学習のソースコードをアップしてみたり、一時期ディープラーニングにはまっていたので、その時のpythonのソースコードをアップしたりとしていました。
最初は結構大変で特に飲み会があった時なんかはもう草絶やしてしまおうかなと何度思ったことか。
でもここで投げ出してしまったら、それがそのままcontributionsに残ってしまうし、エンジニアの職を投げ出してしまうような気がしたので、なんとかここまで続けてきました。
その甲斐もあって、今では草生やさないと落ち着かない体になってしまいました。。。
直近の目標は1年間欠かさずに草を生やすことと、OSSに対して何かしらのパッチを適用することです。(現状の私が生やしている草のほとんどが昨日リリースした動画サイトのプライベートリポジトリのコミットなので、、、)
皆さんもぜひ草生やしましょうw