メイドめーる

だいすけ ふるかわエンジニア at フリーランス
萌える Rails の作り方 メイドさんはこうやって働いている! 古川大輔 http://mogya.com
自己紹介
古川大輔
大怪獣もぎゃ
「いいめも」作った人です。
[object Object],[object Object]
フリーランス 一年生
お仕事 募集中!
メイドめーるについて
... の前に。
... それは 関西 Ruby 会議 の 懇親会でのこと。
「 50 分くらいしゃべってみませんか?」 「よろこんで!」
・・・
         ___ _        /    u  \       /  \    /\     /  し (>)  (<) \      |  ∪    ( __ 人 __ )   J |   _______ _         \   u    `⌒ ´    /  | |            |     ノ           \  | |            |   / ´                  | |            |   |     l              | |            |          ___ _        /    u  \       /  \    ─\    チラッ     /  し (>)  (●) \      |  ∪    ( __ 人 __ )   J |   _______ _      \   u    `⌒ ´    /  | |            |     ノ           \  | |            |   / ´                  | |            |   |     l              | |            | 試しに読んでみるお。
           ___ _        / :::::::::::::::: \       / ::::::─ 三三─\     / ::::::::  ( ○)三(○)\      |:::::::::::::::::::: ( __ 人 __ ) ::::    |   _______ _      \ :::::::::     |r┬-|     , /  .| |            |     ノ ::::::::::::    ` ー '´    \  | |            |   / :::::::::::::::::::::               | |            |   |:::::::::::::::::  l                | |            | 20 分しかないお・・・
ゆっくり進行に ご協力ください 途中の質問も大歓迎。
今日の予定 ,[object Object],[object Object],[object Object],[object Object],[object Object]
メイドめーるについて
メイドさんが起こしてくれるサービス
メールで予定を登録
Gigazine
 
Award on rails 2008 協賛企業賞
実装の話
linux Ruby On Rails postfix Mail fetcher POP3 Mextractr lighttpd gcal api Apache
linux Ruby On Rails postfix Mail sender SMTP lighttpd gcal api Rake タスク
メールの 受信
postfix からアプリケーションに メールを渡す /etc/aliases hoge: "|(cd /var/hoge && ruby hoge_app)"
rails に渡す /etc/aliases hoge: "|(  export RAILS_ENV=amp;quot;productionamp;quot;   && cd /var/maidmail   && ruby script/runner amp;quot;SchduleMailReceiver.receive(STDIN.read)amp;quot; )"
受け取る ,[object Object],[object Object],[object Object],[object Object],[object Object]
問題 例外を吐くと .... This is the Postfix program at host snares.example.com. : The Postfix program >test@example.com< : Command died with status 1: &quot;/var/MailApp/mailserver/test.rb&quot;. Command output: /usr/lib/ruby/1.8/logger.rb:518:in `initialize': Permission denied - /var/MailApp/mailserver/../log/MailServer.log (Errno::EACCES) from /usr/lib/ruby/1.8/logger.rb:518:in `open'  from /usr/lib/ruby/1.8/logger.rb:518:in `open_logfile'  from ユーザー宛にエラーメール
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],対策:例外は出さない。
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],error_catch{ 普通の処理 }
問題 2 重い。
対策 ,[object Object],[object Object]
require 'net/pop' task :mail_fetcher => [:environment] do @config = YAML.load(IO.read(&quot;#{RAILS_ROOT}/config/mail_fetcher.yml&quot;)) daemonize() loop do pop = Net::POP3.new(@config[RAILS_ENV]['server']) pop.start(@config[RAILS_ENV]['username'],  @config[RAILS_ENV]['password']) unless pop.mails.empty? pop.each_mail do |m| IncomingMailHandler.receive(m.pop) m.delete end end pop.finish sleep(SLEEP_TIME) end end
メールが少ないのだったら、  ruby script/runner  でいいかも ( ぼそ )
メールの処理 ここまで
Google カレンダー
GCalAPI
server = GoogleCalendar::Service.new(                GCAL_ACCOUNT, GCAL_PASSWORD) calendar = GoogleCalendar::Calendar.new(server, GCAL_FEED) event = calendar.create_event event.st = Time.parse(&quot;2008-12-04 22:46:39&quot;) event.en = Time.parse(&quot;2008-12-04 23:46:39&quot;) event.where = &quot; 場所 &quot; event.title = &quot; 予定 &quot; event.desc =&quot; 詳細 &quot; event.save! GCalAPI :予定の登録
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],GCalAPI :予定の取得 event.st  :  2008-12-04 22:46:39 event.en  :  2008-12-04 23:46:39 event.where  :  &quot; 場所 &quot; event.title  :  &quot; 予定 &quot; event.desc  :  &quot; 詳細 &quot;
Google アカウント認証
よくあるインターフェイス 「 Google カレンダーのユーザー名とパスワードを入力してください」
予想される展開
Google アカウント認証 ,[object Object],[object Object],[object Object]
Google アカウント認証 AuthSub   Web アプリケーションの  ための認証方法  
 
 
 
ユーザーを Google アクセス要求 URL に誘導 ユーザーが「許可」を押す アプリケーション アプリケーションに「一時トークン」が渡される 「一時トークン」を「永続トークン」と交換してもらう 「永続トークン」をつかって Google サービスにアクセス AuthSub のながれ
https://www.google.com/accounts/AuthSubRequest ?next=http://www.maidmail.jp/login/google_auth_responce &scope=http://www.google.com/calendar/feeds/ &secure=0&session=1&hd=default Google アクセス要求 URL 認証成功時に戻ってくる URL アクセスしたいサービスごとの URL
require 'gcalapi' require 'googlecalendar/auth_sub_util' @uri = GoogleCalendar::AuthSubUtil.build_request_url( 'http://www.example.com/responce',  'http://www.google.com/calendar/feeds/', false, #use_secure true #use_session )   GCalAPI で生成
 
成功時のレスポンス http://www.maidmail.jp/login/google_auth_responce ?Token=XXXX 一時トークン
トークンの交換 authsub_token = '' one_time_token = params[:token] session_token =     GoogleCalendar::      AuthSubUtil.        exchange_session_token(one_time_token)
トークンを使ってアクセス gserver = GoogleCalendar::ServiceAuthSub.new(user.calendarToken) calendar = GoogleCalendar::Calendar.new(gserver,     GoogleCalendar::Calendar::DEFAULT_CALENDAR_FEED) event = calendar.create_event event.st = Time.parse(&quot;2008-12-04 22:46:39&quot;) event.en = Time.parse(&quot;2008-12-04 23:46:39&quot;) event.where = &quot; 場所 &quot; event.title = &quot; 予定 &quot; event.desc =&quot; 詳細 &quot; event.save!
Google カレンダーの話 ここまで。
Mextractr について
Mextractr
http://api.emetadata.net/mextractr ?text=[[text]] &out=[[out]] &apikey=[[apikey]] 使い方 # POST でも動きます。 パラメータ 形式 意味 text UTF8 で URL エンコードした文字列 メタデータ抽出元の文字列 out 現状 &quot;atom&quot; だけ 出力データの形式:デフォルトは atom apikey 文字列 Mextractr の API キー(必須)
<?xml   version=&quot;1.0&quot;   encoding=&quot;utf-8&quot;?> :      <gd:extendedProperty   name='what'   value=&quot; 定時株主総会 &quot;/>      <gd:who   valueString=&quot;* メタデータ株式会社 &quot;/>      <gd:who   valueString=&quot; 野村直之 &quot;/>      <gd:when   startTime=&quot;2008-10-23&quot;   valueString=&quot;10 月 23 日 &quot;/>      <gd:where   valueString=&quot; 東京都墨田区本所 &quot;/>      <gd:where   valueString=&quot; 弊社本店 A 会議室 &quot;/>    </entry> </feed> レスポンス
$ sudo gem install mextractr_webapi Bulk updating Gem source index for: http://gems.rubyforge.org Successfully installed mextractr_webapi-0.0.1 1 gem installed gem : mextractr_webapi mextractr_result = MextractrWebApi.new(MEXTRACTR_API_KEY).parse(text) mextractr_result['when'][0]['startTime'] mextractr_result['where'][0]['valueString']
FAQ 解析精度? 時刻? 日々精進。 明日は晴れだ!
Mextractr の話 ここまで
( おまけ ) デザインについて
私がやりました。 今は反省している。
2ch でも絶賛! 【ネット】メイドさんが Google カレンダーの予定をメールで届けてくれる「メイドめーる」 6  :なまえないよぉ~ : 2008/11/11( 火 ) 13:09:10 ID:TJ3qrp7g このメールの内容担当してるヤツは 30 代独身の堅太りなおっさんなんだろ?  11  :なまえないよぉ~ : 2008/11/11( 火 ) 19:20:14 ID:kf6HEfeT 絵とかデザインがいまいちなのが痛い。
ふとってないもん!
↑ メイドさんの出所
「夢夢色 TOWN 」
個人・ 商用 どちらでも利用可。 利用なさる方が全責任を持つこと。 利用に際し、第三者や当局などから当サイトに問い合わせやクレームが一切来ないように配慮しなければなりません。 連絡不要 ライセンシー不要 著作権表示不要 リンク不要 使用の際の 使用報告不要 加工可 すばらしい利用条件
おまけ2 なんでメイド?
当初の予定: メールで Google カレンダーに 予定を書くアプリ
Google カレンダーって、 利用者少なくね?
集客力が必要!
秘書メール?
 
秘書よりメイドのほうが注目されるよね
萌え系 WEB アプリケーション 「メイドめーる」
ねらい通り!
[object Object],[object Object],[object Object],主な反響
 
・・・だれか技術を見てくれ
萌え系アプリは、 いろいろたいへんです。 結論:
ご静聴 ありがとう ございました
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],興味を持っていただいた方のための URL :
1 of 87

Recommended

モテる! Node.js でつくる twitter ボット制作 by
モテる! Node.js でつくる twitter ボット制作モテる! Node.js でつくる twitter ボット制作
モテる! Node.js でつくる twitter ボット制作hecomi
9.7K views54 slides
MT LOVE! by
MT LOVE!MT LOVE!
MT LOVE!Kaori Kotobuki
2.7K views31 slides
CLR/H 第56回勉強会 LT「Ruby向けmultisetライブラリのご紹介」 by
CLR/H 第56回勉強会 LT「Ruby向けmultisetライブラリのご紹介」CLR/H 第56回勉強会 LT「Ruby向けmultisetライブラリのご紹介」
CLR/H 第56回勉強会 LT「Ruby向けmultisetライブラリのご紹介」Hiro H.
1.8K views34 slides
Blevins ced macon by
Blevins ced maconBlevins ced macon
Blevins ced maconMark Blevins
285 views13 slides
Den nye vandsektor by
Den nye vandsektorDen nye vandsektor
Den nye vandsektorKristian Beyer
475 views16 slides
Piranhas fecha 3 by
Piranhas fecha 3Piranhas fecha 3
Piranhas fecha 3saquesiquiereempatar
259 views12 slides

More Related Content

Similar to メイドめーる

Ruby on Rails Tutorial Chapter8-10 by
Ruby on Rails Tutorial Chapter8-10Ruby on Rails Tutorial Chapter8-10
Ruby on Rails Tutorial Chapter8-10Sea Mountain
1.3K views45 slides
Title by
TitleTitle
Titlestucon
287 views54 slides
C++コミュニティーの中心でC++をDISる by
C++コミュニティーの中心でC++をDISるC++コミュニティーの中心でC++をDISる
C++コミュニティーの中心でC++をDISるHideyuki Tanaka
12.4K views66 slides
Okinawa.rb 第2回勉強会 by
Okinawa.rb 第2回勉強会Okinawa.rb 第2回勉強会
Okinawa.rb 第2回勉強会Naoki Takaesu
1.8K views33 slides
Ruby Sapporo Night Vol4 by
Ruby Sapporo Night Vol4Ruby Sapporo Night Vol4
Ruby Sapporo Night Vol4Koji SHIMADA
1K views119 slides
私はいかにしてpull request を行ったか - あるいは social development について by
私はいかにしてpull request を行ったか - あるいは social development について私はいかにしてpull request を行ったか - あるいは social development について
私はいかにしてpull request を行ったか - あるいは social development についてよしだ あつし
2.6K views78 slides

Similar to メイドめーる(20)

Ruby on Rails Tutorial Chapter8-10 by Sea Mountain
Ruby on Rails Tutorial Chapter8-10Ruby on Rails Tutorial Chapter8-10
Ruby on Rails Tutorial Chapter8-10
Sea Mountain1.3K views
Title by stucon
TitleTitle
Title
stucon287 views
C++コミュニティーの中心でC++をDISる by Hideyuki Tanaka
C++コミュニティーの中心でC++をDISるC++コミュニティーの中心でC++をDISる
C++コミュニティーの中心でC++をDISる
Hideyuki Tanaka12.4K views
Okinawa.rb 第2回勉強会 by Naoki Takaesu
Okinawa.rb 第2回勉強会Okinawa.rb 第2回勉強会
Okinawa.rb 第2回勉強会
Naoki Takaesu1.8K views
Ruby Sapporo Night Vol4 by Koji SHIMADA
Ruby Sapporo Night Vol4Ruby Sapporo Night Vol4
Ruby Sapporo Night Vol4
Koji SHIMADA1K views
私はいかにしてpull request を行ったか - あるいは social development について by よしだ あつし
私はいかにしてpull request を行ったか - あるいは social development について私はいかにしてpull request を行ったか - あるいは social development について
私はいかにしてpull request を行ったか - あるいは social development について
よしだ あつし2.6K views
deviseを利用した認証について@Minamirb by Jun Fukaya
deviseを利用した認証について@Minamirbdeviseを利用した認証について@Minamirb
deviseを利用した認証について@Minamirb
Jun Fukaya4.1K views
JSONでメール送信 | HTTP API Server ``Haineko''/YAPC::Asia Tokyo 2013 LT Day2 by azumakuniyuki 🐈
JSONでメール送信 | HTTP API Server ``Haineko''/YAPC::Asia Tokyo 2013 LT Day2JSONでメール送信 | HTTP API Server ``Haineko''/YAPC::Asia Tokyo 2013 LT Day2
JSONでメール送信 | HTTP API Server ``Haineko''/YAPC::Asia Tokyo 2013 LT Day2
azumakuniyuki 🐈1.9K views
web server by soestudio
web serverweb server
web server
soestudio1.4K views
SQLマッピングフレームワーク「Kobati」のはなし by Kazuki Minamitani
SQLマッピングフレームワーク「Kobati」のはなしSQLマッピングフレームワーク「Kobati」のはなし
SQLマッピングフレームワーク「Kobati」のはなし
Kazuki Minamitani1.3K views
Re: 運用に自動化を求めるのは間違っているだろうか by Masahito Zembutsu
Re: 運用に自動化を求めるのは間違っているだろうかRe: 運用に自動化を求めるのは間違っているだろうか
Re: 運用に自動化を求めるのは間違っているだろうか
Masahito Zembutsu23.6K views
RubyStation(仮) by yhara
RubyStation(仮)RubyStation(仮)
RubyStation(仮)
yhara801 views
2008.10.18 L4u Tech Talk by mitamex4u
2008.10.18 L4u Tech Talk2008.10.18 L4u Tech Talk
2008.10.18 L4u Tech Talk
mitamex4u2.4K views
長いの by emasaka
長いの長いの
長いの
emasaka969 views
HerokuでRails3.2 we love herokuの事例 by Naoto Koshikawa
HerokuでRails3.2 we love herokuの事例HerokuでRails3.2 we love herokuの事例
HerokuでRails3.2 we love herokuの事例
Naoto Koshikawa2.4K views
CircleCIを使ったSpringBoot/GAEアプリ開発の効率化ノウハウ by Takeshi Mikami
CircleCIを使ったSpringBoot/GAEアプリ開発の効率化ノウハウCircleCIを使ったSpringBoot/GAEアプリ開発の効率化ノウハウ
CircleCIを使ったSpringBoot/GAEアプリ開発の効率化ノウハウ
Takeshi Mikami862 views
Rails勉強会東京第35回プラグインLt大会@Unshiu by gaooh
Rails勉強会東京第35回プラグインLt大会@UnshiuRails勉強会東京第35回プラグインLt大会@Unshiu
Rails勉強会東京第35回プラグインLt大会@Unshiu
gaooh477 views
Endo kitura on_bluemix by joohoun song
Endo kitura on_bluemixEndo kitura on_bluemix
Endo kitura on_bluemix
joohoun song758 views
Ruby on Rails Tutorial Chapter5-7 by Sea Mountain
Ruby on Rails Tutorial Chapter5-7Ruby on Rails Tutorial Chapter5-7
Ruby on Rails Tutorial Chapter5-7
Sea Mountain1.4K views

More from だいすけ ふるかわ

飲食店サイトのスクレイピング by
飲食店サイトのスクレイピング飲食店サイトのスクレイピング
飲食店サイトのスクレイピングだいすけ ふるかわ
2.5K views54 slides
スタートアップツールチラ見せナイト エニタイムズ by
スタートアップツールチラ見せナイト エニタイムズスタートアップツールチラ見せナイト エニタイムズ
スタートアップツールチラ見せナイト エニタイムズだいすけ ふるかわ
8.1K views21 slides
FireFoxによるWebデザイン by
FireFoxによるWebデザインFireFoxによるWebデザイン
FireFoxによるWebデザインだいすけ ふるかわ
973 views21 slides
Ti.developers.meeting by
Ti.developers.meetingTi.developers.meeting
Ti.developers.meetingだいすけ ふるかわ
1.7K views30 slides
Titanium mobile by
Titanium mobileTitanium mobile
Titanium mobileだいすけ ふるかわ
1.2K views18 slides
LibraHack後の スクレイピングを 考える by
LibraHack後の スクレイピングを 考えるLibraHack後の スクレイピングを 考える
LibraHack後の スクレイピングを 考えるだいすけ ふるかわ
1.7K views18 slides

More from だいすけ ふるかわ(20)

スタートアップツールチラ見せナイト エニタイムズ by だいすけ ふるかわ
スタートアップツールチラ見せナイト エニタイムズスタートアップツールチラ見せナイト エニタイムズ
スタートアップツールチラ見せナイト エニタイムズ

Recently uploaded

SSH応用編_20231129.pdf by
SSH応用編_20231129.pdfSSH応用編_20231129.pdf
SSH応用編_20231129.pdficebreaker4
184 views13 slides
「概念モデリング自動化に向けた第一歩」 ~ ChatGPT・Open AI 活用による開発対象のモデル化 by
「概念モデリング自動化に向けた第一歩」 ~ ChatGPT・Open AI 活用による開発対象のモデル化「概念モデリング自動化に向けた第一歩」 ~ ChatGPT・Open AI 活用による開発対象のモデル化
「概念モデリング自動化に向けた第一歩」 ~ ChatGPT・Open AI 活用による開発対象のモデル化Knowledge & Experience
12 views34 slides
The Things Stack説明資料 by The Things Industries by
The Things Stack説明資料 by The Things IndustriesThe Things Stack説明資料 by The Things Industries
The Things Stack説明資料 by The Things IndustriesCRI Japan, Inc.
50 views29 slides
01Booster Studio ご紹介資料 by
01Booster Studio ご紹介資料01Booster Studio ご紹介資料
01Booster Studio ご紹介資料ssusere7a2172
345 views19 slides
今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20... by
今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20...今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20...
今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20...NTT DATA Technology & Innovation
101 views42 slides
速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料) by
速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料)速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料)
速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料)NTT DATA Technology & Innovation
17 views38 slides

Recently uploaded(11)

SSH応用編_20231129.pdf by icebreaker4
SSH応用編_20231129.pdfSSH応用編_20231129.pdf
SSH応用編_20231129.pdf
icebreaker4184 views
「概念モデリング自動化に向けた第一歩」 ~ ChatGPT・Open AI 活用による開発対象のモデル化 by Knowledge & Experience
「概念モデリング自動化に向けた第一歩」 ~ ChatGPT・Open AI 活用による開発対象のモデル化「概念モデリング自動化に向けた第一歩」 ~ ChatGPT・Open AI 活用による開発対象のモデル化
「概念モデリング自動化に向けた第一歩」 ~ ChatGPT・Open AI 活用による開発対象のモデル化
The Things Stack説明資料 by The Things Industries by CRI Japan, Inc.
The Things Stack説明資料 by The Things IndustriesThe Things Stack説明資料 by The Things Industries
The Things Stack説明資料 by The Things Industries
CRI Japan, Inc.50 views
01Booster Studio ご紹介資料 by ssusere7a2172
01Booster Studio ご紹介資料01Booster Studio ご紹介資料
01Booster Studio ご紹介資料
ssusere7a2172345 views
今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20... by NTT DATA Technology & Innovation
今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20...今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20...
今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20...
速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料) by NTT DATA Technology & Innovation
速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料)速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料)
速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料)
さくらのひやおろし2023 by 法林浩之
さくらのひやおろし2023さくらのひやおろし2023
さくらのひやおろし2023
法林浩之94 views
Web3 Career_クレデン資料 .pdf by nanamatsuo
Web3 Career_クレデン資料 .pdfWeb3 Career_クレデン資料 .pdf
Web3 Career_クレデン資料 .pdf
nanamatsuo14 views
Windows 11 information that can be used at the development site by Atomu Hidaka
Windows 11 information that can be used at the development siteWindows 11 information that can be used at the development site
Windows 11 information that can be used at the development site
Atomu Hidaka76 views
SNMPセキュリティ超入門 by mkoda
SNMPセキュリティ超入門SNMPセキュリティ超入門
SNMPセキュリティ超入門
mkoda188 views

メイドめーる