at the front―前線にて

最終回 今生きるプログラマーが、この仕事をあこがれのものにする

ご好評いただいた本連載も今回で最終回。いつもとは趣向とは変え、竹馬氏がこれまでのインタビューを振り返りながら、未来への展望を綴ります。

一皮むけば高度なコンピュータサイエンスが

今まではインタビュアーとして抑えた感じでやってきましたが、今回は自分のブログmizchi's blogの読者はご存じのような、いつもの感じで行きます。

この連載インタビュー企画の依頼を受けたときの個人的な狙いとして、技術評論社の名前を使って、いつもは会いづらい人に会いに行く口実を作ろう、ということを考えていました。その目的はほぼ達成できたので、関係者諸氏には、とても感謝しています。

……という個人的なテーマとは別に、僕自身が本連載を通して一貫して表明したい課題感があり、それは「高度なコンピュータサイエンス/プログラミングスキルの現場適用の難しさ」というものです。

僕自身、大学でコンピュータサイエンスを修めたわけではないので、このテーマを語るのに若干の申し訳なさがあるのですが、プログラマーとして経験を積むにつれてコンピュータサイエンスの基礎の必要性を痛感するようになりました。高度に抽象化されたフレームワークから入門する最近のプログラミング学習では、最初は気付きづらいものの、一皮むくとそれらが表出してきます。また、実務に関係ないほど無関係な低層、というわけでもありません。バグ調査やその修正、パフォーマンスチューニングでは、それらによってプロダクトの成否に関わるほど重要なファクターになり得ます。

竹馬光太郎氏
竹馬光太郎氏

この連載に先立ち、僕が本誌で書いたテーマは「仮想DOM革命」注1というものでしたが、これは木構造の差分適用というアルゴリズムが、いかにUIUser Interfaceの更新を抽象し、それによってパフォーマンスと開発効率を両立させることができるか、という内容でした。Reactなどをビューのライブラリとして表面的に使うだけでも効果はありますが、アルゴリズムを学ぶことで、それらが提供するAPIの意味を真に学ぶことができる、というのが大事なことだと思っています。

仮想DOMDocument Object Model技術に限らず、この連載で取り上げた第1回の中川博貴氏の「WebWorkerのようなブラウザ技術⁠⁠、第4回の松本勇気氏の「ブロックチェーン技術⁠⁠、第5回の奥一穂氏の「HTTP/3周辺のネットワーク技術」は、いずれも高度なコンピュータサイエンスの知識が下敷きとなっています。最近ではAIArtificial Intelligence人工知能)技術がまさにそういうものでしょう。

人に伝える、圧倒的な技術で実装する

第2回の天野仁史氏は、筆者にとってプログラミングを勉強しはじめたときにIT戦記というブログを通してお世話になった人物で、彼とこのタイミングでお話できたのは、夢が1つかなったという気持ちです。天野氏には、技術者、そして経営者という立場を経て、いかにプログラマーがユーザーにとっての価値と向き合うようになったか、という話をしていだきました。

第3回の結城浩氏は『数学ガール』シリーズ[2]などの理数系の書籍の長年の執筆を通して、コンピュータサイエンスの本質につながる学習パスを提示してくださっています。また、執筆に必要なのは読者への愛、という一貫したスタンスを示していただきました。

松本勇気氏は、筆者と同世代の30歳で、DMMという大企業のCTOChief Technology Officer最高技術責任者)に就任し、技術と経営という立場から、技術者が何の期待に応えるべきか、結局のところ組織が必要とするものはいったい何か、という話をしていただきました。またブロックチェーンの社会適用の何が難しかったか、解決すべき点は何か、という点を示していただきました。

ここで大事なのは、いかに高度な技術もそれを必要とする人に説明しなければ、そして同時に中川氏や奥氏のように圧倒的な技術で現実的に信頼できる品質で実装できなければ、その技術は有用であると言えない、ということです。必要な技術を必要な人へ、適切な場所とタイミングで提示するためには、技術者が自分に求められているさまざまな期待を理解し、そしてその期待を超えていく必要があると思っています。

これはポジショントークであると自認したうえでの意見ですが、僕はプログラマーという職業はあこがれの存在であってほしい、夢を持って目指す対象であってほしいと思います。自分はそう思ってこの業界に入りました。プログラマーがあこがれの対象であるために、プログラマーは社会の期待に応えなければならないし、同時に本質を追い求めないといけない、という2つの柱があると思っています。それには、松本氏の回で述べられたように、経営者と技術者の相互理解が必要で、また国や文明全体としてのITリテラシーというものがその実現の土台になるはずです。

