たのしいchumby

第3回 chumbyを軽くハックしてみよう

この記事を読むのに必要な時間:およそ 4.5 分

ランダムに写真を表示する

PhotoFrame widgetはあらかじめ決められた写真ファイルを決められた順番に表示するものでした。それとは異なり,毎回アクセスするたびにランダムな画像を表示する仕掛けについて解説したいと思います。

ここで使うwidgetはLoad Image from URLです。

これは,事前に画像URLを設定しておくとその画像を取って来て表示するだけの簡単なwidgetです。指定先画像URLの実体を,アクセスのたびに異なる画像を返すCGIにすることで,widgetで毎回異なる画像を表示することができます。

Load Image from URL

Load Image from URL

この「Load Image from URL」ハックの解説や応用については,以下の記事を参照してください。

共通する(CGIの)ロジックは,下記のような単純なものです。

  1. 対象画像ファイル(または画像URL)リストを読み込み,
  2. 一つ選び(ランダムor順番⁠⁠,
  3. 「Location:」で飛ばす

画像ファイルリストはRSSを読み込んでそこから作ったりもできます。また,画像検索APIの検索結果XMLを読み込んで加工しても良いでしょう。簡単ながらいろいろと応用できます。

以下に「Load Image from URL」Widgetで手軽なchumbyハック!のCGI(Perl)を改造した簡単なサンプルをあげておきます。サーバに置いてる静的RSSファイル(index.rss)を読み込み,CDATA内のimgタグで指定されている画像URLを全て取り出し,ランダムで一つ選んで転送するものです。

ランダムに画像を返すサンプル CGI

#!/usr/bin/perl -T
use strict;
use warnings;
my @urls = ();
open(my $fh, "<", "index.rss") or die;
while (<$fh>) {
  next unless m{<img src="(http://.+?)"};
  push @urls, $1;
}
close $fh;
srand;
my $url = $urls[rand(@urls)];
print qq(Location: $url\n\n);

また,下記の記事では「Load Image from URL」を使って,気象庁の降水ナウキャストの画像を表示するハックを紹介しています。窓から離れたところにいても外の雨の様子が分かるので非常に便利で,常用しています。

日本語フォントなしで日本語を表示する

現在のchumbyには日本語フォントが入っていません※2⁠。そのため,日本語を表示するwidgetを作るときには日本語フォントを埋め込まなければなりません。単純にwidgetに埋め込むとサイズが大きくなりすぎて,chumbyのサイトにアップすることができなくなります。そうなると,みんなに気軽にchannelに追加してもらえなくなってしまいます※3⁠。

ということで,現状での単純で手軽な妥協策は,Webサーバ側に日本語フォントを用意し,日本語文字を画像化し,⁠Load Image from URL」widget経由で表示するというもの。これならばchumby側で日本語フォントに悩まずに済みます。

下記の記事では,GDというライブラリを使ったchumby用の「テキスト→画像変換」CGIのサンプルが紹介されています。Twitterのフレンドタイムラインを画像化してchumbyでチェックするためのハックです。

日本語メッセージを画像化

日本語メッセージを画像化

※2
そのうち日本語フォントを含めたアップデートが公開されるそうなので,そうなったら何の苦労もなくなります(もう少しの辛抱かな?⁠⁠。
※3
回避策として,chumbyのサイトには本体widgetをロードするだけのwidgetを登録し,実行時に自分のWebサイトに置いた本体widgetをロードしてもらうという2段ブートも可能だそうです。

おわりに

今回は,SSH経由でのchumby本体へのログイン,画像表示系widgetでのランダム画像表示や日本語文字画像化など,widgetを作らないでchumbyをハックする方法を紹介してきました。

次回は,実際にwidget作りにチャレンジしたいと思います。お楽しみに!

著者プロフィール

Shibuya.chumbies

日本で最初のchumby大量輸入,および日本初のchumbyイベント「chumby night」を開催をした「chumby の普及を促進」する有志ユーザ団体。

URLhttp://chumby-night.net/

関連記事