シアトルコンサルティング サービス開発ブログ

シアトルコンサルティング株式会社プロダクトソリューション事業部の開発ブログです

Node.jsに触れる

初めまして。
今年の4月にWebサービス事業部に所属しました、新卒のiijmyaです。
まだ現場に入ったばかりの新米SEなため、日々初めて触れる技術やツールとの出会いがあり、うきうきしています。

今回は、先日私が出会った「Node.js」についてご紹介したいと思います。


1.Node.jsとは?

Node.jsとは、イベント駆動・ノンブロッキングI/Oモデルが特徴である、サーバーサイドJavaScriptのプラットフォームの一つです。


2.Node.jsのインストール

それでは早速、Node.jsをインストールしてみましょう。

nvmのインストール

 nvm*1のインストールにはGit*2を利用します。
 以下のコマンドをターミナルで実行し、nvmをインストールします。

$ git clone git://github.com/creationix/nvm.git ~/.nvm
nvmコマンドの有効化

 以下のコマンドを実行することにより、nvmコマンドが使えるようになります。

$ source ~/.nvm/nvm.sh
$ nvm version
   v0.10.1
Node.jsのバージョンをインストール

 今回はバージョンv0.10.1のNode.jsをインストールします。以下のコマンドを実行します。

$ nvm install v0.10.1
$ nvm use v0.10.1

「nvm ls」コマンドにより、nvmでインストールされたバージョンの一覧を確認することが出来ます。

$ nvm ls
   v0.10.1
current: 	v0.10.1

currentは現在使用しているバージョンです。
このバージョンをデフォルトのバージョンとして設定します。

$ nvm alias default v0.10.1
default -> v0.10.1
$ nvm ls
   v0.10.1
current: 	v0.10.1
default -> v0.10.1
Node.jsの確認

 以下のコマンドを実行し、Node.jsがインストールされていることを確認します。

$ node -v
v0.10.1


以上でNode.jsのインストールは終了です。
是非読者の方もNode.jsを活用し、アプリケーションを作ってみてください!

*1:NVM(Node Version Manager)…Node.jsのバージョン管理システム

*2:Git…オープンソースの分散型バージョン管理システム

タイトル画像を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で画像に変換します。

先ほどのコードは意味の無いコードなので、動かすこともしません。