ソフトウェアの法則 ソフトウェアと電話 割り込み処理について
ソフトウェアの法則
(45)

ソフトウェアと電話


── 割り込み処理について

(携帯電話がはやりだした初期の頃に書いたものです。電話というものの使い方が短期間に劇的に変ってしまったことが読み取れます。一部加筆修正しました)

◆電話にまつわる思い出
 私は電話というものがどうしても好きになれない。子供の頃初めて家に電話が敷かれたとき、最初の頃は私にも何処からか電話が掛かってこないものかと期待していたのだが、結局何処からも掛かってはこなかった。そもそも私の友人の家に電話がなかったのだから、これは当然のことであったろう。

 しかし親からは電話の掛け方、受け方について厳しく教えられたものだ。受けた場合でもまずこちらから名前を名乗ること(最近は名乗らない方がよいらしいが)、掛ける場合は用件をあらかじめまとめておいて手短に要領よく伝えることなどである。今でもこのときのしつけが身に付いているせいか私の電話は何時も極めて簡潔である。あっという間に用件を済ませて終ってしまう。それを聞いていた家族の者達は、私の電話はいつも短くて素っ気ないと言う。私に言わせればこれは逆であって、最近の若者達の電話に無駄が多過ぎるのである。彼等のように電話で長時間のおしゃべりをするというような使い方は考えられなかった時代を、私は生きてきたのである(もっとも、最近ではメール文化が発達してきているから、若者の電話による長時間のおしゃべりも少なくなってきているのではあるまいか)。

 私が新入社員の頃、電話が自分の机のそばにあると気になって仕方がなかったものだ。職場の先輩たちの名前をまだ覚えきれていなかったので、掛かってきた電話の取り次ぎで右往左往しなければならなかったからである。職場に慣れてきてからも電話当番の役だけは誰でもしたがらなかったものである。

 私が入社した当時の電話機は性能が悪かったのであろう、音が小さくてしかも職場がいつも騒然とした感じだったので大切な電話などは机の下にもぐりこんで雑音を避けながら話したりしたものである。長距離電話が入ると、蚊の鳴くような声しか聞こえず苦労したのを覚えている。そういうときは少しでも雑音を減らそうと、自分の送話器から入った音が受話器の方に回るのを防ぐため送話器の口を手のひらで塞ぎ、自分が話すときだけ開いたりする方法をとる。これを器用にやる先輩がいて、私も真似てみたのだがたいした効果はなかったようである。いずれにしても電話では苦労した思い出ばかりが残っている。

 その頃からの癖なのであろう、私は普段から電話で話すときの声が大きい。話す相手が遠方にいるという意識があるだけで、もう声の調子が1オクターブ上がってしまっていたりする。国際電話などになると、海を越えて遥か向こうに届くようにという感じで声を発している有様である。これでは内密の話などできる訳がない。自分では分かっていてもこの癖は一向に改まらない。電話でひそひそこそこそと話すのは、どうも性に合わないのである。

 海外出張でアメリカに滞在したとき、仕事先のオフィスで出張者全員にデスクが割り振られる。そういうとき皆先を争って電話の置いてない机を選んで自分の机としたものである。要領の悪い男に限って、その机にはいつも電話機が置いてあったりした。誰にとっても電話で英会話するのは苦痛だったのである。

 特に私は英語のヒヤリング力が弱かったので、話す相手の口元を見ていないと何となく不安になるのであった。しかし会話力が未熟でも普通は1〜2か月もすると相手の話す英語がよく分かるようになってくる。そうすると誰でも自分のヒヤリング力が付いたと早合点するがこれは錯覚なのだ。あいつはこの程度のスピードで話さないと理解できないと回りの連中が分かってきて、私に向かってはゆっくりと話してくれるようになっただけのことなのである。ところが電話の相手だけはそういう配慮をしてくれない。受話器の向こうで早口でペラペラとまくし立てられて苦労するのは相変わらずであった。日本に戻ったとき、電話を日本語で掛けられると知って(それまでも、知ってはいたが)何かほっとしたものである。日本語で自由に話せるなら、どんな困難にも打ち勝てるような気がしたものだ。

