mixi engineer blog

*** 引っ越しました。最新の情報はこちら → https://medium.com/mixi-developers *** ミクシィ・グループで、実際に開発に携わっているエンジニア達が執筆している公式ブログです。様々なサービスの開発や運用を行っていく際に得た技術情報から採用情報まで、有益な情報を幅広く取り扱っています。

オンラインコーヒーメーカー「萌香たん」とはじめるドキドキ☆コーヒーブレイク

 はじめまして!08年度新卒エンジニアの「きょろ」こと井上恭輔と申します。ミクシィではコミュニケーション開発チームというところで、mixi上の色々なコミュニケーションサービスの開発を担当しています。
 就職で東京に出てきて早10ヶ月、最初は周囲の歩く速度に付いて行けなくて悩んでいましたが、今では新宿駅を迷わず歩けるまでに成長しました。本日は慣れたついでに、そろろそエンジニアブログにも仲間入りしたいなと思いましたので、記事の初投稿に挑戦してみようと思います。
 曰く「ハードボイルドな技術ネタ」の多い当ブログですが、今回は頭を使わずに読める、文字通り「コーヒーブレイク」的な記事をお届けできればと思います。駄文ではありますが、お付き合い頂ければ幸いです。

エンジニアのガソリン「コーヒー」

 みなさんコーヒーはお好きですか?私はコーヒーが大好きで、1日にかなりの量のカフェインを摂取します。朝はブラックコーヒーを飲まないと始まりませんし、コーヒーが無ければコーディングの質も量も低下するような気がします。学生時代からの感覚値ではありますが、どうも研究者やエンジニアという生物にはコーヒー好きが多いようで、「コーヒーが無いと生きていけない!」と思っている人もきっと少なくは無いはず。ある意味「プログラマとはコーヒーに含まれるカフェインをコードに変換する職業」だと言っても過言ではありません。コーヒーは言わばエンジニアを動かすガソリンのようなものであり、私たちの「生命の源」だと言えるでしょう。

エンジニアの朝は一杯のコーヒーからはじまる

図1 エンジニアの朝は一杯のコーヒーからはじまる

マイ・コーヒーメーカーから始まった物語

 配属当時、残念ながらミクシィ開発部には美味しいブラックコーヒーを飲める環境がありませんでした。ティーサーバで紅茶・緑茶・玄米茶・烏龍茶、コーヒーサーバでラテ・カプチーノ・エスプレッソなどを自由に飲むことは出来ましたが、私が求めるのは"穢れ(けがれ)"を知らない純粋で無垢な無糖のブラックコーヒーであり、ミルクやシュガーは不純物以外の何者でもありません。 「美味しいブラックコーヒーを毎日浴びるように飲みたい!」 この想いは日々強くなっていき、ある時、カッとなった私は自腹でコーヒーメーカーを購入し、自席の横に設置することにしました。

図2 導入されたコーヒーメーカー

図2 導入されたコーヒーメーカー

 毎朝漂うコーヒーを炒れる豊潤な香り。 出社後にメールチェックをしながら飲む至福の一杯。  私の導入したコーヒーメーカーは意外にもチームメンバーや周りのエンジニアの方々に暖かく迎えられ、次第にコーヒーメーカーを利用してくれる方も増えてきました。しかし、全てが幸せに思われた一方で、何日か運用する過程でいくつかの問題点も出てきました。

  • 仕事に集中してるとコーヒーが入ったことに気づかない
  • やはりコーヒーは炒れたてが美味いので抽出直後に飲みたい
  • 遠くの人にコーヒーが入ったことを連絡するのが面倒
  • 一日にどのくらいの回数炒れているのか、今ストックしてあるコーヒーはいつ炒れたものなのかわからない

 弊社のエンジニアは私も含め、モニタに向かいヘッドホンで音楽を聴きながら仕事をしていることが多いので、コーヒーメーカーが近くにあっても、なかなか抽出完了に気が付きません。また、コーヒーが出来たことを離れた席の人に毎回伝えるのも面倒ですし、運用上は抽出記録が残らないのも何かと不便です。そこで私は、金曜日が自由研究時間になるODF(One Day Free)制度を利用して、コーヒーのドリップ状況をネットワークを介して通知してくれる機能を持った「オンラインコーヒーメーカー」を開発しようと考えました。

オンラインコーヒーメーカー「萌香」

 オンラインコーヒーメーカー「萌香(もか)」は、コーヒーのドリップ開始と完了時に、社内のIRC及びtwitterでコーヒーの抽出状況を教えてくれる機能を持った次世代コーヒーメーカーです。ドリップ完了時には抽出時間などに応じて一言メッセージも付け加えるようにしました。 利用者は既存のIRCクライアントやtwitterクライアントを使用することで、手軽にドリップ状況を知る事ができます。

