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

会場入口

去る3月29日、東京・お台場の「東京カルチャーカルチャー」にて、ウェブ業界の若手社員たちによる交流イベント、その名も「Web2.0 中の人ナイト」が開催され、弊社からは「オンラインコーヒーメーカー 萌香」でお馴染みのきょろと私あまやんが出演しました。

イベントには「cookpad」「livedoor」「楽天」「@nifty」「GREE」「Yahoo!」といった大手サイトの「中の人」が勢ぞろい。
普段なかなか表に出てくることの少ない作り手の顔を知ってもらおう!ということで、お互いの仕事場環境や、各自が取り組んでいる本業以外のものづくり(弊社ではOne Day Free(ODF)制度)の内容についてショートプレゼンを行いました。

会場の様子。客席はレストランも兼ねていて、食事やお酒を楽しみながらイベントを楽しめる素敵な場所でした。
会場内部の風景

弊社きょろのプレゼン。
きょろ、プレゼン中。

話題はやっぱりコーヒーメーカー。
コーヒーメーカーのシステムを説明するきょろ

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

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


ニコニコ動画のアカウントをお持ちの方はこちらからどうぞ(H.264/高画質)

併せて会場では「萌香」の実機と、きょろが学生時代に開発した割り箸製(!)の「どこでもペンタブレット」を展示。興味津々な来場者の皆さんと会話する彼は本当に幸せそうでした。
「萌香」の実機展示

「萌香」と「どこでもペンタブレット」を説明するきょろ

他社の皆さんのプレゼンは、さらに多彩で新鮮なものばかり!

livedoorの佐孝さん。「作っちゃいましたメソッド」といって、エンジニアが仕事以外に趣味で作った試作品が、実サービスへ採用されることが多いのだそうです。
livedoor 佐孝さん

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

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

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

ショートプレゼンのあとは、各社メンバー集合によるパネルディスカッションでした。
全員集合でのパネルトーク

「うれしかったユーザーさんは?」「サービスの予想外の使われ方」など、ウェブでご飯を食べている人ならではのナマの声が沢山。私自身、壇上に立ちながらも、他の出演者のみなさんの洞察豊かな発言にビリビリしっぱなしでした。

「何百万人と見るレシピを、あなたの母親が作ってWebに公開する時代。情報は誰にでも発信することが出来るということがWeb2.0なのではないか」
「Webに2.0も3.0もなくて、Webの進化によってみんなの生活が豊かになっていくということが大事なんだと思う」

すべては、リアルなこの世界を楽しく過ごしていくために。

ネット上に「場」を作り出していく「中の人」たちの情熱にひたすら元気をもらい、ウェブでご飯を食べていくということはどういうことなのだろう、ということを深く考えさせられた1日でした。
バーチャル世界であるウェブをきっかけに、こうしてリアルなイベントという形でアウトプットをするということ自体新鮮で、とても刺激になりました。今後も積極的にこのような機会を設けていければと思います。
ご来場いただきました皆様、本当に有難うございました!

はじめまして。めっきり寒くなってきたので短パン出社を諦めた oinuma です。求人情報サイト Find Job ! の開発や運用を担当しています。

私はいつも livedoor Reader を利用しているのですが、今更ながら登録数ランキングがAutoPagerize / LDRizeに対応しましたのエントリに触発されて、Find Job !の求人情報検索結果画面を AutoPagerize と LDRize に対応させてみました。今回はそのときに学んだことをサラサラっと書きたいと思います。

AutoPagerizeとLDRizeについて

AutoPagerize は現在見ているページの一番下に来たら、次のページを自動的にロードして現在のページに表示してくれるというものです。これのおかげでマウスで「次のページ」のようなリンクをクリックする必要がなくなります。

LDRize はキーボードの”j”, “k”を使うことで「次のデータ」「前のデータ」に進んだり、”p”を押して今見ているデータにピンをつけたりすることができます。

  • ひたすら “j” でページを読んでいき
  • “p” で気になったコンテンツにピンをつけておいて
  • 一通り読み終わったら “o”

こうすることでピンをつけていたものをまとめて別のタブで開いてくれるのでとても便利です。

上はFind Job !で “p” を押してピンをつけた状態です。

まとめると、この2つを利用することでマウスを使わずにキーボードだけで快適にブラウジングできるようになります。(おかげで自分は肩こりが軽くなりました)

AutoPagerizeに対応させる方法

サイトを AutoPagerize に対応させるには、SITEINFO というものを書く必要があります。SITEINFO とは、次のページへのリンクがどれかを示す nextLink と、ページの中の本文部分を示す pageElement を XPath で記述するもので、wedata で管理されています。

