コラム30.  :C言語職人プログラマー

職人の国「日本」

日本はよく、「もの作りの国」、もしくは「職人の国」と言われています。金属加工や機械工学、木工など様々な分野に多くの実力のある職人がおり、世界的にも認知されています。

日本の技術力は、こういった職人たちによって支えられていることは言うまでもありませんが、実は同じことがプログラミングの世界でも言えるのです。つまり、プログラミングの世界でも、日本は「職人の国」だと言えるでしょう。

日本には、優れた腕前をもった職人プログラマーが多数おり、そういった人たちが優れたソフトウェアやサービス、製品などを生み出してきたことは言うまでもありません。しかし、それは同時に日本という国のIT技術が抱えているある「深刻な」問題を反映しているともいえるのです。

プログラミングの職人の「条件」

その深刻な「問題」とは何か?ということについてのベル前に、そもそもプログラミングの「職人」とはどういう人のことを言うのか?ということについて考えてみましょう。

一般に日本の職人は「限られて条件やきびしい条件のなかで、最大限の結果を出す」という人が優れた職人だという認識があります。たとえば優れた仏師は一本の丸太から素晴らしい仏像を作り、金型職人は簡単な道具で機械での加工が不可能とされる超絶技巧の金型を作ることができるといったようなことが、「優れた職人」の定義だと言われています。

それはプログラミングに関しても同様で、「限られたメモリ」は、「処理速度の遅いCPU」などといった制限のある道具を使って、いかに効率的に動くプログラム・ソフトウェアを開発できるか…といったことが優秀な職人プログラマーの条件となるでしょう。そういった環境では、アセンブラ及び、アセンブラに近いコードを吐きだせるC言語は非常に有効で、そのため日本にはC言語の職人プログラマーが非常に多く存在しています。

80年代は日本ITの黄金期

そういったこともあり、日本のITは80年代に黄金期を迎えます。当時のコンピュータは8ビットおよび16ビットが主流で、現在のコンピュータに比べて性能はお粗末なものでした。

そのため日本のプログラマーの「超絶技巧」が本領を発揮する時代でした。特にその実力が発揮されたのがゲームの世界で、さほど性能の良くないアーケードゲーム機や家庭用のゲーム専用機のためのゲームプログラマーは、限られたメモリ、遅いCPUといういわば「劣悪」な環境でのプログラミングに長けており、日本から任天堂をはじめとする世界的なゲームメーカーが生まれる原動力となりました。

また、当時は日本のエレクトロニクス産業の全盛期であると同時に「マイコン」と呼ばれたコンピュータが家電製品に採用され始めた時代でもありました。そういったこともあり、世界を席巻した家電製品と共に、日本のIT技術も世界のトップクラスに躍り出ることができました。

長所が短所に転じる

実は、こういった日本の「職人技」が、90年代に入ってから徐々に日本の「弱み」に転じていくのです。日本の技術は「道具が使いづらいのなら、訓練と努力でその道具を使いこなすまでに実力をつける」という発想です。

しかし、一般に日本以外の国、特にアメリカを中心とする欧米諸国の発想は、「道具がつかいづらいのなら、より使いやすい道具を作る」という発想をするのです。そのため、C言語が使いづらいのなら、その弱点を補うためにC++言語、Java、C#言語…といった新しい言語を開発し、CUIのOSが使いづらいのなら、MacOSやWindowsなどのGUIとマウスで操作できるOSを作り、CPUが遅いのなら、よりスピードの速いCPUを開発する、という発想をするわけです。

すると、相変わらず限られた条件のなかで最大限のパフォーマンスを出すことに労力を費やしている職人たちは、気が付けば自分の超絶技巧で実現していた技術が、素人でも最新の道具を使えば簡単に実現できるようになっているわけです。

職人は時代の変化についていけない?

通常、大工などの職人は、熟練の世界で年齢が高くなるとその技術が円熟する世界だと言われています。しかし、IT、とくにプログラミングの世界には「35歳定年説」という言葉があるように、熟練とは無縁の世界だと言われています。

そういったことがおこるのは、おそらくこの業界の技術が急速な変化を遂げている分野だからといえるでしょう。つまり、極論するともしかしたらIT業界は円熟とは無縁の世界…なのかもしれません。そのため、90年代以降日本が世界的なIT技術の発展に取り残されてしまったのはある意味必然なのかもしれません。

本当に職人は不必要なの?

では、本当に「職人」は不必要なのでしょうか?結論から言うと決してそんなことをありません。一例をあげると、現在世界で最も古いプログラミング言語の一つであるCOBOLのプログラマーが不足しており、わざわざ新人を教育し、COBOL言語を教えている企業すらあるくらいです。

COBOLプログラマーが不足する背景には、官公庁や金融機関などで使われている基幹システムであるメーンフレームコンピュータというのは、長らく使われていることもありそう簡単に新しいものにシステムを置き換えることができないことから、古いシステムを延々と使い続けなくてはならない、という問題があるからです。

そのため、熟練したCOBOLプログラマーが高齢化し、一線から退いてくることにより人材が不足してくると、こういったシステムをメンテナンスする技術者がいなくなってしまいます。そういったこともあり、今後はCOBOLに限らず古いシステムのメンテナンスや改良を行える技術者はますます不足してしまうでしょう。特にC言語に関しては、過去に作られれたシステムの蓄積が膨大にあるためにそう簡単になくなることは考えづらいため、COBOLと同じようなことが起こる可能性が高いと言えます。

こういった古い技術を新人に一から教育し、一人前になるまで育成するのと、熟練した技術者に長く働いてもらうのであるのでは、どちらのほうが効率が良いか?ということを考えると、当然ながら断然後者のほうが良いということになります。そういった時代にこそ、再び職人プログラマーの実力が発揮されるようになることでしょう。