RubyonRailsでつくる
アタシ好みの
愛されWebサービス
しだら ようじ
SHIDARA Yohji
日本Rubyの会
Ruby札幌
Lovable Webservices Development
by Hand with Ruby on Rails.
2008-08-08 釧路工業技術センター
オープンソフトウェアシステム構築講座
設樂 洋爾 / SHIDARA Yohji / dara
‣dara@ruby-sapporo.org
‣http://d.hatena.ne.jp/darashi
http://twitter.com/darashi
‣札幌生まれ, 札幌育ち, 札幌大好き
‣大学院生
‣Ruby札幌 運営チーム
‣RubyKaigi2008 実行委員 / スピーカ
今日お伝えしたいこと:
Ruby on Rails をつかって
自分好み の Webサービス を
作ってみませんか!
そのためにお話したいこと:
‣Ruby on Rails のご紹介
‣Rails による 私の 開発事例
‣コミュニティとのかかわり
‣Ruby on Rails のご紹介
‣Rails による 私の 開発事例
‣コミュニティとのかかわり
Rubyとは
まつもとゆきひろさん(通称Matz)
によって開発された
オブジェクト指向スクリプト言語
http://www.ruby-lang.org/ja/about/
http://www.ruby-lang.org/
http://www.ruby-lang.org/
Ruby on Rails とは
Rubyで作られている
Webアプリケーション
フレームワーク
http://www.rubyonrails.org
http://www.rubyonrails.org
http://www.rubyonrails.org
2つのキーワード
‣DRY:
Don t Repeat Yourself
「同じことを繰り返さない」
‣CoC:
Convention over Configuration
「設定より規約」
価値観
「楽しい」
Railsプロダクト
http://www.ruby-lang.org
http://aboutme.jp
http://tabelog.com
http://www.iknow.co.jp
http://30d.jp
http://twitter.com
大規模システムでの実績も
気付いていないだけで
Railsで稼働しているサイトも
身近にあるかもしれません
‣Ruby on Rails のご紹介
‣Rails による 私の 開発事例
‣コミュニティとのかかわり
私事ですが、
スープカレーが大好き
06: 108皿
07: 45皿
08(-8/8): 34皿
Webサイトまで作ってしまった
http://soupcurry.info
http://soupcurry.info
最寄りのスープカレー店を
携帯電話のGPS機能で検索できる
Ruby on Rails を
つかっています
なぜ soupcurry.info を
つくったのか
チキン 辛さ8
CHAIN GANG ORIGINAL SOUP CURRY & BAR 龍祈
http://soupcurry.info/shop/138
スープカレー
‣中毒性がある
→我慢できない
‣店ごとに個性的
→食べ歩きを楽
しみたい
‣店舗が乱立気味
→好みにあった
お店でぐゎらチキ天
ぐゎらん洞
http://soupcurry.info/shop/5
よくあるシチュエーション
‣ 今すぐカレーを食べたい気分だ。
‣ 今日は普段行かない場所に居るので、折
角だから近くの行ったことのないお店で
食べてみたい。
‣ お目当ての店に着いたけれど、スープが
切れて閉店していた。近くのお店はどこ
だろう。
‣ ガイド本は持ち歩きたくない。
‣ お店のレビューを見たい。
‣ 不慣れな土地でも迷わずに行きたい。
ソリューション
‣携帯電話用
スープカレー店データベース
‣レビュー検索エンジン
+
「こんなサイトがあったらいいな」
http://soupcurry.info
http://soupcurry.info
サイト規模
全国のスープカレー店
484店舗を網羅
Google検索「スープカレー」第2位
(2008-08-03現在)
Google検索「スープカレー」第2位
(2008-08-03現在)
アクセス解析 (PCのみ)
携帯電話からのアクセス
61,234 PV/月
(2008年07月)
LOC: 1211行
soupcurry.info ツアー
トップページ
店舗情報ページ(1) - 店舗概要
店舗情報ページ(2) - レビュー検索
店舗情報ページ(3) - 付近のお店
携帯電話 - GPSで最寄りの店舗を検索
携帯電話 - GPSで最寄りの店舗を検索
携帯電話 - GPSで最寄りの店舗を検索
携帯電話 - 店舗情報
携帯電話 - 店舗情報
携帯電話 - 店舗情報
EZナビウォークと連携
EZナビウォークと連携
EZナビウォークと連携
レビュー検索
‣APIを利用
‣ Web検索 Yahoo! Japan
‣ blog検索 Technorati
‣定期的に巡回
‣検索ヒット数から有名度指標を
計算して表示
hotpepper.jp API
‣Web上にクーポンがある場合は
表示
‣電話番号をキーにして
クエリを発行
定休日の自動判定
‣定休日文字列から定休日を判定
‣ 火曜日(祝日の場合は翌日)
‣ 火曜日(祝日の場合は営業)
‣ 月曜日/第2,4土曜日
‣ 無休(年末年始を除く)/その他/不定
‣Rubyの柔軟な文字列処理:
わずか78行
運用
サイトポリシー
‣客観的情報サイトに徹する
‣自動化できる部分はどんどん自動化
‣レビュー検索, クーポン検索
‣負担なくデータを更新できるインタ
フェイス
(当初は緯度経度と電話番号のみを格
納していた)
‣技術遊びのテストベッド
とにかくおもしろそうなことをやる
管理画面 - トップ
各種リマインダ
管理画面 - 店舗情報編集
履歴
‣ 2003年ごろ 構想, プロトタイプ作成
‣ 2005/01/24
soupcurry.infoドメイン取得
‣ 2005/02/11 第1世代 リリース
(Ruby CGI, さくらインターネット)
‣ 2005/12/08 第2世代 開発開始
‣ 2006/01/24 第2世代 リリース
(Ruby on Rails, bluehost)
‣ 2008/01/19 サーバ移転
(site5.com)
フィードバック
‣ 20件のフィードバック (2008年7月)
‣ データの鮮度維持に不可欠
‣ 開店, 閉店, 誤情報の訂正, 臨時休業, 臨時
営業, 定休日・営業時間の変更, システム改
善の提案, ...
‣ スープカレーファンの方, お店の方からも
‣ 投稿フォーム設置により増加
(以前はメールのみ)
‣ サイト開設をきっかけに交流
大事なこと
世界がかわった
世界がかわった
‣スープカレー店を沢山覚えた
(覚えなくていいように作ったは
ずなのに・・・)
‣沢山の人が使ってくれている
‣スープカレー仲間ができた
‣サイトの構築・運営を自分の肌に
触れるものとして学んだ
こんなサイトがあったらいいな
それを形にするための強力な道具
Ruby
Ruby on Rails
soupcurry.infoの
もう一つの意味
携帯電話用サイト
キャリア毎に仕様が全然違う
携帯電話用サイトを作るには
大量の雑多なノウハウが必要
それらをモジュール化し
soupcurry.info から
切り離して公開
携帯電話用Railsプラグイン
jpmobile
http://jpmobile-rails.org
jpmobileが
紹介されています
実際のプロダクトにも
http://tabelog.com
日本Ruby会議2008
jpmobile について
メインセッションで発表
ガラパゴスに
線路を敷こう
携帯電話用Railsプラグイン
Jpmobile
しだら ようじ
SHIDARA Yohji
Lay Rails on “Galapagos”
Jpmobile: A Rails Plugin for Japanese Mobile Phones
http://flickr.com/photos/june29/2600992008/
http://flickr.com/photos/june29/2600166483
自分の話をこんなに沢山の人が聞い
てくださって、沢山のフィードバッ
クをもらえる。それも直接。
RubyKaigiってすごい。本当にす
ごいところなんだな。発表を終えて
から痛感しました。去年は当日ス
タッフとして参加して、今年は実行
委員としても参加して、なんだかわ
かったような気になっていたのです
が、このスケール、この一体感。本
当に大舞台で喋ってしまった!と。
世界が少しまわった気がしました。
http://d.hatena.ne.jp/darashi/20080626/1214493910
ここまでのまとめ
なぜ soupcurry.info を
つくったのか
「こんなサイトがあったらいいな」
結果
気がついたら世界がかわってた!
‣Ruby on Rails のご紹介
‣Rails による 私の 開発事例
‣コミュニティとのかかわり
日本Rubyの会
http://jp.rubyist.net?About
http://twitter.com/takahashim/statuses/881234363
入会案内
‣日本Rubyの会には、本会の趣旨に
賛同する個人ないし法人が、会員と
して参加することができます。入会に
際して、特に会費などは徴収しており
ません。日本Rubyの会メーリング
リストへ登録すれば、その時点で、
本会に入会したとみなされます。 登
録の前に、「日本Rubyの会とは」
および「日本Rubyの会会則」をよ
くご確認ください。
http://jp.rubyist.net?Admission
Ruby札幌
Ruby札幌とは
‣札幌にて Ruby に関する活動を
行っているコミュニティです。
Ruby勉強会@札幌 や 開発集会
@札幌、Ruby Sapporo
Night などのイベントを定期的
に開催しています。
‣From Sapporo, with Love
for Ruby.
http://ruby-sapporo.org
Rubyコミュニティと私(1)
‣2007-03-24
Ruby勉強会@札幌-2
‣2007-05-26
Ruby勉強会@札幌-3 発表
‣2007-06-09,10
日本Ruby会議2007 当日スタッフ
‣2007-08-13
Ruby札幌運営チーム結成
Rubyコミュニティと私(2)
‣2008-02-16
日本PostgreSQLユーザ会
北海道支部/Ruby札幌
合同セミナー
‣2008-06-20,21,22
日本Ruby会議2008
実行委員・メインセッション発表
(最初は発表とコミュニティ出展だけ
の予定だったが・・・)
‣2008-06-28
オープンソースカンファレンス2008
Hokkaido 発表
オンラインでの交流チャネル(1)
‣blog
http://d.hatena.ne.jp/darashi
‣twitter
http://twitter.com/darashi
‣ML(Mailing List)
オンラインでの交流チャネル(2)
‣Rails chat
http://andworkspace.net
‣ustream.tv
http://ustream.tv
‣irc
最初のきっかけは勉強会
気がついたら
世界がかわっていた!
‣Ruby on Rails のご紹介
‣Rails による 私の 開発事例
‣コミュニティとのかかわり
buzztter.com
twitter の
イマを切り取るサービス
twitter.com
http://twitter.com
「いまなにしてる?」で繋がる
コミュニケーションツール
http://twitter.com/darashi
buzztter.com
twitter の
イマを切り取るサービス
http://buzztter.com/ja 2008-08-04 03:48am
http://buzztter.com/ja 2008-07-24 00:45am
基本的なアイディア:
普段より多く言及されている
コトバを抽出する
扱うべきデータ量
‣ 2008年8月3日 buzztter調べ
‣ 387,595 updates/日
‣ 16,149.7 updates/時
‣ 269.2 updates/分
‣ データの大きさ (JSON response)
‣ 約13kB/20 updates
‣ 約240.8MB/日
‣ 約85.8GB/年
DB
解析
クローラ
言語推定
HOT通知bot
定時通知bot
ユーザ
Web UI
twitter.com
buzztter
入力データの厄介事
‣ある程度のリアルタイム性が要求
される:
‣最新の20更新しか入手できな
い。
‣取りこぼしたら終わり。
‣各国語が混在している。
‣言語推定が必要。
解析
‣直近1時間で頻出している
フレーズを抽出
‣過去の出現頻度と比較して
スコアを決定
‣言及数と言及者数を考慮
‣最近活発なものほど高いスコア
‣ゴミを除去するための細かな処理
Web UI
‣かなり素直な
Railsアプリケーション
‣Twitter検索エンジンとしても動作
‣Javascriptで自動更新
‣RSS出力あり
定時通知bot
‣30分ごとに上位のフレーズを送信
‣cronで定時実行
‣言語ごとにtwitterアカウントを用意:
‣ 日本語版 http://twitter.com/buzztter
‣ 英語版 http://twitter.com/buzztter_en
HOT通知bot
‣バースト状態を通知する。
‣スコアが閾値以上
‣直近8時間以内に通知していない
ベッドの横から世界に発信
自作PC
Core 2 Duo 6400
(2.13GHz)
Memory: 4GB
HDD: 500GB SATA
反響
アクセス解析
buzztterが
紹介されています
twitter上での反響(1)
‣ twitter、buzztter、twitter検
索、tumblr、はてブ。これらが手放せ
ない。
http://twitter.com/akio0911/statuses/387770042
‣ buzztterはtwitter-erの心を映す鏡
http://twitter.com/maybowjing/statuses/
344534932
‣ 相変わらずbuzztterはよく空気を読ん
でる。そもそも、そういう仕組みのモノ
なんだけど。
http://twitter.com/NStyles/statuses/335544352
twitter上での反響(2)
‣ buzzterだけで何が起きたかすべてわ
かる
http://twitter.com/packirara/statuses/876096752
‣ ばずったー便利だな。映画何やってるか
すぐ判る。
http://twitter.com/erinaceus/statuses/851255193
‣ ばずったーの反応速度はすごいなー
http://twitter.com/enryu951/statuses/866105443
‣ 30秒でbuzztterが「ゆれ」「地震」
を検出
http://twitter.com/colspan/statuses/864082227
精読・速読・buzztter
‣ (略) buzztter というサービスが存在す
るからだ。自分が「速読の Twitter」を
実行しなくても、このサイトを見れば
Twitter の動きが大まかにではあるが読
める。(略)
http://worstman.net/blog/088
‣ [twitter][comment]buzztterってめ
ちゃくちゃ偏ってるよ。あくまでもオレが
読んでる1500人強の全ログ傾向の印象だ
けど→このサイトを見れば Twitter の動
きが大まかにではあるが読める
http://b.hatena.ne.jp/otsune/20071024
系としてのbuzztter
メディアとしてのbuzztter
‣重大ニュースの速報
辞任, 事故, 訃報, ...
‣twitterユーザにとっての重大ニュー
ス
新商品, 新機能, 買収, 訃報, ...
‣twitterユーザが注目するテレビ番組
アニメ, お笑い, ドキュメンタリー, ...
‣災害情報
地震, 雨, 雷, 火災, 停電, 電車遅延, ...
buzztterが与える影響
‣ このbuzztterを見たあとでは、ばんごはんを餃
子にしても、あえて餃子を避けても負けな気がす
る。(意識した時点でもう精神が餃子の支配下に
置かれる)
http://twitter.com/hatoko/statuses/281085152
‣ buzztter入りしているのを見て、なんだか久々
に赤福が食いたくなってきた
http://twitter.com/AIce/statuses/346543102
‣ buzztterで思い出したけど、今日は鰻でした
http://twitter.com/ozon/statuses/866961564
履歴
‣2007-04-12 プロジェクト開始
‣2007-04-24 リリース
‣2007-04-28 bot リリース
‣2007-05-01 フレーズ抽出の実装
‣2007-05-22 類似発言抽出機能
‣2007-06-05 英語版リリース
‣2008-06-12 全面リニューアル
buzztterに対するツッコミ
‣はい、buzztterダウト!
http://twitter.com/night16/statuses/363321482
‣buzztter は毛ずきらしい
http://twitter.com/kommm/statuses/362095092
‣@buzztter自重しろwwwwww
http://twitter.com/scudroid/statuses/339228382
buzztterに言わせたい
‣.@buzztterが北海道という単語を
キーワードにするのが僕の夢。
http://twitter.com/smokeymonkey/statuses/
386516592
‣buzztter に「HOT: 女装」と言わ
せるライフハック。
http://twitter.com/cress_cc/statuses/349727262
buzztterの可能性
‣ニュース速報より早い速報
‣草の根的ニュースメディア
‣特定のユーザ層のためのニュース
メディア
‣ゆるいコミュニケーションハブ
‣情報のサーキュレータ的役割
まとめ
Ruby on Rails をつかって
自分好み の Webサービス を
作ってみませんか!
世界がかわるかも!
Ruby / Rails の始め方
続きは
明日のハンズオンで!

Ruby on Rails でつくるアタシ好みの愛され Web サービス