◆電話の上手な使い方
 最近の職場では、各人の机に大抵電話が一台置かれている。私はこれが邪魔で仕方がなかった。電話というのは実に無神経なもので、仕事中に無遠慮に割り込んでくる点が好きになれないのだ。しかも掛けてきた相手は、そんなこちらの気持ちなどまったく忖度しない。無遠慮にずかずかと家の中に入りこんでくるようなものである。

 私は、こちらから掛ける一方で掛かってくることのない電話があればどれ程よいかと思ったりしたものだ(相手もそう思っていたことであろう。双方とも同意見なのに実現しないのがまか不思議なところである)。
 そして電子メールの時代がやってきた。私はすべての連絡がメールで届くようになればよいのにと何時も考えていたのである。

 メールシステムが実際に普及してみると、普通の電話が掛かってくる頻度は確かに少なくなった(期待に反してゼロにはならなかったが)。その結果、割り込みが少なくなって自分のペースで仕事ができるようになった。それにメールだと未知の人からのメールでも、読む前にある程度の心の準備ができるのがよい。普通の電話では、久しく音信のなかった人から突然連絡があったりすると、名前だけ名乗られても直ぐには相手の顔が思い出せずうろたえることが多い。あれは困ったものである。

 最近は職場に電話を掛けて来るのは、メールを利用できない人か、あるいは社外の人からだけである。それ以外の電話は、たいていは何か緊急の要請であることが多い。一方私の方から電話を掛けるのは、社内で緊急に面会したい人にアポイントメントを取るときくらいのものである。電話の使い方が皆ある程度うまくなってきたというべきであろう。

 私の家では長年ダイヤル式のあの古風な電話機を使っていた。私は存外これが気に入っていたのである。ところが家族の者たちは留守番電話やキャッチホンの機能が必要だと言ってこれを高機能のプッシュホンにとり替えてしまった。家人の長電話で電話機を占領されてしまうと“キャッチホン”という割り込み機能は必須のものとなる(まだ各人が携帯を持つようになる以前の話ですよ!これは)。しかし家人は、キャッチホンで割り込んできた電話相手とまた長々と話をしている。これでは割り込まれた最初の話し手に失礼ではないかと気になる。しかも相手から掛かってきた電話なのだから電話代を負担しながら他人の電話が終るのを待っていることになる。こんな不合理が許されてよいはずがない(この間、電話会社は料金の二重取りをしていることになるのではなかろうか?)。キャッチホンによる割り込みが何回も続いたときには、最初の話し手が誰だったのか分からなくなるのではないかと人ごとながら心配になる。

