Home日記コラム書評HintsLinks自己紹介
 

フィンローダのあっぱれご意見番 第90回「慣れたやり方」

← 前のをみる | 「フィンローダのあっぱれご意見番」一覧 | 次のをみる →

実はPC-386Mをつい最近まで現役で使っていた。 386SX、クロック16MHzのpc-9800シリーズ互換機だ。 このコラムが世に出る頃は引退している予定であるが、 世の中何が起きるかわからないから、もしかするともしかするかもしれない。 何に使うかというと、メールである。 メールの普及というのは予想以上のもので、 おそらく皆さんの想定しているよりも裾野は広がっていると思う。 このマシンも、実は私の親が使っていたのだが、 友人とメールで連絡しているというのだから驚くのである。 ちなみに皆さん還暦を越えたお年なのであるから、昔、IBMのテレビCMで、お年寄りが インターネット云々というセリフを言っていたのがあったと思うが、 あれがフィクションではなくて実際にそういう時代になってきたのかもしれない。

 

※ pc-9800互換機: 当時の日本では、 NEC の pc-9800シリーズが圧倒的なシェアを維持していた。

ところが、老後の生活ということになると、まず問題になるのが予算である。 pcが10万円で買えるといっても、 年金だけの生活でそれは無理という方も多い。 世の中はWindows 98の時代で、 Pentiumの何百MHz以上とかメモリが何十MB以上を推奨、というような感じだが、 最近は携帯電話にメール機能が入っていることからも分かるように、 メールだけを使うのであればそんなにマシンパワーはいらないのである。 16MHz の386SXマシンでも十分なのだ。 そこで、例えば私が使わなくなったpcをそちらに回すのである。 これならコストは殆どかからない。 ニフティサーブの課金はかかるが、 メールのやりとり程度なら何とかなるわけである。

 

※ 今なら pc は3万円あれば買える。

ただ、PC-386Mが引退というのは、 やっぱりこれからはインターネット (というと世間ではWWWのことらしい)できた方が…という雰囲気になってしまうからなのだ。

§

  

牛丼の松屋に行ったら、 500円ちょうどセールのようなものをやっていた。 牛丼だけなら400円なのだが、 サラダと玉子を追加して、500円でok、というような企画だったと思う。 何円ポッキリ、というような売り方があるのだが、 お釣りが出ないという意味では販売の手間が節約できるから、 人件費の節約になるのかもしれない。 ただ、自動券売機だとどの程度意味があるか分からないので、 むしろ、イメージとかインパクトを狙った戦略なのだろう。

 

※ 当時は牛丼が400円だった。

ところで、 私は牛丼が食べたくて店に入ったのである。サラダはあまり食べたくない。 野菜も食べないと栄養が偏るというのは理解しているが、 正直に言って、ファーストフード系の野菜サラダは味がなさすぎる。 都会で暮らしていると、いつの間にか忘れてしまうものなのだが、 実は野菜というのは結構味があるものなのだ。 キュウリとかトマトとかキャベツ、本来は実にいい味が付いている。 ところが、東京で買った野菜は、なぜか味がアメリカンなのだ。薄い。水っぽい。 ドレッシングをかけてしまえば同じかもしれないが、それにしても食欲がわかないのである。

そこで、牛丼だけを注文することにした。 松屋では、券売機で食券を買ってからテーブルに付くという作法になっている。 ちなみに、吉野家は食べてから料金を払うという後払いシステムだ。 なぜこのような差があるのかを考えるのも面白そうだが、今回は松屋の券売機の話題にしぼろう。 やりたいことは簡単である。 お金を入れて「店内」というボタンを押して、「牛丼(並)」というボタンを押す、というのが基本である。 松屋は何十回、もしかすると何百回と行った店だから、 こういう操作は無意識に出来るようになっていたのだ。 ちなみに、初めて来た人は「店内」を押すという所にとまどうことがあるようだ。 私見としては、デフォルトで店内選択状態、 ボタンを押したら持ちかえり、 という設定にしてもいいと思うのだが、いかがでしょうか。 店内で食べる人と持ちかえる人の割合にも依存するが、 見た感じでは圧倒的に店内で食べる人が多いと思うのである。

ところで、話を戻すが、牛丼だけ買うというのが難問だったのである。 なぜか。「牛丼(並)」のボタンの位置が変わってしまったからだ。これは大変なことだ。 十年来「ここにある」と思っていた位置に目的のボタンがないのである。 もしかして500円セール期間中は400円の牛丼は売らないのか、と思ってしまった。 しかしそれでは困るので、じっくり探してみたら、全然別の所にそのボタンはあったのである。 助かった。

