さて、OSC 本番。
今日は JavaFX で作ったプレゼンテーションツールの Caraibe について話してきました。
いきなり Caraibe の構成や、使い方の話をしてもしかたがないので、プレゼンテーションツール一般の話から。
プレゼンテーションツールに必須の機能は複数のページを、クリックやキー入力で、切り替えて見せること。でも、実際には 1 つのページには複数の要素があるので、それを順々に見せるということも必要になります。
そういう機能を表しやすいデータ構造を考えると、ツリー構造に落ち着きます。クリックをするたびに、表示する枝を切り替えていけばいい。
でも、問題なのは起動時。ツリーで表したページをすべて起動時に生成すると、時間もかかるし、ヒープも食いつぶしてしまいます。
そこで、レイジーインスタンシエーションを使って、必要な時にページを生成するようにします。
JavaFX はツリーを表しやすい宣言的文法が使えるし、関数型があるのでレイジーインスタンシエーションも簡単です。
と、ここまで説明してから Caraibe の説明という流れにしました。
OSC では Java はアウェーなので、それほど人は集まらないだろうと思っていたのですが、予想以上に人が少なかったのが残念でした。
今回の講演のためにもんたメソッドが使えるようにしたりしてきたのですが...
やはり、まだ JavaFX の知名度は低いんでしょうね。もっとがんばって、知名度を上げていかないと。
ちなみに、もんたメソッドははがすものが四角形 (Rectangle クラス) しか使えないので、今のところ汎用には使えません。もっと使えるようにしようとは思ってますが...
Rectangle クラスはプロパティとして x, y, width, height があるのですが、他の Node クラスのサブクラスにはこれらのプロパティがあるもののとないものがあるのです。つまり、Node クラスのプロパティには x も y も width も height もないのです。
でも、はがすには、はがす対象の位置と大きさが必要となります。
もちろん、対象となるオブジェクトの型を検出して、その型に応じて位置と大きさを取得するということはできます。でも、それだと if 文がずらっと並ぶことになってしまうし、想定以外の型の場合対処ができないんですよね。
しかも、translateX と translateY という移動のためのプロパティがあるので、x と y があったとしても、実際に表示されている場所は違うかもしれません。
これらをすべて考慮して、しかもシンプルな方法が今のところ思いつかないのです。どうすればいいかなぁ?
そういえば、Caraibe というのはチョコの名前なんです。だから、資料の中に Caraibe のチョコの写真を入れようと思ったのですが... 意外に使える写真を撮っていないことに気づきました。
しかたがないので、羽田空港で Pierre Marcolini で買いましたよ、Caraibe。Pierre Marcolini で Caraibe を扱っているのは知っていたのですが、羽田空港の店はセット売りだけなので、Caraibe があるかどうかが不安。
でも、ありました。よかった、よかった。
で、夜、ホテルで撮った写真が下の写真です。もちろん、機材は揃っていないし、照明もヘボヘボなのですが、意外にちゃんと撮れましたよ。
0 件のコメント:
コメントを投稿