Yahoo! Pipes
昨日に続き、まさかの Pipes ネタ連投です。また素晴らしい Pipes を作ってしまった……(ぢっと手をみる)。
Yahoo! Pipes は、多数の(RSS)フィードの情報をカンタンにまとめられる。そのため、「複数のブログ検索サービスで検索した結果を、1 つのフィードにまとめる」という Pipes が多いです。
ところが、「いくつものキーワードで一度に検索する」という Pipes はあまりありません。もし見つけても、キーワードが 3 つくらいしか指定できなかったり、そもそも検索するサービスが決まっている場合がほとんどです。
そこで、5 月初旬にして春が遠い男──こと asiamoth が、もっと便利な Pipes を作りました!
この超絶便利な Pipes(格好いいネーミング募集中なう)は、以下の特長があります。
- キーワードをいくつも指定して「OR 検索」できる(Pipes の制限しだい?)
- 検索するサービスは自由!(検索用のフィード URL を公開している場合)
ぜひ、(Clone してから)お試しあれ。
2010-05-03T15:25:48+09:00 追記
そういえば、「Pipes が出力するフィード自体の名前」は、その Pipes の名前になります(ややこしい)。ということは──。
Google Reader や LDR で購読すると、「任意の──」という名前で登録される。激ダサ! しかも、キーワードや URL を変えているのに、「任意の──」というタイトルのフィードが並ぶ……。
この問題は、Pipes の内部では、どうやっても解決できません(キーワードからフィードのタイトルを生成したかった)。なので、各自なんとかする(Clone したあとで好きな名前に変える)か、Pipes の中の人に相談するか、気にしないか、いずれかを選んでください!
いくつかのサービスから検索
ここで、べつの Pipes を紹介します。
ケーススタディで学ぶYahoo! Pipes入門で詳しく解説されている Pipes は非常に便利です。説明も分かりやすい! Google ブログ検索など何種類ものブログ検索サービスから、一度に検索ができます。
自分は、「blog search」を Clone して改造した、「blog search copy」を作りました。
自分にとって不要なサービスを外し、はてなブックマークなどを追加しました。
ついでに、Yahoo!ブログ検索は記事のリンクを勝手に書き換えるのがマジウゼェんですけど! なので、元の URL に戻してあります。
使いこなし方
さて──、おわかりいただけただろうか。
つまり、「任意のフィード──」の URL 欄に、「blog search」のフィード URL を入力すると、
複数のブログ検索サービスから、複数のキーワードで検索する
ことができるのです!
また、「検索」にこだわらずとも、「2 つ以上のキーをフィードに渡す」という考え方をすれば、いろいろと応用できるでしょう。
苦労したところ
「任意──」では、「loop」モジュールの仕様に苦労しました。
この Pipes のソースを見てみると、左端の中ほどに、どこともつながっていない「loop」があります。これはわざと残してあり、「こういうことがやりたかった」という無念さを表している。
ようするに、ユーザが入力した URL の {key}
の部分を、ユーザが指定したキーワードに置換したいわけです。しかも、多数のキーワードを一度に処理したい。──これが、できなかった。
単独のデータを置換することは、「String Regex」などでカンタンに行えます。
しかし、カンマ区切りのキーワードを「String Tokenizer」で分割したあとは、「loop」で処理するしかない。「loop」の中で使えるモジュールをいろいろと組み合わせましたが、ウマくいきませんでした。
お手軽に URL エンコード
あとは、「任意──」でユーザが入力するデータは、URL だけではなく、キーワードも「URL Input」モジュールを使っています。普通は「Text Input」にしますよね。
これは、手っ取り早く日本語(2 バイト文字)をエンコードするために「URL Input」を使いました。
普通に Pipes を動かす分には、2 バイト文字に神経を使う状況は少ないと思う。自動的に変換されますからね。
しかし、「loop」には注意が必要です。
URL エンコードしておかないと、「loop」内の「URL Builder」に流した時に、2 バイト文字は消されてしまう!
このように、「loop」モジュールを利用する時には、いつも以上にテストが重要ですね。
ということで、ちょっとムダに見える処理をゴニョゴニョやっています。最終的にちゃんと動いて良かった!