メインコンテンツに移動
mattz.xii.jp

Main navigation

  • Home
  • YBR125メモ
User account menu
  • ログイン

Yahoo! pipes入門

By mattz, 2009/09/16

「アメブロ rss カテゴリ別」のような検索キーワードでいらっしゃる方が結構いるのですが、アメブロさんはどうもそのような機能は提供されていないご様子。個人的に検索ニーズに応える月間実施中(今作った)なので、Yahoo! pipesを使ってアメーバのブログのカテゴリ(アメブロ的にはテーマか?)別のRSS を生成する方法など書いてみようと思う。

モデルケースが必要なので、アメブロのトップに行ってみた。一般の人のブログではなんなので、適当な芸能人ブログを使おうと思ったのだが、ランキング上位のほとんどの芸能人がろくにテーマを使ってません。テーマ:ブログばっかり。叶姉妹はまぁまぁ使ってるようなんですが、この人たちあまり好きじゃないのよねぇ、とか思ってたらいいブログ見つけた。「渋谷ではたらく社長のブログ」。これでいいじゃん。お誂え向きに『著作権保護のため、記事の一部のみ表示されております。』もしてやがるし。全文配信化のサンプルにもなるというね。

そろそろ具体的に話を進めます。

Yahoo!のアカウントを取得する

Yahoo! pipesを利用するには、Yahoo!にアカウントが必要です。ちなみにYahoo!JAPANのアカウントは使えないので日本以外のYahoo!でアカウント取得して ください。まぁ、www.yahoo.comで作っとけば一番確実。例外はあるかもしれませんが、日本以外ならどこのYahoo!でアカウント作ってもOKなはずですが、検証はしてませんので。

Google Chromeをインストール

まず、これは必須でもなんでもありません。Pipes' editorはいわゆるWebアプリなんですが、Yahoo!の推奨する環境はFirefox、IE7以降、Safariとなっています。これらのブラウザが既にインストールされているならそれを使っていただいて構いませんし、サポートしてねーよというダイアログこそ表示されるもののOperaでだって編集はできます。ただ、理屈は知りませんがPipes' editorはWebKitと相性がよいようなので。SafariもWebKitですけど、Safariはねぇ……

pipeを作る

入門とかうたっておきながら、いきなり作り始めます。こんなもん、実際に触るのが一番だし。
http://pipes.yahoo.com/pipes/ にログインしたら、「Create a pipe」というリンクをクリックします。

こんな感じの画面(ウィンドウは小さくしてます)になりますので、まずは「Fetch Feed」というボタンを右の方眼紙っぽいところにドラッグするか、右側の「+」ボタンを押します。

左側に並んでいるいろいろなボタンはモジュールといって、それぞれにいろんな機能を持っています。Fetch FeedモジュールはRSS(0.9も1.0も0.91も2.0も 全部含む)とかAtomとかそういういわゆるRSSリーダが扱うようなデータを構文解析して読みやすくしてくれるモジュール。RSSのURLを渡してあげるといい仕事をします。

渋谷ではたらく社長のブログのRSSのURLはhttp://feedblog.ameba.jp/rss/ameblo/shibuya/rss20.xmlなので、この文字列をコピペして、URLの欄に 貼り付けます。ちゃんとフィードが取得できるURLの場合は、この画像ではオレンジの三角になっている部分が、サイトのfavicon(ない場合は?マーク)に変わり、画面の下の方のデバッグ領域にエントリタイトルの一覧が表示されます。されない場合は、URLをよく確認してください。

今回は目的がカテゴリ(テーマ)別にRSSを生成する、ですが、RSSの形式や内容によっては、各フィードにカテゴリ情報が含まれていたりして、この段階でFilterモジュール(詳しくは後ほど)を使えば済んでしまう場合があります。残念ながらアメーバさんはあまりRSSでの配信には積極的ではないようですので、それは無理。ということで、次のステップに進みます。

LoopモジュールとFetch Pageモジュール

pipesは基本的にmoduleの組み合わせで目的を達成させるツールです。今から使うのが、LoopモジュールとFetch Pageモジュール(この二つは結構よく使うのでここでマスターしましょう)。Loopモジュールは左側のメニューのOperatorsグループの中の一つなので、まずはそこをクリックします。メニューが展開して、Loopっていうのが出てくるので、それをさっきと同じようにドラッグするか「+」をクリックします。