このボタンの配置変更が、何も考えずに行われたものなら、 単に情けないというか、ユーザーインターフェースを知らないということで済むはずである。 ただ、これはやはり、最も売りたいものを最も目立つ所に配置する、 という商売の大原則に基づいた配置変更だと思う。 ボタンが羅列している場合、 その前に生まれて初めて立った人は、 どういう順序でボタンを探すだろうか。横書きの場合は、左上から右下へ、 横書きの文章を読むような順序でスキャンする人が多いのではないかと思われる。 検証したわけではないが、これはまず経験的に確実だろう。 従って、最も売りたいものを一番左上のボタンにしておく、という手は確かにある。

しかし、牛丼屋のように多くのリピーター客が見込まれる場合、 一番左上にあるメニューを無造作に選択する、というケースがどの程度あるのだろうか。 このボタン配置で売り上げがどう変わったのか、 というのが大変興味ある問題なのだが、 残念ながら、松屋はそのような極秘情報は公開しないものと思われる。

  

そこで、近くの席に座って、食券を買う人をしばらく観察してみることにした。 すると、大変興味深い結果がわかった。 とはいっても、たかが数名の観察であるから、どのような意味があるかを結論付けることはできない。 しかし、その時観察した限りでは、 来る人来る人、誰もが同じように、お金を入れてから数十秒考え込んでいるのである。 そう、たまたまかもしれないが、その時に来た客達は、おそらく牛丼だけを食べに来たのだ。 そして、いつも押せばいいボタンが「牛丼(並)」だか大盛りだかは知らないが、 それではなかったので、混乱し、戸惑っていたのだ。

 

※ 実際は、間違って買ってしまったので払い戻す、 というような作業も多発したはずである。

頻繁に使われるメニューの位置は固定する、というのも基本だと思うのだが、いかがであろうか。

§

C言語では、変数を宣言できる場所は決まっている。まず変数の宣言があり、 それからプログラムを実行するための処理が出てくる。従って、 ある変数がどこで宣言されているか、あらかじめ見当を付けることが可能だ。 場所がだいたい予想できるからである。 従って、 変数を宣言している所でコメントを書いておくという習慣が身に付いていれば、 ある変数がどのような意味で使われているかを確認したい場合に、 どこを見ればいいかある程度予想できるので楽である。

これに対して、 他の言語では、変数をもっと自由な位置で定義できるようなものもある。 極端な場合、perlのように、 定義していなくてもよくて、 最初に使った時点で自動的に定義されたものとして処理するものもある。 変数を自由な場所で宣言できるメリットは、 実際に使う直前で宣言できるということである。 関数の始まりの所で宣言された変数を関数の最後で使われているような場合がある。 そのこと自体は問題ではない。 しかし、そこで使うまでこの変数は一度も使われなかったのか?  意味のある値が入っているのではないか? それが不安になるのである。 使う直前で定義した変数には、そのような不安はない。

C言語には、ブロックという概念がある。 ブロックを使えば、局所的な変数を使うことは簡単である。 List 1のように、ブロックを配置してやり、その中で変数を定義すればよい。 ブロックの中で定義した局所変数は、ブロックの外には影響を及ぼさないので、 もし同名の変数があったとしても問題ないのである。 もっとも、このような使い方が逆目に出ることもある。 ブロックの中で値を設定したつもりなのに、 実は局所変数は消滅して、 より外のどこかで定義された変数の値になっている、という状況である。

---- List 1 ----

    int i; /* 1 */

    i = 1;

    {
        int i;

        for (i = 0; i < 10; i++)
            ...
    }

    printf("i = %d\n", i);

---- List 1 end ----

ただ、このような書き方をしたプログラムはあまり見た記憶がない。 こんなことをするよりは、最初にどんどん変数を定義した方が手っ取り早いからだと思う。 例えばList 2である。

---- List 2 ----

    int i; /* 1 */
    int j;

    i = 1;

    for (j = 0; j < 10; j++)
        ...
    }

    printf("i = %d\n", i);

---- List 2 end ----

このプログラムが想定している、 「書かれた順序」が重要なので説明しておく。 まず、変数iを使ったプログラムがあった。そこにループを追加したい。 i という変数をここで変更してよいかどうかが分からない。 そこで、 j という変数を追加することにした。 jは関数の先頭で定義した。 というような流れになっているはずである。 このような作業は、 現実に極めてよくあることで、 殆ど意識せずに普段から行っているプロセスだと思われる。

さて、どちらがよいか、という問題は確かにありそうだが、 一般論としての判断を求めるのは難しいと思う。フォーラムの話のネタにでもしてみようか。

§

  

PC-386Mに引退してもらった後、 新しいpcでまず使う予定のソフトはNetscapeのメールである。 今までとは手順が全く異なるはずである。 慣れた手順を捨てて、うまく使えるようになるかどうかが心配である。

 

※ はて、それまでどうやってたのだろう? 忘れちゃった。

(C MAGAZINE 1999年12月号掲載)
内容は雑誌に掲載されたものと異なることがあります。

修正情報:
2006-03-14 裏ページに転載。

(C) Phinloda 1999-2006, All rights reserved.