twitterで食材をつぶやくとオススメ料理を紹介してくれるbot「recipetter」やってます...
DESCRIPTION
2009年10月9日に開催された第1回 Webエンジニアバトルロワイヤル:LTスペシャルでの発表資料です。TRANSCRIPT
Twitterで食材をつぶやくとオススメ料理を紹介してくれるbot「recipetter」やってます
有限会社プラスワンデジタル松鵜 琢人
MATSUU Takuto
会社概要
● 有限会社プラスワンデジタル● http://www.p1d.com/● 東京都渋谷区幡ヶ谷● 主な業務内容
– サイト企画・制作、プログラム制作– サーバ管理・コンサルティング– 原稿制作・編集 :
● 雑誌「日経PCビギナーズ」(日経BP)、● 書籍「こんなにできるVideoStudio4公式ガイドブック」(MdN)、● 書籍「ファイルの圧縮・解凍事典」「Windows印刷トラブル110番」● 「日本のSEはこれからどうなるのか」● 「これならわかる不正アクセス対策 入門の入門」(翔泳社)ほか、● 各種マニュアル、商品紹介原稿、導入事例記事など
recipetterとは
● Twitter上で動作する対話型bot● 「@recipetter にんじん ごぼう」とメッセージを
recipetter宛に送信すると、その食材を使用したレシピのタイトルとURLを返答してくれる
● URLをクリックすると詳細なレシピが表示される● 2009/10/09現在
● レシピ回答数 23,572● フォロワー数 5,570
スクリーンショット
recipetterを始めた理由
● 公開したのは2009年3月17日● Twitterが流行ってきているようだったので何かbot
を作ろう● Twitterは男性ユーザーの方が多そうだったので、
男女で知名度がかなり違うcookpadさんを使ってみると面白いかも
● 単純にタイムライン上に「キャベツ」とか「ジャガイモ」とか、そういうものが並んでいると面白いだろう
recipetterの内部実装
● レシピ情報はcookpadさん(以下、敬称略)を利用させていただいている
● cookpadで検索用APIは用意されていない● 検索結果をスクレイピングで実装● 利用規約的に問題なさそうだったので許可なくやっている● ごめんなさい
● cookpadに負荷をかけないよう可能な限りキャッシュ● 検索結果が複数ある場合、ランダムにレシピを表示する
● 同じ食材でも毎回異なるレシピを表示● フォローされてもフォロー返しはしない
● つぶやき非公開の人からの問いかけは受け取れない
recipetterの特徴と利用者の反響1
● レシピが見つからなかった場合、たまに辛口返答● 「その組み合わせはどうかと思うよ・・・」→うけた
● 「ありがとう」などに反応するようにした● recipetterにお礼を言う人が多かったから● 実装したのは公開から約1ヶ月後● 他にも逐次機能を増やしていった
– 「recipetter」に対して「僕を食べちゃダメ!」など会話充実– 検索数が多くなってきた食材をHOT食材として定期的につぶ
やく– 1週間に1人しか検索しませんでした食材なども
recipetterの特徴と利用者の反響2
● かわいいとの反響多数● 擬人化された絵を頂いた→壁紙に設定● アイコン/口調が功を奏した
● たまに「中の人」に操られて時事ネタを喋る● 日食時は「太陽は食べられないんだって!」など● もともとはrecipetterがバグった際に、フォロワーの方か
らの指摘に対する返事として行ったもの● その後もTwitter検索などでrecipetterへの感想な
どを参考に機能を追加している
開発について
● 食材を受け取ってレシピを返すだけの単純なやりとりができる実装を数日で開発
● サーバを借りてPerlで実装● Twitterとの通信にNet::Twitter::Liteを使用● スクレイピングにWeb::Scraperを使用● cronで2分毎にTwitterのreplyをチェック
– 未回答のreplyがあればcookpadで検索
● recipetter、その他のbotを共通のPerlモジュールとして実装している
その他作成したbot rerecipetter
● recipetter のレシピなポストを淡々とRTする
● Twitterの仕様変更で、フォローしていない人へのつぶやきが見れなくなったので作成した
● 他人のつぶやきを参考にして料理を考えているという意見を吸い上げた
その他作成したbot currykutter
● 「@currykutter ○○で××を食った」のようにして報告。
● 「@currykutter ○○で××を食った。おいしかった」のようにすると、同様に感想を再ポストする。
● 感想のみを再ポストするので何を食べたのか気になる
その他作成したbot ramenkutter
● currykutterのラーメン版
その他作成したbot scriptter
● プログラム名を表すコードとソースをつぶやくと、実行結果を返す。
● 小飼弾氏が提供するAPIを使用
その他作成したbot korekatter
● 「@korekatter ○○買った」で○○を記憶する。
● 「@korekatter ○○買った?」で過去に買ったか確認できる。
● 「見た」や「読んだ」、「聞いた」などにも対応。
その他作成したbot chizuatter
● chizuatter宛てに地名をつぶやくと、Google マップから地図を探して住所やURLなどを表示する
その他作成したbot omiyagetter
● omiyagetter宛てに地名をつぶやくと、その土地のおみやげや特産品を紹介
● 商品情報は楽天市場のデータをAPIで検索。
botを作成して気づいたこと
● 何よりもまずアイデア● 対話型で双方向のコミュニケーションをとると良し
● 口コミやRTによる紹介で一気に広がった● アイコンや口調で特徴付けが大事● キャラクター性を前面に出す
– んだけど、そこにこだわりすぎて使いにくく(または作りにくく)なってはいけない
– と最近思ってます