問題解決力はとても大切なスキルである。プロジェクト管理でも業務効率化でも、結局は起こっているさまざまな問題をいかに解決するかがキーになる。大小さまざまな問題を解決するには、使える手法をたくさん持っておくことが大切になる。この点、IT技術者はどの業界の人よりも多種多様な問題解決のモデルを持っている。具体例を紹介しよう。問題として、長年筆者を悩ませてきた“ビール在庫問題”を取り上げる。

 簡単にこの問題を説明する。我が家でビールを飲むのは筆者だけなので、冷蔵庫に缶ビールを冷やしておくのも筆者の責務である。この管理で最も重要な要件は、「いざビールを飲もうと思ったときに冷えたビールが1本もない」という事態にならないようにすることである。

 このためには、飲んだ後にビールをちゃんと補充すればよいのだが、これがなかなか難しい。なぜかというと、ビールを飲み終わったときには酔っ払っているので、冷蔵庫にビールを補充することを気持ちよく忘れているからである。そのため、冷蔵庫内に1本もビールが冷やされていないという事態が(しばしば)起こる。これが“ビール在庫問題”である。

 問題解決にはいくつか定石がある。最もよく使われるのは「なぜ」を繰り返して問題の根本原因を見つけ、その原因を解消するというものだ。原因がなくなれば問題が起こらなくなる。ところがビール在庫問題にこの定石を適用できない。なぜなら、冷蔵庫に補充されない原因は忘れるからであり、忘れる原因は酔っ払うからであり、その根本原因はビールを飲むことにある。つまり、ビールを飲まなければ問題は解決するわけだが、これでは意味がない。ということで、筆者が長年頭を痛めていた難問なのだ。

 ところがある日、これを解決する方法がひらめいた。具体的にはこうだ。まず最初に納戸にあるビールを1本利き手で持つ(筆者の場合は右手)。次に冷蔵庫に行き、逆の手、筆者の場合は左手でドアを開ける。左手で冷蔵庫内のビールを取り出すと同時に右手に持っているビールを冷蔵庫に入れる。最後に、左手のビールを右手に持ちかえ、左手で冷蔵庫のドアを閉める。

 要するに、出して入れるという順序を逆にし、入れて出すという順序にしただけである。だが、意外に効果がある。この手順を導入して以来、冷蔵庫に冷えたビールがないという事態は一度も起こらなくなった。なぜ効果があるのか説明できるだろうか。

 一般には難しいがITの知識を使えば簡単である。操作がアトミックだからだ。以前の手順は「ビールを出す」と「ビールを入れる」という操作が別の操作になっているので、割り込みが入ると冷蔵庫のビールが1本減った状態で終わる。たとえ冷蔵庫に何本ものビールを冷やしていても、この操作を繰り返すといずれ1本もなくなる。

 一方で改善した手順では、冷蔵庫からビールを出す作業と入れる作業が分離不能、つまりアトミックな操作になっていて途中で失敗しない。すべて成功かすべて失敗しかなく、トランザクションが保証される。

 流通業や製造業では在庫管理は非常に重要である。我が家の冷蔵庫のビールは重大な問題ではないが、この問題に、IT技術者なら誰もが知っているトランザクション管理を適用できる(かもしれない) のだ。問題解決手段のアイデアはいくらあっても多過ぎることはない。問題解決に利用できるモデルを多数持っている我々IT技術者は、技術から離れても優れた問題解決者になる条件を満たしているのだ。

 さて、一つの問題が解決すると、解決すべき別の問題が現れるのが世の常である。今の筆者のそれは、納戸のビールがなくなるとトランザクションが開始できないことだ。納戸のビールがなくならないように管理するにはどうすべきか。今も頭を抱えている。

林 浩一(はやし こういち)
ピースミール・テクノロジー株式会社 代表取締役社長。ウルシステムズ ディレクターを兼務。富士ゼロックス、外資系データベースベンダーを経て現職。オブジェクト指向、XMLデータベース、SOA(Service Oriented Architecture)などに知見を持つITアーキテクトとして、企業への革新的IT導入に取り組む。現在、企業や公共機関のシステム発注側支援コンサルティングに注力