はじめまして。07年入社エンジニアのあまやんです。
今日はmixi Engineer’s Blog初(?)、弊社エンジニアの社外での活動レポートをお届けしてみたいと思います。

去る3月29日、東京・お台場の「東京カルチャーカルチャー」にて、ウェブ業界の若手社員たちによる交流イベント、その名も「Web2.0 中の人ナイト」が開催され、弊社からは「オンラインコーヒーメーカー 萌香」でお馴染みのきょろと私あまやんが出演しました。
イベントには「cookpad」「livedoor」「楽天」「@nifty」「GREE」「Yahoo!」といった大手サイトの「中の人」が勢ぞろい。
普段なかなか表に出てくることの少ない作り手の顔を知ってもらおう!ということで、お互いの仕事場環境や、各自が取り組んでいる本業以外のものづくり(弊社ではOne Day Free(ODF)制度)の内容についてショートプレゼンを行いました。
会場の様子。客席はレストランも兼ねていて、食事やお酒を楽しみながらイベントを楽しめる素敵な場所でした。

弊社きょろのプレゼン。

話題はやっぱりコーヒーメーカー。

オンラインコーヒーメーカー「萌香」、実はテレビCM(風の動画)まで作ってしまったのです。このイベントにて初のお披露目となりました。
キャラクターボイスを担当されているのは、声優の永井真衣さんです。

ニコニコ動画のアカウントをお持ちの方はこちらからどうぞ(H.264/高画質)
併せて会場では「萌香」の実機と、きょろが学生時代に開発した割り箸製(!)の「どこでもペンタブレット」を展示。興味津々な来場者の皆さんと会話する彼は本当に幸せそうでした。


他社の皆さんのプレゼンは、さらに多彩で新鮮なものばかり!
livedoorの佐孝さん。「作っちゃいましたメソッド」といって、エンジニアが仕事以外に趣味で作った試作品が、実サービスへ採用されることが多いのだそうです。

Yahoo!の吉田さん。Hack Dayという、3日間の社内Hackathonにて、iPhoneカメラを用いたOCR翻訳ソフト「翻訳ルーペ」を開発されたそうです。

@niftyの森藤さん。社内で繰り返しなされることの多い事項のチェックリストを共有できるサービスを開発。いまや「イタリア旅行」や「燻製の作り方」といったプライベートな項目にまでどんどん情報がアップされているそうです。

ユーモアに富みながらも、細かいところまでコミュニケーションデザインがなされたアプリケーションたち。
遊ぶときも本気って、こういうことを言うのでしょうか・・・!
このバイタリティと想像力が、日々私たちの暮らしに楽しみを生むサービスを作り出す原動力になっているんだな、と強く感じることしきりでした。
ショートプレゼンのあとは、各社メンバー集合によるパネルディスカッションでした。

