shinobi access log

web Font

ラベル Pipes の投稿を表示しています。 すべての投稿を表示
ラベル Pipes の投稿を表示しています。 すべての投稿を表示

2010年12月28日火曜日

【Pipes】Pipes講座02を読んで(My lesson-02)

おおー!もうPipes講座02が始まっていた!!

[Pipes] Yahoo! Pipes講座02(Text/URLInput、Yahoo!Search、Filter、Regex) | 普通のサラリーマンのiPhone日記a??a?Re¨?ao?a?Ra? ̄a?|a?ae¢≪a??a??a? ̄a??a??a? ̄a?°

さっそく読んでいく!

このエントリは自分自身への備忘録と演習となっています。ひとつひとつ自分なりに理解しながら進めていくので、ヒロさん(@hiro45jp)のページに書いてあることが「まんま」出てきますがご了承ください。本家Pipes講座と対比しながら読むと完結する形式になってます。

ココから先は「Pipes講座02」を読みながら反芻していく過程になります。読みながら思いついたことを書き残していくことにします。特に「⇒」矢印以降は私の考察となります。

・Pipes: 講座02(Yahoo! Search)を読んで思いついたことあれこれ


前回の補足(デバッガーの見方)
・デバッガーの見方が少しわかって来た!(完成系を確認しながら)
・どのRSSフィードも共通的に持っている情報がある。title、description、pubDateは代表選手。これらの情報を総称して「item」という。

・代表的なアイテム(item)
「link」元サイトへのリンクが入ってる。
「description」RSSフィードの中身。この中身を加工していく。
「dc:creator」RSSフィードの投稿者。たまに使う程度。
「title」RSSフィードのタイトル。この中身も良く加工する。
「category」タグとか入ってくる。iTunes情報だとジャンルが入るみたい。
「pubDate」配信された日時が入ってる。並び順変更とかで使う。

・なのでitemの中見をPipeの中で指定して使う場合は「item.pubDate」のように記載される。
⇒なるほど!


AppHtmlの解説(iTunesリンクの取得)
・いよいよ「AppHtmlの解説」はじまる!
・AppHtmlは、検索のヒット率を重要視してたのか。
・App検索は3つの手法を用いて行っていたのか!さらに3つの検索を同時並行に走らせているのね。初めて知りました。

3つの検索手法
1.Yahoo! SearchによるiTunesリンクの取得
2.Google APIによるiTunesリンクの取得
3.Google Web検索(Dapper経由)によるiTunesリンクの取得


「Yahoo! Searchモジュールを使う」
6種のモジュールを駆使して、Yahoo! Searchの結果を返すPipeを作っていきます。

1.Text Inputモジュール(手順1)
Text Inputを使うと「Run Pipe」時に入力欄が出てきます。この入力欄に値を入れることでひとつのPipeでも複数の結果を返してくれるようになります。
⇒おおーなるほど!

「Name」Pipe内で使う呼び名。「kwd」と入れる。
「Prompt」入力値のラベル名。こちらも「kwd」と入れる。
「Position」入力値の表示順番。「1」と入れる。
「Default」入力値の初期値。「textforce」と入れる。アプリ名の指定。
「Debug」Pipe内の初期値。Defaultと同じ値を入れる。

・Pipe内で挙動確認する際には、この「Debug」の中身を色々と変更して動作確認。⇒なるほど!

2.URL Inputモジュール(手順2)
先ほどのText Inputと属性が違うだけで指定する箇所や意味は一緒。
・Textと何が違う? Pipeでは同じURLでもTextに書かれたものと、URLは分けています。Textを必要とするもの、URLを必要とするものがあるので、適宜使い分けていくと良い。
⇒なるほど!次のモジュールは何を必要としているのか?を考えて使い分けるのね。

3.Yahoo! Searchモジュール(手順3)
今回の目玉モジュール。Yahoo!の検索結果をRSSにして返してくれる神モジュール!⇒おおー、そなのかー!

