美術館をめぐる幾つかの試み

■週末ともなれば暇な時間を埋めるように美術館やら何やらまわっているわけですが、そういうスケジュールをどこで入手するかといえば、それぞれのHPに掲載されているスケジュール情報なわけです。先月までいた名古屋なら、行く宛てといったら豊田か南伊勢ぐらいしかないのでスケジュールの組み立てに迷うことはないんですが、東京・横浜といったらいたるところにスポットがあるので大変です。そういう話も先日書きましたが、あちこち見て回るのも大変です。

 スケジュールを組み立てる時に思うんですが、あちこちのスケジュールをガントチャートで積み上げてどこどこの展示が〈いつまで〉かぶっているのかを把握できると便利だなーと。各施設のスケジュールを網羅しているところとしてはTokyo Art Beatがあるんですが、ここのスケジュール表示は刹那的というか、「今」は把握できるんですが、例えば再来週の土曜日がどうなっているのかとかいった将来の把握がしにくい。MyTABとしてブックマークを作成すればある程度情報の集積はできるんですが、網羅的な把握はまずできません。
 別途スケジュールアプリを使って、自分でまとめないとだめかなあと思っていたら、TABにはAPIがあって、スケジュール情報をXMLで取得することができる。じゃあ、それを使ったれ。

 例によってPHPを使いましたが、言語は何でもいいでしょう。
 XMLを読み込んで、欲しいサイト以外はフィルタして、データ変換する。TABは各施設ごとにページを持っていて、そのURLがXMLには付加データとして載っているから、それをフィルタのキーに使う。データは各地域ごとに分離したURLとなっているので、これらを順次読み込んで、一括出力することで統合する。
 要するに、ただそれだけの処理です。

 出力フォーマットには最初iCalendar(RFC2445)を使いました。Microsoft Outlookが読み込めるというので。UIDやMETHODの設定に悩みましたが、とりあえず処理させることはできました。ただ、Outlookはイベントをひとつずつしかインポートできないらしく、複数のイベントが同梱されているデータを処理できない。今回の目的はTABから取得したデータを一括処理することなので、個別のファイルに分離させないと処理できないのでは役不足です。他にiCalendarを処理できるスケジュールソフトというのが解らなかったので、ものは試しとGoogle Calendarでインポートさせたら一括読み込みができました。
 ただ、Googleアプリを使うならAPIを叩けばいいじゃんという話も当然あって、APIの方を調べてみました。が、iCalendarのインポートに関するAPI情報は見当たらず。どうやら個別にイベントデータを登録させなければならないようなんですが、データの重複排除はできないのが課題でした。

 TABからのデータコンバージョンは定期的に実施したいのですが、たとえば1週間ごとに更新するとしてもTABとしては別に1週間前から掲載されているデータかどうかは考慮していないわけです。TABとしては連続して情報を公開しているだけであって、そのデータを定期的にサンプリングしてスケジュールソフトにインポートする、といった使い方まで考慮しているはずがない。
 ただ、何も考えずに定期的に更新した結果、過去に登録したイベントと同一のイベントが何度も登録されては使いづらいので、それは排除したい。
 1つのやり方としては、登録前にGoogle Calendarに登録状況を確認して、なければ登録する、というやり方。ただ、これは処理が複雑になるし、無駄にトラフィックが多いような気もします。
 もう1つのやり方は、ローカルに過去の登録情報を保存して、すでに登録してあれば除外する、というまあ、普通といえば普通のやり方。DBをどうするかという問題はありますが、この方法だと、ローカルでチェックして、登録済みであれば処理をしないので一切のトラフィックが発生しないという利点もあります。それだけ軽くなるわけです。

 結局のところ、後者の方式をとりました。TABのXMLには各イベントにユニークなIDが付与されているので、これを検索キーとして利用します。単純にフラットファイルに落として、文字列検索という方法もありますが、今回は検索キーをタグ名称とするXML形式に落としました。ルートノードの配下に各検索キーを名称とする子ノードがずらっと並ぶ形式です。当然タグ名称はイベントごとに異なるものとなるので、1つとして同じタグ名称は存在しません。Namespaceを考えるとヒドイ話ですが、まあ、そこは目を瞑ることに。
 この方法をとると、Xpathでキー検索が可能になります。真っ当な使い方では無いと思うのですが、まあ、検索ルーチンもDB設計も不要なので、その方式としました。

 Google Calendar APIの呼び出しには、Zend FrameworkのGdataサブセット(Zend_Gdata)にあるデモプログラムを流用しました。1回ログオンして、あとはTAB XMLから抽出したデータをちぎっては投げるわけです。これで、うまく行きました。