図3 「萌香」によるIRC及びtwitter通知動作画面

図3 「萌香」によるIRC及びtwitter通知動作画面

 萌香の発言内容はtwitterでリアルタイムにご覧頂く事ができます。地球の裏側からミクシィ開発部のコーヒーメーカー動作状況を確認する場合などにご利用ください。


【Twitter/mixi_mocha】 http://twitter.com/mixi_mocha

 既製品のコーヒーメーカーを改造し、センサーと自作の制御回路を組み合わせることでコーヒーのドリップ状況を検出し、情報を私のPCに伝えます。私のPCでは萌香の制御ソフトがバックグラウンドで動作しており、検出状況に応じてIRCやtwitterにメッセージを投稿する仕組みです。

図4 「萌香」のシステム構成図

図4 「萌香」のシステム構成図

 コーヒーメーカーは安全性の観点から分解が難しい作りになっている場合が多く、改造は思ったよりも大変な作業でした。ドリップ状況の検知は、衛生上の観点からもタンクの残り水量を外付けセンサーで取得することはナンセンスです。また、抽出時は内部の部品が非常に高温になるため、物理的なセンサーの接触は極力避けなければいけないという制約事項もありました。 そこで、コーヒーメーカーのドリップ終了時の「自動電源OFF機能」に着目しました。パイロットランプの点状状況を光センサ(CdS光導電セル)で検出し、マイコン(今回はAVR-ATmega88を使用)を用いてA/D変換を行っあと、その値をUSBを経由してPCに送り、検出状況を制御用プログラムで判別してIRCやtwitterへの各種投稿処理を行います。パイロットランプが消灯→点灯で「ドリップ開始」、点灯→消灯で「ドリップ終了」と言った具合です。抽出量などは点灯時間を計測することで把握できます。

図5 「萌香」の制御回路はブレットボード上に実装

図5 「萌香」の制御回路はブレットボード上に実装

 萌香の導入後、チーム内のコーヒーコミュニケーションが劇的に効率化しました。離れた席でも炒れたてのコーヒーを常に知る事ができ、私もコーヒーを入れるたびにお知らせをする面倒から開放されました。光センサーゆえ、お昼時の直射日光が差し込むと、たまに暴走して発言が止まらなくなることもありますが、そこは「ドジっ子」という設定でフォローできちゃうのも擬人化ゆえの素敵なところです。萌香の設定に関して下記にまとめまておきますので、興味のある方はご覧ください。

図6 萌香たん

図6 萌香たん

名前 美釧 萌香
読み みくし もか / Mikushi Mocha
由来 「ミクシィ」とコーヒーの銘柄「モカ」から
性別 女性
血液型 AB型(Rh +)
年齢 16歳(高校生)
身長 152cm
好きなもの もちろん、美味しいコーヒー
将来の夢 Webエンジニアとしてインターネットの未来を作ること

 萌香のイラストは友人のつてを借りてイラストレータの「さもに凰花」さんにお願いさせて頂きました。あまりのかわいさに、ついカッとなって壁紙も作ってしまいましたので、ご興味のある物好きな方はご利用ください(笑)

萌香たん壁紙サムネイル

萌香たん壁紙1280×1024 (439KB)
萌香たん壁紙1024×768(289KB)

従来までのコーヒーポット状況通知システム

 実は、今日までのコンピュータ発展の歴史の中において「コーヒーメーカーの状況通知」というテーマはいつの時代にも考えられてきた事であり、様々な手法が提案されてきました。しかし、現代的な実装という点で考えた場合、どの手法もニーズを満たすものではありませんでした。