Loopモジュールは、RSSに含まれる複数のitemそれぞれについて、同じ処理を繰り返したいときに使うモジュールです。Fetch Pageモジュールは、Fetch Feedモジュールとよく似た名前ですが、機能も似ていて、URLを指定すると、そのページの内容を丸ごと取得してきます。Fetch Feedと違うのは、特に構文解析などはせず、ソースそのままの文字列(本文中に相対パスで書かれているようなものを絶対パスに変換してくれたりはする。意味が分からない人は無視して くれてOK)を返してくれるモジュールです。

これだけでは分からないので、実際にやってみましょう。

まず、Fetch Feedモジュールの出力(下側の水色○)とLoopモジュールの入力(上側の水色○)をつなげます。やり方はマウスでみよ~んとつなげるだけ。入力とか出力とか何言ってんの?というあなた。意味分からなくていいから上が入力、下が出力と覚えてください。とにかく、こうやってつなげることで、Fetch Feedモジュールがとってきたフィード情報を、Loopモジュールに渡してあげることができます。

Loopモジュールは、受け取ったRSSのitem(要はブログのエントリ)の1個1個について同じ処理をすると書きましたが、Loopモジュールはお腹に穴があいていますね。ここにその「処理をする」モジュール(や既に作ってあるpipe)を入れてあげます。今ここではFetch pageモジュールを入れます。左側のメニューのSourcesをクリックして、Fetch pageモジュールを表示させたら、Loopモジュールのお腹の穴の中にドラッグします。なお、お腹に入れられるモジュールのときは、穴のふちが赤くなるので覚えといてください。

こんな感じになってればOKなので、Fetch PageモジュールのURL欄の右側の右向きの三角をクリックします。

いろいろ選択肢があるんですが、ここでは「item.link」ってやつを選びます。item.linkというのは、Loopモジュールが扱う一つ一つのitemのリンク先を表します。要するに、ブログの記事一つ一つのURL(必ずしもそうとは言い切れませんが)。つまり、Fetch Pageモジュールに個別記事のURLを渡して、記事内容を取得してきてね、と命令していることになります。

とってきた記事内容は、つまりそのページのソースです、サイドバーだの何だのといったあまり必要ではないものも含んでいますので、必要な部分だけを取り出すのが必要になってきます。ここで使うのが、Fetch Pageモジュールの「Cut content from ____ to ____」の部分。ブログのトップではなくて、どれか一つの記事をブラウザで表示して、「ソースの表示」をします。

この辺は多少経験も必要になってきてしまいますが、ブログの場合、大体テーマとかスキンとはテンプレートとかがあるので、大体は機械的に判断できるようなつくりになっています。

今回の場合必要なのは、エントリのカテゴリ(テーマ)と、ついでに本文なので、それを切り出せるように始まりの文字と終わりの文字を探します。

この例では、From(始まり)として<!--//.entry_head-->、To(終わり)に<!--entryBottom-->と設定しました。本文を取りたいだけであれば、始まりの方は<div class="contents">でいいと思いますが、今回はテーマも欲しかったのでこのように設定し、さらに、delilmiterとして<span class="date">というのも使っています。

この辺のモジュールのさまざまなオプションやら何やらを一つ一つ説明していくと長くなりますし、そもそも僕がめんどくさいので、省略します。Pipes editorの左下にhelp textも表示されていますし使用例なんかも見ることができますので、詳しく知りたい人はそちらを参照のこと。

Renameモジュール

次は説明が難しいのですが、まずは実際にやってみます。使うのはRenameモジュール。これをLoopモジュールの下に配置してLoopモジュールとつなげます。Renameモジュールの「+Mappings」というのを1回クリックし、入力欄を二つにします。

1個目の入力欄。左側には「item.loop:fetchpage.0.content」、真ん中の選択肢はRename、右側の入力欄には「category」と入れます。
2個目の入力欄。左側には「item.loop:fetchpage.1.content」、真ん中の選択肢はRename、右側の入力欄には「description」と入れます。

Regexモジュール

これだけですと、まだまだ余計なものがくっついているのでそれを取っ払います。使うのはRegex(正規表現)モジュール。

今のこの時点でcategoryがどんな値になっているかというと、[<span class="theme">テーマ:<a rel="nofollow" target="_blank" href="http://ameblo.jp/shibuya/theme-10000000241.html">社長業</a></span>]こんな感じ。ここで欲しいのはこの例だと「社長業」の部分だけです。また、description(RSSリーダで読むのは結局ここ)にも、特に必要ではない日付情報が入っちゃっています。これはまぁ、Fetch Pageのやり方次第なのですが。

やはり「+Rules」を1回クリックして入力欄を1個増やします。

