WirelessWire News The Technology and Ecosystem of the IoT.

by Category

プログラマー経営学事始め

2013.07.23

Updated by Ryo Shimizu on July 23, 2013, 17:00 pm UTC

 Wirelesswire読者の皆さん、はじめまして。
 株式会社ユビキタスエンターテインメントの清水と申します。

 私はプログラマーであり、経営者でもあります。

 プログラミングと経営、この二つは非常に離れているようでいて密接な関係があります。
 なぜなら、プログラムの語源はギリシャ語のπρ?γραμμα(プログランマ)に由来し、これは公に書かれた文章を意味しているそうです。

 また、コンピュータというのも、かつては職業(計算手)でした。
 それが今日、コンピュータが機械化され、プログラムが人を扱うための手法ではなく機械を効果的に扱うための手法へと意味を変えたものの、もともとプログラム本来の役割である「自分以外の者の振る舞いを決める文章」は喪われていません。

 つまり、自動計算機としてのコンピュータと、プログラムは、本来切り離せるものだったのです。
 そして他人の振る舞いを決めるという手法そのものは、むしろ組織の運営や経営そのものであると言うことが出来ます。

 また、優れたプログラマーは優れた経営者になることが少なくありません。
 Facebookのマーク・ザッカーバーグ、Microsoftのビル・ゲイツ、Googleのセルゲイ・ブリンやラリー・ペイジなどです。

 これはプログラムの持つ特質、すなわち「自分の居ないところの他人の振る舞いを決める」という性質と無関係ではないと思います。
 そこでコンピュータプログラミングの手法を一般化し、一般的な組織運営に活用する方法を総称して、私は「プログラマー経営学」と呼ぶことにしたいと思います。

ソフトなハードの物語

 私は6歳の頃にプログラミングを始めて以来、30年間に渡ってソフトウェアエンジニアとして育って来たのですが、先日、ひょんなことからハードウェアにも手を出すことになりました。

 ソフトウェアの世界の巨匠、アラン・ケイ氏の言葉にも、「ソフトウェアに真剣に取り組む人は、自分でハードウェアを作らなければならない」というものがあります。

 そこで製造業に乗り出したのですが、あまりにも勝手が違って大いに驚きました。
 たとえば最近のソフトウェアでは、β版でリリースし、あとからどんどんブラッシュアップしていく、という作り方ができます。

 しかしハードウェアではそういうわけにはいきません。
 一度出荷されてしまったハードウェアにはいかなる欠陥も許されません。

 また、ソフトウェアは、コピーすれば確実にいくらでも売ることが出来ますが、ハードウェアの場合、量産しただけでは不十分で、ひとつひとつの量産品を厳密に検品し、きちんとした品質管理をしなければなりません。これには気が遠くなるような努力が必要です。

 ソフトウェアの世界では、先人の残した知恵やノウハウが、ライブラリという形に纏まっていて、たいていのものは無料で自由にいくらでも使うことが出来、なおかつこの供給が滞るということはあり得ないのですが、ハードウェアの場合、量産過程において部品が足りないとか、原材料が足りなくて代用品を探すなどということがしょっちゅう起きます。

 中国の工場に飛び、このハードウェア製造のプロセスであるサプライ・チェーン・マネージメントの厳しさを存分に体感した私は、しかし同時、このハードウェア製造の現場では、ソフトウェア的なノウハウが活用されていることを発見するのです。

 たとえば、SMT(サーフェスマウントテクノロジー)プロセスというものがあります。
 これは、ICや抵抗などの部品を機械で自動的に基板に半田付けしていく作業です。

 ここだけ聞くと、まるでコピー機のように自動的に機械がマウントしてくれるなんて便利だ、と思うかもしれません。

 ところがこの機械を正しくセットアップするのに平気で1日?数日掛かります。
 部品の位置を一つ一つ指定して行って、試しては剥がし、試しては剥がし、ということを繰り返して行きます。

 さらに、効率的に製品を組み上げるために、それぞれの部品の組み付けは複数台の機械で分業されています。
 たとえば、「ハンダをステンシルを使って塗る作業」「抵抗器を付ける作業」「ソケットを付ける作業」「CPUを付ける作業」「メモリを付ける作業」「ハンダを定着させる作業」といった具合に細かく分けられていて、これらの作業ステージを同時並行的に実行できるようになっているのです。

 これはソフトウェアの世界では「パイプライン処理」と呼ぶ仕組みと同じです。
 コンピュータのCPUの内部では、例えば「メモリから命令を読み込む」「計算を行う」「メモリに命令を書き込む」といった複数の処理ステージでパイプラインが構成されており、これをうまく使うことによって高速な処理を実装することか出来るのです。

 また、UNIXというOS(基本ソフト)では、パイプラインならぬパイプ処理というものが実装されており、これは様々なフィルタープログラムを組み合わせて流れ作業でデータを加工するという便利かつ強力な機能です。

 また、サプライ・チェーン・マネージメントでは、無数の部品を複数の業者から同時並行的に調達します。
 CPU屋さんはCPUしか作らず、抵抗器屋さんは抵抗器しか作らないわけです。

 結局、製造を始める直前に全ての材料が揃っていれば、どの順番で調達しても関係ないことになります。これによって作業時間を短縮します。

 これはソフトウェアの世界では、「アウト・オブ・オーダー実行」と呼ばれるやり方です。
 アウト・オブ・オーダーとは、オーダー(順序)を無視してとにかく並列して作業をするやり方で、近年のマルチコアCPUでは益々この「アウト・オブ・オーダー」を意識したプログラミングが必要になってきました。

 例えば、ゲーム機のソフトウェアでは、「シェーダー」と呼ばれるプログラムを小さなコンピュータをいくつも同時並行的に動かして美しい画面の描画を実現しています。

 たとえば今度発売されるPS4では、合計で1000以上のストリームプロセッサ(計算処理装置)を搭載し、超高速な描画処理を実現しています。

 これはいわば、1000人の部下を持つ社長と同じです。それぞれの部下がそれぞれ自分の役割を果たし、全体でチームワークを達成するのです。

 これを扱うプログラミングというのは、非常に慎重に行われなければなりません。
 なにしろ1000人の部下が居ても、彼らはプログラミング次第で、偉大にも、凡庸にもなりうるのです。