ケンブリッジコーヒーポット方式の問題点

 「コーヒーポットをネットワーク越しに監視する」というアイデアの最初期、かつ最も有名な実装として「ケンブリッジコーヒーポット」というものがあります。これは、1993年にイギリスのケンブリッジ大学のコンピュータ研究室に所属する学生たちによって作られたものです。「コーヒーを飲むためにポットのところに行ったら、まだコーヒーがたまっていなかった!」という非常に残念な問題を解決するために、コーヒーポットの前にビデオカメラを設置し、その画像をリアルタイムにウェブにアップロードすることで、自席に居ながらにしてコーヒーポットの残量を確認することができるという画期的なシステムです。今では「それ、ustreamでできるよ。」と軽く流されてしまいそうなものですが、当時はWindows95すらも発売されていない時代。日本の家庭にはまだインターネットがなく、当時の最新機PC-9821とパソコン通信が花形の時代です。地球の裏側のコーヒーポットの状況をリアルタイムに把握できるというのはまさに革命的な出来事で、新しい時代の到来を予感させるものでした。ケンブリッジコーヒーポットは設置からその後8年間稼動を続け、2001年の大学移転に伴ってスイッチが切られました。このコーヒーポットはeBayのオークションにおいて83万円の値が付き落札されたそうです。
 さて、このケンブリッジコーヒーポット、Webカメラを使った一見シンプルかつスマートで、エレガントな解決策のように思われますが、1つの大きな構造上の問題を抱えています。それは「コーヒー残量が目視できるガラス製のコーヒーポットでしか使用することが出来ない」ということです。ガラス製コーヒーポットは安価に入手可能ですが、その構造上、保温性が低く、残量がある限り常に底部のヒーターでコーヒーを加熱し続けなければいけません。コーヒーの保温には多くの電力を消費するため、エコが叫ばれる昨今の社会的情勢にマッチした解決策とは言いがたいものがあります。また、常に加熱を続けることでコーヒーが煮立ち、本来の味を損なってしまうのもコーヒー好きには許しがたいことで、現在ではポットに魔法瓶を採用した保温性の高いコーヒーメーカーが市販されています。オフィスにおいて非同期的に消費されるコーヒーには、魔法瓶式コーヒーメーカーの方が適しているため、ケンブリッジコーヒーポット方式は現実的なソリューションではありません。

図7 ケンブリッジコーヒーポットの確認ページ

図7 ケンブリッジコーヒーポットの確認ページ

HTCPCPの問題点

 HTCPCP(ハイパーテキストコーヒーポット制御プロトコル)はRFC2324で定められた世界標準のコーヒーポット制御用プロトコルです。 いわゆるジョークRFCと呼ばれるものの一種ですが、仕様自体は実装可能なものであり、HTCPCPに準拠したコーヒーメーカーの制作例なども存在します。しかし、実際の現場においてHTCPCPはあくまで「ジョーク」の領域を出るものではなく、次に上げるような問題点があり使い物になりません。

  • HTTPの拡張であるため、プロトコルシーケンスはクライアント駆動であり、コーヒーメーカー側から非同期にメッセージを送ることができない
  • たとえば、コーヒーメーカーから「コーヒーが入ったよ!」という通知を送るはできない
  • コーヒー炊き立て通知を実装するにはCOMETなどによるロングポーリングの手法を用いる必要があるが、コーヒーポットへの組み込みサーバは一般的に貧弱なため現実的な解決策ではない
  • IE、Firefox、Safari等、主要なブラウザはcoffee://URIスキームに対応していない。デファクトなクライアント実装も無い。開発しても利用者にインストールしてもらうのは面倒
  • というか、コーヒー粉をセットするときに席を立つんだから、その時にスイッチを操作したほうが便利だろ常識的に考えて
  • そもそも、RFCの内容がふざけており、適当すぎる。(ジョークRFCなので仕方ない)
  • ミルクやシロップを設定する拡張フィールドがあるが、俺はブラック以外をコーヒーとは認めない

 上記のような問題を解決した「萌香」は、Web時代におけるモダンなコーヒーメーカー状況通知システムの実装なのではないかなと勝手に考えております。

まとめ

 Web時代における現代的なコーヒーメーカー状況通知システムとして、オンラインコーヒーメーカー「萌香」を開発し、その開発背景と歴史、実現機能、実装方法などを紹介させて頂きました。また、「ミクシィのODF(OneDayFree)制度ってどのくらいFreeなんですか?」とよく聞かれることがあるのですが、「会社で朝からハンダこてを握って電子回路を組んでコーヒーメーカーを改造できるくらい自由です!」という事が少しでもお伝えできたなら幸いに思います。 Web企業でのハードウェア制作というのは、一見して異質な畑違いの行為のような感じもしますが、コミュニケーションを創造する仕事に従事するからには、ヒューマンインタフェースに関する研究やデバイスを通してのコミュニケーションのあり方についても積極的に考えて行きたいと個人的には思っています。コミュニケーションはブラウザの上で完結するものではないのですから。

図8 金曜日の私のデスクはWeb企業っぽくない

図8 金曜日の私のデスクはWeb企業に見えない

 この他にも、色々とハードウェアを絡めたデモプロダクトなんかを作っていたりします。機会があれば、今後もご紹介して行けたらいいなと思っていますので、生暖かい目で見守って頂ければ幸いです。  ハードウェアに興味を持たれる方がどれほどいるか不安で仕方ないのですが、もしこんな記事でもブクマなどが付くようでしたら、次回は「萌香」の実装に関して回路の制作方法、マイコン制御用プログラムの開発方法やソースコード、壁紙第2弾なんかを晒してみようかなと思っています。 それでは、最後までお読み頂き誠にありがとうございました!