Quartz Composerにどっぷり!
RSSを表示するのだ

今回のテーマ

今回のテーマは、RSS表示です。

推奨環境 この解説は、以下の環境を前提に作成し、動作確認等を行っています。ご確認ください。 改版履歴 アウトライン
RSSってどうなっているの? : タイトル名を取得

今回は、Mac OS X 10.4 にも標準で付いている RSS 表示スクリーンセーバの技を解説します。RSS Feed というパッチがありますので、まずはこれを配置します。URL に使用したい RSS の URL を「 http://.... 」で指定します。デフォルトでは「 http://www.apple.com/main/rss/hotnews/hotnews.rss ( Apple のホットニュース ) 」が入っています。Information ポートからは、この RSS 全体の情報が出力されますので、これをまずは表示してみましょう。

Information ポートから出力される情報は「 Structure 」というデータ形式で、中に複数の情報を含んでいます。具体的には、「 タイトル名 ( = title )、URL情報 ( = link )、更新日時 ( = systemTime ) 」といった情報が入っています。この複数の情報から 1 つを取り出すには、Structure Key Member というパッチを使います。Inspector で、取り出したい情報の名前 ( Key ) を書きます。title と入れると、タイトル名が取り出せるので、これを Image With String 経由で Billboard に出力すると以下のようになります。

記事情報を取り出す

次は、RSS Feed パッチに含まれている記事の情報を取り出して見ましょう。記事も Structure 形式で、「 タイトル名 ( = title )、URL情報 ( = url )、記事の中身 ( = description ) 」などが入っています。さらに、記事は 1 つの RSS Feed パッチの中に複数含まれていますので、何番目の記事を取り出すかの指定も必要です。以下のようなデータ構造です。

Article List から記事の束が出力されていますので、まずは、何番目の記事かを指定して、記事の中のどの情報を取り出すかを指定します。何番目の記事を取り出すかは、 Structure Index Member パッチを使います。Inspector の Index で、何番目かを指定します。ここでは、0 を指定しているので、先頭の記事を取り出すことになります。

次は、取り出す記事を自動的に切り替えるようにしましょう。Interpolation パッチで、Structure Index Member の Indexポートに「 0〜記事の最後の番号 」を入力するようにします。このためには、記事の数を知る必要がありますが、これには、 Structure Count パッチを使います。Interpolation パッチの Start Value を 0 にして、End Value と Duration に Structure Count パッチの Count を入力します。

Interpolcation の Result には、「 0〜記事の数 」の値が実数で出力されますが、Round パッチでこれで小数点以下を切り捨てます。Round パッチの Rounded Value は四捨五入、Floor Value は切り捨て、 Ceil Value は切り上げになります。これで、1秒間隔で表示する記事が変わるはずです。

マクロにまとめる

段々とパッチが増えてくると見づらくなってきます。機能的に使い回しができそうな部分はマクロ化することで見やすくすることができます。「 Structure Count、Interpolation、Round 」の3つは、自動的にどの記事を表示するかのカウントアップするマクロとして 1 つにまとめてみます。結果は以下のようになります。ちょっとスッキリしますね。

3 つのパッチを選択した状態で、ツールバーかメニューから「 Create Macro 」を実行すると、マクロにしてくれます。マクロをダブルクリックして中に入ると以下のようになっています。Structure Count パッチの Structure ポートと、Round パッチの Floor Value ポートがグレーになっていますが、これは Publish されているポートで、このマクロの外とのやり取りを行うポートになっています。コンテキストメニューで Publish するポートを指定できます。

補足:Quartz Composer 2.0のバグなのか上記手順ではマクロ化うまく機能しないことがあります。以下を実行してください。パッチを選択しない状態で Create Macro を実行します。すると、中身が空のマクロができますので、3つのパッチをカットして、マクロをダブルクリックして中に入ってペーストします。Structure パッチの Structure ポートと、Round パッチの Floor Vaue ポートをコンテキストメニューを使って Publish します。

文字列を折り返して表示する

記事の切り替え表示ができるようになりましたが、表示される文字の大きさが一定しないことがあることに気づいてるかと思います。Image With String パッチの設定を見直す必要があります。何も変えていなければ、Image Width と Image Height の値が両方 0 になっているはずです。この場合、表示先の Billboard パッチの横幅に収まるように文字の大きさを調整します。そのため、文字列が長い場合は文字が小さくなります。

そこで、Image Width を Billboard パッチの幅と同じ 1 にしてみます。すると、文字の大きさは一定になり、はみ出した文字列は次の行に表示されるように折り返して表示されます。

補足:Quartz Composer 2.0では、日本語を表示する場合は、Image With String パッチのフォントの指定を日本語フォントにしないと文字サイズの計算がうまくいかないのか、思ったような表示になりません。

かっちょよいエフェクトをつける

ここまでで、RSS の表示ができるようになりましたので、仕上げにエフェクトをつけてみましょう。徐々に拡大しつつ、徐々にフェードアウトするようにします。

Interpolation パッチで、Billboard パッチの大きさを決める Width を 1 から 1.3 に変化させ、同時に、文字の透明度を Interpolation パッチ ( 値は 1 から 0 へ ) と RGB Color パッチで徐々に透明にします。前回作った回転する地球を背景に表示させたりすると、さらにかっちょよくなります。

サンプル
Quartz Composerのファイル
クイックリファレンス