カテゴリー: 科学技術

とあるサービス開発をめぐる物語

昔々あるところにAさんとBさんとCさんとDさんがいました。

Aさんはとてもわがままなお客様です。Aさんはいつも「こんなものがあったらいいなぁ」と言いますが、すぐに手のひらを返したように「やっぱりあっちの方がいいかも」と言います。Aさんは次にどんな行動を取るのか予想できないあまのじゃくさんなのです。

BさんはAさんに物を売る商売人です。BさんはどんなものがAさんに売れるのかをいつも考えていて、Aさんのニーズをリサーチし、様々なサービスを提供しています。しかし、Aさんが何を考えているのかは今ひとつわからないので、当たったり外れたりしています。

CさんはBさんから依頼を受けてサービスを設計するSEさんです。Bさんに言われた通りのものを言われた納期までに作るプロフェッショナルです。Bさんからの指示は時にあいまいなので、Cさんはわかりやすいパワーポイントやエクセルの資料をたくさん作ってBさんにサービスの仕様を確認します。Cさんは初めに言われたことは忠実に守りますが、後から言われたことはうまく処理できないので、最初に何度もBさんにサービスの仕様を確認します。

Dさんはプログラマーです。Bさんが作った設計書に従ってプログラムを作ります。コーディングは昔ながらのやり方でそつなくこなしますが、それほど速いということもありません。また、AさんやBさんのことはよく知りません。

さて、そこにスーパープログラマーSさんがやって来ました。Sさんは非常に生産性が高く、Dさんの何十倍も速くコードを仕上げることができます。また、単にSさんは生産性が高いだけではありません。Sさんはゼロから新しいものを作るのが速いだけではなく、一度作り上げたものを変更する作業も非常に速いのです。

Sさんが来てからというもの、あっという間にプログラムが完成してしまいます。Cさんは思いました。「Sの奴は使えるぞ」そして、Sさんに比べて生産性が低いDさんはお払い箱になってしまいました。

Sさんはあまりにも速くプログラムを作ってしまうので、Cさんが仕様の確認のためにパワーポイントやエクセルの資料を作っているうちに、本当に動くプログラムを作ってしまいます。そのため、いつしかCさんの資料の代わりにSさんのプログラムをBさんに持っていくようになりました。いくらわかりやすい資料があっても、実際にこの目で見て、この手で触れるプログラムにはかないません。それにSさんは変更するのも速いので、Bさんが実際触ってみてBさんのイメージと異なっていたとしてもすぐにSさんはプログラムを変更してくれます。Bさんは思いました。「Sの奴は使えるぞ。」そして、資料しか作れないCさんはお払い箱になってしまいました。

Sさんはあまりにも速くプログラムを作ってしまうので、BさんがどんなサービスがAさんに売れるのかを考えているうちに、とりあえずAさんが一番ほしいと言っているものを作ってしまいます。AさんはとてもわがままなのでSさんが作ったサービスを使うと、すぐに「あれもほしい」「ここは嫌」と文句を言います。しかし、Sさんはすぐにその要望に答えてくれます。Bさんがあーでもないこーでもないといつまでも悩んでいるうちに、Sさんが作るサービスはどんどん改善されていきました。Aさんは思いました。「Sさん最高!」Bさんはお払い箱になってしまいました。

こうして、AさんとスーパープログラマーのSさんだけが残りましたとさ。

—-

ここ20年ぐらいのITの進化っていろいろあると思うけれど、その中でも地味であまり注目されていないことが2つあると思う。まずひとつはコーディングが恐ろしく簡単になったということ。そして、もう一つがいつでも簡単にコードを変更できるようになったということ。

昔はパンチカードをならべてアセンブラでプログラムを書いていたらしいけど、その頃に比べたら本当に今のコーディングって簡単だ。余計なことは何も考えなくてやりたいことだけに集中すればいい。もちろん適切なアーキテクチャやらツールやらライブラリやらを選定した上でのことだけど、それだってGoogle先生に聞けばすぐわかる。それなりにコーディングのスキルさえあれば、結構簡単にそれなりのWebサービスを作ってしまえたりする。

