2006/10/25

スクロールをより使いやすくするための改善案(前編)  VRMスクリプト禅問答
この一ヶ月くらいの間に、立て続けに数名の方から、拙作gws/1.0規格自動運転スクロールを組み込んだレイアウトの解析依頼(意図通りに動かないんだけども、どうすればいいですか?みたいな)を承りました。いずれのケースも、究極的にはスクロール組み込み手順の間違いではあったのですが、それは作業者のミスというよりは、現行VRMレイアウターのインターフェイス仕様の限界に起因するもののように思われました。

直接的には、読者諸兄にお問い合わせいただいた方々と同様の問題を回避していただくために、間接的にはI.MAGiCにVRMレイアウターの改善を促すために、2回に分けてまとめておきたいと思います。

*     *     *

お問い合わせをいただいた方々の問題は、突き詰めると「どのスクロールが組み込み済みなのかわからなくなった」に帰着します。

どのスクロールを組み込んだかについては、現行レイアウターでもユーザー自身で調べることが出来ます。〔スクリプト編集(エディター)〕でそれぞれのオブジェクトを参照すれば、スクロールが組み込まれている場合、以下に示す記述を見つけることが出来ます。

//SCRWIZ-GLB[組み込んだスクロールのファイル名]-IN
   ・
 (宣言部)
   ・
//SCRWIZ-GLB[組み込んだスクロールのファイル名]-OUT
//SCRWIZ-FNC[組み込んだスクロールのファイル名]-IN
   ・
 (メソッド部)
   ・
//SCRWIZ-FNC[組み込んだスクロールのファイル名]-OUT

上に示したように、“//SCRWIZ-GLB(またはFNC)”で囲まれた部分があれば、そこに示された 組み込んだスクロールのファイル名 から、どのスクロールがそのオブジェクトに組み込み済みであるかを知ることが出来ます。

つまり「どのスクロールが組み込み済みなのかわからなくなった」と仰る方は、これを見ていないか、或いはこのことをそもそも知らない(あるいは自分で確認するのが面倒臭い)ということになります。そういう意味において、これはVRMスクリプトの問題ではなく、ユーザーの理解度の問題である、と言うことは出来ます。が・・・


事実として、ボクに複数の方から同根の問い合わせが来るということは、この現行レイアウターの仕様が自体に問題があり、多くのユーザーにとってわかりにくく不便であることを意味してもいます。

大雑把に括れば、ここには2つの問題が潜んでいます。

● ユーザーはスクロールをファイル名で認識していない

ユーザーが〔SCRIPTウィザード〕で認識している名前は、たとえば“【何か】センサー”のように、スクロールのheaderセクションのtitle要素に記述されたそれであって、ファイル名ではありません。一般的なユーザーは、組み込んだスクロールのファイル名と自分が組み込んだスクロールの「名前」の間に一対一対応の関係があることを理解しないでしょう。

逆に言えば、それさえ把握すれば、現行VRM4レイアウターに後述する改善が施されなくても、どのスクロールが組み込み済みであるかは各自で調べることが出来ます。

● SCRWIZ-GLB/FNCは分散してしまう

先に示したように、スクロールの始まりと終わりを示す“SCRWIZ”で始まるコメントの間には、スクロールによって書き込まれるスクリプトが入ります。つまり、パッと見た感じでは、何種のスクロールがそのオブジェクトに組み込み済みであるかを知ることは出来ません。何行にも渡ってスクリプトを見渡し、これを正確に把握することは、やはり一般的なユーザーには困難であると言うべきでしょう。

逆に言えば、手間を惜しまずにスクロールから流し込まれたスクリプトから丹念にBLB/FNCコメントを探しさえすれば、どのスクロールが組み込み済みであるかは各自で調べることが出来ます。

これら2つの問題点に対し、比較的に(I.MAGiCにとって)低コストで実現できると思われる改善案を示してみます。要するに、ユーザーが認識しているスクロールの名前が見えること、その記述が分散せずに一箇所にまとまっていること、が実現できれば良いワケです。と言うことは、スクロールがオブジェクトに組み込まれる時点で、VRM4レイアウターが以下のようなコメントをスクリプトの冒頭部に加えるようにしてやれば少しはマシになるはずです。

//SCRWIZ-INC[nanika_sensor]-IN
//title "【何か】センサーVer1.00"
//SCRWIZ-INC[nanika_sensor]-OUT
//SCRWIZ-INC[gws_TimerSignal]-IN
//title "【gws/1.0】時限式自動信号機Ver1.00"
//SCRWIZ-INC[gws_TimerSignal]-OUT
//SCRWIZ-GLB[nanika_sensor]-IN
   ・
 (以下、スクロールの中身)
   ・

基本的な考え方としては、第一に現行のGLB(グローバルの意)/FNC(ファンクション=メソッドの意)に加えてINC(インクルード=組み込みの意)コメントを、GLB部の前に書き込むことにします。これにより、組み込み済みスクロールの識別子が、長いスクリプトのアチコチに分散してしまって把握し難くなる問題が改善されます。

更に、INC-IN/OUTの間に、組み込んだスクロールのheaderセクションのtitle要素、つまり、ユーザーが認識できる「スクロールの名前」を、コメントとして書き込むようにします。これで、一般的なユーザーがスクロールをファイル名で認識していない問題に対処することが出来ます。

明日述べるGUI実装は別にして、この機能は現行レイアウターが有している「SCRWIZ-GLB/FNCコメントを書き込む機能」を拡張することで比較的容易に実現することができるはずです。つまり低コストであり、また、スクリプトコンパイラから見れば「コメント」が増えるに過ぎませんから、副作用のリスクも小さいと言えます。

仮にこういう機能をVRM4レイアウターに実装したとしても、この処理が実行されるのはスクロールが組み込まれるその一瞬だけですから、レイアウターの動作全体への悪影響(パフォーマンスダウン)は起きないはずです。また、オブジェクトに書き込まれるスクリプトの量が増える、という点についても、そもそもINC部は「コメント」であり、VRM4レイアウターがビュワーに引き渡している(コンパイルされている)スクリプトの量は変化しませんから、実害はないはずです。

これだけで(もちろん、この仕様をユーザーに理解してもらうための相応の説明が必要なのは言うまでもありませんが)VRM4のスクロール機能は格段に使いやすくなるのではないか、とボクは思います。少なくとも、スクリプトエディターを開く勇気があるユーザーは「どのスクロールが組み込み済みなのかわからなくなった」という問題からは解放されます。

一方で、依然としてスクリプトエディターを開く気がそもそもないユーザーは、救済されません。そこで、ここに書いた改善策を実装した上での「次の一手」を明日、示すことにします。

<補足>

このような提案をおこなう背景の1つとして、拙作スクロール群が基本的に「複数のスクロールを組み合わせることで機能を発揮する」という、製品付属のスクリプトリファレンスが(暗に)推奨していない構造を有している点があります。

このようなスクロールの書き方の是非は別途議論されるべきであり「そのようなスクロールを書くghostがけしからんのであって、VRM4は今のままで良い」というご意見もあろうかと思います。そういう意味でボク自身はこのテーマを客観的に論じることが出来ない立場ですので、読者諸兄のご見解を賜れますと幸いです。

後編へつづく>
0

コメントを書く

この記事にはコメントを投稿できません




teacup.ブログ “AutoPage”
AutoPage最新お知らせ