理想的には、⁠全員がプログラマーであり、そして同時に何者か(本職)でもある」という状態が、社会にとっての理想だと思っています。今で言うと、全員が表計算のマクロを書いたり、繰り返し作業をスクリプトで自動化したり、Slackのbotを書いたり、データ分析ツールでSQLを実行したり、必要とあれば業務システムそのものを改善しながら、それぞれの業務に取り組む、といったイメージでしょうか。そのとき、プログラマーという職種は、各分野に溶けてなくなっているかもしれません。

……というのはあまりに理想論で頑張りすぎな感はあり、現実にはこれとは違うアプローチが主流で、⁠十分に発達した科学技術は、魔法と見分けが付かない」⁠アーサー・C・クラーク、Arthur Charles Clarke)のを受け入れて、技術が十分に発達するまで頑張る、それまでは運用でカバーする、というものです。コンピュータやAI技術が進化して人間と見分けが付かなくなれば、そのとき人間が必要とするのは、⁠よく練られた直感的なメタファ」になります。SiriやAlexaによる音声による対話インタフェースなどはこの路線ですね。今はディープラーニングがそこにたどり着けるかどうか、という時代です。

また、スマートフォンの流行で判明したように、卑近なデバイスのインタフェースが思考を規定するというのが、天野氏とのインタビューで焦点になりました。仮にARAugmented Reality拡張現実)グラスなどで拡張現実が主流になれば、また違う世界が訪れるでしょう。

何にせよ、人間の使うプログラミング技術とコンピュータの知性が歩み寄って「溶けた」時代では、人間の知性や倫理と言ったものの再定義が必要になるのではないでしょうか。

中川博貴氏(第1回)
中川博貴氏(第1回)
天野仁史氏(第2回)
天野仁史氏(第2回)

技術は消えても思想は継承される

というわけで、最近熱くなりつつあるプログラミング教育というジャンルを応援したいのですが、その性質的にさまざまな産業界側の需要と、数理的なアルゴリズムに基づく本質の両立に苦心する分野だともわかっていて、なかなか難しいとも思っています。プログラマーへの教材や教育工学の未発達や、プログラミング自体の進化の速さもあります。

個人的な意見としては、単に「ハッカー」を増やしたいだけなら、小中学生全員にRaspberry Pi[3]を配って、初歩的なUNIXコマンドを教えて、あとはその中から素養がある人間が伸びるのを待つ、というマッチョな手法が有効なんじゃないかと思っているんですが、それだけだと社会全体のスループットの改善にはなりません。

また、プログラミングスクールが仕事の多い高水準側なものを教えがち、といった批判もあったりします。自分は高水準から入ること自体は否定はしないんですが、その高水準なフレームワークを使った結果、何を学んだか、という点こそが大事だと思っています。フレームワークは死んでもその思想は継承され、次世代のものは必ずその経験が反映されているはずです。今のプログラミングスクール出身者はそこの掘り下げが浅い、という不満があります。