そして、もう一つが簡単に変更できるようになったこと。当たり前だけどソフトウェアってただの情報でしかないから、追加したり変更したりするのなんて本来は簡単なはずなんだよね。ハードウェアだとこうは行かない。例えば、一度印刷してしまった本は回収するのがとても手間だけど、電子書籍なら改訂版をダウンロードしてもらえばいいだけだ。それと同じ話。

じゃあなぜ今まではソフトウェアの変更が簡単にできなかったかというと、それはやっぱりテストだと思うんだよね。ソフトウェアって複雑にいろいろなところが組み合わさっているから、どこかをいじってしまうと他の全く手を入れていない部分にも何か影響があるかもしれない。だから、テストを全部やり直さないといけない。ソフトウェアが大きくなっていくと指数関数的にどんどん改定コスト(≒テスト作業)が膨らんでいってしまう。

で、これまではその問題にどう対処していたかというと、とにかく最初に何もかも決めてしまおうと努力する。そして、後からの変更をきっちり管理することで対処した。「それは最初に決めたサービスの仕様には含まれていなかったですよね。追加費用になります。納期も伸びます」そうして生まれたのが、プロジェクトマネージャーという職業。プロジェクトマネージャーってソフトウェアが簡単に変更できないからこそ必要な職業と言えるんじゃないかな。

そこにイノベーションがやってきた。テストが自動化できるようになった。同じテストを何度も何度も自動でできるようになった。それによって、ソフトウェアが大きくなっても変更が一定のコストでできるようになった。いわゆるアジャイル開発って奴だ。アジャイルは別にテストの自動化だけじゃないけど。

そうすると、どうだろう。変更がいつでも簡単にできるのであれば、最初に何もかも決める必要なんてない。本当に必要な物から作って、よくわからないものは後から追加していけばいい。仕様を確認する作業や変更を管理する作業って実は何も新しい価値を生み出してない。純粋にコードを作ることにしか価値なんてないのだ。

さらに、今の時代はとにかくスピードが求められるようになった。市場がどんどん変化していくのでそれに追いついていくだけでも大変だし、さらにその先を行く新しいサービスが求められている。そもそも将来何が起こるかなんて誰にもわからない。そんな状況では、「ビジネスを分析」なんてしてるより、ベータでもいいからとにかく実際にサービスを提供して、顧客からのフィードバックを得る方が確実だということに企業が気付き始めたのだ。

そこに、「ソフトウェアはいつでも変更できる」という特徴がマッチしたんだね。

今の時代に必要なのはとにかく素早くサービスを作れるスーパープログラマーのSさんだ。Dさんも、Cさんも、そしてBさんでさえも、Sさんにはかなわない世の中になろうとしている。

広告

真に子供に必要なもの

花粉症やアトピー性皮膚炎のようなアレルギー疾患になるかどうかは、一歳になるまでの間にどれだけ細菌の多い環境にさらされるかで決まるそうだ。現代は非常に清潔な環境になってしまったため、そういったアレルギー疾患になりやすくなっている。家畜を飼っているような家庭では今でも細菌が多く繁殖しているため、あまりアレルギー疾患にならないらしい。

我々大人は毎日風呂に入って頭を洗ったり体を洗う。また、制汗剤や香水をつけたりもする。それはもちろん不快な思いをしたくない(させたくない)というのもあるし、病気を防ぐという目的もあったりする。しかし、大人がそれを良かれと思って子供にもさせてしまうと、かえってアレルギーの原因になったりする。実際、子供は何日風呂に入らなくても全然平気だ。本人は全く気にしていない。

赤ちゃんに飲ませるミルクの瓶はかならず煮沸消毒すべしとか、過剰なまでに清潔な環境に追い込んでいる訳だが、むしろそれは子供に悪影響を与えているのかもしれない。

しかし、一方でそういった清潔な環境になったおかげで、劇的に赤ん坊の死亡率が下がったのも事実だ。自然な環境に置くのが一番だという考え方がいつも正しい訳じゃない。ホメオパシーを信じた助産師がK2シロップを飲まさなかったせいで、赤ん坊がなくなったというようなニュースもあった。