手順1と手順2で作成したInputモジュールとYahoo! Searchモジュールを繋ぎます。

Site restriction = サイト規制
⇒つまり検索キーワード(手順1)でYahoo!検索した結果をhttp://itunes.apple.com(手順2)に関係するもので規制すると言うことかな?
⇒でもデバッグ見ると必要以上にヒット。そこでフィルタリングが必要になるのね。


「結果をフィルタリングする」
4.Filterモジュール(手順4)
・Filterモジュールは、指定した条件(複数指定可)に合致するものを、許したり、ブロックしたりが指定できます。

Filter条件について
「Permit」は合致するものを許す「Block」は合致するものをブロック。
「all」は条件の全てが合致条件「any」は条件のどれかが合致条件。
「Rules」の左辺はチェック対象。「item.link」を入れる。
「Contans」は含まれるという意味。他にも指定できますが、これしか使わん。
「text」ここにURL Inputの結果を紐付ける。
⇒「Contans」しか使わなくても出来るのねw

⇒で、もいっかいリンクでフィルタリング。URLインプットした条件「http://itunes.apple.com/jp/app」でフィルタをかけるのか。
すっげー!たしかにデバッグ結果が「iTunes App Store で見つかる…」だけになってる!

5.Regexモジュール(手順5)
Regexモジュールは、対象となるitemを特定条件で置換することができる。

手順4のフィルタリングで日本のAppStoreだけの結果になった。しかし……変なアプリもヒットしてる。
ということでノイズ除去の為に、もうひと工夫がはいってる。
⇒ほほーデバッグ結果を見ると本物(検索したいもの)以外には「description」内に本アプリ名以外のアプリが入ってますね。

文章の法則性を発見した。「についての情報…」以降のdesctiptionをカットしちゃえば、余計な単語を拾ってこなくなるはず!!
⇒なるほど!ココは手作業で法則を解析そしてフィルタリングすべき条件を抽出。さすがです。