url:  ^https?://www\.find-job\.net/fj/(?:search|new)\.cgi
nextLink:  id("contents")//li[@class="foreward"]/a
pageElement:  id("contents")/div[contains(@class,"search_result_list02") or contains(@class,"clear_space")]
exampleUrl:  http://www.find-job.net/fj/search.cgi?shokushu=0

上は Find Job !の例ですが、このように書くとGreasemonkeyスクリプトである AutoPagerize がこの SITEINFO を取得して次のページを現在のページに展開してくれます。各項目の仕様についてはこちらにわかりやすく記載されているので、実際に SITEINFO を書く場合に役立つと思います。wedata は OpenID さえあれば編集できるようになっているので、自分がよく見るサイトが対応してなかったら追加しちゃいましょう!

ちなむと、Find Job !の検索結果画面は以前どなたかが対応してくださっていたのですが、8月にデザインをリニューアルしたために動かなくなっていたので今回はこちらで対応させていただきました。

LDRizeに対応させる方法

LDRize も AutoPagerize と同様に SITEINFO がWeb上で管理されており、その仕様についてはこちらで説明されています。また、 SITEINFO も Wiki から編集することが可能です。私は XPath にあまり自信がなかったので、まずはローカルのスクリプトを修正して正しい SITEINFO が書けたことを確認してから Wiki を更新しました。

スクリプトを編集するには、Firefox 上の右下のGreasemonkey のアイコンを右クリック→ユーザスクリプトの管理→LDRizeを選択→[編集]をクリックしてください。 そして31行目付近を

var SITEINFO = [ {
name:      'Find Job !',
domain:    '^https?://www\.find-job\.net/fj/(new|search)\.cgi.*',
paragraph: '//div[contains(@class,"search_result_list02")]',
link:      'div//strong/a',
view:      'div//strong/a/text()',
} ]

のように編集して LDRize の挙動を確認します。デバッグが終わったら、Wikiを更新した後ローカルのスクリプトは元に戻して、M-x LDRize::update-siteinfo を忘れずに実行しましょう。こうすることで現在開いている Firefox に更新された Wiki の SITEINFO がロードされます。

閑話休題 – microformats について

AutoPagerize も LDRize も microformats に対応しているので、自分が管理しているサイトであればHTMLを直してしまってもよいでしょう。AutoPagerize の SITEINFO との対応表を書くと以下のようになります。

SITEINFO microformats
nextLink 「次のページへ」のリンクの <a> タグに rel=”next” 属性を追加
pageElement ページのコンテンツとして切り出すノードのタグに class=”autopagerize_page_element” という属性を追加
insertBefore(*1) 読み込んだページから切り出したコンテンツを挿入する際に基準となるタグに class=”autopagerize_insert_before” 属性を追加

*1) insertBefore を省略した場合は pageElement(autopagerize_page_element) の直後が指定されたものとして扱われるので、たいていの場合は指定しなくてもOKです。

LDRize は hAtom 0.1 と xFolk RC1 に対応しているのでこんな感じでしょうか。

SITEINFO microformats(hAtom 0.1) xFolk RC1
paragraph ページのコンテンツとして切り出すノードのタグに class=”hentry” 属性を追加 class=”xfolkentry”を追加
link “v”で開くリンクのタグに rel=”bookmark” 属性を追加 class=”description”を追加
view “p”でピンを付けて右下に表示したい部分のタグに class=”entry-title” 属性を追加 class=”taggedlink”を追加

まとめ

AutoPagerize と LDRize はニッチなツールかもしれませんが、Webブラウジングをかつてないほど便利にしてくれる素晴らしいツールです。自分がよく見るサイトがまだ対応していなかったら、ちょっとした正規表現と XPath を書くだけで対応させることができるので、ぜひ皆さんも試してみてください。

こんにちは、求人情報サイト Find Job !の開発を担当しているmasutaroです。

今日は、前回のエントリ「IRCのボットで職場(Find Job !事業部)を楽しく便利に!」でお話していたとおり、Robotaro_DXのソースを晒したいと思います。公開が遅くなった理由は、僕が無精者だからではなく、ソースをさらすのが怖かったからでもありません。みなさんをじらすためです(汗)(汗)(汗) ;-)

それでは早速ですが、使い方の説明をしたいと思います。こちらからソースコードをダウンロードしてください。

ファイル構成

ダウンロードしたファイルを解凍すると、以下のようなファイル構成になっていると思います。

解凍したディレクトリ
│
├─ robotaro_irc.pl
│
├─ config.yml
│
└─ lib ─ Robotaro ┬─ Hotpepeer.pm
                     │
                     └─ Wheather.pm

・robotaro_irc.pl
メインの処理を記述したファイルです。

・config.yml
ボットの接続情報やつぶやく時間、言葉を定義するファイルです。YAMLで書いてあります。

・lib下のモジュールファイル
外部APIを使ってつぶやく処理は一部モジュールに分けて書いています。

