2008年4月7日月曜日

rubyでスクレイピングまとめ

スクレイピングって、あれね。

HTMLなどから特定条件で文字を取得するやつね。

昔はなんらかの言語のHTTPライブラリと正規表現を使ってガリガリ書くのが多かったんだけど、最近はスクレイピング用のアプリケーションとか、専用ライブラリも出てきたんで、ちょっとまとめてみました。

条件は

  • プログラムを書く必要があるならRubyにする
  • プログラミングが必要ないなら、それが一番(データを取り出して終わり)
  • 特定ワードで検索して、検索結果からデータ取り出しってのを繰り返す
  • もちろん日本語を扱う

で、候補に挙がったのは以下の4つでした。

■web-harvest

  • Javaアプリ。
  • プログラミングの必要が無い。その代わりにXMLで条件を指定する。
  • 本家
  • MOONGIFTでの紹介記事
  • 本家の翻訳記事?
  • プログラミグの必要がないのはいいけど、きっとXMLだけの設定だとできないことがある気がする。(感覚値)
  • 英語版アプリしかないもので、日本語を扱うのはかなり不安。(UTF8だけならまだしも、まだSJISとかEUCあるよね)
  • ぐぐった限りでは、日本人ユーザいなさそう。もちろん日本語情報源無し。(2008/4/6現在)
  • ダメポと判断

■scRUBYt!

  • HTTPでの接続から、リンクのクリックやスクレイピングまでフォロー。
  • DSLっぽく書ける感じ。
  • 型にハマるなら、ちょー簡単に取得できる。
  • Hpricotを必要とする。
  • 本家
  • @ITの紹介記事
  • Rubyライブラリなので、KCODEさえ入れておけば日本語は大丈夫と判断。
  • ちょー簡単にまとまるので、とりあえずやりたいことがこのライブラリのサポート範囲内かどうかを検討するべき。
  • Hpricotを使っているので、Hpricotの上位に位置するのかと言えば、そうでもなく、作者曰く「使い分け」らしい。scRUBYt!は高機能で少ない手順でいろいろなものを、というスタンスなので、細かく制御したかったらHpricot+WWW::Mechanizeなんでしょうね。

■Hpricot

■scrAPI

  • Rubyのライブラリ。
  • フィルターっぽくあらかじめ欲しいものが決まっているときは便利なのかも。
  • 紹介記事
  • いまいち?

てな感じにまとまって、結局仕様が許すならscRUBYt!、自分で細かく制御したいならHpricot+WWW::Mechanizeという結論になりました。

さーつくってみよー

2008年3月30日日曜日

Flexのフレームワークまとめ

先日書き出した「興味を持っている事」について、ちょっと調べてみたので途中経過をまとめておく。

まず、Flexのフレームワーク絡みについて、よくまとまっている資料を見つけた。

オープンソースFlex開発フレームワークが示すプラットフォームの大きな動き

これを見ると、CairngormやPureMVCあたりはメジャーなんだけど、EasyMVCはマイナー扱いされている。

あと、このリストには載ってないけど、YUIという国産フレームワークも合って、ある人はこれが一番使いやすそうと言っていた。(でも、α7で開発止まってる?)

さーて、どうしたものかな。

  • デファクトスタンダードが無い
  • Cairngormは重量級という印象がある(Adobeの人も大規模でなければいらないんじゃない?とブログで言ってるみたい)
  • あまりにマイナーなものや、開発が止まっているものはちょっと怖い
  • ちょこっとしたもの(小~中規模)で気楽に使えるものが欲しい
  • コードジェネレータがついていると最高。現時点ではFCGあたりかな
という条件となって、現状PureMVCがいいんじゃないかなぁと思っているところ。
日本語の資料もあったので、これを読むのと、FCGのビデオチュートリアルを見て使い方を覚えよう。
とりあえずメモメモ。
PureVMC系

FCG系

FCGに関する日本の情報って、ほとんどないなぁ。



2008年3月23日日曜日

Railsプロジェクトの初期配置とかデプロイとか

昨日リストアップしたものについて、ちょっと調べてみた。

(けど、どれも中途半端)

* amazon EC2をrailsサーバとして使うとき、なにか便利なgemなどはないか?

-masuidriveさんが作っている管理システム(名称不明)これに影響されてこの分野を調べてみた。時間帯によってインスタンス数を増減させるところまでは出来ていて、負荷によって増減する部分を加えているところらしい。スクリプト公開はされていないみたい。
-processorpool現在α版。マニュアルなど無し。何が出来るのか調べているところ。http://rubyforge.org/projects/processorpool/
-rubber現在α版。マニュアルなど無し。何が出来るのか調べているところ。http://rubyforge.org/projects/rubber/