1個目の入力欄。左側には「item.category」、真ん中のreplaceには「(<.*?>|テーマ:)」、右側の入力欄は空っぽのまま、gとmにチェック。
2個目の入力欄。左側には「item.description」、真ん中のreplaceに「^.*?<」、右側の入力欄には「<」と入れます。

Filterモジュール

次がやっと出てきました。Filterモジュール。カテゴリ別配信の肝です。これは、それぞれのitemが特定の条件を満たすものだけ抽出するモジュール。いろいろオプションを設定すると、特定の条件を満たすものを排除するとか、条件を複数設定して全てに一致するなら、とか、どれかに一致するなら、など細かく設定できます。とはいえ、今は特定のカテゴリだけを抽出したいだけなので、次のように設定します。

右側のやつ。これはText Inputモジュールといいまして、任意の文字列をインプットしてもらうためのモジュールです。ホントに特定のカテゴリだけを抽出したいだけなら、Filterモジュールの右側の入力欄にその抽出したいカテゴリ(テーマ)を設定してやればいいのですが、カテゴリは自由に設定できるようにしよう、というのが、これ。これを使わないと、カテゴリ毎にパイプを作らなければならなくなってしまいますので、任意のカテゴリ名を入力できるようにこうしました。これなら出来上がったpipeのURLにカテゴリを含めることができます。

保存して実行

とりあえず、このブログの特定カテゴリのエントリだけを配信するpipeは完成なので、Filterモジュールの出力をPipe Outputにつなげ、このPipe自体の名前を入力してSaveします。Saveができると、上の方に「Pipe Saved Run Pipe...」と表示されますので、「Run Pipe...」の部分をクリックしてみましょう 。

いま僕が作ったpipeはこちら⇒「渋はた社ブ(カテゴリ別)」。

アクセスしたら、category欄に例えば「ブログ」とか「アメブロ」とか入力して[Run Pipe]ボタンを押します。Google Readerに登録するなら、そこにボタンがあるのでそれを押せばいいし、LDRなどで購読するには、「Get as RSS」のところをクリックするとか、右クリックしてリンクURLをコピーするとかして、どうにかしてください。

最後めんどくさくなって適当になりましたが、今日のところはこの辺で。多分、次はないけど。

質問などあれば、僕の分かる範囲でお答えします。

ま、でも、RSSをpipesでゴニョゴニョするのは、簡単な部類なんだな。楽しいのはRSSを出力していないサイトをゴニョゴニョすることであり。はてなアンテナでもいいんだけども。

タグ

  • pipes

今日のTwitterとか今日のつぶやきとか

By mattz, 2009/09/16

まぁ、そういった感じで、自分の1日分のtweetをまとめてブログのエントリにする(手動か自動かは問わない)人が増えてきたのですが、あれ、邪魔なんだよねぇ。 あなたのブログは気に入ってるからRSSリーダに登録したけど、呟きには興味がないし、興味があればフォローするし。

ライフログとしてtweetログをまとめておくことの意義とかそういうのは否定しないし、別に意味もなくやってたとしてもそれはそれでいいのだけども。

わざわざそのためのフィルタpipe作るのもあほらしいので、読み飛ばすだけで我慢してるけど。

はてなダイアリだったらサブアカ使うとかして、別のブログにしてくれると助かるんだけどなぁ。

これ読んだ人がどう思って、どうしようが好きにすればいいと思うけど、声だけは上げておこう。

追記

そうそう、otsuneさんから閲覧者がフィルターするほうが低コストだよというコメントをいただいております。

それはもっともな話で、僕も今のところは脳内フィルタ(僕の考えうる限りで最も低コストなフィルタ)で運用しております。フィルターするより購読解除する方が もっとずっとさらに圧倒的に低コストなので、つぶやきエントリ以外の部分次第ではそっちに走るだろうなぁ、いずれ。遠からず。

タグ

  • Twitter

取り立たされていた

By mattz, 2009/09/15

「取り沙汰されていた」だってば。かなで書くと「とりざたされていた」。「とりだたされていた」、ではなく。

こういう空耳の発生するメカニズムを知りたいよ。

タグ

  • 雑記
  • 空耳

写してねーで食えよ、と常々思っていたので

By mattz, 2009/09/11

aluto(アルト) | ほのかの部屋: ご…ごち…

素晴らしい!!!

まぁ実際は食べる前に撮り忘れただけらしいのだが、実に素晴らしいと思った。

関連clip

  • http://clip.livedoor.com/page/http://honoka.seesaa.net/article/12759463…
  • http://clip.livedoor.com/page/https://twitter.com/tsuda/status/22187688…

タグ

  • 雑記

特定のドメインについてのみJavaScriptのエラー発生時だけコンソールを自動的に開きたい、というときのOpera 10の設定例

