投稿者アーカイブ
YammerがNode.jsの運用で学んだこと
Node.jsのカンファレンス NodeConf 2011にて、YammerのリードエンジニアであるMatthew Eernisse氏がNode.jsの運用を通じて学んだことについての発表を行いました。発表のサマリーは5 Lessons Learned Running Node.js in Productionで読むことができます(スライドはまだ公開されていないようです)。
「コールバックを使ったスタイルのコードは、イテレーティブに開発をしやすいが、結果としてスパゲッティコードになりがち」という意見は他所でも見かけることがありますね。また、
- 物事は失敗すると仮定せよ
- コールバックは失敗すると仮定してデフォルトではエラーメッセージを出力するようにし、処理が上手くいった場合にエラーを取り消すようにする
- あとで原因を調査できるよう、すべてのエラーはログに記録しておくこと
- 可視性とメトリクス
- 初期段階から、あらゆるものを測定して記録するようにすべき
- Yammerではメトリクスライブラリとしてmikejihbe/metricsを利用している
といったところは、実際にサービスを運用しているところらしい意見です。
私も普段からYammerを利用しており、ここ数カ月でリアルタイム性がかなり向上してきている印象があったのですが、その裏にはNode.jsのパワーがあったのですね。
ブラウザ上で動く教育用ビジュアルプログラミング環境 Waterbear
ポートランドで開催されたJSConfにて、ブラウザ上で動く教育用ビジュアルプログラミング環境 Waterbearが発表されました。
Waterbearは、MITメディアラボで開発されているScratchに似たアプローチの言語で、制御構造やユーザーの操作をあらわすブロックを繋ぎ合わせることでプログラミングを行います。ベースがJavaScriptなので、ビジュアルに作成したプログラムから生成されたJavaScriptコードを見ることができるのが特徴です。
開発者のDethe Elza氏が目指しているのは、Alan Kay氏がSqueakで目指したものと同様に、
- プログラミングの書籍で使われるようになること
- プログラミングの初学者がよりプログラミングに没入できる環境となること
- 普通の人がカジュアルなプログラマーとなれること
だということです。
実装としては、jQueryやModernizr、Processing.js、Raphael.jsといったライブラリを使ったクライアントサイド(ブラウザ上)で稼働するアプリケーションとなっています。Waterbearのサイトでは実際にブラウザ上からプログラミングを試すことができますし、ソースコードもGitHubで公開されていますので、興味のある方はちょっと覗いてみてはどうでしょうか。
ちなみに、Waterbearという名前はタフさに定評のあるクマムシから命名されたもので、RubyやPythonといった他の言語からも使えるようなとにかくしっかりした言語を目指している、ということです。
via:http://www.readwriteweb.com/hack/2011/05/waterbear-is-like-scratch-but.php
Greplinはどんなテクノロジーを使っている?
@junyaです。海外のテクノロジースタートアップが出している求人情報を探ることで、次のトレンドやマイナーだけどパワフルな技術、効率的に優秀な人材を見つける方法をうまく知ることができるのではないか、と思ったので、そんな記事をしばらく書いていこうと思います。
今回は、最近TechCrunch JAPANでもGreplin: エンジニア6名, 3か月で15億のドキュメントをインデクシングという記事で取り上げられたGreplinを探ってみました。
彼らが採用しているテクノロジーについては、GitHubで公開されているコードおよびQuoraのWhat languages/frameworks is Greplin using in their recently launched and much faster rewrite?という質問をざっと見ることで、おおまかに知ることができます。
それによると、インフラはAmazon Web ServicesのEC2/S3/SES、プログラミング言語はPythonとJavaがメインのようです(最近はScalaも使い始めたとか)。ライブラリやミドルウェアとしてはTwistedやApache Lucene、memcachedなど。どうしても遅くなりがちな、Amazon SESやSendGrid、KISSmetrics、Mixpanelといった外部サービスAPIへのアクセスを、Tornado Web Serverに含まれる非同期HTTPクライアントを利用した独自ライブラリで行うようにしている点は、なるほどなという感じです。
そんなGreplinは技術者の応募をThe Greplin Programming Challengeというページを通じて受け付けており、同社ブログによれば、エンジニアのShaneal Manekさんも450件ほどあったプログラミングチャレンジ経由の応募からの採用だそうです(この方はさっきのQuoraページでも回答を寄せてくれている)。このプログラミングチャレンジでは20分〜2時間ほどで解ける3つの問題が出題されるので、プログラミングに自信のある方は挑戦してみても面白いのではないでしょうか。
採用ページでは同社のエンジニアリングスタイルとして、
- 難しい問題をコードによって解決することが好き
- 何をするにも最速の方法を選ぶ(最速とは少ないCPUサイクルの場合もあるし、少ないプログラマーの稼働である場合もある)
- データ構造とアルゴリズムについての確かな知識(大学でも書籍でも実務で学んだものでも構わない)
- 勤務初日からコードをコミットする
といった点が挙げられています。
というわけで、「勤務初日からコードをコミットする」という表現からもわかるように、とにかくプラグマティックに「コードを書く」というスタンスが感じられるGreplinなのでした。