Regexモジュール。条件指定には「正規表現」というのが使えるんですが……∑(O_O;)
これが奥が深い。AppHtmlでも正規表現をたくさん使ってます。今回は、もっとも簡単なところだけにします。
⇒なんとか回避(o´д`o)=3

※「正規表現」については今後の講座で何度も紹介し、最後にまとめもしたいと思ってます。それくらい重要です。

今回は「item.description」の中で「についての情報.*」を「空」に置換してます。「についての情報.*」の「.*」にご注目。これが正規表現です。意味的には「についての情報」という文字以降の全てを指し、これらの文字列を「空」にしちゃいます。
⇒「.*」これが正規表現!

無事にメインとなるアプリ名以外は除去されました
⇒なるほどメインのアプリ名が本リンク以外の検索結果の中に表記されないように消すことがRegexモジュールの役目なのね。
⇒ここはキモだなー。検索に引っ掛からないようにするためにフィルタリングで広く拾い過ぎた結果から不必要なものを振り落とすひと手間が必要。そこで拾い上げの条件を探し出してメイン以外を引っかからないように一部結果を書き変える。今回は不要に出てくるところを消してます。
⇒単純にFilterモジュールで一発解決出来るわけではないのね。人の思考をプログラムに反映させることが大事そう。この時に何を使って欲しい条件を吸い上げるかを考えてモジュールを使い分けていくんだな。_φ(・_・

6.Filterモジュール(手順6)
最後に更にFilterモジュールを追加し「descriptionの中に指定したアプリ名称が含まれているか」という絞込条件を入れます。Text部分は、Text Inputの値と紐付けます。

⇒なるほどこれでフィルタリングかけると「description」内にあるアプリ名はメインアプリのみとなるのか!さすが。


「見つかった課題と対処の方針」
今回のようにPipeはモジュールを駆使し、結果を途中で確認しながら、ちょっとずつ手直しして作っていきます。うまくいかないことも多いのですが、法則性を発見し、その法則を当てはめることで目的に達する。そんな頭のトレーニングにもなります。


今回のメインテーマはこれだ!「頭のトレーニング」


⇒「description」RSSフィードの中身。この中身を加工していく。
これをどうやって書き変えて(フィルタリングして)欲しい条件に達するか。こうやって目的の結果を導き出すのね!

お疲れ様でした。

Kazwoo

2010年12月27日月曜日

【Pipes】Yahoo!Pipesを始めてみた!(I begin)

今日は一日Yahoo!Pipesとにらめっこ(^^;;

2010/12/25 ヒロさん(@hiro45jp)のYahoo!Pieps講座が始まりました。「普通のサラリーマンのiPhone日記」にて。

[Pipes] Yahoo! Pipes講座01(FetchFeed、Sort) | 普通のサラリーマンのiPhone日記この記事のはてな被ブックマーク数

今回は初めてPipesに触れる方へのエントリー「アカウント作成から実際に使ってみるところまで」でした。

すでにアカウントはあるので実際に使ってみるところ「Pipesを作ってみる」からスタート。

さっそく自分でも演習を始めてみました。

手順1~5:順番通りにやっていけば結果も上手く出ました。
ただし「そのまんま」なので自分のやりたいと思うことに応用していくにはまだまだ先が長いと感じました。


【とりあえず本日のまとめ】

理解できたところ
メニューでよく使うのはこの3つ「My Pipes」と「Browse」と「Create a pipe」
「My Pipes」は自分が作ったPipeの一覧画面。
「Browse」は第三者のPipeを真似たりする場合に使う検索画面。
「Create a pipe」はいきなりPipeを作る編集画面です。

Browseを使って色んな方の作ったpipesを拝見しました。しかし英語がほとんどだなー(^^;;


なんとなく分かったところ
モジュールの意味。(良く使いそうなもの)
全て英語なのと一般的に使わない言葉が少々あったのでモジュールの選び方さえまだまだ分からない状態です。

ヒロさんがよく使うのは以下のライブラリ
「Fetch Feed」RSSフィードを取り込む。
「Fetch Data」各種APIの結果をデータとして取り込む。
「Fetch Page」Webページを取り込む。
「Item Builder」自分でPipeデータに仕立て上げる時に使う。
「Number Input」Pipeの外からの数字入力用に使う。
「Text Input」Pipeの外からのテキスト入力用に使う。
「URL Input」Pipeの外からのURL入力用に使う。
「Filter」Pipeデータから不要なデータを除く時に使う。
「Loop」Pipeデータを元に更に別のデータを取ってくる時に使う。
「Regex」Pipeデータを加工する時に使う。正規表現が使える。
「Rename」値の呼び名を変更したり、コピーしたりする時に使う。
「Sort」Pipeデータの並び順を変更する時に使う。
「Union」複数のPipeデータを合体させる時に使う。
「Unique」Pipeデータの重複を除く時に使う。
「URL Builder」Pipeの中でURLを組み立てる時に使う。
「String Builder」Pipeの中でテキストを合体させる時に使う。
「Simple Math」入力された値を計算する時に使う。
「Favorites」「My pipes」自分が作ったPipeを使う時のタブ

結構いっぱいあるね(^^;;
でもココ大事!覚えていかなきゃ。


これからの課題
今後一番の難所になりそうな所は、左側の「ライブラリ」からモジュールを選んで来た後のそれぞれのパラメーターについて。

今回は「item.pubDate」という記事の配信日時について並び変えをおこいました。「descending」は大きい順と言う意味。

この辺の単語に慣れないと先に進めないような気がして来ました。ここら辺が課題だと感じました。


感想
今回は意味を理解しながら少しずつ触ってみました。
ヒロさんの作った手順どおりにすすめると、何とも簡単にひとつのPipesが出来てしまった。。。これでいいのか?っと思うくらい簡単に。

いちよう自分でやりたいなぁっと思うコトはそれなりにあります。おぼろげですが。。。いきなり高いハードルではなく地道に進んでいこうと思います。


Kazwoo