Previous month:
October 2012
Next month:
December 2012

neu.Node、Node.js サーバー on iPhone

Node.js 上でさざまなアプリケーションを作りはじめて以来、な環境で走らせる Node.js サーバーに大きな可能性を感じ、Raspberry Pi を注文したり(まだ届かない)、ローカルな環境で走るマルチプレー・ヤーゲームなどを作ったりしているのだが、そこで浮上して来たのが、「Node.js を iPhone 上で走らせたい」という強い思い。

いくつかの高いハードルがあったのだが、何とか乗り越えて、net.Server、https.Server がそこそこ動くようになって来たので、とりあえずデモを Youtube で公開した。

 


今週の週刊 Life is Beautiful:11月27日号

今週のメルマガ「週刊 Life is Beautiful」の配信準備が整ったので、内容を簡単に紹介する。

今週のざっくばらん

プロジェクト 「neu.Node」

Node.js を活用した教育ツールの開発から始まったプロジェクトですが、ここ一週間ほどで大きな進歩をとげました。一番大きいのは、Node.js を iPhone 上で走らせることに成功したことです。これによりアプリケーションのアーキテクチャにも大きな柔軟性が生まれ、一気に可能性が広がりました。Joyent がオープンソースとして配布している Node.js はそのままでは通常の iPhone 上で走らせることが...

neu.Node のオープンソース化について

neu.Node とは、上にも書いた通り、iOS 上で走る Node.js はそのごく一部でしかなく「一つのアプリケーションを複数のモバイルデバイス上で動かす分散型プログラミングのフレームワーク」です。あまりにも新しい領域なので、これをどんな形で配布・普及させて行くのかで少し悩んでいます。2000年に UIEngine というテクノロジーを作った時には、それを核に UIEvolution をベンチャーキャピタルから資金を調達して...

ゲーム・フレームワーク

Node.js を本格的に触り始めて以来、作りたい物が山ほど増えてしまい、プライオリティを決めるのが大変です。そのうちの一つが、Node.js + HTML5 で作るマルチ・プレイヤー・ゲーム用のフレームワークです。インターネット上のサーバーで動くマルチ・プレイヤー・ゲームのプラットフォーム・サービスはすでにいくつかありますが、ローカル・サーバー向けのプラットフォームはまだ未開拓な市場なので...

私の目に止まった記事

Startup Genome Ranks The World’s Top Startup Ecosystems

昨年も紹介したと思いますが、今年も「ベンチャー企業を起業するのに適した都市トップ20」が発表されました。当然のことながらシリコンバレーが一位で、二位にテルアビブ、三位がロサンジェルス、四位が私の住むシアトル、という順番です...

Microsoft's Next Xbox Is For Your Living Room, But Isn't For Gamers

先週書いた話とも関連しますが、Microsoft がゲーマー向けではなく、リビングルームで映像などを楽しむための端末として、XBox Lite をリリースするのではないかという憶測記事です。Microsoft にとって、現在の XBox ビジネスは「収穫期」にあります。ハードウェアの値段が発売当初よりも大きく下がった...

What Sinofsky’s Departure Suggests about the Current State, and Likely Future, of Microsoft

Windows 8 をリリースした後に退社した Sinofsky がマイクロソフトでなにをして来たかが良くまとめられている記事なので紹介します。この記事に書かれている通り、Windows 95/Internet Explorer 3.0/4.0 を作ったチームは、私も含めたハッカーの集まりでした。堅苦しいルールもなく...

Node.js on Raspberry Pi

11月18日に東京の市ヶ谷で開かれた「東京Node学園祭2012」で発表された Raspberry Pi 上で動く Node.js のデモです。デモは残念ながら失敗しまいましたが、この Raspberry Pi + Node.js にはとんでもないポテンシャルがあると私は見ています。私は UIEvolution の CEO だった時に、「これからはすべての家電でマイクロサーバーが走るようになる。その時にはリモコンのありかたが根本的に...

The End Of The Smartphone Era Is ComingRead

「身の回りの家電製品すべてのマイクロサーバーが走る」というのが一つの未来像であれば、それと対になるのが、「デバイスのディスプレイの究極の形はドラゴンボールのスカウター型」というものです。Google だけでなく Microsoft もそんな時代のリーダーシップ・ポジションを握るための投資を始めています...

node.js 入門(5): ネットワーク・プログラミングの勉強環境としての Node.js

