昨日書いたzoomonkeyを使って、プレゼンテーションの中身を作る作業に取りかかったのだけど、これがやはり茨の道になった。
まず、編集ソフトが無い以上、内容を何かしらの形でやっつけるしかない。最初のサンプルはgoogle docsからtomblooでキャプチャした画像を貼り付けただけだったので、とても簡単だった。しかしこれを全部のページについてやるわけにはいかない。後から内容を編集するたびにキャプチャするのは大変だからだ。
というわけで、テキストから機械的に変換できる方法を探し始めた。最初に思いついたのがSVG編集ソフトで編集したSVGをXAMLに変換するやり方だ。
- SVGをXAMLに変換するソフトはいくつかあるようだが、無償で使えるもので真っ先に見つかったのはcodeplexにあったsvg2xamlだった。というわけで最初はこれを試すことにした。
- OO.o ImpressにはプレゼンテーションをSVGで出力する機能がある。というわけでgoogle docsで作成したプレゼンテーションをPPTでダウンロードしてOO.oで開いてSVGで保存して、svg2xamlをかけてみたが、案の定うまくいかない。どうやらそもそもPPT->SVGの段階で失敗しているようだった。PPTなどをソースにするのは早々にあきらめた。
- inkscapeには何とXAMLをインポート/エクスポートする機能がある。というわけで早速SVGでプレゼンテーション内容を少し作成して変換を試してみたが、ノードが全部変換されず(多分最初に失敗したところで続行を放棄している)、おまけに数分後にアプリケーションエラーで落ちた(変換は即時に終了しているので、何らかの別プロセスが悪さをしているのだろう)。inkscapeでダメなら多分他はAdobe製品やMS Expressionなどを当たらないと無理だろう。
というわけで、ある程度探したものの、これは無理だということであきらめて、VWD2010 ExpressからついてくるSilverlightのGUIデザイナを使って書くことにした。これはこれで困難だったのだけど、それは別途書いたのでここでは繰り返さない。
これをmoonlightに持っていったら、案の定まともに表示してくれなかった。デフォルトフォントが日本語に対応していない。仕方がないのでIPAGothicを明示的に指定することにした(Silverlightアプリとしては好ましくないが)。あとはXAMLのTextBoxに改行入りテキストの問題くらいで、それなりにすんなり行ったと思う(もう覚えていない)。
そしてこれからが苦行になった。移動したいロケーションとzoom比率をactionとして定義するのだけど、これをきっちり機械的に処理できるようにしていなかったので、全て手探りで手入力することになった。40ポイント程度を定義するのに、全部で3時間以上かかった。
これは移動枠ごとにCanvasを定義して、そこから自動計算できるようにすると良いのだろう。あるいは、デザイナツールで、ロケーションの定義をマウスカーソルで選択できるようにするとか。前者は明らかにハッカー的な手法で、一般人は後者でないと使えないだろうが、いずれにせよ、それくらいのことが出来るようにならないと、これを使ってプレゼンテーションを作成するのは困難そうだ。
preziはそこまで含めて実現して公開しているのだからすばらしい。
moonlightチームに今出来ている資料を見せたらうけていたので、汎用化すれば使い物になるかもしれない。
ちなみに名前はもちろんzoomとmonkeyを掛け合わせているのだけど、最初の構想の時に考えていたdeep zoomはかけらも使っていない。CanvasにScaleTransformをかけているだけだ。まあズームしているとも言えなくはないので、このままでいいだろう。