* Railsのプロジェクトを始めるときに、subversionへの登録などに対して何か便利なものはないか?masuidriveさんの資料で言う、rails-create-svn testprj rails-create-db testprjみたいなもの。subversionとDBとよく使うプラグインとKCODEやgettextのインクルードまでは定型で行けそう。

-masuidriveさんの自作スクリプト。これに影響されて調べてみた。スクリプト自体は公開されていないみたい。http://www.google.co.jp/url?sa=t&ct=res&cd=1&url=http%3A%2F%2Fs3.amazonaws.com%2Fppt-download%2F319.pdf&ei=aQjmR6HHC4-e6gO237CtCA&usg=AFQjCNEQG-p02xY7NiT_cjC7FzW_PsVYsg&sig2=tMoUUz41gWyAbtX4OXgaUA
-REAP使い方がよくわからん。http://reap.rubyforge.org/index.xml
-subversion automation一番現実的なのかなぁ。時間がなくてよく試せていない。http://software.pmade.com/svnautohttp://pmade.noscience.net/screencasts/sc-intro.mov
-svn_branch情報がない。gemのコメント欄を見る限り、やりたい事には近いっぽいんだけど。使い方がよくわからん。
-rorsvnprepシェルスクリプトだけでrailsのディレクトリをsubversionに入れるところまでサポートしている。他が使えなかったら、これをベースに改造するのがいいかな。

-svnutilsStableだけどメンテもされてないっぽい。ちょっとやりたいこととは違うかも。とりあえず対象から外す。
-svn_toolsRubyForge上は成果物無し扱いになっている。リリースしたもの1つだけだし、微妙なところかな?とりあえず対象から外す。
-svn-commandsubwrapというプロジェクトに吸収(?)されたみたい。でも、どちらもちょっと求めている用途と違うみたい。


-「設定より規約」でWebサーバ設定の自動化公開用サーバで特定ディレクトリ以下にrailsのフォルダを設置したら、apacheのconfファイルを生成してくれるスクリプトを公開している。http://blog.masuidrive.jp/articles/2006/07/20/conversion-over-configuration-with-apache
-railsの公開用リバースプロキシの設定として、pound用のconfファイルを生成するスクリプトを公開しているhttp://www.google.co.jp/url?sa=t&ct=res&cd=1&url=http%3A%2F%2Fs3.amazonaws.com%2Fppt-download%2F319.pdf&ei=aQjmR6HHC4-e6gO237CtCA&usg=AFQjCNEQG-p02xY7NiT_cjC7FzW_PsVYsg&sig2=tMoUUz41gWyAbtX4OXgaUA


*Railsのインスタンスはよく落ちるらしいので、インスタンス監視などに便利なgemやデーモンはないか?
-deamontools。こちらの方がちょっと癖がある感じだけど、ディレクトリやファイルを配置するだけでデーモンの立ち上げや監視が行えるのは、プログラムから制御するには楽かも。http://www.atmarkit.co.jp/flinux/rensai/qmail09/qmail09a.html
-monit。単体でデーモンの監視や再起動を行うならば、こちらの方が楽なのかも。CentOSならおれおれreposでyumインストールできそう。http://labs.unoh.net/2008/03/_monit.html
-puppetrubyで書かれたシステム管理ツールで、ファイルの配置やパーミッションを含めて自動化できるみたい。railsのインスタントを監視するだけならばちょっと大げさかも。http://gihyo.jp/admin/serial/01/puppet?start=10http://reductivelabs.com/trac/puppet/wiki/PuppetIntroductionhttp://trac.mizzy.org/puppet/wiki/PuppetIntroduction

2008年3月22日土曜日

最近興味を持っている事

最近やりたいことが溜まってきたのでメモ。

Railsのプログラミング

  • RSpecの書き方(仕事では使い始めた) modelのspecファイルを作るのは簡単なんだけど、controllerのspecファイルを作るために、構造を理解するところでハマる。よくわからん。rubyist maganizeの次回に期待。
  • mecabを使ったテキスト解析系のアプリ(具体案無し)。 hyperestraier のクローラと組み合わせたら面白そうだよね。
  • masuidriveさんの「設定より規約サーバ」とかrails-create-xxx系 あたりを実際に使ってみたいなぁと。公開されてないのかなぁ。
Flexのプログラミング
  • ActionScript3もしくはFlex3用のフレームワーク。PureMVC とかEasyMVC とかあるよね。Cairngormはおおげさすぎかなぁ。
  • コードジェネレータ。FCG なんてどうかなぁ?PureMVCのコードは吐けるみたい。
  • ちゃんと動くRubyAMFモノのアプリ。これは仕事で作るかも。
  • Red5を使った動画記録系アプリ。JRubyから制御できるようになればなぁ。日本語の文献が少ないのでなかなか進まない。
  • LiveCycle Data Services(LCDS) ES もしくはBlazeDSを使ったアプリ。Flexアプリケーション間のデータ同期を保証できる分、LCDSの方がよさそう。リモーティングしたいならRubyAMFとかでよさそうだし、データ同期部分しか興味ない。でも、LCDSの目指すものって一般受けするようなものではないので、ネットでノウハウを得にくいんだよなぁ。


