Pipesは、米Yahooがリリースしたビジュアルプログラミング環境です。2009年2月現在β版として提供されています。IDでログインするとパイプの作成を行えますあらかじめ用意されたモジュールを画面上でつなぎ合わせていくことで、HTMLやRSS、CSVやYahoo!の検索結果などを入力データとし、それらのデータの統合や抜粋、置換などの加工を正規表現などを用いて行い、結果をRSSやJSONといったデータ形式で出力したり、ウィジェットとして得ることができます。これまではRSSなどのオンラインデータを、ほかのアプリケーションに渡したり、Webブラウザに渡すために加工するには、レンタルサーバを借りてPHPやPerlなどのプログラミングをするしか方法がありませんでした。Plaggerのようなフレームワークもありますが、インストールやプログラミングにはやはり手間がかかります。Pipesはそれを、Webブラウザさえあれば誰でも実現できるようにしてくれる画期的なサービスといえます。Pipesの開発環境はすべてWebブラウザ上で動作するオンラインサービスとして提供されており、ローカルにはWebブラウザ以外必要ありません。開発された「パイプ」と呼ばれるアプリケーションはYahoo!のサーバ上で実行されるため、自分でサーバを用意する必要もありません。Pipesは無料で利用することができます。簡単な例をいくつか挙げてみます。Pipesの得意とする分野だといえます。データのマッシュアップツールです。1つの特徴が、すべての開発がWebブラウザ上でビジュアルに行われるという点です。公開されているパイプを2つほど紹介しましょう。地図の上に、州ごとのピンが立ち、クリックすると人口を表示します。Localの地図機能に重ね合わせています。したビジュアルなパイプもできる、という例です。全文配信APIを紹介します。Japanが配布しているRSSは本文の一部しか含まれていませんが、全文を取得してRSS化するパイプです。出力されるフィードをRSSリーダーで読み込むと、本文全文を参照することができる仕組みは、公式RSSの記事URLを基にHTMLを取得し、あらかじめ解析して分かっている本文の開始タグと終了タグのあいだを抽出しています。記事が複数ページにまたがる場合には、リンクをたどって次ページ以降の本文も取得しているようです。Japan以外にも@IT、マイコミジャーナル、GigazineなどのRSS全文配信パイプを公開しています。Pipesによるパイプの開発手順を実際に見てみましょう。JapanのIDではログインできませんでした)。Pipe」ボタンを押すと開発画面が表示されます。画面左にあるライブラリにモジュールがならんでいる。このモジュールを中央のキャンバスに展開してプログラミングし、画面下部のデバッガで動作を確認するこれから作るアプリケーションは先ほどあげた3番目の例にならい、次のような機能を備えるものとします。キーワードを入力すると、あらかじめ登録しておいた複数のニュースサイトからキーワードに合致した記事を検索して、その結果をフィードで出力するでは始めましょう。キーワードを入力するための機能を作ります。Inputs]モジュールをキャンバスにドラッグ&ドロップします。設定画面が表示されるので、名前などを設定します。次に、キーワードに対応した検索結果を出力する機能を作ります。Search]モジュールをキャンパスにドラッグ&ドロップします。設定画面が表示されます。for」欄につなげます。これで、ユーザーが入力したキーワードが検索キーワードになりました。restriction」の欄には@ITとITProのURLを入れると、この2つのサイトの検索結果だけを得ることができます。Output]モジュールにつなげれば完成です。動作確認は簡単にできます。Inputs]モジュールの「Debug」欄に何かキーワードを入れます。ここでは「Pipes」にします。Output]モジュールにマウスでフォーカスを合わせて、画面下部のデバッガの「Refresh」ボタンを押せば結果が表示されます。「pipes」というキーワードを設定して検索してみた画面右上の「Save」ボタンで、このアプリケーションに名前を付けて保存してくことができます。用意されているモジュールと、アプリケーションについてもう少し詳しくみてみることにしましょう。Pipesでデータの取り込みを担当するのが[Sources]モジュールです。以下のデータを取り込むことができます。Searchこれらに加え、URLやキーワード、テキスト、数字、住所などのデータをユーザーの入力などで与えることができます。今後も新しいデータソースが追加されていくと思われます。いくつか興味深いものをピックアップしてみましょう。[Flickr]モジュールは、キーワードと場所を指定することができます。YQLは、Yahoo!が開発したSQLに似た問い合わせ言語で、Yahoo!への検索命令をSQLで記述し、その結果をXMLで受け取ることができるため、これまでより分かりやすくシンプルな記述で複雑な問い合わせを記述でき、結果をXMLによる構造的なデータとして取得することができるものです。Pipesでは、取り込んだデータを変換したり取捨選択することが動作の中心となります。そのためのロジックを組む機能を見ていきましょう。ロジックの中心となるのが[Operator]モジュール群です。以下のような操作ができます。操作の繰り返し(ループ)変数の宣言や条件分岐といった機能複雑なロジックを作り込むことはできません。UNIXのコマンドをパイプでつなぎ合わせていくことで標準入力の内容を変換していく操作に似ています。それゆえに、ロジックの中心はほとんどの場合、正規表現によるデータの変換と、マッピングの変更などによって実現されます。正規表現によるデータの変換とマッピングの変更によって実現されるロジックとはどういうものなのか、簡単な例を示しましょう。複数のフィードを集めて統合し、日付順にソートして出力する、という単純なパイプを作ってみることにします。feed]モジュールを複数用いてフィードを取得し、それを[Union]モジュールで統合して[Sort]モジュールでソートすればよさそうです。ところが、フィードには実際にはRSSとATOMという異なったデータフォーマットがあり、しかもRSSのバージョンによっても細かいデータの中身は異なっています。エントリの公開日付を示すデータは、あるRSSではdc:dateタグの中身であり、別のRSSではpubDateタグの中身に、別のAtomではpublishedタグの中身にある、といった具合です。これではソートの対象とするデータを決定することができません。フィードの中身を統一的なフォーマットに変換する必要があります。した複数のフィードのフォーマットを統一化してくれるパイプにNormalizerと呼ばれるものがあります。Pipesの人気パイプとして公開されているものです。その一部を見てみると、マッピングや正規化がどのように使われているのか分かるでしょう。フィードのフォーマットを統一化するパイプ「Normalizer」の一部。分かりやすく変更してある。Pipesで扱うデータのほとんどは、フィードのデータそのものか、似たような構造を持つXMLデータになるはずです。したデータを変換、加工するためには、マッピング、正規表現による変換といったロジックが活躍することになります。Pipesを使いこなすにはフィードのデータ構造や正規表現にある程度精通することが求められるといえそうです。ここで紹介したモジュール以外にも多数のモジュールがあり、そのすべてに解説とサンプルコードが用意されています。思い通りにプログラミングをするためには、こうしたサンプルコードを読み解き、動作を確認しながら進むのが近道でしょう。公開されているパイプはソースコードを誰でも見ることができ、[Clone]ボタンで自分のページにまるごとコピーすることもできます。どのような処理を他のプログラマが行っているのか、いろいろ参照してみると意外なテクニックや方法が発見できます。Pipesの画面から実行結果を得られるだけでなく、RSSやJSONなどのデータ形式で結果を出力することができます。RSSで出力すればRSSリーダーで読むことができますし、JSONで出力すればJavaScriptアプリケーションなどで容易に読み込んで利用することができます。Output形式にも対応しています。公式ドキュメントの中に説明を見つけることはできませんでしたが、JavaScriptで動的に利用できるJSONP形式での出力にも対応しているようです。Pipesの見かけはドラッグ&ドロップなどのビジュアルプログラミングであるため取っつきやすくみえますが、その機能は見かけを超えて本格的なものだといってよいでしょう。用意されたデータ操作のための豊富なモジュール群と、複雑な操作が可能なデータマッピングや正規表現の機能を使いこなすには、扱うデータとなるRSSの構造や正規表現といった一般のプログラマと同等程度の知識が要求されます。RSS、JSON、PHPへの出力に対応していることで、出力データをさらに別のサーバアプリケーションやAjaxアプリケーションなどで再利用できる機能も備えています。Pipesは単純にフィードをフィルタリングしたり、検索結果をRSSに変換するようなシンプルなサービスを簡単に作ることができますが。それだけでなくサーバプログラマ、Ajaxプログラマがシステムの一部に採用することで、短時間で効率よく、柔軟なシステムの展開を可能にするような機能と可能性を備えています。Niino(jniino)IT系の雑誌編集者、オンラインメディア発行人を経て独立。2009年にPublickeyを開始しました。2.7サポートを発表Google、Lookerの買収完了を発表。Enterprise、BtoBスタートアップ向け支援プログラムで無料提供と発表。Networksの買収を正式発表。Terminal」機能確定版リリース。コマンドラインからIssueやプルリクなど実行可能に。usPublickeyについて/運営者についてお問い合わせ広告についてプライバシーポリシ。