タイトル画像をCoffeeScript+Async.jsでつくろう
satkakuです。このたび、シアトルコンサルティング サービス開発ブログをスタートさせました。
このブログは、シアトルコンサルティング株式会社Webサービス事業部で開発しているサービスの紹介や、使用技術の紹介などを中心にお送りしていく予定です。
と言いつつ、第一回目から早速それますが、ブログを始めたからにはトップ画像を作らないといけません。開発ブログである以上、やはりコードが主体なのがいいでしょう。ついでに言えば、書いたコードをかっこいい画像に変換してくれるサービスInstacodeを使いたいところです。
そこで今回はInstacodeでかっこよく画像を作るためのコードを書きたいと思います。別にコードがかっこいいわけではありませんし、掲題のようにタイトル画像を生成するようなコードを書くわけでもありません。
async.waterfall([ (next)-> client.incr('seattlewebservice', next) ,(res, next)-> serviceID = res client.hmset('seattlewebservice:'+serviceID, { serviceID: serviceID name: service.name description: service.description }, next) ,(res, next)-> done(null, res) ], (err)-> done(err) )
Redisを使用してHashに入れる際は、incrしつつ、その結果をHashのキーとすることがよくあります。が、そのまま書くと、incrの結果を受けてからになるのでネストが深く深くなってしまい、みんながイライラしてしまいます。大変です。
そこでAsync.jsを使用してフロー制御をします。今回は、一個前の処理の結果を使う必要があるので、waterfallを使用します。基本的には、非同期で実行したい処理のコールバックに、引数で渡された関数を渡していくだけですが、一点だけ注意することが。この引数で渡されたコールバック(ここではnext)を直接呼び出す場合
next(null, res)
next(err, [results]) というシグネチャになっているので、正常系では、明示的にnullを書く必要があるということです。
ということで、コードが出来たので、さくっとInstacodeで画像に変換します。
先ほどのコードは意味の無いコードなので、動かすこともしません。