実行の準備作業

さて、さっそく実行!といきたいところなのですが、皆さんの環境に合わせて設定ファイルを少し書き換えていただかなくてはなりません。下記の説明のとおりconfig.ymlを書き換えてください。

config.yml の書き換え作業
ボットに関する設定は、以下のような書き方でconfig.ymlに定義されています。

nickname: Robotaro_DX
server: ****
password: ****
port: 6667
master: ****
join_channel: #channel1,#channel2,#****,#****
task:
    schedule1:
        channel: #channel1,#channel2
        type: string
        when:
            hour: 10
            min: 0
            sec: 0
        action: Robotaro_DX起動...
・
・
・
(以下、scheduleNの設定が続く)

YAMLの設定の意味は以下のとおりです。参考にしながら、各項目を設定していってください。まずは、青字の項目だけ設定すればOKです。

■ 基本設定部(1 ~ 6行目まで)

・server:ご利用のIRCサーバ名
・password:パスワード
・port:ポート番号。通常はデフォルトの6667のままでOK
・master:管理者のnickname。
・join_channel:ボットが接続するチャンネル。コンマ区切りで複数指定が可能です。

■ タスク設定部(7行目以降)
・scheduleN:scheduleN (Nは任意の一意の番号)という名前で、スケジュールを設定していきます。
・channel:つぶやくチャンネルを指定。コンマ区切りで複数指定が可能です。
・type:”string” か “function” を指定。
・hour:時間(0-23で指定)
・min:分(0-59で指定)
・sec:秒(0-59で指定)
・wday:曜日(0-6で指定。0が日曜日。省略可能で、省略した場合は毎日実行)
・action:typeで指定したのがstringなら値を文字列としてつぶやきます。functionだったら、値で指定した名前の関数を呼び出します。デフォルトではuranaiとforecastが指定可能です。

Robotaro_DX起動…!!

さて、これでボットを起動するための準備が整いました。robotaro_irc.plを実行してみてください。問題なく起動できるでしょうか?

デフォルトの設定ですと、

・毎日10:00に、#channel1 と #channel2 に「Robotaro_DX起動…」とつぶやく。
・毎日10:05に、#channel1 で占いカウントダウンをする。
・毎日13:00に、#channel1 に「そろそろお昼にしませんか?」とつぶやく。
・毎日18:00に、#channel1 に翌日の天気予報をつぶやく。
・毎日18:15に、#channel1 に「そろそろブラインドを閉めてもらっていいですか?」とつぶやく。
・水曜日の18:30に、#channel1 に「今日はノー残業デーやで。日報書いてや。」とつぶやく。

をするようになっています。上述の設定ファイルの仕様に従って、時間などの指定をいじって遊んでみてください。

つぶやく以外の機能

ボットの起動ができるようになったところで、実はまだ紹介する機能があります。グルメ検索と腹話術の機能です。

グルメ検索
ボットが常駐しているチャンネルにおいて、”@robotaro キーワード(キーワードは半角スペース区切りで複数指定可能)”で発言すると、ボットがHotpepper検索をして渋谷界隈の飲食店を1件ランダム抽出して返してくれます。ランチに行く前などにお使いください。お昼に行くにはちょっと微妙な店がヒットしたりしますが、ノリと勢いで行ってみるのもいいかもしれません。

腹話術(裏技)
緊急(?)の際に、ボットにプライベートで”チャンネル名:しゃべらせたい内容”で話しかけると、指定したチャンネルに対して、指定した文言でボットが発言します。無機質に発言を繰り返すボットに突然人間らしいことをしゃべらせて、周りをあっと言わせてやりましょう。

※ちなみにこの腹話術機能は、設定ファイル(config.yml)のmasterで設定されたnicknameの人にしか反応しないようになっています。ご注意ください。

おわりに

これでボットの使い方の説明は終わりです。次にソースコードの解説にうつり・・と行きたいところですが、ボットの仕組みはダウンロードしたファイルから直接ご覧ください。皆さんに読んでいただきやすいように、コメントを入れつつできるだけ丁寧に書いたつもりです。

ボットを高機能化させたり、他のAPIを使って拡張したりして、ぜひ遊んでみてください:-)
ライセンスはGNU Lesser General Public Licenseに基づきます。

利用API 一覧

ボットの機能を開発するにあたって、利用したAPIの一覧です。

・占い:Web ad Fortune (paperboy&co.様 ご提供)
・グルメ検索:ホットペッパー (リクルートWEBサービス様 ご提供)
・天気予報:お天気Webサービス (ライブドア様 ご提供)

■ 自己紹介

みなさん、こんにちは。

この春、株式会社ミクシィに新卒で入社したmasutaroです!出身は大阪です。入社にあわせて上京してきました。最近Happy Hacking Keybordを買おうかどうか迷っています。