By mattz, 2009/09/08

1.全体設定はオフ

当然といえば当然ですが、Generalな設定はコンソールを開かない、にしておきます。

2.サイトごとの設定で、エラー発生時にコンソールを開くをオンに

これも当然といえば当然ですが、コンソールを開きたいドメインのサイトごとの設定では、エラー発生時に「コンソールを開く」をオンにしておきます。ただし、 これだけでは、CSSのwarningがあってもコンソールが開いてしまう。CSSの警告は、クロスブラウザなCSSを書こうと思うとある程度避けられないし、CMSなどを使っている場合これを消すのはなかなか骨である。消したところで大して恩恵もないのに。で、ここからが肝心。

3.opera:config

「opera:config#UserPrefs|ErrorConsoleFilter」をアドレスバーに貼り付けて開くと、

javascript=4,@[設定したいドメイン]=2

こんな感じの値になっているかと思う。これを

javascript=4,css=4,@[設定したいドメイン]=3

こんな感じに変える。

とりあえず僕のところではこれで僕が望む状態になっているのでそれでよし。うまくいかなくても知らないよ。

以下は推測、というかちゃんとドキュメントに当たれよという話なんですが、javascript=4,mail=4,css=4 などの「4」はエラー時のコンソールを表示しないの意。「3」はエラーを表示、だと思う。「2」、「1」はよくわかんないけど、それぞれ「警告」を表示(エラーも含む)、メッセージを表示(エラー、警告も含む)かなー。確かめてはいないけど。

タグはpersonalizeにしておこう。

ちょっと追記

あとは、JavaScriptのerrorはログに出力するようにしといたりすると、Cygwinでtailできたりしてこれはこれでいいかもしれない。

なお、これらは両立可能。

タグ

  • Opera

タイトル未定

By mattz, 2009/09/05

木村さんのデビュー5周年記念ライブ「Go!5!カエランド」。

行きたかったけど悩んでる間に売切れてしまったのですがライブDVDが出るようなので予約。

タグ

  • 木村カエラ
  • DVD
  • 音楽

リビング模様替え

By mattz, 2009/09/05

テレビ裏の惨状

タグ

  • 雑記

言葉を音で覚えるのは危険です

By mattz, 2009/09/04

対症療法ね。

漢字を見れば分かると思うけど、表に出てきた症状に合わせて、治療法を決めていくやり方のこと。原因の追究をしてないから、後から後から違う症状が出てきた りして手に負えなくなったりするので、あんまりやり方としてはよくないとされる。エンジニアの皆さんも、バグ取ったつもりが別のバグが、とか経験あるでしょ ?

まぁ、時間的な制約とか原因が分かんないとかで、仕方なくそういう、悪く言えば場当たり的な対応をせざるを得ないこともあったりします。

よくある間違いが対処療法。響きもよく似ているし、なんとなく字面的にもおかしくなさそうだよね。なんだか間違いって言い切っちゃうのもかわいそうなんだけ どでもやっぱり間違い。今のところ辞書には載ってないです。残念ながら。

で、対処量法ってのは一体どっから出てきたの?

タグ

  • 日本語

ツールバー関係をいろいろ変更してみた

By mattz, 2009/09/04

メニューバー非表示は今まで通り。「メニューバーを非表示にするとタブバーに表示されるメニューバーの代わりになるボタン」(これなんていう名前?)が時々消 えてしまうのだけどどうしてだろう。いつの間にか消えてるので何が引き金なんだか分からない。一度メニューバーを表示してから再度非表示にするとまた表示さ れるので、とりあえずAlt+F11をメニューバーの表示/非表示切り替えに割り当てて(といっても"Platform Unix, F11 alt"となっている設定の"Platform Unix,"を消すだけだ)いるが、不思議だ。

と、書こうとして、キーボード設定の"Platform Unix,"ってのを確認しようと思って、ショートカット設定編集画面を開いて[OK]、[OK]ってやったら消えた。他の マシンでも起きるか確認したら、フォーラムに書き込んでおこう。

追記

僕のこのPCでしか起きない。「ファイルオープンダイアログで右クリックすると落ちる」と同様、僕のマシン固有の何かのようだ。フォーラムへの報告はしない。

追記終わり

タブバーは上。今まで通り。非表示派がヘビーOpera-erの主流かのように各所で書かれているが、知らん。僕は何百もタブを同時に開くことはないのでこれでいい のだ。

アドレスバーを消した。ナビゲーションバーも消した。代わりに下に表示してあるステータスバーに、アドレス欄と、ナビゲーションバーの[ホーム]、[目次]、[前へ]、[次へ]の各ボタンを追加するようにした。