インターネットが普及し、私たちの身の回りのさまざまなデバイスがネットに接続している今、ネットワーク・プログラミングの基礎をちゃんと理解しておくことは、ソフトウェアを設計する上でとても重要です。それも、HTTP だとか HTML というレベルではなく、もう一つ下のネットワーク・ソケットのレイヤーの働きをしっかりと理解しておくことは、これからますます重要になって来ます。Node.js が従来型のプログラミング環境と大きく違うのは、ソケットを開いたり、ソケットを経由して送られて来たデータを処理したり、というネットワーク・プログラミングの基本操作が直接的に...

読者からのご質問・ご意見コーナー

今週の質問です。

マイクロソフトを退社されたシノフスキーさんですが、挨拶のときには、「スティーブン シノフスキー、プログラマーです」と言っておられたそうです。現役エンジニアだという意味だと思いますが、米国の場合、役員でもエンジニアができるのはなぜでしょうか?

日本の場合はマネージメント職に就いたとたんに現役ではなくなってしまうことがほとんどだと思います。また、日本の年功序列という雇用形態は、マネジメント職、経営職が技術を知らない・わからないので従業員に対して正しい評価をできないということも関係しているのでしょうか。中島さんは、どう思われますか?

とても良い質問です。シノフスキーが今でもプログラムを書いているかどうかは直接は知りませんが、私がいたときには、デビッド・カトラーが副社長の肩書きを持ちながらも、バリバリとNTカーネルのプログラムを書いて...

模範回答

GET メソッドのみに対応する HTTP 1.0 サーバーの実装例

var net = require('net');
var util = require('util');
var events = require('events');
var CRLF = '\r\n';

function Server(requestListener) {
  net.Server.call(this);
  if (requestListener) {
    this.on('request', requestListener);
  }
  this.on('connection', connectionListener);
}
util.inherits(Server, net.Server);

...

Node.js 用モジュール comet.io の公開

Node.js アプリケーション上でサーバーからクライアント向けてメッセージを送りたい際に使うライブラリーとしては socket.io が広く使われているが、Websocket、Comet、Flash など複数のトランスポートをサポートしようとするあまり、かなり複雑になってしまっている。

現在、Node.js 上にマルチプレーヤー・ゲーム用のフレームワークを作っているのだが、出来るだけシンプルに、かつ他のモジュールへの依存度を低くしたい私としては、ここまで肥大化した socket.io を使うのには少し抵抗がある。

そこで、メルマガに連載中の「Node.js 入門」向けのサンプルとしても使えるので、Comet だけをトランスポートとして使うシンプルなライブラリを作り、Githubnpm に公開した。


これで引退が遠のいたか、スティーブ・バルマー

エンジニアtypeに「優れたエンジニアの幸せとは? Windows 8開発統括「突然の退任劇」を、個人のキャリアとして見てみると…【連載:中島聡⑤】」というタイトルでインタビュー記事が掲載されたので報告させていただく。

シノフスキーの引退のニュースを聞いた時に最初に思ったことは「これでまたまたバルマーが辞めにくくなった」だ。日本ではあまりないことだが、米国の場合、成功した人が40〜50ぐらいで引退してしまうことは良くある話。その意味では、 シノフスキーもバルマーも、ちょっと長くマイクロソフトで働き過ぎていて新しいリーダーが育っていないのが少し心配だ。

結局二人とも、Windows95/Office95 の成功体験が体に染み付いてしまっているわけで、その時代の人達がリーダーシップをいつまでも握っているから Microsoft は生まれ変われない、という見方もある。

いずれにせよ、バルマーの後継者であったはずのシノフスキー辞めたということは、バルマーがすぐに引退すると誰をCEOにするかで混乱が生じるということ。


手書きチャットアプリ、neu.Chat ついにリリース

Mzm.qlfnlicw.170x170-754回の承認落ち、3回のエスカレーション、3回の長時間電話の末、11ヶ月の歳月をかけ、ついに neu.Chat(無料) が Apple の承認を通り、ようやくiTunes ストアにリリースすることができた。

手書きチャット(およびボイスチャット)のために P2P コネクションが必要だったので、Apple が提供している GameCenter + GameKit を活用して実現し、去年の12月に申請に出したところ、「ゲームでもないのに GameCenter のサービスを使うのは規約違反」と承認落ち。

何かの勘違いだろうとエスカレーションをして電話で担当者と話したところ、勘違いではなく、それが Apple のポリシーだと言われる。かなり長く粘ったのだが突っぱねられ、かなり気落ちしたことを覚えている。

