一括表示

− 野ざらし言 −

[3338] 上村さんの PAGING.DEF

としき 2009/05/31(Sun) 09:35
http://www.hinocatv.ne.jp/~toshiki/
最近、色々な方の様々なマクロを読まさせて頂いています。
これがとても勉強になっています。
特に上村さんの NEWFILE.DEF や DELTXT.DEF で言及されている技術は、既存
の自作マクロの改造に直接役に立っています。

さて、そんな中で出会った上村さんの PAGING.DEF、ちょっと気になるところ
があります。この中の、論理ページングモード迫害者向けマクロで、

	(mp)?? { #F #e #m #@ }		; [P]なら検索文字列を設定

このようなルーチンが出てきます。
ドキュメントによると、起動後一度も検索機能を使っていない場合などには
文字列検索モードにならないVzの仕様を回避するためのルーチン、という
ことになっています。
これって、通常というか、VZ.DEF の購入時のままの初期状態では全く問題は
ないのですが、ある特定の条件ではうまく行かないですよね?
つまり、VZ.DEF の「ヒストリー」で string が設定されていない場合、この
ルーチンは機能しないと思うのですが、どうでしょうか。
なにぶん古いマクロですので、私の妄想した通りの不具合があるのなら改善
提案がなされていると思いますので、最近はどのような形になっているのか
ご教示いただけないでしょうか。あるいは、私の完全な勘違いで、そのよう
な不具合は実際には発生しないという事であれば、なぜ大丈夫なのかという
事をわかりやすく解説していただけるとありがたいです。
 

[3339] Re: 上村さんの PAGING.DEF

めざら 2009/06/02(Tue) 09:09
[3338]へのコメント http://homepage3.nifty.com/mezala/
> つまり、VZ.DEF の「ヒストリー」で string が設定されていない場合、この
> ルーチンは機能しないと思うのですが、どうでしょうか。

 その条件で起動直後であれば,ふつうそうですよね。

> なにぶん古いマクロですので、私の妄想した通りの不具合があるのなら改善
> 提案がなされていると思いますので、最近はどのような形になっているのか

 古いとか妄想とかはともかく,「不具合」かどうかの判断はまた別かと。

 としきさんの感覚では,ドキュメントに触れていなければそれは仕様ではなく不具合である,ということになるのかなと想像してみました。もしもその観点であれば不具合かもしれません。ただ,ドキュメントにないから不具合だということになると,VZ って「不具合」だらけですよね。VZ に限らずソフトウェアって不具合だらけですよね。つまりソフトウェアってそういうものですよね。(三段論法かよ)

 例えば,検索文字列入力窓を出して入力することなくキャンセルすると,初期文字列の存在のあるなしにかかわらず #@ で [S] の検索モードにすることはできません。これは VZ の当初からの仕様ですがドキュメントされていないと思います。このようなことは山のようにあると思うのです。

 で,件のマクロはある意味このような VZ の仕様の穴を補完するためのマクロとも言えますね。仕様の穴を補修する漆喰に肉眼では見えないほどの小さな穴が空いていて,早暁の水圧レベルを越える大きな圧力がかかったら水が漏れるかもしれない。そういう話のように考えてみたのですが,これも妄想かなぁ…。

 想像してみたところ,確かに初期文字列が設定されていない環境では履歴呼出しないので,paging.def が所期の動作とならないことがごく稀に発生するかもしれない可能性をマリアナ海溝の最深部に堆積した泥の奥のような場所に秘めた特定のごくごく限られた誰も想像し得ないような環境にもしかするとあるかもしれないと言われてみてはじめてアレコレ想像してみると確かにないこともないんだけどめったにないんだけれどやっぱりあるかもしれないということを想像してみるとその存在を否定することを証明することが科学においてもっとも困難なことであることと同じように無いとははっきりとは言えないこともないわけでないことは確かだと思います。v1.6以降でも同じことです。そのことはドキュメントにありませんが,「不具合」と考えるかどうかは発生頻度や対象とするユーザの層など総合的に考えるべきかと思います。初期文字列を設定していないハードなユーザが起動後いきなり検索モードにする必然性はないと思いますしね。

 ちなみに,わたし自身は検索モードにすることがごく稀です。ページングモードでいきなり検索するマクロを常用しているからです。

[3340] Re^2: 上村さんの PAGING.DEF

としき 2009/06/02(Tue) 15:19
[3339]へのコメント http://www.hinocatv.ne.jp/~toshiki/
いやぁ、あはは。
私が偏執的で粘着質であるというのが最大の不具合かもしれません。

>  その条件で起動直後であれば,ふつうそうですよね。

やはりそうですよね。

>  古いとか妄想とかはともかく,「不具合」かどうかの判断はまた別かと。

おっしゃる通りです。

>としきさんの感覚では,ドキュメントに触れていなければそれは仕様ではなく不具合である,ということになるのかなと想像してみました。

おおむねその通りというか。
ここでは細かく定義付けしませんが、私の感覚では
「仕様がおかしい」
「ソフトウェアのバグ」
「ソフトウェアの不具合」
「ソフトウェアの副作用」
というような感じで分類されています。今回は、
「[P]なら検索文字列を設定」
と明記してあるにもかかわらず、そのような動作にならないわけですけど、
そのようなことが起きる条件が限定されているところから、バグではなくて
不具合という感じでとらえました。

>つまりソフトウェアってそういうものですよね。

そういうものです。全くおっしゃる通りです。
そして、そういうものでなくするために「ソフトウェア工学」という学問が
あることになっていたと思います。
成果が上がっているとは思っていないのですが。

>  例えば,検索文字列入力窓を出して入力することなくキャンセルすると,初期文字列の存在のあるなしにかかわらず #@ で [S] の検索モードにすることはできません。これは VZ の当初からの仕様ですがドキュメントされていない

おっと、これってそうだったんですか。
私、すっかり、取説91ページの「検索文字列が設定されていない場合」に
該当してしまうだけだと思い込んでいました。ありがとうございます。

> そういう話のように考えてみたのですが,これも妄想かなぁ…。

う〜ん、ちょっと違うような気もしますが。
うまい例え話が思いつかないのでパスさせて下さい。

>「不具合」と考えるかどうかは発生頻度や対象とするユーザの層など総合的に考えるべきかと思います。
>初期文字列を設定していないハードなユーザが起動後いきなり検索モードにする必然性はないと思いますしね。

これらの点については完全に同意します。
現実的で、かつ、効果的、また、諸々のバランスを考えて、あのルーチンが
一番良いというのも多くの人が認めるところであろうと思います。
何というか、私の場合、「素敵だ」の一言で終わらせてしまいそうですが。




さて。
上村さんのマクロはシンプルでわかりやすく、コメントも豊富なので、部品
取りして自分のマクロで利用させてもらうのが容易です。
ところが、paging.defの論理ページングモード迫害者向けマクロに出てくる
「[P]なら検索文字列を設定」というルーチンは、vz.defの設定によっては
[P]であっても検索文字列を設定してくれないことがあります。
そこで、以下、頭の体操。

vz.def の「ヒストリー」で string が設定されていない場合であって、起動
してから一番最初の時でも「[P]なら検索文字列を設定」するとした場合、
どのようなコードを書けばいいでしょうか。



以下余談。
私が偏執的で粘着質な好例というか。

私は、会社で自分が使うための簡単なツールをいくつか作っています。
としきブランドは結構評判が良く、職場の同僚もなぜか勝手に使っています。
最近もひとつ作っているのですが、なかなか正式リリースできません。
仕様としてはそんなに難しくないというか、むしろ単純。
あるネットワーク機器にログインしてデータを取得するだけのもの。
4月下旬から作り出して、連休明けにも完成するかと思っていたのですが、
なんとか仕様が満足できたのが5月中旬。
でも、いまだにリリースできていないのは、仕様外の部分が不満だから。
例えば、IPアドレスを間違えて別の機種にログインした場合の挙動とか、
別機種の場合であってもログインアカウントとパスワードが両方合っていて
ログインできてしまった場合、パスワードだけが間違っていた場合、さらに
アカウントすら間違っていた場合のいずれでも正常にエラー終了できるよう
に、という事を考えると、完成まで早くてもまだ2週間はかかりそう。
職場の同僚からは、そのツールがあると仕事の質が飛躍的に高まるのだから
早くリリースしてくれとせっつかれているけど、今まで3年余り、なくても
仕事はできていたのだからもう少し待て、と蹴っとばしている状況。
そのうち、仕様は満足しているのだから、と、逆に蹴っとばされたりして。
なにせ、正しい装置に正しいパスワードでログインしたときは正しく仕事が
できる程度には完成しているのですから。

この辺が、私の「バグ」と「不具合」のとらえ方の表出例かもしれません。

↑ このページの先頭