「うれしかったユーザーさんは?」「サービスの予想外の使われ方」など、ウェブでご飯を食べている人ならではのナマの声が沢山。私自身、壇上に立ちながらも、他の出演者のみなさんの洞察豊かな発言にビリビリしっぱなしでした。
「何百万人と見るレシピを、あなたの母親が作ってWebに公開する時代。情報は誰にでも発信することが出来るということがWeb2.0なのではないか」
「Webに2.0も3.0もなくて、Webの進化によってみんなの生活が豊かになっていくということが大事なんだと思う」
すべては、リアルなこの世界を楽しく過ごしていくために。
ネット上に「場」を作り出していく「中の人」たちの情熱にひたすら元気をもらい、ウェブでご飯を食べていくということはどういうことなのだろう、ということを深く考えさせられた1日でした。
バーチャル世界であるウェブをきっかけに、こうしてリアルなイベントという形でアウトプットをするということ自体新鮮で、とても刺激になりました。今後も積極的にこのような機会を設けていければと思います。
ご来場いただきました皆様、本当に有難うございました!
開発部・システム運用グループの長野です。5月15日・16日に東工大大岡山キャンパスで開催されたPerlのカンファレンス、YAPC::Asia 2008に参加してきました。2日目にはセッションの時間を2つ頂いて、発表をしてきたのでその資料を公開します。
■memcached in mixi [pdf]
memcachedはmixiのシステムでも重要なアプリケーションの1つになります。発表ではmemcachedの基本から、弊社でのmemcachedの事例、そして分散方法の改善、TokyoTyrantの活用事例について説明させて頂きました。発表の最後時間が足りなくなり説明できなかったスライドも含まれていますのでご覧下さい。
memcachedについては、研究開発グループのtmaesakaによる記事が、またTokyoTyrantの活用事例については、こちらの記事にもありますので参考にして頂けたら幸いです。
memcachedについては、今後も新しい動きがあればこのブログ等で紹介していきます。
■mod_perlをjob workerとして使う方法 [pdf]
以前このブログで紹介したRSSクローラの裏側についての説明になります。RSSクローラを構築するにあたり考えたことや、利用したPerlモジュールの紹介をさせて頂きました。
資料の中でも説明している通り、この構成はRSSクローラだけではなくメールの配信などにも展開しており、まだまだ応用ができると思っていますので何かの参考になれば嬉しいです。
YAPC::Asiaも東京で行われるのが3回目となります。毎回、多くの刺激をもらうことができ、スタッフの皆様、スピーカーの皆様、参加者の皆様には感謝しております。また次回のYAPC::Asiaでお会いできることを楽しみにしています。
NTTと三菱電機が共同開発した共通鍵ブロック暗号 “Camellia” の実装について以前調査していた時、ついカッとなってJavaScriptで実装してしまいました。類似の実装も既にあるようですし今は反省しているのですが、死蔵しておくのもナンなので晒しておきます。
ソースコードと使い方
小ネタなので、このソースコードはpublic domainということにしますね。
CryptoCipherCamellia-js-1.0.2
CryptoCipherCamellia.jsは128-bitブロック暗号Camelliaのプリミティブの実装と、暗号利用モードとしてCBCモードの実装を含んでいます。例を簡単に示すと次のような感じです:
var SECRET_KEY = CryptoUtil.arrayFromHex(
"00112233445566778899AABBCCDDEEFF");
var INITIAL_VECTOR = CryptoUtil.arrayFromHex(
"000102030405060708090A0B0C0D0E0F");
var PLAIN_TEXT = CryptoUtil.arrayFromString("Hello World!");
var engine = new CryptoCipherCamellia();
/* 暗号化 */
var cbc = new CryptoModeCBC(engine, SECRET_KEY, INITIAL_VECTOR);
var cipherText = cbc.encrypt(PLAIN_TEXT);
alert("Cipher Text(HEX): " + CryptoUtil.hexFromArray(cipherText));
/* 復号 */
cbc = new CryptoModeCBC(engine, SECRET_KEY, INITIAL_VECTOR);
var plainText = cbc.decrypt(cipherText);
alert("Plain Text: " + CryptoUtil.stringFromArray(plainText));
パッケージにはデモと単体テストとして
を含んでいます。
ちなみに。(すごくおおざっぱな説明になりますが)Feistel構造をもつ暗号アルゴリズムであるCamelliaは、入力された128ビットのデータを前後半分64ビットずつに2分割して、
- 副鍵と置換表で片側のデータブロックを撹拌する
- 撹拌結果をもう片側のデータブロックとXORする
といった処理を64ビットのデータブロックを交互に入れ替えながらくり返して暗号化しています。これらの処理を一般的な計算機で実行する場合、普通はCPUに都合のよい32ビットや64ビット幅の整数を使って撹拌処理を実装します。しかしながらCryptoCipherCamellia.jsは、これまた私の気の迷いでわざわざ8ビット幅の整数で実装しています。さらに僕自身JavaScriptは遊びかそれ以前のレベルでしか書いていないので、作法やチューニングしどころがよくわかっていません故、モノスゴク遅いのでそこんとこよろしくです。
CamelliaそのものについてはNTT 情報流通プラットフォーム研究所のCamellia紹介や仕様書 (PDF)などを参照してください。
カッとなったついでにPerl版
これまたついカッとなって書いてしまったのですが、同様にPerlだけで書いたCamelliaの実装 Crypt::Camellia_PPもこっそりCPANに上げていたりしますので、ネタとして遊んでみて頂けると幸いです。
Perl向けCamelliaの他の実装としては、XSで記述したCrypt::Camelliaがあります。こちらは当初Dan Kogaiさん書かれたモジュールですが、一年ほど前に小山がメンテナンスを引き継ぎました。実行速度はPure Perl版と比べて段違いに速いので、PerlでCamelliaを使いたい用件では普通にこちらを選んで頂けると幸いです。