Top  上へ  目次



Ver.4系のβ版(?)Ver.4.70(後編)



 今回も「1個のタブが固まっても他のタブに影響を及ぼさないようになれば、かなり幸せだなプロジェクト」の一環です。
 予告通り今度は「閉じる」/「中断」の改善です。

 具体的にはステータスエリアに「API Waiting...」と表示されて待機してる状態です。
 これって、Windows API内部で止まってる状態でして、本当に待つ以外の選択肢がない代物だったりします。

 従来の実装は

1.何らかのスレッドが動いてる途中に閉じる or 中断イベント発生
 (一覧を表示中に、上へフォルダーへ移動しようとしたとか)
2.各種スレッドに終了命令
 (一覧表示停止!)
3.終わった?って問い合わせ
 (終わった?まだぁ?)
4.終わってなければ、2番から終了/中断処理をリトライコールバック
 (この辺りは全部UIスレッド)
 ・
 ・
 ・
 何の工夫も無いとても素直なマルチスレッド制御の構成になっています。
 UIスレッドでやってるもんだから、アプリ全体が止まっちゃいますが、その分安定性のあるコードが書けます。
 で、ここも終了イベントもスレッド化して、コールバック関数を呼び出す形に置き換えていきます。

 ただですね、これってディスクキャッシュや、ネットワークの接続キャッシュ、プリンタの存在キャッシュなどなど、こいつらが効いちゃうと再現しなくなったりします。
 他にも、強制終了/終了のキャンセルなどの制御が入ってくるので、これまた結構な量の検証作業が必要なんです。
 原理はいたってシンプルなのですが、制御すべきスレッド数が多いのと、利用シーン、負荷の状況など、条件が多岐にわたるので、テスト漏れが出ないとも限りません。
 落ちた/フリーズ/メインウィンドウが固まったというケースがありましたら、操作手順をご連絡ください。

 例外のパターンは以下の2点です。
・ウィンドウを閉じる/アプリの終了時は綺麗さっぱりメモリを開放するため敢えて待つ
・ネットワークが繋がっていたのが切れたというのは相対走査のため死活チェックが入りませんので、エクスプローラーと同様にしばらく応答不能になる

 本件に限り、再現性を考える必要はありません。
 単純に不具合報告の数がモノをいいます。


 あと、掲示板に上がってたマウス操作周りは全部載せておきました。
 単純なドラッグスクロールに対して「勝手にスクロールする」という不具合報告があがってきたら、また抹殺します。
 そういやShift+ホイール↑が、Windows標準だとダブルクリックイベントを発行してくるというのは最近知りました。
 ヘルプ書かなきゃなぁ・・・最近のエクスプローラーは、これも妙な小細工してんでしょうねぇ(苦笑)









 さて、かなり唐突なお話です。
 Ver.4.5〜4.7で実装したカラクリって、本当はVer.5.5か6.0ぐらいまでやらないつもりでした。
 前倒しになった理由はすごくシンプルでして、モチベーションを維持できるネタがなくなったんですよ。
 実際、Ver.5以降の予定が真っ白なわけです。
 大項目の課題も、枝葉の部分も積み残しが200件ちょい残ってますが、切実なものや興味深く感じるものは残ってません。

 要するに今回の実装で、Ver.1の頃から予定していた機能が全て実装が完了したわけです。
 ファイラー作り始めて20年ちょっと経ってますけど、現時点でのAs/Rの完成度が90%を超えたわけで、かなりの満足感と達成感があります。

 もっとも本作はWindowsのメジャーバージョン「6」の時代を最初から想定していたわけで、今頃一区切りついたというのも、今更感がいっぱいです。
 ほら最近、Windowsのメジャーバージョン「7」の情報がボチボチ出始めてきたじゃないですか。
 また、ちゃぶ台返しあるんだろうな・・・今の限界ギリギリのチューニングをしてもねぇ・・・そんな心境の変化な感じです。
 しばらくペース落としつつ、安定化&ネタの充電期間を設けたいと思います。

 あ、もちろん何か画期的なアイデアがあれば手を付けるのはやぶさかではないので、提案はいつでもお待ちしております。




 チラシの裏の今後のToDoリスト(大項目)

●各種の描画のGPUレンダリング化
 完全にXPで起動不能になるため延期中

●アクティブコマンドバー(仮称)
 選択アイテムによって実行可能なコマンドメニューを動的に生成する
 端的に言えば「出しっぱなし右クリックメニュー」で、バーを表示しているとカーソルキーでの移動がかなり遅くなることが検証できた
 特にできの悪いウィルススキャンソフトを使ってると超ヘビー級になるので、利便性の向上よりも風評被害を避けた方が賢明と判断

●ファイルオペレーションバー(仮称)
 D&Dなどで一時的にファイルを積んで、コピー/移動/振り分けetc(全部スクリプト定義)などを行う
 機能重複である上、外部コマンドでも実現可能。特殊用途になりかねないため棚上げ

●アドレスバーのパンくずナビゲーション化
 強いてやるならこれくらいだけど、メリットが見えない
 アドレスバーの視認性落ちるし、ドライブ単位でファイル管理してる人にとってはドライブレターが見えないのは最悪

●割り込み系のマウスジェスチャからタッチAPIへの切り替え
 Vista以前が対応不可なため延期中

●コンパイラのバージョンを2012→2013に変更
 目立った機能が無いので、開発ツールを買いなおす費用対効果が今のところ見えない

●利用頻度低そうな外部コマンドが約30個
 「機能が多すぎてゴチャゴチャ」とか言う人がチラホラ出てきたので、やる気なくした