Excel2007からRSSをでっちあげる
注)以下の物語はフィクションです。事実とは何ら関係がありません。
開発者p-nixさんは今日も大忙し。そんな中、企画グループのMさんからメールが。「Excelでデータ作ったから、これRSSにしといて。今日中にね、あ、RSSは2.0で。ではよろしく。」
そもそもなぜRSSを「作ら」なければならないのか?RSSって動的に吐き出されるところに価値があるんじゃないの?
そんな疑問をもったところで、これは仕事なのです。やらねばならぬのです。気持ちを切り替えどうやってやるのかに頭を使うことにしました。
- 一度テキストデータにしてからエディタでごりごりタグを書く
- やだ。絶対やだ。
- XSLTを作ってRSSに変換する
- 元データがXMLならXSLTを使う意味があるけど、ExcelなわけだからそれをXMLにしなきゃならないではないか。
- Excel2007はXML機能が良くなっているらしいから何とかならないか
- 確かにそうだけど。Excel2007からファイルの拡張子は「xlsx」となり、その正体はZip形式。皆さんお使いの圧縮解凍ソフトで解凍すると、データとレイアウトがそれぞれ別ファイルで、しかもわりときれいなXML形式で保存されている。これ使えるか?これからXSLT使えば何とかなるか。今日中に間に合うか?
などと思いを巡らしながらExcel2007をつついていたp-nixさん、思いつきました。Excel2007からの「XMLの対応付け」という機能を使うことによって、
- ひな型となるRSS2.0のファイルをどこかから拾ってくる。
- それをExcelにインポートする。するとExcelは自動的にXMLの構造を解析してスキーマを生成する。
- Excelのデータとスキーマをドラッグ&ドロップで紐付ける。
- 結果をエクスポートする。
これによりあっという間に仕事を終わらせたp-nixさん、今日は残業なしで帰宅です。めでたしめでたし。
、てな訳ですが読者のみなさんには何のことやら、だと思いまして詳しく解説を、と思ったのですが文章にすると結構伝わりにくいため動画にしました。オリジナルは640×480なのですが↓ちっちゃいです。泣)サイズ変更できないみたいで。リンクをクリックして「開く」か「保存」してから見ていただくと文字まで判別できるクオリティかと思います。
http://office2007.g.hatena.ne.jp/files/office2007/2ca3efaa61d4b0c1.avi
参考までに同じ動画をGoogle VideoにもUPしたのですが元々640×480だったのが自動的に320×240に変換されてしまうようで(youtubeも同様)文字の判別がかなり厳しいかと思います。
http://video.google.com/videoplay?docid=-6001260036958235538
画面のキャプチャーには、CamStudioというソフトを使いました。しかしエンコードをDivX(DivXR 6.6.1 Codec)でやろうとするとエラーになってしまい、「Microsoft Video1」という非圧縮形式で作成。そのあと宝の持ち腐れ状態だったAfter EffectsでDivX形式に変換しました。3分41秒の映像が510MB→18MBになりました。AfterEffectsまで使ったんだから音声の解説も入れられるはずなんですが恥ずかしかったのでやめました。
今回のお話はRSSに変換でしたが、ひな形のXMLファイルさえあればそれに対しての変換が可能です。でも正直この使い方が正しい使い方なのかの自信が持てません。皆様からのツッコミお待ちしています。
※追記
この記事を見て、「そんなのInfoPathでやればいいじゃん」と思った方、さすがです。そのとおりです。でも理想どおりにいかないのが現実でして。InfoPath持ってなかったり、そもそもその存在を知らなかったり。実際問題ライセンスとか課題ですし。InfoPath2007はなんかライセンス体系変わったみたいですけど。InfoPathはなぜ苦戦したのか?――新バージョンが目指すもの (1/3) - ITmedia エンタープライズ