BeneDict 地球歴史館

BeneDict 地球歴史館
menu

週刊スモールトーク (第258話) ソフト業界の謎~消えたC言語プログラマー~

カテゴリ : 科学

2014.06.28

ソフト業界の謎~消えたC言語プログラマー~

■翁プログラマー

最近、怖い思いをした。トンネルで幽霊を見たとか、散歩中に宇宙人に追いかけられたとかではなく。 順を追って話そう。 会社で新しい事業を立ちあげたので、プログラマーを3名補充することにした。専用ハードを使うので(パソコンではなく)、条件は「C言語の経験者」。 プロジェクトリーダーがまだ27歳なので、本当は、年齢制限をかけたかったのだが、 20代のなんちゃってプログラマーと、40代のエキスパートのどっちがいい?

もちろん後者!

ということで、年齢制限をはずすことにした。 ところが ・・・ 派遣会社から紹介されたプログラマーは「57歳」だった。 白髪頭で、老眼鏡を半分ズリおろした翁プログラマーを想像し、腰が抜けそうになった。何かの間違いだろうと思い、派遣会社に確認したところ、「57歳」に間違いないという。 57歳の現役プログラマー?

SE(システムエンジニア)ならまだしも ・・・ プログラマー35歳定年説はどこへ行ったのだ? こっちの仰天具合が伝わったのか、派遣会社の営業マンが飛んできた。そこで、彼がクドクド説明するには ・・・

「意図的に、御社に年寄りを回しているのではありません(年寄りとは失礼やろ)。若手のC言語プログラマーそのものがいないんです」

へぇー、じゃあ、聞くけど、若手のプログラマは何が書けるの?

Java ・・・ らしい。 昔と違って、家でもオフィスでも、孤立したパソコン(「スタンドアローン」という)は見かけなくなった。パソコンをネットワークにつないで、サーバーで処理するのがトレンドだ。 具体的には、2つの方法がある。

【クラサバ】:パソコンを「LAN」につないで、ローカルサーバーで処理する。

【クラウド】:パソコンを「インターネット」につないで、グローバルサーバーで処理する。 いずれも、入出力処理はパソコン、メイン処理はサーバーというすみわけだ。つまり、目の前のパソコンは、キー&マウス入力と画面表示にしか使わない。

では、クラサバとクラウドで何が違うのか? クラサバは、「LAN(ローカル・エリア・ネットワーク)」なので、事務所や会社など地域限定。つまり、サーバーも地域限定になる。一方、クラウドは広大なインターネット上のサーバーを使用できる。 ただ、「クラウド」にも、地域限定の「プライベートクラウド」がある。クラウドの仕組みを「LAN」で使うわけだ。

「プライベートクラウド」は、エリアが限定されるぶん、パーフォーマンスを上げやすいし、セキュリティも確保しやすい。今後、クラウドは「グローバルクラウド」と「プライベートクラウド」のすみわけが重要になるだろう。 とはいえ、コンピューティングの本流は「クラウド」。パソコンであれ、タブレット端末であれ、何をするにも、処理するのはサーバーだ。ところが、すべて仮想化されているので、処理しているサーバーがどこにあるのか誰にもわからない。雲をつかむような話だ。

というわけで「クラウド(雲)」とよばれている。 それを加速するのが、今流行のモノのインターネット「IoT(Internet of Things)」。パソコン、スマホ、時計、家電製品、はたまた植木鉢までインターネットにつなごうというのだ。 みんなつながれば、効率的だから ・・・ 「効率」大好きの人類の考えそうなことだが、どんな危険があるか、きちんと考えたほうがいい。 地球上のすべてがつながったとして ・・・ 新手の人工知能がウィルスをばらまいたらどうするのだ?すべてが一瞬に破壊される。

それを警告したのが、映画・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

関連情報