画像にするとこんな感じ。実際にはもっとウィンドウ幅が大きいので、すごく長いものはともかくとして、ちゃんとアドレス表示もできる。検索もここからできる し「h」キーでフォーカスもいくので、実用上困ることはなさそう。

あ、ズームのプルダウンも消した。キーボードショートカットの方が早いし要らない。てことはFTWボタンも要らないな。消そう。

タグ

  • Opera

メニュー編集はあまりしたくないのだけど

By mattz, 2009/09/02

邪魔。

↑これ。

「サイトごとの設定を編集」する時は、「右クリックして一番下のやつ」っていう風に手が覚えてるので、つい選びそうになる。

メニューを編集すればいいってのは分かってる。分かってるけどしたくない。

「右クリックしてD」と手に覚えさせよう。

タグ

  • Opera

ページ送り

  • 先頭ページ
  • 前ページ
  • …
  • Page 17
  • Page 18
  • Page 19
  • Page 20
  • Page 21
  • Page 22
  • Page 23
  • Page 24
  • Page 25
  • …
  • 次ページ
  • 最終ページ

最近のエントリー

  • ここ最近の活動について
  • 2025シーズン セ・パ12球団の総移動距離
  • 2023年度 パシフィック・リーグ主催試合ヒーローインタビューランキング
  • 2024シーズン セ・パ12球団の総移動距離
  • 当サイトのDrupalが10になりました
  • E-Vinoを買ってみました
  • 2023シーズン セ・パ12球団の総移動距離
  • 俺は野球殿堂博物館を甘く見ていた
  • 2022シーズン セ・パ12球団の総移動距離
  • Drupalを9にあげてみました

月別アーカイブ

  • 6月 2025 (54)
  • 12月 2024 (1)
  • 11月 2023 (3)
  • 10月 2023 (1)
  • 12月 2022 (1)
  • 4月 2022 (1)
  • 12月 2021 (1)
  • 2月 2021 (1)
  • 11月 2020 (1)
  • 7月 2020 (1)
  • 12月 2019 (1)
  • 7月 2019 (2)
  • 5月 2019 (3)
  • 3月 2019 (1)
  • 2月 2019 (1)
  • 12月 2018 (1)
  • 12月 2017 (1)
  • 1月 2017 (1)
  • 5月 2016 (1)
  • 2月 2016 (1)
  • 2月 2015 (2)
  • 11月 2014 (1)
  • 7月 2014 (1)
  • 6月 2014 (1)
  • 5月 2014 (1)
  • 2月 2014 (1)
  • 12月 2013 (1)
  • 11月 2013 (1)
  • 10月 2013 (1)
  • 6月 2013 (1)
  • 5月 2013 (1)
  • 3月 2013 (2)
  • 2月 2013 (1)
  • 1月 2013 (2)
  • 12月 2012 (1)
  • 11月 2012 (1)
  • 10月 2012 (4)
  • 9月 2012 (1)
  • 8月 2012 (2)
  • 6月 2012 (2)
  • 5月 2012 (1)
  • 3月 2012 (5)
  • 2月 2012 (1)
  • 1月 2012 (3)
  • 12月 2011 (1)
  • 10月 2011 (1)
  • 7月 2011 (4)
  • 6月 2011 (3)
  • 5月 2011 (2)
  • 4月 2011 (7)
  • 3月 2011 (4)
  • 2月 2011 (1)
  • 1月 2011 (2)
  • 12月 2010 (2)
  • 11月 2010 (2)
  • 10月 2010 (5)
  • 9月 2010 (5)
  • 8月 2010 (1)
  • 7月 2010 (6)
  • 6月 2010 (6)
  • 5月 2010 (4)
  • 4月 2010 (6)
  • 3月 2010 (14)
  • 2月 2010 (10)
  • 1月 2010 (6)
  • 12月 2009 (11)
  • 11月 2009 (10)
  • 10月 2009 (13)
  • 9月 2009 (23)
  • 8月 2009 (12)
  • 7月 2009 (23)
  • 6月 2009 (22)
  • 5月 2009 (40)
  • 4月 2009 (6)
  • 3月 2009 (6)
  • 2月 2009 (6)
  • 1月 2009 (12)
  • 12月 2008 (15)
  • 11月 2008 (13)
  • 10月 2008 (10)
  • 9月 2008 (12)
  • 8月 2008 (19)
  • 7月 2008 (15)
  • 6月 2008 (45)
  • 5月 2008 (29)
RSS feed