◆携帯電話というもの
 ところで最近普及してきた携帯電話だが、これも私は好きになれない。中高生の間ではしばらく前からポケットベル(ポケベル)の利用が目立っていたが、それに代わって携帯電話を持つのが主流になってしまった。自分では稼いでいない学生が(ポケベルならともかく)高額の通信費を要する携帯電話を持っている。これが私には不思議でならないのである。自分で稼ぐようになってから自腹で購入すべきものであろう。

 携帯電話を持ち歩き、人込みの中で無遠慮に大声を出して通話している人をよく見掛ける。多分、彼は1秒でも無駄にできない“重要人物”なのであろう。
 こういった携帯電話がらみのマナーの悪さは、よく指摘されるところである。駅のホームで、電車内で、喫茶店の中で、あるいはホテルのロビーでと所構わず大声をあげている。最近電車内のアナウンスでは「携帯での通話はご遠慮ください」とやっているが、そんな注意などどこ吹く風の体で、座席で「もしもし‥‥」などとやっている。こういうのを傍若無人の振る舞いというのであろう。実に嘆かわしいことである。

 私は常時携帯電話を持っていたいと思わない。それに、私が人前で電話などしようものなら、例の大声を発するという癖が出てしまうであろうから想像しただけでも恥ずかしくなる。

 要するに私は、自分の居場所を常時報告していないと困るような“重要人物”ではないということなのであろう。私が出先で緊急に電話が必要になるとすれば、電車事故などに遭って到着が遅れることを相手先に連絡するときくらいのものであろうと思う。そういうことは年に数回程度しかないから、私にとっては公衆電話の行列に並べば済むことだ。その内に携帯電話が普及してしまって公衆電話の前に行列などできなくなろう。それまでの辛抱である(しかし最近は公衆電話が少なくなってきている。これは想定外のことであった)。

 以前、夜道を歩いていたとき向こうから一人大声で喋りながら歩いてくる人影があった。頭がおかしいのではないかと気味悪く思いながらすれ違うと、何と携帯電話に向かって喋っていたのである。人騒がせなことだ。車を運転しながら電話を掛けている人もよく見掛ける。あれでは注意が散漫になり危険この上ない。そうかと言って運転の方に注意を向けていたら、今度は内容のある会話などできなくなるのではないかと思う。

 最近、私はよんどころない事情で入院することになった。手術を受けて3日目に、ようやくのことでベッドを離れて一人で歩けるようになったのだが、そのとき私が最初にしたのは電話を掛けることであった。身体につながれたままの点滴注射の装置一式をスタンドに吊し、そのスタンドを引き摺りながらそろそろと廊下を歩いて行った(かなり惨めな格好だ)。そして、廊下の角にある公衆電話のところまで行って家へ電話し、無事歩けるようになったことを家人に伝えたのである。電話を自分で掛けられるようになるというのは入院患者にとっては快復段階の一つの節目のようなものである。ところが携帯電話の出現は、こういった病人の行動スタイルにまで影響を及ぼすようになってきている。

 私のいた病室は5人の相部屋だったのだが、ある日一人の若者が入院してきた。注射がきらいだと言って点滴注射を怖がり、しばらくは看護婦さんを困らせているようであった。これはよくあることなので、どうということではない。しかし私が驚いたのは、入院して数時間後から彼の携帯電話が鳴りだしたことである。もちろん入院の見舞いの電話である。これがひっきりなしに掛かってくる。彼はきっと重要人物なのであろう。

 その電話に対して、点滴注射を受けながら「痛い、痛い」と電話で実況中継している有様であった。病室内ではテレビは禁止され、ラジオもイヤホーンで聞く規則になっているのに、この傍若無人の振る舞いである。しかも消灯時間後にも、電話は遠慮会釈なく掛かってくるのであった。その頃の入院規則では携帯電話の使用は禁止されていなかったのである<*1>。携帯電話に向けて電話を掛ける場合は、やはり相手のいる場所と時間をわきまえてからにすべきであろう。受ける方も、割り込み電話を許すべきかどうかよくよく考えて、必要なら携帯電話のスイッチを切るくらいの心配りをすべきである。

【注】<*1>最近では、携帯電話の電波が医療機器の誤作動の原因になるということで、病院内では使用が禁止されている。