今使われている言語やライブラリは必ず廃れます。賞味期限に差があるだけです。それはある種しかたがないことで、歴史の大きな視点では、アラン・チューリングが亡くなってから100年も経っておらず、1990年代のインターネットの商業利用開始から、たった30年しか経っていません。要は人類の歴史が足りていません。ビル・ゲイツ(Bill Gates⁠⁠、スティーブ・ウォズニアック(Steve Wozniak⁠⁠、アラン・ケイ(Alan Kay⁠⁠、ドナルド・クヌース(Donald Knuth)といった、すでに生ける伝説となっていて、そして語り継がれていくであろう方々も存命な時代です。

コンピュータと人間、その複雑性を整理するまでに、あと100年あっても足りないと思っています。それまでは発散と集約を繰り返し、その都度新しい概念、言語、ライブラリが生まれては消えていくことでしょう。今の時代にプログラマーになるということは、その変化を受け入れる覚悟をすることだと思います。プログラマー界隈ではよく言われるように、⁠その場にとどまるためには、全力で走り続けなければならない」⁠鏡の国のアリス⁠⁠、ルイス・キャロル(Lewis Carroll⁠⁠)というわけです。ある意味では、こんな刺激的な時代はないとも思っています。

とはいえ、天野氏や結城氏が言うように「流行りの技術は変わっても、その本質はなかなか変わらない」ということだと思いますし、中川氏や奥氏のような凄腕のプログラマーから学べるのは、⁠コンピュータサイエンスは一日にしてならず」ということだと思っています。

結城浩氏(第3回⁠⁠     松本勇気氏(第4回⁠⁠     奥一穂氏(第5回)
結城浩氏(第3回)松本勇気氏(第4回)奥一穂氏(第5回)

基礎技術がなく、人材も活用されない日本

ここまでの「高度なコンピュータサイエンス/プログラミングスキルの現場適用の難しさ」という課題感を表明する理由なのですが、日本はコンピュータサイエンスの先進的な技術を、実務に転用しづらい環境があると思っています。それにはさまざまな理由があるのですが、主に受け入れ体制の不備で、結果として社会の全体の平均的なITリテラシの低さによって技術による社会の進歩が律速りっそく となってしまっている、という感覚があります。

ちょっと話がずれますが、筆者はSF小説が好きで、最近は中国の作家が話題になることが増えました。⁠あなたの人生の物語』注4で知られるテッド・チャン(Ted Chiang)のような中国系アメリカ人の作品はもともと話題になることが多かったのですが、ほかにもケン・リュウ(Ken Liu)『紙の動物園』注5⁠、劉慈欣の『三体』注6といった作家に共通しているのは、⁠テクノロジ賛美」⁠人間賛美」⁠未来を切り開く意思」といった要素だと思います。

これは1970年代の日本の高度成長期のSF、特に小松左京氏の作品と似た雰囲気を感じます。プログラマーとしてはやはりテクノロジが肯定されるとうれしいわけで、ともあれ、あけっぴろげに言うと好景気だとテクノロジの恩恵が大きい、というやつなんですけどね。

翻って、日本は平成不況の「負け癖」から、ITやテクノロジの進化は相対的に遅れてしまうもの、うまくいっていた伝統を破壊するもの、といった負のイメージが先行してしまっているというのが、見渡した際の個人的な印象です。平成不況 と同時期に全世界的にITの社会適用が進んだので、財布の紐が固くなった時期ゆえに、ほかの先進国と比べてITへの投資が控えめだった事情もあるでしょう。結果として、情報工学の基礎分野が遅れ、産業進出が遅れ、またその周辺の技術者の立場が向上しない、という状況があるのではないでしょうか。

それらの問題は、部分的には時間と外圧が解決してくれました。Apple、Google、Microsoft、Amazonといったテクノロジ企業が国内から生まれない危機感によって、多少風向きが変わってきた、という気配を感じています。とはいえ、日本の全体的なIT音痴っぷりは、本誌の読者やプログラマーのみなさんには周知のとおりです。

そのような出遅れも相まって、残念ながら、日本のITは今使われているWeb、クラウド、AIなどの分野で、その基礎技術を握ってはいません。⁠良いプログラムはたいていサンフランシスコから来る」です。少なくともWeb技術に関してはそうです。最近は中国も勢いがあり、独自の進化を遂げています。

基盤を握っていない結果、基礎技術を使う産業が弱く、使われないから要求されない、鶏と卵の関係があります。大学で専門的にコンピュータサイエンスを学んだ人材がそれを活かす場所がない、という状況が長く続いていました。

最近になってようやく、ディープラーニングやブロックチェーンはコンピュータサイエンスの教養を要求されるテーマで、特にAI技術の流行はそのような人たちが報われる場所ができて、それ自体は良かったという気持ちがあるのですが、ただAIといってもコンピュータサイエンス全体から見ると一部であって、そしてそのAIも実体以上に膨れ上がっている、バブリーな雰囲気はあります。

コードを書く、そしてコードを書く

僕は新しい技術が好きなので、GitHubの獲得スター数ランキングであるTrending Repositoriesをよく眺めているのですが、ここで日本発/日本人作者のOSSOpen Source Softwareを見るのはまれです。たいてい英語と、最近は数割が中国語です。

もちろんGitHubがプログラミングの世界のすべてではありませんが、ある種の縮図ではあります。それに対して危機感を持っている人がどれだけいるでしょうか。自分がそれに対して有意義な解を示せている、という実感も恥ずかしながら正直弱いのですが、それは業界全体で持つべき課題感だと思っています。

結局、プログラマー個々人でできることは、とても単純なことの繰り返しだとも思っています。それすなわち、コードを書く。わからない点を分解する。勉強する。改善する。意見を表明する。批判に耳を傾けて調整を繰り返す。議論をする。そしてコードを書く。それぞれが小さく行うものだとしても、そのすべてが歴史の糧となって、人類を次のステージに進めるための原動力になると思っています。

これらをもって、この連載の締めとさせていただきます。1年近くありがとうございました。それではまた会う日まで。

WEB+DB PRESS

本誌最新号をチェック!
WEB+DB PRESS Vol.130

2022年8月24日発売
B5判/168ページ
定価1,628円
(本体1,480円+税10%)
ISBN978-4-297-13000-8

  • 特集1
    イミュータブルデータモデルで始める
    実践データモデリング

    業務の複雑さをシンプルに表現!
  • 特集2
    いまはじめるFlutter
    iOS/Android両対応アプリを開発してみよう
  • 特集3
    作って学ぶWeb3
    ブロックチェーン、スマートコントラクト、NFT

おすすめ記事

記事・ニュース一覧