子供に何を与えるか、子供をどんな環境に置くか。それは大人にとっていつも悩ましい問題だ。

当の本人である子供は、そんなことどうでもいいんだろうけど。

最近やってること

3月にiPadを買ってからというもの、あまりにiPadいじりが楽しくて更新が滞っておりました。その後、仕事も忙しくなって更新する暇がなくなり、気がつけば3ヶ月ほったらかし。ようやく最近落ち着いてきたのでぼちぼち書いていきます。やっぱり一度書くのをやめてしまうと次書くのが重くなりますね。コンスタントに書き続けないと。

最近はiPadもそうですが、新しいことに挑戦してます。一つはインラインスケート。年始に親戚の家に遊びに行かせてもらったのがきっかけで、子供がインラインスケートに興味を持ち、子供用のインラインスケートを購入しました。子供がやっているのを見て自分もやりたくなったので、3月頃に自分用のインラインも買った次第です。

スキーをやっていたバックグラウンドがあったからか、結構すぐに上達しました。今はワンフットを練習してます。はっきりとしたカービングはできないですが、一応片足で20メートルぐらいは滑れます。(それよりも長い真っ直ぐな滑れる場所が近所にない)

今は割りとやる度に上達していっているのですが、今後壁にぶち当たりそうだなぁと感じます。さらに上達するには、まず体が柔らかくなければならないということ、そして、体重が軽くなければならないということを感じます。

クロスやスネーク、オープンスタンスといったインラインスケートの技を習得するには足、特に股関節が柔らかくなければできそうにありません。また、身のこなしをスムーズに行うためには、重い体ではどうしても限界があります。

そんな理由でまずは体を柔らかくしようとGW明けから柔軟体操をはじめました。始めた当初は全く体が曲がらなかったので、無理してやったせいか腰痛になってしまいました。最近は腰に負担が掛かりそうな体操をやめたおかげで腰痛は収まりましたが、太ももの裏は常に筋肉痛のような痛みがしてます。やっぱり年ですかね。もうアラフォーですから。

それからもうひとつ。iPhoneアプリ開発の勉強をしてます。せっかくMacBook Airを買ったので、Xcodeをインストール。まずはドットインストール見てサンプルを作ってみました。が、大した勉強にはなりませんでした。今はAppleのデベロッパーサイトのドキュメントをボチボチ読んでいっている感じです。

作りたいアプリはもう決まっていますが、まあそれは内緒。と言いながら、既に特許文献としてインターネット上に公開されているものです。お暇な方はIPDLで「特許公開2011-210171」や「特許公開2012-027824」あたりを検索してみてください。

特許文献にURLを付与してくれたらいいのにね。特許庁さん、よろしく。

不揮発性メモリReRAMは全く新しいOSを求めている

少し前のニュースになるが、2012年1月24日エルピーダメモリはReRAMを使った不揮発性メモリの開発に成功したというリリースを発表した。おそらく不揮発性メモリの量産に目処をつけたのは世界初の事例なんじゃないかと思う。

10 nsというDRAM並のスピードで読み書きができ、かつ、NANDフラッシュと同様に電源を切ってもデータを保持することが出来る。ReRAMはDRAM・NANDフラッシュの双方を置き換える可能性を持った画期的な製品だ。

もしコンピュータのメモリとストレージがこの不揮発性メモリに置き換わったとしたら、どうなるだろうか。もしかしたら、全く新しいOSが作れるのではないだろうか。

例えば、今のOSには「仮想メモリ」という機能が備わっている。これは物理的には少ないメモリを仮想的に大きく見せるため、ストレージの容量を活用する機能だ。もしストレージがDRAM並のスピードで読み書きができるのであれば、当然不要な機能になる。

それから、ハイバネーションという起動を早くする機能がある。OS起動後のメモリイメージをそのままストレージに書きこんでおくことによって、起動処理をすっ飛ばしてOS起動後の状態に持っていく機能だ。これもストレージがそのままメモリとして使えるのであれば、電源ONしたらそのまま起動状態ということになるのではないだろうか。

