miau's blog?

VB 入門書

seraphyware homepage のフィードバックいろいろ(2004/5/16) に

> 私が思うに、J2EEは複雑な仕様であるにも関わらず(紙面の都合もあるでしょうが)信頼性の配慮に欠けたデモコードを見せて「ほら、こんなに簡単でしょ?」と無責任なことを書いている低俗雑誌あたりが悪いのではないでしょうか?

とか書いてあるのを見て思い出したネタ。結構長いので注意。


VB の入門書もそういう部分ってあると思う。
「ウィンドウにコマンドボタン貼ってキャプションを変更します。
 ボタンをダブルクリックして、Click イベントに MsgBox "Hello World!" を追加します。
 ほら、動いたでしょう?」

うん。ここまではいい。
どんな言語でも初めはそこからって感じではあるし。

でも、ここからがちょっと問題。
「じゃあ、次はテキストボックスを貼ってください。
 Click イベントを MsgBox "Hello " & Text1 & "!" に変更します。」
という感じでずっと話を進めていく入門書が多い、ような気がする。

そうするとどんな問題があるか、というと。
「とりあえず VB ってのは画面にボタンをぺたぺた貼り付けて作るものだ」という概念が生まれている、気がする。


実際の業務用アプリを見ているとわかるように、画面にボタンが配置されているアプリというのはほとんどない。ダイアログボックスなんかは例外的にボタン駆動のものも多いけれど、メインの画面は
・メニューから操作する
・リストビューをダブルクリックする/右クリックしてポップアップメニューから操作を選ぶ
というような UI になっているものがほとんどだと思う。

場合によってはボタン駆動のほうが操作しやすいかもしれないけど、万人に受ける UI となるとメニュー駆動じゃないだろうか。特に何度も使うようなツールであれば、ショートカット等を駆使して操作できるに越したことはない。(Windows ロゴを取るにはメニューなんてのは必須だったような気がするし。)


で、開発者の立場になってみても実はメニュー駆動のアプリのほうが作るのが楽なことが多いような。
数ヶ月前、VB6 でメニュー駆動でないアプリ開発をしていたんですが。「F5 キーを押したらリストビューを更新する」というような要望があったので、とりあえずリストビューの KeyDown あたりにその処理を追加して「リストビューにフォーカスがある状態で F5 キーを押すと更新されます」と伝えておいた。(※納品物ではないので「機能が実装されていればいい」レベルのものです)
すると、やはりというかなんというか「F5 キーが効かない」(これは勘違い)とか「どこにフォーカスがあっても更新できないのか?」とか言ってきた。

これを実装しようと思うと
・フォーム上のすべてのオブジェクトに KeyDown イベントを追加し、同様の処理を走らせる
・キーボードフックで WM_KEYDOWN を拾う
のどちらかしかない(多分)なわけで。「コスト(+リスク)に見合わないのでやりません。我慢してください」ということで済ませました。

メニュー駆動であればメニューのショートカットに F5 キーを設定すればいいだけ。
メニューの追加が面倒という人もいるけど、アプリケーションによっては「ツール(T)」→「メニューの追加(N)」で十分かもしれないし、ショートカットキーを使えばメニューエディタの操作もそれほど面倒ではないはず。
適切なメニュー構成にしておけば右クリックのポップアップでも使いまわせるし、保守性その他の面でも有効なはずなんだけど。

開発者としても利用者に「使いやすい」とかなんとか喜んでもらいたいわけで。メニュー駆動であれば WIN-WIN っぽい関係になれただろうに。
今回のツール、始めはメニュー駆動ということで提案してたんだけど、「他の(類似の)ツールが全部ボタン駆動になってるから UI を揃えてほしい」と言われた経緯があって。「なんでみんなしてボタン駆動のアプリ作ってるかな?」と考えたところ入門書がダメそうだと気づいたのでした。


ということで(前置き長かった・・・)入門書は第2章くらいからはメニュー駆動を前提にして進めてほしいと思った、というお話。



(2004/06/14 補足)
えーと。フックなんてやんなくても Form.KeyPreview 設定すればそれっぽくできますね。orz

あと、メニュー駆動ってのはメニュー+ツールバーの標準的なインターフェイスってことで。
ツールバーが無いとさすがにマウスユーザ大変そうなので。
posted at 07:22:40 on 2004-05-22 by miau - Category: VB6 No Trackbacks - Permalink

TrackBack

このエントリにトラックバックはありません
現在トラックバックは受け付けていません。

Comments

No comments yet

Add Comments

現在コメントは受け付けていません。
お手数ですが、 こちら のコメント欄にでも記載していただければと思います。