仕事では、圧倒的にMS-Office系のアプリケーションを使っている。
MS-Wordにしても、PowerPointにしても、作章を助けるために多くの機能がついてる。 とくに、アウトラインの機能は人間の思考力を補完してくれて、非常に助かっている。 ところが、この機能は以外と使わない人が多いようだ。 せっかく、パワーポイントなどでもタイトルや階層レベルと書式が連携しているのに、ベタなテキストボックスをやたら張ってあたりする資料をもらったりすると、編集するのに苦労させられる。 ワードで文章を書くときも、まずはキーワードなり章立てなりをプレーンテキストでささっと書いて、その上で肉付けをしたり、章立ての変更をしたりしながら、最後はスタイルで見た目を整えていくことがとても楽でいい。
こういう思考なり作章なりを助ける機能を使うことは、どうも日本人にはなじみが少ないようだ。 表計算ソフトも、ワープロソフトも、絵描きソフトもそれぞれに適した目的があるのに、なんでもかんでもエクセル一本とか、ワード一本という人もいる。 本当に驚異的にエクセルだけですごいドキュメントを作っちゃう人がいるが、これをエクセルの達人と見るのはちょっと違うだろう。 配偶者が某有名なパソコン教室に通ってるので、聞いてみたら何十時間もあるコースなのに、アウトラインの使い方や、表計算ソフトとワープロソフトの役割と、それらを統合した使い方などの部分は、教えないそうだ。 単純に、見た目の動きのことだけを教えるらしい。 最初に、実装とは一線を画して、きちんとアーキテクチャや体系というものを教えて、その上で実装の教育をすべきなのに、どうもいきなり即物的なところから教えていくようだ。
じつは、これはソフトウェア教育でも大きな問題となっている気がする。 僕は、もともと電気、電子工学系で、子供の頃からラジオ屋だった。 確かに高校時代にHITAC10というミニコンでFortrunを書いた(パンチした)記憶はあるが、初めてソフトウェアを書いたのは、大学の研究室でつかったグラフィック端末だったし、その後は、もっぱらハンドアッセンブラで組み込みマイコンのソフトを書いていた。 しばらくして、PC(IBM5550)上で業務アプリを短期的に書く必要が発生し、会社の上司で数理(情報工学)出の先輩に、プログラミング書法、プログラミング作法などを与えられ、これがソフトウェアに対する大きな意識の転換になった。 これらの教科書では、Ratforという教育用の言語を使ってかかれており、それは実際に動くコンパイラなどまで用意されていたようであるが、世の中でだれも使っていない言語である。 このため、この言語で習うことは、普遍的な基礎であり、即物的な実装依存したパターン記憶ではない。だからこそ、ここで覚えることは応用が利くわけだ。 ところが、某国内の大学などでは、はじめてのC言語みたいな実装依存の教科書で、いきなり実装的な教育がされてしまう。 こういう形で教育されたら、なにが実装の問題なのか、なにが言語の問題なのか、アーキテクチャなのか、データ構造なのかなんてことは、わからなくなってしまう。 なにかを覚えるには、基本的な概念をきちんと抑えて、その上で実装を知るべきである。 さらには、最近は開発のターンアラウンドが短い(計算機センターで二日待つなんてことはない)ので、設計する前にいきなりキーボードを叩いてコードを書いてしまうし、コードの間違いは、その場でBSキーで直せて、すぐにパッチが当てられる。 そんな教育と環境の性だろうか、とにかく設計をしないソフトウェアエンジニア(というか なんちゃってソフト屋)が増えていると感じてしょうがない。
しかし、グランドデザインを書いて、詳細設計をするということが苦手なのは、政策などの策定でも多々見られるので、国民性なのかもしれない。
NYの地下鉄は、単一料金なのだが、券売機で切符を買うときは、まず買いたい切符の種類を選ぶ、次に料金が表示されその料金を投入する。
これは、香港の地下鉄も、ワシントンもそうである。 最初にどこまで行きたいか? あるいは、どういう券を買いたいか(一回券、一日券など)をいれると、金額が表示されて、それからお金をいれるというのは、とても自然な流れで、窓口でxxxまで1枚というと、xx円ですといわれるのと変わらない。 ところが、日本の券売機は、最初に行き先の値段を別なリストで調べて、それから金額ボタンを押して、金額を入れる。これは、どうみても利用者にやさしくない。 たまに、外国人が券売機の前で困っているところに出くわすし、香港などでは切符の買い方にとまどっている日本人がたまにいる。 日本の鉄道網は、圧倒的に広域なので、昔の券売機では、行き先ボタンを沢山置けずにこうなったのかもしれないが、いまはソフトボタンで、階層化表示もできるんだから改善されてもいいのに、未だ金額入力先行型が多い。 こういうのも、システム設計の弱さだと思う。
もうひとつ地下鉄ネタ。 香港の地下鉄は、二つの路線の乗り換えは、二駅を使い常にに乗り換える路線が同じホームで乗り換えられるように配置されている。
こういうのも、システム設計だと思う。 まあ、日本よりは圧倒的に近年に設計されたことと、少ない路線数だからできるんだという意見もあるかもしれないが、これもシステム設計の弱さなんだと思う。
交差点の信号システムで、対向車線を横切る右左折(日本では右折、アメリカでは左折)の時の処理は、日米では違う。 日本では直進信号がまず青になり、黄色、赤、右折信号となる。このため、遠くからそれなりの速度でくる直進車両が停止するかどうかの見極めを間違えて、右直事故が発生する。 右折レーンが空いてる時は、右折車両も走行状態で見極めをする。 アメリカでは、停止状態から最初にに左折信号(日本での右折)が点灯し、しばらくして左折信号が赤になり、直進信号が青に変わる。 左折が始まる時点では、確実に対向車線は停止しているので安全だし、左折車両が止まるかどうかの見極めをする対向車線の車両は停止状態で相手の挙動を見極める。 さらには、直進してくる車の挙動を見極めるよりは、左折してくる車の挙動を見極めるほうが動態速度も低いし、視認性からも容易だ。 交通システムの設計というのは、相当昔からやられているので、きっとどっちが安全かなんていう比較検証もあるんだろうけど、直感的にはアメリカ式のほうが安全だと思うし、時差式とかいうわけのわからん信号もいらない。 こういうのも、システム設計なわけだ。