会社は今、2ヶ月間の研修が終わり、事業部に配属されて1ヶ月が経った頃になります。私が配属されたのは、mixiとは別にもうひとつ弊社が提供している、求人情報サイトFind Job !の開発・運営をするFind Job !開発グループというところです。

優しい先輩に囲まれながらOJT形式で、日々サイトの改善や改修の作業に取り組んでいます。

■ Find Job !事業部に便利で楽しいIRCボットを

さて今日は、部署内が便利で楽しくなるように、最近私が自主的に取り組んでいる事についてお話したいと思います。

弊社では、社内のコミュニケーションツールに一部の社員でIRCを使っています。

私が働くFind Job !事業部のフロアでも活用されています。そこで、私はIRC上にCPANのNet::IRCモジュールで作ったボットを常駐させて、

  • 忘れやすい日々のルーチンタスクをリマインドする
  • 「お昼にしませんか」と言って、集中しすぎて休むのを忘れているエンジニアに休息をうながしてくれる
  • 定時になったら、「おつかれさま」を言ってquitする

ということをやらせることにしました。
ちなみに、ボットの名前はRobotaro_DX(ろぼたろーでらっくす)と言います。

ボットを作るまでは、リマインドやお昼に誘うのを人手でやっていたので、ボットを作ったことで少し便利になりました。更に、これに楽しさの要素も加えようと思って「ろぼたろー占い」という機能を実装しました。

■ ろぼたろー占い

これは、朝の業務開始後に、ボットが12星座占いをやってくれる機能です。各星座の運勢が1位~12位のランキングになっていて、順番に発表していってくれます。朝テレビでやっている占いで、自分の運勢が1位だったらちょっとウキウキしますよね?事業部の人に朝からテンションを上げて頑張ってもらえたら幸いです。最下位のことは考えて(ry

実は今日初めて、ろぼたろー占いを実行したのですが、ちょっとしたハプニングも起きつつ、みごと事業部内に笑いが起きました。狙い通りですね♪

こちらが、今朝、ろぼたろー占いを実行したときの様子です。画像をクリックしてご覧ください。

サムネイル

この他にも、今日はお昼にこのお店に行ったら?とレコメンドしてくれる機能や、明日の天気を言ってくれる機能もつけたいなと思っています。「今日のお昼ごはんの場所決めは○○さんだ~!」なんてことを言わせるのもおもしろそうですよね?;-)

次回の私のエントリでは、このボットのソースをさらしたいと思います。
ご期待くださいませ。

はじめまして、mixi開発部Find Job !開発グループの fukumura です。

 米Googleが7月11日にマップレットを正式版としてリリースしました。ということで『Find Job !版マップレット』を作成しました!就職活動やライバル会社調査?にとても便利です!

マップレットをご存知ない方のために簡単な説明をしますとマップレットとはGoogleマップに組み込むアプリケーションのことで、これらアプリケーションを好みで追加してもらうことによりオリジナルのマップを作り上げていくことができるというもので、面白い&有用なので是非皆さん試してみて下さい。

 登録&利用方法は下記の通りです。(※利用するにはGoogleアカウントが必要です)

まず、GoogleMapの画面のマイマップを選択し、コンテンツの追加をクリックします。

次の画面で、『URLを指定して追加』で

『 http://www.find-job.net/xml/google_mapplet.xml 』を指定して追加します。

あとは、『Googleマップに戻る』で地図に戻り『他人が作成した地図』の『Find Job !求人情報(β)』をクリックして利用できます。地図を動かしたり左に出力された企業一覧の赤枠をクリックしたりして動かして見てください。

 作成してみての感想ですが、GoogleマップレットはGoogleマップ・Googleガジェットを作成したことのある方なら簡単に実装できると思います。(もちろん、してなくても簡単にいける人は沢山いると思います。)

Google Mapplet 開発ツールとして

・Mapplet Scratch Pad  『 http://www.google.com/ig/modules/geoscratchpad.xml 』

 URLを指定すればテキストエリアにソースが丸ごと呼ばれてそれを変えて再読み込みできるツールです。

・Developer Mapplet 『 http://www.google.com/ig/modules/geodeveloper.xml 』

 登録したxmlを再読み込みできます。修正後などに便利です。

・API Reference 『 http://www.google.com/ig/modules/mapplets-api-reference.xml 』

Googleマップレット上で実際に動かせるAPI集です。

上記の開発ツール用のアプリケーションも公開されています。大変便利なので、Find Job !マップレットを登録したのと同様に登録してアプリケーション作成をされてみてはいかがでしょうか?

 当グループでは、『Find Job ! Maps(β)』 (Google Maps API利用)や最近ではWikipediaを利用した『Find Job !キーワード(β)』なども開発しています。どうぞ皆さんご利用ください。