予告してから少し経ってしまいましたが、お待たせしました
RC3版(ReleaseCandidate 3)の公開です。「次は正式リリースだ!」なんていうことを以前に書いた気もしますが、舌も乾かぬうちにこういうことするのは少々気が引けますが、それぐらい現在WindowListerはめまぐるしく変化しています。ただ、次期正式リリースに向けてより一層の機能性・安定性の向上を第一に考えての行動ですので、どうかご理解ください。
RC2版に関しては、今回は諸事情によりいきなり配布ファイルだけを取り急ぎ公開しましたのですでにご試用になられている方も多いと思います。ここではRC2版およびRC3版にて変化した部分を詳細に説明したいと思います。すでにご試用の方もできればご一読ください。お願いいたします。
なお、RC3版はRC2版のクイックリファレンスに散見された誤記述や説明不足を補った上に、一部新機能追加の他、内部パラメータなどの微調整などを施したものであり、基本的にはRC2版と変わりありません。
例によって、記事は3分割されております。
最後までお読みになった上でご使用いただければ幸いです。
★まえふり
今年、池田はWindowListerに対して本気を出します。おそらく今までとは比べものにならないぐらい本気になります。
実は、WindowListerのレイアウトエンジンを独立させたのもそれの一環です。今年は本気でレイアウトエンジンについて取り組みます。
目指すは「かっこいいレイアウト」ではありません。
目指したいのは「レイアウトとして存在価値のある無理のないレイアウト」です。
Vistaのようなウインドウの3次元表示とか、Exposeのようなスケーリング表示とか、そういう単なる「見た目」は二の次とします(もちろんある程度は実現します)。池田が追求したいのは「なぜこういうレイアウトがいいのか?」「そのレイアウトはどのようにして作る(計算する)のか?」この二点です。池田はレイアウト屋さんではありませんので、いろいろなデザイナーが示したレイアウトに(いい意味で)インスパイアを受け、そこから求め留べきものを決め、それを自分がさわれるPC上で実現すること。これに尽きます。
皆さんは「たかがレイアウト」と思うでしょう。
しかし、池田にとっては「されどレイアウト」です。
同じものでも出し方・見せ方を変えると印象ががらりと変わります。ただでさえインターネットの普及でPCにて表示すべき情報は増加の一途をたどっているのに、その見せ方についてはほとんど考究されていない(語弊がないように書いておきますが、大量の情報から重要な情報だけを絞り込むという研究は腐るほどあります。デスクトップ検索とか。しかし、「多めの情報を不都合なく一覧として表示すること」、もっと言うと「表示しなくてはならない多めの情報を一目でしっかり一覧で表示する」という研究は池田はほとんど知りません)。池田がインスパイアを受けたExposeですら、ウインドウが多くなるとほとんどグリッド状になってしまう(試しにこれをやってみたときはかなり愕然としました… と、ちょっとだけ「勝った」と思いました(何に勝ったんでしょうかねぇ…))。
(↑WindowListerでも主領域表示オブジェクト数が30個を越えるとグリッドレイアウトのTypeBに切り替わるようにしてありますが、10個や20個程度ではへこたれません)
これはおそらく、どのようなレイアウトがいいかなんて考えるのは前回のまえふりでも書いたように「愚か者」がやることだからなのでしょう。
でも池田はWindowLister、とかくレイアウトエンジンについては「愚か者」になります。目指すはその先にある「嘲り」か「喝采」かのどれか(byカレイドスター)。どちらでもいいんです。愚か者になることが重要なのです。
というわけで、今回のRC3版もそんな愚か者を目指す輩のまだまだ見果てぬ先の道半ばなとりあえずの成果です。
★RC3版での更新内容
RC3版ではRC1版に比べて次の内容が更新もしくは追加されています。基本的には事前に公開したRC2版と変化ありませんが、一部RC3版で新規導入したものもあります。項目終端に(*)があるものはRC3版で新規導入されたものです。
・さらなる全体的なレスポンスの向上
・レイアウトエンジンを WFLEngine という名称で独立
・レイアウトエンジン内の意味的要素参照度合いの変更
・各オブジェクト表示処理の際の演算を3次元に拡張した事による、アニメーションや選択時の表示形態変更
・ウインドウ種別ごとに全面表示を切り替えることが可能な「前面優先表示」機能の追加
・「ウインドウクローズ(Close Window)」をフォーカスすることによる全通常ウインドウ(アプリケーションウインドウ)一括クローズ機能の追加
・バインドカードアイテムの「フィルター」記述によって、バインド位置移動時に表示する通常ウインドウを絞り込む「バインドフィルター」機能の追加
・「コントロールセンター」で、待機位置(マウスカーソル移動による選択フィールド開閉位置)の部分にポップアップを表示するようにした(*)
・ルートバインドのカードをデスクトップ背景に透過表示する「カードデスクトップ表示」(*)
・その他、細かい修正や改良
以下、それぞれの項目について個別に説明します。
★さらなる全体的なレスポンスの向上
RC1で、いかにWindowLister開発者の池田がレスポンス向上に気を遣っているかが分かって頂けたと思います(笑)。そして、RC2版、RC3版でもそれはさらに加速し、レスポンス低下の原因となる部分を徹底的に調査し、これでもかというぐらいの対策を施しました。結果、スペックが低いマシンであるほどこれまでに比べてレスポンスが向上していることが体感できると思います。
今回改良された部分の代表例を挙げると、次のようになります(ここ以外にも微修正などを施しています)。
(1)移行移動アニメーションの描写精度によるレスポンス低下の抑制
(2)選択中における選択指示やフォーカス指示移動(要するにマウスカーソルの移動)などによるレスポンス低下の抑制
(3)各種文字列表示の見直し
これらは全て「見たまま」ですので詳細な説明は省略しますが、これを実現するに当たって背後では徹底的な描写手順の見直しを中心に、かなり込み入った改良を施しました。特に、(2)については、多少使用メモリは増えちゃいましたが、選択中のレスポンスが大幅に向上していることが体感できると思います。マウスカーソルなどで選択指示を移動させてみると分かると思います。
なお、これらの改良にはハードウェア依存の機能を一切使用していません(WindowListerでグラフィック関係でのハードウェア依存性のある機能は「拡大鏡表示」だけであり、それ以外は標準的な描写機能であるGDIおよびGDI+を使用しています)。WindowListerはその性質上多量のグラフィック描写を行いますが、これにもかかわらずある程度のレスポンスを保っていられるのは、きちんとした理由があり、大まかに挙げると「余計な描写は極力行わない」「実用上過度な視覚効果は行わない」という方針を貫いているからです。特に前者については、別にGDIをだまして使うとかそういう「汚いテクニック」は一つも使わず(といいますか、Windowsが汎用的なOSである以上、そのようなテクニックはあまり使えません)、描写の際の計算量的、理論的な最適化を徹底的に行った結果です。
WindowListerは、今後もハードウェアスペックに頼ることなく地道にレスポンスが少しでも向上できるように努めて参ります
★レイアウトエンジン"WFLEngine"
RC2版から、WindowListerの根本的な機構である「レイアウトエンジン」を単独のモジュールとして独立させました。このモジュールを以後"WFLEngine"と呼びます。WindowListerは以後WFLEngineを使用するクライアントとして動作します。選択フィールドの各オブジェクトのレイアウトには全てこのエンジンが使用されます。
これにより、「レイアウト設定」ダイアログの表示が少し変更しました(設定できる項目などに大きな違いはありません)。
WFLEngineは "WindowLister Foundation Layout-Engine" の略です。英語的にちょっと変かもしれませんが、「WindowListerの土台となるレイアウトエンジン」という意味が込められています。しかしこれは正式名称ではありません。WFLEngineは"WFLEngine"です。
今年のWindowListerの開発は、このWFLEngineの開発が中心となります(詳しいことは「まえふり」を参照)。また、WFLEngineは現在のところWindowListerだけのものですが、今後、仕様などを整備し、インターフェースを公開する予定でいます。その暁には、WindowLister以外にも様々なソフトウェアで使用して頂けるようになります。ただし、どのような形で提供するかについては現在検討中です。
なお、当面は最新のWindowListerには最新のWFLEngineを添付していきますので、ユーザーがこのモジュールを意識する必要はありません。
次の記事に続きます(2/3)
http://sky.ap.teacup.com/taks-ike/201.html

0