しかたがないので、手書きで「マルバツ」と「五目並べ」を遊べる機能を加え、「これならゲームだから問題なかろう」と申請をすると、再び却下。ゲームとしては認めることは出来ないという。

あたった担当者が悪かったのだろうと、3ヶ月ほど間を置いてほぼ同じものを申請に出すと、やはり却下。この時もエスカレーションして、「Apple にとってゲームの定義はなにか」という議論を延々と繰り返すがまったく通じない。この時は Apple が嫌いになった。

Apple の API が使えないならば、Skype はどうかと Microsoft にコンタクトするが、SDK はあるものの iOS にだけは使わせないという狭い了見。

あまりにも頭に来たので、neu.Chat はしばらく放置することにし、数ヶ月の間 neu.Tutor の開発をしていたのだが、9月になって neu.Tutor の開発も一段落ついたので、再度 neu.Chat について考えることにした。

GameCenter もだめ、Skype もだめとなれば、次は GoogleTalk だ。Google はリアルタイム・メッセージの標準プロトコルである XMPP をサポートしているので、neu.Chat を XMPP に移植すれば動くはずだ。

実際にやってみると簡単ではなかったが、10月の中旬には動きはじめる。XMPP を使ったおかげで、GoogleTalk 以外の XMPP サーバーでも使える。特に標準プロトコルをしっかりとサポートしているオープンソースベースの XMPP サーバーとは相性が良い(Facebook は XMPP のエクステンションである Jingle をサポートしていないので使えない)。

ようやく準備を整えて審査に出すと、再び却下。今度は「VOIP アプリでもないのに、VOIP モードで走るのはけしからん」という言う。neu.Chat は WiFi の環境さえ良ければ VOIP も出来るように作られているので、これは担当者の間違いだが、またまたエスカレーションするのも疲れたので、とりあえす VOIP モード を外して申請。VOIP モードを外すと、アプリがバックグラウンドになった時にセッションが途切れてしまうが、途切れたセッションを簡単に再開する仕組みもあるので良しとすることにした。

とういことで、11ヶ月の申請期間を経て、ついに neu.Chat をリリースすることが出来た。ぜひともお楽しみいただきたい。

ちなみに、XMPP に触れたおかげで、Node.js の勉強もできたし(一時期は、自分でサーバーを立てる必要があると考えたため)、Node.js 関連で二つも面白いプロジェクトを思いついた。最初に申請した neu.Chat があっさりと審査に通っていたら Node.js にも触れずじまいだったかも知れないし、怪我の功名とはまさにこのことだ。

 


今週の週刊 Life is Beautiful:11月20日号

今週のメルマガ「週刊 Life is Beautiful」の配信準備が整ったので、内容を簡単に紹介する。

 ◇ ◇ ◇

今週のざっくばらん

node.js を活用した分散型マルチ・モニタ・アプリケーションのアーキテクチャ

node.js を使った教育ツールの開発ですが、とても順調に進んでいます。アプリケーションは、node.js 上のAJAXフレームワークとしてオープンソース化している ajmax を活用しています。ajmax を使うとクライアント側のスクリプトを最小限にとどめておき、サーバー側のコントロールロジックからクライアント側のUIをコントロールすることが可能ですが、これとWebSocket(実際には socket.io)を組み合わせるとかなり面白いことが...

Cloud Funding

kickstarter.com のことはすでにご存知の方が多いと思いますが、kickstarter.com に代表されるCloud Fundingとは、インターネットを使った新しい資金集めの形です。これまでは、起業のための資金集めの方法は、基本的に、銀行から借りる Debt Finance、親戚や知り合いから集める Angel Finance と、プロフェッショナルな投資家から集める Venture Captal Finance の三種類しかありませんでした。銀行は、まだ起業したばかりの会社には個人保証無しではお金を貸してくれないし...

原発問題とTPPは「小異」なのか

石原元東京都知事が率いる太陽の党が、原発やTPPなどの政策に違いがあるにも関わらず日本維新の会に合流したことに関してマスコミの批判が集中しています。私は必ずしも石原さんの支持者ではありませんが、今回彼がしていることはとても筋が通っていると思います。国会の事故調査委員会が指摘した通り、福島第一で起こった原発事故は天災ではなく人災な...

私の目に止まった記事

シノフスキーとフォーストル--有能で野心的な親衛隊長の悲劇