◆割り込み機能
 このように携帯電話の使用者は、自分が周囲に迷惑を撒き散らしていることに気が付いていないことが多い。これは丁度、喫煙者がたばこの煙を所構わず撒き散らし、吸い殻を何処にでもポイポイと捨て、しかも周囲に迷惑を掛けていることに全く気が付いていないという、あの無神経な行動にどこか似ているように思えてならない。

 一般に“割り込み”という行為を行うについては、最低限守るべき礼儀作法というものがある。割り込まれた周辺に迷惑を掛けないよう、常に心配りしなければならないのだ。最も理想的な割り込み方とは、割り込まれたこと自体に周囲が気が付かないようにすることであろう。たとえば人の行列に割り込むには、多人数でどっと割り込んだのでは後ろに並んでいる人たちは怒るに違いない。行列の中に知人を見付けたら、その隣りに何気なく立ち自然に行列に加わることである。しかしそれも程度問題で、余り頻繁に割り込みを繰り返したのでは目立ってしまう。滅多にないことだと周囲は大目に見てくれるものなのだ。要するに割り込みという行為を普段は滅多にしないようにし、たまに割り込んだとしても周囲に気付かせないようにするのがコツである。その位の心配りは誰でもできるであろう。

 このように、我々の社会生活の上では“割り込み”というのは、余りよい印象を与えない行為である。しかしコンピュータの世界ではまったく逆で、コンピュータの円滑な運用には欠かせない非常に重要な機能なのだ。ただ、余り頻繁にやったのでは逆効果になるのは実生活の場合と同じである。

 割り込みというのは、プログラムの実行とは非同期に発生する各種の不測の事態に備えて、その発生をハードウェア的に検出し素早く対処することによってコンピュータを停止させないようにするために用いる。この割り込み機能を実現させるためには、コンピュータは必ずそのための専用のハードウェア機構を備えていなければならない。

 そういう事象が発生すると、コンピュータはそのとき実行していた命令を直ちに中断し、割り込み処理モジュールに制御を移す。中断されたプログラムの実行状態は保存され、割り込み処理モジュールによる処理が終ったら再び回復されて再開実行される仕組みになっている。この割り込み処理モジュールは、普通のプログラムの実行とは全く別のところで行われるので、プログラムの実行順序から見るとあたかも割り込みという事象が発生しなかったように事態は進行する。この「周囲に気付かせない」ということが割り込み機能の最大の特徴なのだ。そのためには割り込みを起こす回数も問題で、無闇に割り込みが起こらないようにすることも大切である。

 一般に割り込みには、外部要因による割り込み<*2>と内部要因による割り込み<*3>とがある。実行中のプログラムとは本質的に関係のない外部的な事象の発生が原因で割り込みが起きるのは、ちょうど外部から緊急電話が掛かってくるようなものである。もしプログラム中で各命令を一つ実行する都度これらの事象が発生したかどうかを調べるとしたら、これは大変な作業になろう。滅多に起こらない事象に対する対応の仕方としては最もまずいやり方である。それはちょうど携帯電話を常時手に持ち、始終電話を掛けまくって事象の発生を心配しているようなものである。割り込み機能を利用すれば、そのような無駄な作業をせずに本業の方に集中できるのである。

【注】<*2>外部要因による割り込み事象としては
   以下のものがある。
   (1)入出力動作の正常終了、障害発生
   (2)コンソールからの割り込みキー押下
   (3)セットされたプログラムタイマの時間満了
   (4)CPU、主記憶装置などの障害発生

