素歩人徒然 二兎 マルチタスクと生産性
素歩人徒然
(9)

二兎


── マルチタスクと生産性

 K氏は常日頃から「複数の仕事をマルチでやると、全体としての生産性は上がるはずだ」と主張している。ただ、そう言った後で少し悔しそうに一言言い添えるのであった。「理論的に証明できないのが癪なんだが‥‥」と。

 この説を理論的に証明するのは確かに難しい。しかし感覚的に理解してもらうことはできそうな気がする。「二兎追うもの一兎をも得ず」という。つまり古来から、二つの仕事を同時に追ったのではどちらも成就できないということで相場が決まっている。しかし一方では「一石二鳥」という言葉もあるから、頭さえうまく使えば、一つの仕事で二つ分の成果が得られるという主張も世の中には存在するのである。昔の人は、それぞれの立場から勝手なことを言うたものである。

 私はこう思う。「頭が良い」とは言えない人(手っ取り早く言えば“要領の悪い人”、あるいはもっと率直に言えば“頭の悪い人”)は二兎を追うべきではない。しかし頭の良い人なら二兎を追ってもよいのではないか。そして、これに先人の「一石二鳥」という言葉を適用すれば、次のようなことが言えるのではないかと思う。つまり、頭の良い人は二兎を追って四兎を得ることができると。

 今やマルチの時代である。何事にでも“マルチ”という冠詞を付ければ時流に乗っているという印象を与えることができる。曰く“マルチメディア”、“マルチパーパス”、“マルチウィンドウ”、“マルチナ・ヒンギス”(あっ! これは違うか)‥‥。
 そのマルチの時代にあって、我々の仕事のみが何故にマルチであってはならないのか。我々も自分の仕事をマルチでこなせなければおかしいではないか。

 コンピュータの世界でも、最初の頃はシングルタスク方式が標準であった。ハードウェアの性能向上により、次第にマルチプログラミング、マルチタスクが可能になってきた。したがって、そういう使い方の方が全体の生産性が上がることは誰でも理屈の上では知っていることなのである。

 東芝に入社した直後、私は社内留学制度を利用して堀川町本社にある機械計算課でIBM7090という計算機を使わせてもらった。このマシンは当時の最先端のマシンではあったがシングルタスク方式だった。プログラム言語としてはFORTRAN IIが用いられていたが、データの入出力の記述は

  READ INPUT TAPE 100, A, B, C,...
  WRITE OUTPUT TAPE 200, X, Y, Z,...

などと書いてやっていた。つまり、専ら高速の磁気テープのみを入出力の対象としてプログラムを記述する規則になっていたのである。プログラマが直接低速の入出力機器(カード読取機やラインプリンタなど)を扱うことはできなかったのだ。カード読取機やラインプリンタなどへの実際の入出力は、衛星コンピュータのIBM1401を用いてオフラインで行われていた。したがって、ターンアラウンドタイムは恐ろしく長くて、今と比べたら生産性は極めて低かったかったといってよい。

 その後何年かして、今度は教育ではなく仕事で機械計算課のマシンを使ったときには、マシンはGE635に置き替えられていた。このマシンは、GECOSと呼ばれる世界に冠たる名OSのもとで、マルチタスクが可能になっていて、FORTRAN IVを用いてプログラムを作ることができた。

 私が取り組んでいた問題はFORTRANでシミュレーションするプログラムだったので、1〜2時間はマシンを占有しなければならない。そんな長時間ジョブを昼間の時間に流したりしたら、計算機室の主(ぬし)であるあの怖いY主任の逆鱗に触れてカミナリが落ちるかもしれない。私はそう思ってビクビクしながらジョブを出したのである。しかし案に相違して何事も起こりはしなかった。後から出されたジョブが、私のジョブを追い越してスイスイと出力されていくのを見て私は内心ほっとしたものである。なるほど、‥‥マルチで動くというのはすごいことなのだ、と私はすっかり感服してしまった。

 複数のジョブがマルチで動作する環境では、適当な条件のもとでジョブが切り替えられていく。たとえば、あるジョブが入力待ちになると、CPUの資源はすばやく他のジョブに振り向けられ、CPUが待機状態でとまってしまうようなアイドルタイムは発生しない。したがって、マシンの使用に無駄な時間が発生する可能性が少なくなり全体的な生産性(through-put)が増すというのである。ただ、ジョブを他のジョブに切り替える(スイッチする)際にはそれなりの作業が必要になるので、その分のオーバーヘッドが発生する可能性は残る。したがって、複数のジョブをできるだけ速やかに切り替える技術が必須のものとなる。

 我々の実業務においても、仕事の切り替えというのは大切なことで、仕事の合間に煙草で一服(アイドルタイムの最たるもの)という人は実に多い。彼らは気分転換のために一服が必要になるのだという。仕事の切り替え時や仕事の区切り目には、どうしても煙草で一服となりがちである(しかし中には、区切りでもなんでもないのに無理やり区切って一服している人もいる)。こういった潜在的なアイドルタイムを、我々は極力減らす努力をしなければならない。ソフトウェア開発のような仕事では、空き工数がないかフォローするよりも潜在的な空き工数を減らす努力の方がはるかに重要であることはよく知られた事実である。

 複数の仕事をマルチでやっていると、このジョブスイッチングが速やかにできるようになってくる。ある仕事で行きづまったとしても、煙草で一服などする必要はない。すばやくもう一つの仕事の方に切り替えてしまえば、自ずと気分転換ができてしまう。そして、潜在的空き工数の削減が自然にできてしまうのである。

 8ビットマイコンの時代(つまり、まだ新人で要領の悪かった時代)にはシングルタスクでもよかったが、今や32ビットCPUの時代である(我々は頭の素晴らしく良い人間に進化してきたのだ)。マルチで仕事ができないとしたら、それは自分の能力を十分に生かしていないことになる。それでは、これからの時代に取り残されてしまう。

 「仕事をマルチでできない」という人は、自分の頭脳CPUが8ビットマイコン並みであることを吹聴しているようなものだ。自分の頭脳がペンティアム並みのCPUであると信ずる者は、複数の仕事を苦もなくマルチでこなしてみせるがよい。■