思考記述*1

以前からPerl<>Ruby間のプログラム制御をBashで強引に動かしてきました。*1

やはり、LWP::RobotUAやLWP::UserAgentはとても力強い。
WWW::Mixiなんか、ないとどうしようもない位だ!

そこで、[あ]はっしーさんや、ちゃさんからのアドバイスでようやく
プロセス間通信にたどり着きました。
SOAPXML-RPCかソケットプログラミングか、どれで実装するのが良いか
これからいろいろ調べなくてはならないようです。

確かに、今の不恰好なソフト構成では無駄にリソースを消費しています。

設計案(仮

ホストプログラム
 +sixamoホストを立てる
 ++sixamo_res(返信)
 ++sixamo_talk(発話)
 ++sixamo_batton(バトン回答)...などなど

クライアントプログラム
 +WebAgent(LWP::RobotUA、LWP::RobotUA、WWW::Mixi、Web::Agent)
 ++はてなmixiにアクセスするクライアントコード


  sixamoホスト ⇔ WebAgent
  というプロセス間通信が実現できれば良い。

課題

 -プロセス間通信の手段
 --SOAP
 --XML-RPC
 --ソケットプログラミング
 --other..
 -Ruby,Perlでの実装方法
 -設計(リクエスト、レスポンスなど)、単体テスト、コーディング*2

ソケットプログラミングていう単語に必要以上に警戒していただけかもしれないので、挑戦してみます!!

[あ]はっしーさん、ちゃさん、アドバイスをありがとう!
ばんじゃーい。

追記:設計案

 プロセス間通信の手法をどれにしようか迷っておりましたが、
 RubyPerlXML-RPCを導入するのが比較的容易そうなので
 学習も兼ねて、まずはXML-RPCにしようかと思います。

 あと、id:satoship:20070122:1169384860で見つけた
 HTTPパーサHpricotを使ってHTMLの解析をするのが良さ気ですね。

 こんな感じ(イメージ図)

 Phase1. WebAgentが目的のサイトへログイン、ページを取得
 Phase2. HTTPパーサを使って解析、目的の値(文字列orURI)を取得
 Phase3. WebAgent(XML-RPCクライアント)から人工無脳(XML-RPCホスト)へリクエストする。
  レスポンスとして人工無脳により生成された文章を受け取る
 Phase4. WebAgentが目的のサイトへPOSTする

 徐々に具体化してきた。
 あとは、個々のテストコードを記述して行く段階だろうか。
 ……何か、見落としているような気がしてならない……??

 

*1:Ruby"配下"で外部プログラムを制御する方法ばかりを探していました。。

*2:ここまでこればもういけそう