ソフト業界の謎~消えたC言語プログラマー~
■翁プログラマー
最近、怖い思いをした。トンネルで幽霊を見たとか、散歩中に宇宙人に追いかけられたとかではなく。順を追って話そう。会社で新しい事業を立ちあげたので、プログラマーを3名補充することにした。専用ハードを使うので(パソコンではなく)、条件は「C言語の経験者」。プロジェクトリーダーがまだ27歳なので、本当は、年齢制限をかけたかったのだが、20代のなんちゃってプログラマーと、40代のエキスパートのどっちがいい?
もちろん後者!
ということで、年齢制限をはずすことにした。ところが・・・派遣会社から紹介されたプログラマーは「57歳」だった。白髪頭で、老眼鏡を半分ズリおろした翁プログラマーを想像し、腰が抜けそうになった。何かの間違いだろうと思い、派遣会社に確認したところ、「57歳」に間違いないという。57歳の現役プログラマー?
SE(システムエンジニア)ならまだしも・・・プログラマー35歳定年説はどこへ行ったのだ?こっちの仰天具合が伝わったのか、派遣会社の営業マンが飛んできた。そこで、彼がクドクド説明するには・・・
「意図的に、御社に年寄りを回しているのではありません(年寄りとは失礼やろ)。若手のC言語プログラマーそのものがいないんです」
へぇー、じゃあ、聞くけど、若手のプログラマは何が書けるの?
Java・・・らしい。昔と違って、家でもオフィスでも、孤立したパソコン(「スタンドアローン」という)は見かけなくなった。パソコンをネットワークにつないで、サーバーで処理するのがトレンドだ。具体的には、2つの方法がある。
【クラサバ】
パソコンを「LAN」につないで、ローカルサーバーで処理する。
【クラウド】
パソコンを「インターネット」につないで、グローバルサーバーで処理する。いずれも、入出力処理はパソコン、メイン処理はサーバーというすみわけだ。つまり、目の前のパソコンは、キー&マウス入力と画面表示にしか使わない。
では、クラサバとクラウドで何が違うのか?クラサバは、「LAN(ローカル・エリア・ネットワーク)」なので、事務所や会社など地域限定。つまり、サーバーも地域限定になる。一方、クラウドは広大なインターネット上のサーバーを使用できる。ただ、「クラウド」にも、地域限定の「プライベートクラウド」がある。クラウドの仕組みを「LAN」で使うわけだ。
「プライベートクラウド」は、エリアが限定されるぶん、パーフォーマンスを上げやすいし、セキュリティも確保しやすい。今後、クラウドは「グローバルクラウド」と「プライベートクラウド」のすみわけが重要になるだろう。とはいえ、コンピューティングの本流は「クラウド」。パソコンであれ、タブレット端末であれ、何をするにも、処理するのはサーバーだ。ところが、すべて仮想化されているので、処理しているサーバーがどこにあるのか誰にもわからない。雲をつかむような話だ。
というわけで「クラウド(雲)」とよばれている。それを加速するのが、今流行のモノのインターネット「IoT(InternetofThings)」。パソコン、スマホ、時計、家電製品、はたまた植木鉢までインターネットにつなごうというのだ。みんなつながれば、効率的だから・・・「効率」大好きの人類の考えそうなことだが、どんな危険があるか、きちんと考えたほうがいい。地球上のすべてがつながったとして・・・新手の人工知能がウィルスをばらまいたらどうするのだ?すべてが一瞬に破壊される。
それを警告したのが、映画・TVドラマ「ターミネーター」だった。じつは、われわれは、この手の失敗をすでに体験している。戦争の「効率」を追求した結果生まれたのが、原子爆弾だから。しかも、軍事施設ではなく、一般市民の頭上で炸裂させたのだ。もちろん、それも「効率」を追求したから。都市を丸ごと破壊すれば、国民の戦意を削ぐことができるからだ。というわけで、人類の「効率至上主義」が改まらない限り、コンピューティングがスタンドアローンに戻ることはない。ネットワークが大前提、つまり、「みんなつながる」わけだ。では、具体的にネットワークにはどんなメリットがあるの?
たとえば・・・昔、ノートパソコンを持ち歩くビジネスマンをよくみかけた。電車の中でパソコンでお仕事したり、客先でデータを参照したり・・・働きバチ日本人を象徴する光景ですね。ところが・・・ノートパソコンは持ち運びに便利なぶん、盗むのもカンタン。どこかに置き忘れてそのまま持ち去られたり、酔っ払って電車の中で眠りこけたスキに、スマホとセットで盗まれたり(本当にあった話)。とはいえ、問題はノートパソコンの中身。仕事中にコソコソ収集したエロ画像なら、笑ってすまされるだろうが(ムリかも)、開発中の製品仕様書だったらどうするのだ?始末書ですむかな?ムリ。そんなこんなで、笑えない事件が多発し、ほとんどの会社で、ノートパソコンの持ち出しが禁止になった。
■パソコンを社外に持ち出す方法
ところが・・・先日、友人から驚くべき話を聞いた。ノートパソコンの持ち出しが解禁になったというのだ。盗まれたらどうする?盗まれても大丈夫!中身はカラっぽなので。具体的に説明しよう・・・たちの悪い泥棒が、終電の中を物色し、ノートパソコンを抱えて酔いつぶれたビジネスマンを見つけたとする。酔っぱらい具合にもよるが、ノートパソコンを抜き取るのはさほど難しくないだろう。その後・・・
「パソコンのデータを返して欲しかったら、30万円用意しろ。会社にバレたらクビだぞ」
的なケチな恐喝をもくろんだとする。しかし・・・この泥棒が電源を入れても、パソコンは起動しない。なぜか?このパソコンを起動するには、ワンタイムパスワードトークンというデバイスが必要なのだ。そのワンタイムパスワードトークンも盗まれたどうするのだ、というツッコミはさておき、このデバイスが生成するパスワードを入力しない限りパソコンは起動しない。しかも、一度発行されたパスワードは二度と使えない。
なので、パスワードを盗み見しても意味がないわけだ。つまり、「ワンタイム(使い捨て)」。そもそも・・・このノートパソコンからデータを抜き取ることはできない。データが入っていない上、ダウンロードすることもできないから。さらに、アプリをインストールすることもできない。じゃあ、一体、何に使える?ワード、エクセル、メーラー、たいていのものは使える。もちろん、データのロード・セーブも可能。???じつは、この仕組みは、前述のクラサバやクラウドと似ている。ノートパソコンは入出力のみ処理し、アプリは別のコンピュータで動作しているのだ。
サーバーで?
ノー!
会社にある自分のパソコンで。つまり、外出先でノートパソコンを起動すると、会社にある自分のパソコンも自動的に起動する。次に、ノートパソコンでアプリを起動すると、会社のパソコンのアプリが起動する(ノートパソコンではなく)。早い話が、外出先から会社のパソコンを遠隔操作するわけだ(ただし、レスポンスは最悪)。昔、この手のソフトで「pcAnywhere」というのがあったが、似たようなものだろう。というわけで、これなら、ノートパソコンを盗まれても、データまで盗まれる心配はない。さらに・・・万一、ワンタイムパスワードトークンが盗まれて、ノートパソコンが起動されても、情報システム部門が常時監視しているので、すぐにブロックされるだろう。つまり、この方法は、100%安全とは言えないが、たいていのリスクは回避できる。もちろん、こんなことができるのは、ネットワークコンピューティングのおかげ。スタンドアローンでは、何をどうしようがムリ。
■シンクライアント
ところが、この方式は、今風のハイテクというわけではない。むしろ、先祖返りしているのだ。その昔、パソコンがない時代、コンピュータといえば、汎用大型コンピュータだった。1台、ん億円もするので、独り占めにすることはできない。そこで、端末を多数つないで、みんなでシェアして使ったのである。この端末(「ダム端末」とよばれた)は、キー入力、モニタ表示、メインコンピュータとの通信機能しか備えていなかった。つまり、メイン処理はメインコンピュータが行ったのである。前述のネットワークコンピュータそっくりではないか。
ところが、1970年代、パソコンが発明され、コンピュータの価格は劇的に下がった。結果、一人一台のコンピュータの時代が到来したのである。ところが、1990年代に入ると、コンピュータは先祖返りする。データベースの覇者オラクルが「NC(ネットワークコンピュータ)」をぶち上げたのである。それに便乗したのが、ワークステーションの覇者サン・マイクロだった(今はない)。サン・マイクロのシステムはネットワークが大前提なので、「渡りに船」だったのだろう。当時、このようなコンセプトを「シンクライアント(Thin client)」とよんだ。メイン処理をサーバー側でやるため、「クライアント(ユーザー側のパソコン)」の負担が少ない。つまり、クライアントが「シン(Thin)=薄い」。前述のネットワークコンピューティングに酷似していることがわかる。しかし、シンクライアントはあまり普及しなかった。
なぜか?
通信速度が遅い上、サーバーの能力も低く、パーフォーマンスが出なかったのだ。ところが、インターネットの通信速度が向上し、サーバー側も分散処理と仮想化でパーフォーマンスが劇的に向上した。そこで、インターネット上のサーバーでサービスを提供する「クラウド」も生まれた(10年前は「ASP」とよばれた)。というわけで、シンクライアントは20年経ってやっと花開いたのである。そして・・・このネットワークコンピューティングで、欠かせないプログラム言語が「Java」。つまり、プログラマーの需要では、Java>>C言語なのである。だから、若手のC言語プログラマーがレアなのはあたりまえ。
じゃあ、C言語はこのまま消えてなくなる?
それはない(たぶん)。C言語は、今でも、TVゲームや、アミューズメント機器・自動車・飛行機などの機械制御で使われている。共通点は、実機がパソコンではなく、専用コンピュータであること。専用機なので、DVDでソフトを入れ替えて、使い回す必要がない。そこで、プログラムとデータをROMに焼いて組み込むのが一般的だ(ゲーム機をのぞく)。そのため、「組み込み系」とよばれている。
ただし、工場内の機械制御では、「シーケンサー」が使われることが多い。シーケンサーとは、コンベアーのライン制御や、ピッキング装置、組み立て装置、工作機械など機械装置を動かすための専用コンピュータである。使用する言語も、C言語やJavaのような順次処理ではなく、並列処理が記述できるシーケンス言語。
そして、一般論だが・・・C言語やJavaのプログラマーより、シーケンスプログラマーの方が単価が高い。周囲をみる限り、前者は2000円~3500円/時間、後者は5000円/時間である。ではなぜ、シーケンスプログラマーの方が高いのか?レアだから。たとえば、パソコンは誰でも買える。その気になれば、小学生でもJavaやC言語を学べるわけだ。ところが、シーケンサーは一般人には買えない。だから、業務以外、学びようがないのである。そのぶん、プログラマーはレアというわけだ。とはいえ、シーケンスプログラムの需要はかたい。特に、日本は工作機械をはじめ、生産設備では世界一。中国や韓国が追いつく気配もない。だから、シーケンスプログラマーも安泰なのである。
ところが・・・C言語はJavaにおされて、風前の灯火。一方、OSや、高速性が要求されるアプリ(3Dゲーム、シミュレータ等)では、C言語は欠かせない。つまり、C言語は需要は少ないが、テクノロジーの根幹にかかわる重要な言語なのである。さらに、C言語の進化版「C++」は、オブジェクト指向プログラミングを実現した非常に強力な言語だ。C言語の高速性を継承しながら、C言語よりずっと生産性が高い。しかも、完全なオブジェクト指向ではないので、多少のギミックも必要だ。だから、プログラマーのオタクゴコロをくすぐるのである(変態か?)。
とはいえ、いくら優れた言語でも、使い手が減れば、いずれ廃れる。究極のオブジェクト指向言語「Smalltalk」のように・・・これまで、仕様を読んで感動したのは「Smalltalk」だけだったのに。というわけで、C++が輝くのは・・・フェラーリーみたいな爆走型ハードウェアで、ギンギンに最適化されたプログラムを走らせるシステム・・・まぁ、アプリならシミュレータしかないでしょうね。
魔法のコンピュータとか・・・
by R.B