Windows チームを率いて来た Steven Sinofsky の引退のニュースはさまざまな憶測を読んでいます。私自身、Sinofsky (マイクロソフト社内では、ファーストネームで呼び合うのが常でしたが、会話の中で引用する際は、Sinofsky と Ballmer はラストネームを使っていました)とは面識もあるし、Facebook 友達でもあるので、複雑な思いで見ています。Sinofsky にしろ Ballmer にしろ、ストックオプションのおかげで人生を100回繰り返しても使い切れないぐらいのお金をすでに手に入れています...

Wii U Review: The Future Is in Good Hands

Gizmodo による Wii U のレビューですが、結局のところは「このゲームがやりたいから Wii U を買う」と消費者が思わない限りは任天堂の復活はないわけで、その意味ではこのレビューが特定のゲームを指して「このゲームはすごい!」と評価していない時点で少し心配になります。たまたまレビューを書いた人が網羅的なレビューを書くことが好きなのかも知れませんが...

Steve Ballmer: Android Ecosystem Is Wild And Uncontrolled, Apple Is High Priced And Highly Controlled

Steve Ballmer のインタビュー記事です。録音のクロリティがあまり良くないので無理して聞き取ろうとする必要はないと思いますが、Ballmer の Android と iOS のアプリストアに関するコメントには私も同意します。Android の方はデバイスとの互換性に関してもセキュリティに関しても、ほぼ野放しの状態で、これがなぜもっと大きな問題にならないのかが不思議なぐらい...

iPad Hacking Trial Underway With Big Implications for Computer Law

上の Android のセキュリティの話とも関係しますが、とても興味深い話なので、セキュリティやプライバシー保護に興味のある方は一読をおすすめします。記事からだけだと理解しにくいので、少し調べてみたところ、ブラウザーで訪問しただけでデバイスのUUIDとICCIDを取得する方法までを解説しているサイトを見つけました(参照→...

UIEvolution 起業ものがたり(8): Wireless Toolkit

Ignition Partners での仕事は、それまでの Microsoft での「ソフトウェアを作る」という仕事とは大きく異なる仕事だったので、刺激もあり、とても良い勉強になりました。今まで Windows の世界と Internet のごく一部しか見て来なかった私にとって、ネットに存在するさざまな資料を読みあさることは、私のエンジニアとしての幅を広げる、という意味では大きなプラスになりました...

...ということは、今の段階でその問題に対する解決策を作っておけば、他の企業よりも少なくとも2〜3年は前に出られる、ということです。「これは大チャンスだ」と思いました。

node.js 入門(4): プログラミングを学ぶための環境としての node.js

私は、数年前からプログラミングを勉強する人には JavaScript を進めて来ました。とても取っ付きやすい言語でありながら、奥が深く、実際に職業としてソフトウェア・エンジニアを選んだ場合、JavaScript を書く機会はさざまななところであるからです...

読者からのご質問・ご意見コーナー

今週の質問です。

理系の大学で勉強している学生ですが、いつかは西海岸のインターネット企業で働きたいと考えています。留学する余裕はないので、このまま今の大学を卒業する予定ですが、いまからどんな準備をしておくべきかのヒントをいただけると助かります。

まず第一に英語です。きれいな発音ができるとか、難しい単語が使える必要はないので、とにかく最低限の意思の疎通ができるようになっていると大きく違います。英会話教室というのも一つの考え方ですが、英語でしかコミュニケーションの出来ない友達を作るというのも悪くないと思います。私の知り合いで、英語はフィリピン人...


Voicepic が Mashup Awards 8 で最優秀賞を獲得

UIEvolution がリリースしているVoicepicが「Mashup Awards 8」で最優秀賞を獲得したので、リクルーティングも兼ねて(「UIEvolution に入るとこんな楽しいプロジェクトにも関われる」という意味で→人材募集ページ)紹介させていただく。

Voicepic は音声と写真を組み合わせた新しい形のコミュニケーションを可能にする iPhone アプリ。単なる"yet another scial networking service" ではなく、「人と人のコミュニケーション」という部分に着目するとこのアプリケーションの面白さが理解していただけると思う。写真に5秒ほどの音声を加えるという一手間をかけるだけで、今までの写真だけのコミュニケーションとは大きく違う密度でのコミュニケーションが出来るのだ。

ちなみに、今回の受賞を記念してではないが(それにしてはタイミングが良すぎる)、「第一回 Voicepic 音写真コンテスト」を開催することになったので、iPhone/iPad/iPod touch をお持ちの方にはぜひともご参加いただきたい。