MextractrAPIを使ってみた。

 文章を渡すとそこから地名や日付を抽出してくれる、Mextractr WebAPIというAPIがあります。

WEBにある文章から、そこに書かれている日付や場所、金額などが抽出できると、その内容をカレンダーに転記するとか、金額だったらうまい棒○本分に換算して表示するとか、いろいろとワクワクする展開が考えられますよね。



実は、自分も過去に同じようなことを考えて、未踏ソフトウェア創造事業に提案させていただいたことがあります。このときは、やり方にあまり斬新さがなかったので未踏的じゃない、ということでNGだったのですけど。



解析機能を提供していただけるのであれば、実現したいアプリケーションのアイデアはいくつもあるので、早速使ってみました。

使ってみた

 サンプルコードまで出していただいているので、使うのは難しくありません。

Mextractr_api_url = 'http://api.emetadata.net/mextractr?text=[[text]]&out=[[out]]&apikey=[[apikey]]'
#解析して欲しい文字列をエンコードして
text_encoded = CGI.escape( CGI.escapeHTML(text.toutf8) )
#Mextractr APIを呼び出す
uri = URI.parse( Mextractr_api_url.gsub('[[text]]',text_encoded).gsub('[[out]]','atom').gsub('[[apikey]]',@apikey) )
response = nil
Net::HTTP.start(uri.host,uri.port){|http|
response = http.post(uri.path,uri.query)
}

で、帰ってきた結果をrexmlで解析してあげればOKです。



サンプルコードでは、結果をGETでとってきていたのですけど、URLに解析対象の文字列を丸ごと含むのはきついと思うので、POSTするようにしました。試しに投げてみたら値が帰ってきているので、きっとこれでOKです(笑)



ということで、結果のxmlをハッシュに変換するところまでで一つのクラスにまとめてみました。クラスを作って、parseメソッドにテキストを渡したら結果が帰ってきます。

mextractrAPI.rb