サーバの運用ノウハウ

  • deamontoolsでのプロセス監視。Railsのプロセスって落ちやすいんでしょ?
  • masuidriveさんのEC2とかS3あたりの自動増殖サーバが気になっていたり。

個人系

結構溜まってるなぁ。

やはり仕事に組み込むしか無いか…。


2008年1月25日金曜日

googleブックマークの登録内容が消えました

googleさんにはURLを保存しておく機能(ブックマーク)を、特定のPCではなく、googleのサーバ上に蓄えておき、ブラウザからgoogleにログインする事で自由に使えるgoogleブックマークというサービスがあります。

このgoogleブックマークは、ブラウザからgoogleにログインしても使えるのですが、IEやFireFoxにgoogleツールバーをインストールしておくと、簡単にアクセスできるようになります。

たとえば、会社と自宅で同じブックマークを共有したいとか、IEとFireFoxで共有したいときなど、これが無いと生きて行けません。他にも、検索キーワードに合致するブックマークを示してくれたりとか。

で、このgoogleブックマークですが、昨日まではちゃんと使えていたのに、突然昨日以前に登録したブックマークが消えてしまってびっくりしました。

全消去した覚えはありません。誰かにハックされたか、サーバ障害?と思い、googleグループなどを探すと、以下の情報を見つけました。

http://groups.google.co.jp/group/Google_Web_Search_Help_JP-Troubleshooting/browse_thread/thread/71965540368cb82e/71b5dcc2e63daa35?hl=ja&lnk=st&q=google%E3%80%80%E3%83%96%E3%83%83%E3%82%AF%E3%83%9E%E3%83%BC%E3%82%AF#71b5dcc2e63daa35

ここの情報通り、googleノートブックを探すと、未保管のブックマークというカテゴリに入っていました。

ただ、AJAXを使って表示しているので、すぐに全ブックマークが表示されるということではなく、だんだん読み込まれて見えるようになる、というような感じみたいです。

ブックマーク自体は残っていたので、あとはこれがまたgoogleブックマークで使えるようにデータ復旧して欲しいのですが、いつになるのやら。

個人的には今回はgoogleのエンジニアがミスったせいだと思っています。

ちなみに、googleから現在、正式なコメントは出ていないようです。

2008年1月1日火曜日

オープンソースで音声合成

wikipediaで音声合成絡みのソフトリストがあったので、Linux上のオープンソースでどこまで音声合成が使えるのかちょっと調べてみた。

やりたいことは

  • Linux上で実行できる
  • オープンソース
  • かな漢字まじり、もしくはひらがなのみ入力すれば、自由に音声を出力できる
  • 言語は日本語のみを想定
  • mp3に出力できる
  • 最終的には、web側からの入力に対し、音声出力を行い、mp3の形でファイルに落としたい

みたいな感じ。

VistaやMacOSXでも音声合成機能はあるんだけど、英語しか対応してないんだよねぇ。なので、Webアプリから操作できるようにLinuxのシェルコマンドぐらいで扱えるものを探してみた。



wikipedia

ここから追って行くと、フリーで使えそうなものは3つだとわかった。


suzume


yomi WWW page (in Japanese)

Galatea Project (ガラテア・プロジェクト)

suzumeは試してないけど、MIDI上にサンプリングした音声データを持って音階として鳴らして行くという手法から、だいたい精度は想像できたので、とりあえず実用レベルには至ってないと判断。

yomiはサイト上のサンプル音声ファイルを再生してみて、ちょっと厳しいかなぁと。

残るはGalateaなんだけど、サイトはしっかりしててIPAも支援しているような正統派プロジェクトで、話すだけじゃなくてヒューマンインターフェイスとしての疑似オペレータの口パクや表情、音声認識などもセットになっているみたい。

仕事で使うなら、色々面白いことも出来そうだけど、音声合成だけをみると、お手軽という感じではないのと、やはりサンプル音声ファイル(というかデモ版のビデオ)を見る限りでは、自然な日本語とは言いがたい。

初音ミクのような、ちょっと聞きぐらいではわからないレベルを想像していただけに、やはりオープンソースでは辛い分野なのかなぁと思った。まぁ、利権や特許が絡む世界だろうしねぇ。

windowsならもうちょっとハイレベルなものがあるのだろうか…


サイト内検索結果

※サイト内検索のためのダミーページです