というよりも、OSをロードするという処理そのものが無意味だ。

そもそもファイルシステムとは何のためにあるのだろう。ストレージという低速のデバイスにしか永続的なデータを保存しておくことが出来なかったから生まれた仕組みではないだろうか。不定状態と確定状態をトランザクションとして管理する機能は必要だろうが、それがファイルシステムという形で実現する必要はないように思う。

不揮発性メモリはOSという根源的なレベルでコンピュータにイノベーションをもたらす可能性を持っているのではないだろうか。そして、このOSはおそらくハードウェアと一体化されたものになるような予感がする。まだ私には新しいOSのイメージを思い描くことはできないが、何か全く新しいフロンティアが広がっているような気がしてならない。

昨日エルピーダメモリは会社更生法適用を申請した。NANDフラッシュの市場が拡大していく中で、DRAMにこだわった結果だという。しかし、エルピーダが持つReRAMという技術は極めて有望な技術だ。これをフルに活用し、新たなOSを開発してプラットフォームを抑えよう。もしそれに成功すれば、メモリベンダーとして復活するだけでなく、世界をひっくり返すこともできるのではないか。

WindowsもLinuxもMacもiOSも凌駕した、斬新でシンプルな美しいOSを開発し、コンピュータの世界に新たなイノベーションをもたらして欲しい。

ARMがx86を駆逐する日

月面着陸(Moonshot)」という名のプロジェクトがある。hpが開発を進めているARMサーバーのプロジェクトだ。従来型のサーバと比較して消費電力・設置面積・費用を大幅に削減することができるという。

プロセッサーの歴史はこれまでコンシューマーが主導してきた。20年程前。まだWindows 95が世の中に登場していなかった頃は各社がいろいろなプロセッサーを開発し、競争していた。intelのx86だけでなく、MotorolaのPowerPCやDECのAlpha、hpのPA-RISCなどの様々なプロセッサーが存在していたのだ。しかし、その後は御存知の通りintelが独占体制を築くことに成功する。Windows PCが爆発的に普及し、Windows PCには必ずintelが入っていたからだ。いわゆるwintel体制というやつだ。

プロセッサーの開発は巨額の投資がつきまとう。そのため、どれだけ多くの数がさばけるかが勝敗を決める。intelチップはPCという巨大なマーケットに受け入れられたため、その投資を賄うことができた。その技術をXeonというエンタープライズ向けのチップにも転用し、いつしかサーバー用途にもintelチップが多くを占める状況になった。今やNECのメインフレームでさえ”intel inside”なのだ。DECはCompaqに買収されてAlphaとともに潰えた。さらにそのCompaqを買収したhpもPA-RISCの開発を終了。intelと共同開発しているItaniumは先行きが不透明だ。SunのSPARCはOracleに買収されて息絶え絶えの状況である。

もう一つ生き残ったサーバー向けプロセッサーはIBMのPowerだが、実はPowerは任天堂のWiiに搭載されている。だから、生き残ることができているのだ。

この先もintelが市場を独占するのかどうかはわからない。今後はスマホの普及によってARMチップが台頭してくるからだ。昨年2011年は「世界のスマホ出荷台数がPCとタブレットの合計を初めて上回」ったらしい。ARMは設計会社でしかないため、単純にintelと比較することはできないが、今後ARM陣営の開発投資はintelを上回っていくだろう。

intel側も黙ってそれを見ているわけではなく、新しいAtomチップを開発してスマホに売り込もうとしているが、PCほどの利益が見込めるのだろうか。今の開発投資に見合うだけのマーケットを取ることが目標だとしたら、途方もない数をさばく必要がある。まさにイノベーションのジレンマだ。もはやintelにはあまり先がないように思う。

いずれコンシューマー向けプロセッサーとしてARMが普及した時には、おそらくサーバー向けにもARMが適用されていくことだろう。ARMが搭載されたサーバーは、いったいどんな姿なのだろうか。サーバーラックの扉を開ければ、PoEスイッチのRJ45ポートに、あたかもUSBメモリのように刺さっていたりするのだろうか。どんな未来が来るのか楽しみだ。