[名前] MextractrAPI
[概要] Mextractrサービス(http://api.emetadata.net/)をrubyから使うためのラッパークラス
[作成] 2008-08-27 古川大輔(mogya at mogya.com)
[用法] http://api.emetadata.net/からAPIキーを取得しておく必要があります。
#取得したAPIキーをつかってMextractrAPIクラスを生成
api = MextractrAPI.new('xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx')
#解析したいテキストを渡す
result = api.parse(text)
結果がどのように格納されているかは、 pp result して見てください。

Mashup Awards 4に応募しようと思っている方もそれ以外の方も、自由にお使いください(^^)

気づいたこと

複数の要素を検知したときに、重要度とか確からしさをつけて欲しい。


 文章中に日付とか場所が複数あった場合、それらは並列されて帰ってきます。

"where"=>
[{"georss:point"=>"42 -104.1", "valueString"=>"沖縄"},
{"georss:point"=>"13.15 144.5", "valueString"=>"グアム"},
{"georss:point"=>"13.15 144.5", "valueString"=>"グアム"}],
"when"=>
[{"valueString"=>"27日", "startTime"=>"2008-08-27"},
{"valueString"=>"2009年度", "startTime"=>"2009-01-01"}],

 個人情報フィルタではこれでいいのだと思いますけど、文章からメタデータを取り出す上では、どれか一個、代表値が欲しいです。

たとえば、「日時:」で始まるデータは重要度が高いとか、日付の後ろに時刻まで書いてあったら確からしさが高いとか、そういう情報を付加していただけると嬉しいです。



whenで時刻は検知してくれないの?


 今のところ、whenとして帰ってくるのは日付だけみたいです。

「来る5月23日10時から、定時株主総会を墨田区の弊社本店A会議室にて開催いたします。」と渡しても、2009/5/23までしか見ていただけません。

日付しか返さないのだったらstartTimeじゃなくてstartDateのような。



バージョンアップして時刻も対応していただけることを期待しております(^^)


gcalapiで”Invalid date/time value”(GoogleCalendar::EventInsertFailed)

rubyからGoogleCalendarにアクセスできるgcalapiを使ったアプリケーションを書いているのですが、こんなエラーが出て苦労しました。


/usr/lib/ruby/gems/1.8/gems/gcalapi-0.1.1/lib/googlecalendar/event.rb:130:in `save!’: [Line 8, Column 106, element gd:when] Invalid date/time value. (GoogleCalendar::EventInsertFailed)

from mail2gcal.rb:87:in `from_mail’

from mail2gcal.rb:102

from /usr/lib/ruby/1.8/net/pop.rb:528:in `each’

from /usr/lib/ruby/1.8/net/pop.rb:528:in `each_mail’

from mail2gcal.rb:97

要するに、GoogleCalendarにポストしたら “Invalid date/time value”といわれました、ということらしい。

Googleのドキュメントをあさると、

Invalid date/time value

The value you entered is not a valid date/time. Please enter a date and time in the correct format: YYYY-MM-DDThh:mm:ss. For example, “1975-09-25T06:20:00” is a valid date/time value, but “June 2005 5pm” is not.

(Invalid date/time value | Google Base Help Centre)

というのを発見。



「DateTimeは”1975-09-25T06:20:00″のフォーマットで渡してね」ということ。

そんなこと言われてもgcalapiにはDate型を渡しているし、うまくいく場合もあるからgcalapi側が変な形式のデータを渡しているとは考えにくい。ソース見ても、dt.iso8601 ってやっているし。





 試行錯誤した結果、 event.enを渡さないとエラーになるらしいことが判明。

event.st = Time.parse(yaml[“st”].to_s) if yaml.has_key?(“st”)

# event.en = Time.parse(yaml[“en”].to_s) if yaml.has_key?(“en”)



 gcalapiのサンプルについているmail2gcalに対して、

st: 2008-09-06 19:20:36

title: title of an event

desc: description of an event

where: location of an event

というメールを投げると再現します。



gcalapiとしては、開発者が渡したデータを適切に変換してGoogleCalendarに渡して、その結果帰ってきたエラーを適切に報告していただけているのだから、別にgcalapiが悪いわけじゃないと思うのですが。はまったので一応メモということで。



こういうのを調べるとき、原因がgcalapiや自分のアプリにあるのか、それともGoogleCalendarにあるのか切り分けるために、gcalapiがポストしたデータを見る方法ってないものでしょうか。パケットキャプチャ以外で。


atom形式のページをFirefoxで見る

Firefox3(たぶん2.0以降ずっと)、atom形式で送信されるページを開くと、rssフィードなんだろう、ということでライブブックマークに追加しようとします。

あるいは、ご自分でRSSリーダーをLivedoorReaderとかに変えている人は、そっちの画面が出るかもしれません。

この挙動、便利なときは便利なのですが、ATOM形式で結果を返すWEB APIをテストしたいときには、余計なお世話です。ATOM形式だからってRSSフィードだとは限らないですやん。いいからソースを見せてっ!


Firefoxの設定で、Webフィードの所を「Firefoxでプレビュー表示」にすると、処理を毎回聞いてくれるようになります。

 

 

 で、この状態で右クリックしてソースを表示させると….

ちゃんとrssのソースを表示してくれます。

 

RSSをブラウザで開いたときどう見えるべきかは、けっこう議論のある所みたいですが、少なくともソースとしてみたら元のファイルが見えるというのは、なかなかいい落としどころのような気がします。

Re:ボランティア

スターロジックの羽生さんというと、学生時代にnifty-serveのフォーラムで大変お世話になっておりました。勝手に議論を挑んで負け続けていただけとも言いますがw

自分が思うところについてものすごく深く考えておられる方なので、外から議論を挑んでも必ずこの人のフィールドに引っ張り込まれて絶対に勝てなくなっちゃうのです。懐かしいなぁ。

で、その羽生さんがボランティア活動(オープンソース活動)について語っていて、その話がとても興味深かったです。

何故かというと、給料が出ているから出来ることであって、仮に売上がゼロであればそのような悠長なことは言ってられないからです。乱暴なことをいえば「そんなことをしている会社には支払いはしない!」とお客様に言われたらどうなるのかということです。

(株式会社スターロジックの羽生章洋が書いてるブログ:ボランティア – livedoor Blog(ブログ))

 どうなるのかって、どうもなりません。

 人月いくらでお客様にエンジニア派遣しているのならともかく、何らかの成果物に対してお金を払っていただいている以上、成果物をどんな時間配分で開発しようと、それは自社の自由です。

 「ボランティア活動に使っている分をケチったら安くできるでしょ」と言われたのであれば、「じゃあウチじゃなくてそういう会社に頼んでください」と言えるだけの価値を提供してないといけないのです。

….いや、してなくてもいいのですけど、そうすると会社は常に価格競争ですから、その状態で社員のボランティア活動に理解を示すのは難しいかもしれないですね。

ともあれ、ここまでは羽生さんも記事に書かれているとおりだと思います。

ボクとしては、ボランティア活動は「自分のやりたいこと」に置き換えられると思っていて、結局この命題は、どうやってお金を稼ぎつつ、自分のやりたいことをやるかに帰着すると思っています。で、ボクがどうしているのか、どうするつもりなのか、ボクなりの答案です。


 自分は、お客さんと契約するときにこう言っています。

「自分の提供する価値がお値段に見合わないと思ったらそう言ってください。改善を試みますから。

でも、それでも納得がいかないと思ったら、そのときは無理をせずに契約を切ってください。」



 これは、いきなり切るのは勘弁してください、というお願いでもあるのですが^^;

同時に、改善を考えるのはボクです、という宣言でもあります。

 お客様にお願いするのは、「納得いかん」と事情を説明していただくところまで。

ご不満に対して作業のやり方を変えるのか、他のお仕事やボランティア活動を縮小して時間をつっこむのか、それを考えるのはボクの役割です。

お客様が改善結果に納得できないときは、改善方法について口出しするのではなくて、契約を切ってください、という宣言です。

 会社員でいた頃は、ここまで言い切ることができませんでした。会社に納得してもらえる成果を出せなかったら上司の指導をいただいて改善せざるを得ませんでしたし、時には、べつに成果に問題が無くても、お客様のご要望とやらで非効率な作業の仕方を受け入れざるを得ないときもありました。

#具体的には、機密保持のためにWEBサイトは一切見ちゃ駄目とかですね。



 もちろん、有用な指導をたくさんいただきましたし、そこで学んだことがなかったら今の自分がなかったのも事実です。

 でも、そういう指導をいただく見返りに、自分が効率的と思えない作業の仕方も受け入れないといけない関係に疲れてしまったので、本当にそうしないといけないの?眠かったらお昼寝する仕事のやり方は本当に社会に受け入れられないの?というのを試す意味で、会社を辞めてフリーランスになりました。


 あれ。話がずれた。そういうわけで、ごく単純に「自分の提供する物に見合う価値がないと思ったら契約切ってください」という原則に立ち返ると、ボランティアだろうとお客様のための開発だろうと、位置づけは同じだと思うのです。

もっと言うと、ヨメと過ごす時間も子供(いませんけど)と過ごす時間も一緒。自分という有限のリソースをどこにどれだけ配分するのが一番幸せになれるか、その配分について、関係者の要望を聞くことはあっても最後に決断するのは自分です。



 そうなっていないとしたら、そのことが問題で、自分は会社にいる限りこの矛盾が解決できないと思ったので、会社を辞めて、自分でリソース配分のできる立場になることにしました。

 以上、ボクの答案です。



 本当は、(お客様:会社)=(会社:社員)の置き換えが成立するはずなので、会社にいたってこの原則を貫けて良さそうなものなのですけど。肝心の「価値がないと思ったら契約切ってください」というのが、会社は簡単にクビを切れないせいで成立しなくなっています。この辺から、いろんな矛盾が生じているのかもしれないですね。


グーグルにNO!と言う方法

この記事のまとめ:ストリートビューがおかしいと思うのであれば、今すぐ、Deliciousのアカウントを取得して、GlobalVoicesの記事をブックマークするべきです。


Google マップ ストリートビューのプライバシー問題に関して、アンカテの中の人がGJなことをされています。

私自身は正直言って、この感覚にはピンと来ない所もあります。でも、おそらく、そういう自分の感覚は、日本人の標準とは相当ずれてるんだろうなと思ってます。

でも、感覚が違うならそれをちゃんと説明すべきだと思っていた所で、このエントリを目にしました。そこで、すぐに Global Voices のサルツバーグさんにメールして、これを翻訳していただきました。

普通は、Global Voicesでは、「こういう面白いエントリがあるよ」と紹介するまでに留めていて、実際にそれを翻訳するかどうかは、サルツバーグさんをはじめとする翻訳スタッフの判断にまかせているのですが、今回は初めて「これはぜひ翻訳してください」と強くお願いしました。
(グーグルにNO!と言えるニッポン – アンカテ)

実はボクも、違和感にピンとこない部分があったりするのですが。でも、

このエントリは、相手が違う文化、違う常識を持っていることを前提としていて、そういう相手に理解してもらえるように説明している所が素晴しいと思ったからです。

という点には賛成です。

文化の違う人たちに意見を伝えるためには、この姿勢が必須です。ここまで来たら、意見を伝えるまであと一歩だと思うのです。あと一歩ってなにかというと、おかしいと思ったら大きな声を出すこと。

ストリートビューがおかしいと思うのであれば、今すぐ、Deliciousのアカウントを取得して、GlobalVoicesの記事をブックマークするべきです。

ご存じの方は多いと思いますが、Deliciousはデファクトスタンダードのソーシャルブックマークサービスです。DeliciousでPopular Bookmarks(はてなブックマークでいうところのホットエントリ)になれば、世界レベルで話題になります。それで初めて、日本以外の国の人にも、ああ、このサービスおかしいと思う人がいるんだな、と認知してもらうことができます。

本来だったら、おかしいと思うんだったら英語でホットエントリを書け、とご無理ごもっともな事を言わないといけないところだったのですが、樋口さんessaさんの連係プレイで、何がどうおかしいのかを、英語圏の人に伝える準備ができました。あとは、Googleの人たちに、この意見をはっきり目に見えるように伝える必要があります。そのための投票権が、Deliciousアカウントなのです。

Evernoteを携帯で見る

ITMediaさんで紹介されていたEvernote、早速使ってみました。

シゴトハッカーズ:Evernoteの基本的な使い方【チュートリアル編】 – ITmedia Biz.ID

自分の場合、仕事の進捗メモをとるのに使っています。いいめもの開発は今どうなっているのか、何をしようとしているのか、やったらどうなったのか、次は何をするつもりなのか….。



今までは、Pukiwikiを使って自分のサーバ上で書いていたのですが、これだと検索機能が貧弱なので、時系列でメモを書いたら、あるテーマのメモだけ引っ張ってくるというようなことが困難です。evernoteだと、メモごとにタグを貼れるので、テーマごとに引っ張ってくるのが格段に便利になりそうです。



残念ながらエディタとしての性能はあまり高くないので、秀丸エディタで書いたメモをぺたっと貼り付けて使っています。まあ、Pukiwikiの頃だって、秀丸エディタで書いて貼り付けていたのですから、ここはまあ許容できるラインでしょう。

で、本題。evernoteはWEBサイトが用意されているので、書いたメモはブラウザから見ることもできます。iPhoneはアプリケーションが用意されているので、もちろんiPhoneでも見ることができます。evernoteモバイルというのもあるみたいです。じゃあ携帯電話でも….

携帯電話からアクセス可能なEvernote Mobile(閲覧のみQuick Post可能)は、当方のau携帯では日本語が文字化けする。

([月] EVERNOTEに関するメモ)



まあそんな状況です。日本の携帯電話はMobilePhoneじゃないのです…(悲)



手元のW52CAも、日本語が化けちゃって使い物になりませんでした。

あと、DoCoMoF705iも、Cokkieが使えないせいか、そもそもログインができません。



SoftBankについては、通常の携帯ブラウザでもログインしてメモを見ることができました(812SH)。さすがiPhoneのキャリアですね。

AUの携帯電話ですが、PCサイトビューアーを使うと見られるみたいです。



cap31.JPG


やり方としては、PCサイトビューアーで

https://www.evernote.com/mobile/Login.action?targetUrl=%2Fmobile%2Findex.jsp

にアクセスします。(QRコード)



#公式には https://evernote.com/m/らしいですが、ドメイン違いの証明書付きhttpsなどを経由した末、結局上記にたどり着くみたいです。



で、通常通りにユーザー名とパスワードを入力すればOK.



DoCoMoはF705iしか持っていないので、フルブラウザを試すことができなかったのですが、たぶんフルブラウザというからにはCokkeiとUTF8くらい通してくれるだろうから、たぶん動くんじゃないでしょうか。

とりいそぎ手元の携帯で試したまとめでした。

打ち間違いランディングページ

「ここカラダ」というサービスの中で、おもしろい工夫を見つけました。
ここカラダを開いて、下の方を見てください。
kokokarada2.PNG
ほうほう。つまり、ちょっとくらい名前を間違えて検索してもヒットさせようということですね?
Googleで、「ここからだ」を検索
Googleで、「ココカラダ」を検索
Googleで、「ココからだ」を検索

おおおぉ。なかなか見事です。
該当ページを見ると、ここカラダのひらがなとカタカナの組み合わせの由来が説明されていて、「ここからだ/ココカラダ/ココからだ」についての記述といえなくもないページとなっています。
こういうサーチエンジンを意識したテクニックは、一歩間違うとサーチエンジンの本来の趣旨からかけ離れたテクニック競争に陥ってしまいがちで、その結果検索エンジンからペナルティを受けた会社さんも過去にありましたが。
今回の打ち間違いページについては、「ここカラダ」に興味を持つユーザーさんを正しいページに誘導することができますし、それ以外のユーザーさんにとっても、特に迷惑になる行為をしているわけではない(もし「ココカラダ」という別のサービスができれば、当然そっちの方が高い検索結果が出るはず)なので、これはアリなんじゃないでしょうか?
うちもやってみようかな。

テストメールを簡単に送るノウハウ

いいめものおかげなのかどうなのか分からないのですが、メールを受け取ってアレコレするというシステムのご依頼をわりといただいています。
で、そういうシステムを作るとき、試しにそのシステムにメールを送ってみる、という作業が欠かせません。
宛先を入れて、本文を適当に日付とか入れて、送信ボタンを押して…

こういうとき、Yahoo!メールとかgooメールのアカウントを一個持っておくと便利です。
一回メールを送信したあと、
goo_mail1.PNG
送信後の画面でリロードすれば、
goo_mail3.PNG
同じ内容のメールをもう一通送ることができます。
普通に使っていると、そりゃまずいだろ、と思うような機能なのですが、こういうときは便利です。

お金持ちになりたい理由

つまりこういう↓のを見たときに、「やってみればいいじゃない!お金出すよ?」とか言ってみたい。
ギークハウスプロジェクト計画 – phaのニート日記
とてもおもしろそうなんだけど、運営資金が回収できるだけのビジネスモデルはなかなか思いつかなくて。
こういうときに、とりあえず1000万円くらいあきらめていいお金があれば、とりあえず一年やってみて、それから考える、とかできるんじゃないのかな、と。
実際やってみると、意外なところが苦労することが分かったり、意外と苦労しないポイントも見えてくると思うから、今考えているのとは全然違うアイデアだって浮かぶかもしれない。
というわけで、こういうときに「じゃあやってみなよ♪」ってお金の出せるパトロンになれるとステキだな、と思う次第。
あ。「じゃあそのために今日から努力を…」「本気でお金持ちになりたかったら本気でビジネスを…」とかそういうお説教に用はないです。最終的にお金持ちになった時、そういうお金の使い方をしたいよね、というお話です。

もくもく会をやってみた。

マクドナルドや喫茶店で各自勝手にもくもくと作業する「もくもく会」を開催してみました。

2008-07-16 – もくもく会ポータル


携帯百景(ケイタイヒャッケイ)


開催といっても何をしたわけでもなく、目印(もぎゃ)を出して勝手に開催を宣言しただけです。それをみて誰か来たら儲け物、こなくても黙々と予定通り作業すればいい、それがもくもく会。

予想通り誰も来ませんでしたが、仕事は淡々と進めることができました。

まあ今後も気が向いたらやろうかと思うので、興味がある方はもくもく会ポータルをウォッチしてみてくださいませ。