現実世界とプログラム

 ソフトウェアの世界ではトライ&エラーが当たり前ですが、現実世界の組織運営ではなかなかそうも行きません。
 そこで予め、会社や組織をあるやり方(プログラム)で運営したらどうなるか、模擬実験する方法が有効な場合もあります。ソフトウェアの世界ではこれを「シミュレーション」と呼びます。

 一見、何の関係もなさそうなものに、これだけの類似性があるのです。
 工場の現場でSMTプロセスを担当している工員の人たちはソフトウェアの知識は全くありません。しかし、彼らはどう振る舞えばいいのか、予め訓練され、マニュアル化されています。このマニュアルは作業手順書(SOP)と呼ばれ、完全にそこに書かれている通りの順番で役割を果たすことが期待されています。

 このマニュアルは、まさにプログラムそのものと言えます。

 そしてマニュアルのある全ての業種、つまり飲食店やコンビ二、百貨店やキャビンアテンダントなど、あらゆるサービス業はプログラムによって動いているのです。

プログラミングを学ぶと、仕事をもっと効率的にできる

 私が常日頃から思っているのは、プログラミングほど組織の運営をうまく抽象化した学術大系はちょっと例を見ないのではないかということです。

 たいていの問題は、プログラミングのメタファで考えると解決できます。

 例えば、銀行のATMやコンビ二のレジの前に並ぶ列。どうさばくのが一番効果的なのか、これはプログラミングの世界では「待ち行列問題」と呼ばれる典型的な問題で、数式で表すことが出来るほど一般的な問題です。通常はWebサーバーなどの負荷分散をどうすべきかという時に使われます。

 また、例えば電話口で正確に英字のスペルを伝えるために考案されたフォネティック・コードというものもあります。

 これは、たとえば「A=アルファ」「B=ブラボー」「C=チャーリー」のように、「エービーシー」と発音すると、「ビー(B)とディー(D)とズィー(Z)」を聞き間違ったりする危険性を回避するためにわざと長くて聞き間違いの起きにくい呼び方にする方法で、軍隊や旅行業界でよく使われています。飛行機でキャビンアテンダントさん同士の会話に耳を傾けると、「54のチャーリー(C) デルタ(D)フォックストロット(F)のお客さんにコーヒー」などと喋っているのが聞こえるはずです。これはプログラミングの世界では冗長化と呼ばれる手法の応用と言えます。例えばバーコードなどは敢えて情報量を犠牲にし、誤り訂正符号を加えて誤りなく情報を伝達する方法を確率しています。

 プログラミングのやり方を仕事に応用すると、仕事はもっと効率的にできます。
 プログラミングの世界には、仕事を簡単に効率よくこなすためのヒントが山ほどあるからです。

 私は会社経営を始めて10年が経ちます。
 この10年間は、私自身がプログラミングの手法を組織論に応用できるか試す、いわば実験期間でした。そして幸いなことに、今のところこれは上手く行っているようです。

 このブログでは、私自身がプログラマー出身の経営者として感じたことをときどき綴って行きたいと思っています。

WirelessWire Weekly

おすすめ記事と編集部のお知らせをお送りします。(毎週月曜日配信)

登録はこちら

清水 亮(しみず・りょう)

新潟県長岡市生まれ。プログラマーとして世界を放浪した末、 '17年にソニーCSLとWiL LLC.とともにギリア株式会社を設立し、「ヒトとAIの共生環境」の構築に情熱を捧げる。 '17年より東京大学先端科学技術研究センター客員研究員を兼務。著書として「教養としてのプログラミング入門(中央公論社)」「よくわかる人工知能 (KADOKAWA)」「プログラミングバカ一代(晶文社)」など。