【注】<*3>内部要因による割り込み事象としては
   以下のものがある。
   (1)演算結果のオーバフロー、アンダフローの発生
   (2)アプリケーションに対して保護されている主記憶への
     アクセス、不正命令の実行など
   (3)プログラム上の誤り
   (4)アプリケーションからOS機能のサービス要求

 一方実行中のプログラムの内部的な要因によって引き起こされる割り込みは、こちらから緊急の電話を掛ける場合に相当する。特に数値のオーバフロー(1)やアンダフロー(2)という事象の発生は、まさに実行中のプログラムの中で行った計算結果に起因するものである。したがってこういう割り込みを“割り出し”と言って区別する場合もある。割り出しであるからこちらから緊急の電話を掛ける場合に相当する。あるいは、ホテルのモーニングコールのように決まった時間に呼び出しをかけてもらうようなものだ。退屈で早く抜け出したい会議に出席するときは、あらかじめ決めておいた時間に会議室に呼び出し電話を掛けてもらうようにするとよい。これぞ内部割り込みの効能といえるであろう。

 しかしこの場合でも、プログラム中で各命令を一つ実行する都度これらの事象が発生したかどうかを調べるという方法はとらない。これらの滅多に起こらない事象に対する対応策を、あらかじめ決めておきさえすれば(無視するというのも一つの方法である)後はそれを忘れて本業に集中すればよろしい。携帯電話を常時手に持っている必要はなく、鞄の底にでも放り込んでおけばよいのである。

 このように割り込み機能をうまく使うためには、割り込みの種類を識別でき(割り込み要因の識別)、しかも場合によっては割り込みを許さない等の制御ができなければならない(割り込みマスク機能)。これを電話の場合にたとえると、誰から掛かってきた電話か、あるいはどのような要件のものかを事前にある程度知ることができなければならないことを意味している。そして場合によっては、特定の番号からの電話に対しては受信拒否ができなければならない(割り込み禁止/解除)。そう、最近話題の、いやがらせ電話に対する拒絶機能である。

 また、同時に発生した割り込みに対して、受け付ける順を適当に決められるようになっていなければならない(同時発生割り込みの受け付け優先順位制御)。更に多重に割り込みが起こったときの取り扱いもできるようになっていなければならない(多重割り込み <*4>)。これは一つの割り込みを処理中に、他の同種の割り込みが発生したときの取り扱い方を決めておくという意味である。これは電話の場合にたとえるなら、キャッチホンのシグナルが入ったときどちらの相手と先に話すかということである。つまり同時に何本もキャッチホンが入ってきた場合(本当の電話にはそのような機能はまだないが)誰の電話を優先的に受け付けるかということになろう。

【注】<*4>割り込み事象別にマスクビットを設け、そのビットが1である事象は更に割り込まれることを許し、0であれば対応する事象の割り込みは禁止されるようにすること。

 割り込み機能とは、滅多に起こらない事象への効率的な対応策のことである。携帯電話による“割り込み”に辟易としている者の立場から一言させてもらうなら、携帯電話の利用者は、割り込みという機能の利点と欠点とを十分に認識して、この機器を有効に使うようにしてほしい。たとえば、滅多に起こらないことが起こってしまったときにだけ利用するようにできないものであろうか。

 携帯電話へ向けて電話を掛ける者は、相手のいる場所と時間を十分に考慮し、割り込み電話を掛けるべきかどうか判断するくらいの配慮をしてほしいものだ。

 一方、携帯電話で受ける側は普段は通話機能は使えないようにし、通常は割り込み禁止状態(割り込みマスクをかける)にしておくべきであろう。そして“割り出し”処理が必要になったときだけ、この機器を利用するようにしてはどうか。それでは携帯電話の利点がないと言う人は、多分希代のおしゃべりか、あるいは一瞬でも無駄にできない最重要人物なのであろう。

 どんな仕事をするにも、勉強をするにも、本当に成果を上げたければ集中力を高めることが求められる。それを邪魔するものは世の中に沢山あるが、特に携帯電話はその最たるものであろうと思う。電話とは“割り込み”と“割り出し”を基本とする道具であるから、これを常時用いていたのでは仕事の効率が上がらなくなるのは至極当然のことだからである。割り込みとか割り出しというものは、ここぞというときにだけ用いて初めてその効果が発揮されるものなのだ。
 授業中にこっそりと携帯電話を利用している学生の諸君にも言いたい。最近、学生の学力低下が言われているけれど、その原因の一端は実はこの携帯電話という“集中力を削ぐ道具”の利用にもあるのではないかと私は思うのである。■

◆【電話への賢い対応法】
 電話の呼び出しには最優先順位で対応するが、電話で依頼されたことには最低の優先順位で対応する。

【用語解説】
(1)オーバフロー
 演算結果の数値が、演算レジスタ上に納まりきらないほど大きくなること
(2)アンダフロー
 演算結果の数値が、演算レジスタ上で表現できないほど小さくなること
(1996-10-14:掲示、1998-5-1:削除、2006-9-1:加筆再掲示)