Copyright (C) 2008-2015 Satosh Saitou. All rights reserved.
戻る
日記::一覧展開
2016.06
卒検突破 (2016.06.26)
急制動 (2016.06.05)
坂道発進 (2016.06.04)
2016.05
スラローム (2016.05.29)
一本橋 (2016.05.28)
半クラ (2016.05.22)
2015.12
2015.11
2015.08
2015.07
2015.06
2015.05
EF50mm F1.8 STM (2015.05.24)
Private Private (2015.05.17)
NTPを整備する (2015.05.02)
2015.04
2015.03
2015.02
潮つ路 (2015.02.22)
未見の星座展 (2015.02.07)
2015.01
PSYCO-PASS劇場版 (2015.01.18)
2014.12
DOMANI/シェル (2014.12.20)
PHPでDMC (2014.12.13)
jouornald (2014.12.07)
2014.11
五木田智央展 (2014.11.08)
2014.10
山口勝弘展 (2014.10.26)
コンタクト (2014.10.18)
ケース加工 (2014.10.11)
山形旅行で (2014.10.04)
2014.09
聖地巡礼 (2014.09.27)
SIAF 2014(3) (2014.09.20)
SIAF 2014(2) (2014.09.14)
SIAF 2014 (2014.09.13)
RaspberryPi B+ (2014.09.06)
2014.08
ヴァロットン (2014.08.09)
GODZILLA(2014) (2014.08.03)
絵画の在りか (2014.08.02)
2014.07
クロニクル1995 (2014.07.26)
SDHCカード集め (2014.07.20)
SDカード再び (2014.07.05)
2014.06
2014.05
駆動系の整備 (2014.05.25)
無限の可能性 (2014.05.24)
PIOON (2014.05.17)
2014.04
大洗 (2014.04.19)
2014.03
唯美主義 (2014.03.09)
写真の境界 (2014.03.02)
2014.02
星を賣る店 (2014.02.15)
日常/オフレコ (2014.02.01)
2014.01
ISCP (2014.01.11)
DOMANI/シェル賞 (2014.01.04)
2013.12
ターナー展 (2013.12.14)
2013.11
反重力 (2013.11.02)
2013.10
木の器 (2013.10.20)
2013.09
ヒステリシス (2013.09.28)
LOVE展 (2013.09.08)
宙色 (2013.09.07)
2013.08
3/4だった (2013.08.17)
福田美蘭展 (2013.08.11)
2013.07
Fedora19 (2013.07.20)
2013.06
Google Cloud Print (2013.06.30)
未来の記憶 (2013.06.16)
梅佳代展 (2013.06.15)
片岡珠子展 (2013.06.09)
椿会展 (2013.06.08)
空想の建物 (2013.06.02)
wiringPi (2013.06.01)
2013.05
2013.04
箱詰め終わる (2013.04.13)
母-娘、姉-妹 (2013.04.06)
2013.03
卒展めぐり (2013.03.30)
恵比寿映像祭 (2013.03.16)
XBeeで接続する (2013.03.10)
Fedora18 (2013.03.09)
Black (2013.03.03)
2013.02
Backupその後 (2013.02.24)
Backup (2013.02.17)
音と光 (2013.02.03)
実験工房 (2013.02.02)
2013.01
いろはにほう (2013.01.26)
燻製を作る (2013.01.19)
2012.12
外装に収める (2012.12.23)
MU (2012.12.22)
スモーク (2012.12.01)
2012.11
Whirl (2012.11.25)
MOTアニュアル (2012.11.18)
2012.10
MPL1151A1 (2012.10.07)
2012.09
(2012.09.16)
夢の光 (2012.09.08)
光のアート (2012.09.01)
2012.08
東京湾大回り (2012.08.26)
2012.07
.hack//VERSUS (2012.07.22)
具体展 (2012.07.21)
国吉康雄展 (2012.07.15)
2012.06
2012.05
DHT11 (2012.05.12)
2012.04
PHPでIPCを行う (2012.04.22)
DHCPを立てる (2012.04.14)
DNSを立てる (2012.04.08)
2012.03
IPv6を追加する (2012.03.17)
MTUを調整する (2012.03.11)
2012.02
ICO再び (2012.02.26)
Viewpoint (2012.02.25)
恵比寿・2 (2012.02.19)
イ・ブル展 (2012.02.18)
恵比寿・1 (2012.02.11)
2012.01
星霜 (2012.01.01)
2011.12
2011.11
美女採取 (2011.11.27)
アサーション (2011.11.20)
日常/ワケあり (2011.11.12)
XB24-BとXB24-ZB (2011.11.06)
2011.10
家電入れ替え (2011.10.23)
2011.09
湿度センサ (2011.09.25)
銀座線ライン (2011.09.17)
竜宮美術旅館 (2011.09.11)
2011.08
しろきもりへ (2011.08.27)
2011.07
免許更新 (2011.07.31)
2011.06
京橋、新橋 (2011.06.26)
シンセシス (2011.06.18)
撤収の準備 (2011.06.04)
2011.05
風穴 (2011.05.15)
PLATFORM (2011.05.14)
2011.04
水・火・大地 (2011.04.17)
2011.03
パーティクル (2011.03.19)
恵比寿映像祭 (2011.03.12)
カナリア (2011.03.06)
2011.02
『ソルト』 (2011.02.19)
豊島美術館 (2011.02.13)
2011.01
藝大先端2011 (2011.01.23)
幽体の知覚 (2011.01.01)
2010.12
PWMで赤外線 (2010.12.26)
2010.11
『水辺にて』 (2010.11.06)
2010.10
アショカの森 (2010.10.30)
補遺の庭 (2010.10.24)
2010.09
シッケテル展 (2010.09.26)
音を鳴らす (2010.09.12)
2010.08
ハーフ (2010.08.21)
発電所美術館 (2010.08.01)
2010.07
2010.06
『未来医師』 (2010.06.13)
会田誠巡り (2010.06.12)
2010.05
桑原漁港 (2010.05.16)
欲望のコード (2010.05.15)
『第9地区』 (2010.05.02)
2010.04
春の海 (2010.04.18)
春の錦帯橋 (2010.04.17)
『機龍警察』 (2010.04.11)
2010.03
虹ヶ浜 (2010.03.28)
菊川湖再び (2010.03.14)
『虐殺器官』 (2010.03.13)
梶取岬 (2010.03.07)
絵画の庭@NMAO (2010.03.06)
2010.02
湯野温泉 (2010.02.06)
2010.01
2009.12
菅野ダム行 (2009.12.20)
2009.11
neoneo展 part2 (2009.11.29)
2009.10
広島ノ顔@HMOCA (2009.10.18)
末武川ダム (2009.10.10)
2009.09
吉宝丸@広島 (2009.09.20)
2009.08
2009.07
下松 (2009.07.12)
T4 (2009.07.05)
2009.06
仙台 (2009.06.07)
蕪島 (2009.06.06)
2009.05
2009.03
2009.02
2009.01
2008.12
神津佐仮説 (2008.12.21)
AVR HTTPサーバ (2008.12.20)
風景るるる (2008.12.14)
2008.11
南志摩・宿浦 (2008.11.22)
志摩あたり (2008.11.01)
2008.10
『剣の名誉』 (2008.10.18)
2008.09
石内都 (2008.09.06)
2008.08
宮島・厳島 (2008.08.30)
精神の呼吸 (2008.08.24)
西国行き (2008.08.23)
ICMP Echo応答 (2008.08.16)
MACフレーム (2008.08.03)
2008.07
小さな世界 (2008.07.26)
早送り (2008.07.20)
屋上庭園・他 (2008.07.13)
夢みる世界 (2008.07.12)
2008.06
古都の残像 (2008.06.01)
2008.05
北陸行 (2008.05.30)
ないまぜ (2008.05.24)
SDカード再び (2008.05.11)
GPSロケーター (2008.05.04)
2008.04
2008.03
音が小さい (2008.03.30)
STILL/MOTION (2008.03.22)
IAMAS2008 (2008.03.16)
80.7MHz/81.3MHz (2008.03.09)
橋頭堡 (2008.03.01)
2008.02
1998.11
作成:2009.02.25
公開:2009.03.14

Valid XHTML 1.1

loading image reserved place