プログラミング言語の”パワー”というのが意味をなさなくなり私はPythonを使い始める

Hiroki Kaneko
Dec 24, 2023

--

Photo by Hitesh Choudhary on Unsplash

先日、HackerNewsでこの記事が話題になっていた。

私のキャリアに「Rubyプログラマー」だった時代はない。ただ、前世紀の末頃から今世紀のはじめにかけて、個人的に簡単な文字列処理などを実現するためにRubyを使っていた時代があった。そのきっかけというのが、前世紀末ころに読んだ雑誌(ソフトバンクの「Cマガジン」だったか)でスクリプト言語特集というものがあり、PerlやTcl/Tkや、当時はゲーム用途になるなどとは夢にも思わなかったLuaなどと共にRubyが紹介されて興味を持ったのだった。
それから私は本屋へ行き、確か日本で2番目(=世界で2番目?)に発売されたRubyの本である「Rubyプログラミング入門」を買い求め、それから自分の第一(プログラミング)言語のように使っていた。おかしな順番だが、Perlを覚えたのはその後だった。Perlは当時アルバイトしていた会社で既存のコードがPerlで書かれていたために、渋々覚えて使っていた。Webでダイナミックな処理をするにはPerlでCGIスクリプトを書くのが常識だったのだ。

それから私はめでたくJavaジョッキーになり、死んでも使いたくないと思っていたWindows(当時私はApple信者だったので。今は単なるユーザー)を日銭を稼ぐために使い、数人の同時接続数で数十KBのデータを参照するだけのために、やれサーブレットだStrutsだデータコネクションがどうとか、DBがどうとか、そんな大げさなことをしなければならない理由などあるのか?と思っていたが、そのような発言は「天に唾する」ことであり、無知無学な私が知らないなにか特別な理由があり、それを私が知らないだけだと思っていた。

その後、ポール・グレアムによるエッセイ「ハッカーと画家」が日本語に翻訳され、「Javaが好きなハッカーなどいない(設計者のジェームズ・ゴスリンを除いて)」だとか、スクリプト言語の生産性の高さ、そしてプログラミング言語の「パワー(表現力)」の著者によるランキングを見ると、1位がLispなら、Rubyは次点くらいであり、Python、Perlはその下だったことなどを読んで「我が意を得たり」と勝手に感じていた。

それからというもの、私はすぐに会社を辞め、当時まだバージョン1.0にも達していなかったRuby on Railsを積極的に活用する先進的な会社に転職し、アジャイル開発のベストプラクティスを実践したわけではなかった

私はエッセイを読んでも、それは何か別の世界の天才たちの出来事であり、私にはいくら背伸びをしても手が届かないものだと感じたため、私はその後もずっとJavaジョッキーだったし、RDBのテーブル正規化は第5正規形まであるのだ!不勉強な奴め、これだから下請けの下請けの下請けがよこした人材に碌な奴はいないんだ。お前らは「雇用の受け皿」として我々元請けSIer様のトリクルダウンのおこぼれに与っていればいいのだ、と偉そうな主任エンジニア様に言われたりしていた(のですぐにその現場を辞めた)。

今ならこう思う:うるせえ、ハダカデバネズミみてえなツラしたドチビが。

リレーショナルデータベースの何が偉いんだ?Excelの表と同じじゃないか。表同士のリレーション?いらねえよ。JSONで階層構造を表現できれば十分なユースケースが全体の99%だろ?

私は自分の直感が、いわゆる「ソフトウェア・エンジニアリングの常識」とかけ離れているため、それは私の知識不足から来る誤解だとばかり思っており、そして自己肯定感への低さから間違っているのは自分の方だとばかり感じていた。そこに「ハーバード大卒で黎明期のEコマースサイトをYahoo!に売却して今はエンジェル投資家」という「キラキラした」キャリアをお持ちの「頭が良さそうな」著者が「ソフトウェア・エンジニアリングなんかクソだ。コーディングはデッサンに近いんだ。書いては消し…を繰り返していくうちに像がはっきりしてくるのだ」と言われたら、私などは感激してすぐにその人の信者になってしまう。

そういった次第で私はRDBもSQLも大嫌いだが、そのアレルギーを多少なりとも軽減してくれたのが、Ruby on RailsのActiveRecordだった。これでRoR設計者のDHHのファンにならない奴はいない(ハダカデバネズミを除く)。 いや、最近モータースポーツにハマっている彼はどうでもよくて、彼が作ったものにこそ興味があるのだ。

それからの私はというと、これの何が偉いんだか全く理解できないHibernateだのといったO/Rマッパー(ActiveRecordを除く)だの、業務でRDBのマイグレーションをするためのツールを作成した時に、少しだけ「Rails Way」式のDB構造にしてみたりした。

そうこうしているうちに、時代は一枚岩のWebアプリケーションから、個々の関数の結果として1つのサービスを構成する、マイクロサービスの時代になってしまった。これはRailsが落ちぶれたのではなく、Railsなどの「フルスタック」な重厚長大一枚岩Webアプリケーションフレームワークの活躍する場所が相対的に少なくなってしまったことを意味する。
私は自分のキャリアでなくても、いつか使う日が来るのではないか…と、Rails5あたりまでは中身をキャッチアップしていたが、それももう止めた。結局、自分から求めなければ私は単なるJavaジョッキーであり、そのキャリアを見て仕事を探す営業担当者なら「この人にはJava案件が良いのだな」と思うのは当然だからだ。他人には、自分の考えを伝えなければ自分の頭の中など相手が覗けるはずもないのだ。

更に時代が流れ、私はもういい加減テクノロジーの流行に一喜一憂することは、とても幼稚な行為である、と考えるに至り、そのような情報のキャッチアップも止めていた。人生にはもっと大切なことがあり、それを知らないまま死ぬのでは死んでも死にきれないからだ。

ポール・グレアム信者である私は、彼が設立したベンチャーキャピタルであるYコンビネータ出身のスタートアップ企業を贔屓にしており、その中の一つであるAirBnBに注目した結果、私は自宅でホストをすることになり、もう10年が経つ。この間に生涯の友も得たし、自分の視点も随分国際的になった。だからいい年して技術の話を頭の悪そうなネットミームを使って話すことができない、興味はコンピューターと女児向けアニメだけ、という奴らを汚いものをみるような目で見てしまう。

Pythonについて書こうと思ったのに、ここまでPythonの話題は一切出てこなかった。それもその筈で、私はこれまでPythonには触れてこなかったからだ。

ところが時代の流れにより、バックエンドのビジネスロジックをGCP Cloud FunctionsなどのFaaSで書こうとする時、言語を何にするか、というのでJavaScriptはあまりにもパワーがないため避けたい、となった時、次の候補はPythonだからだ。これにはいくつかの消極的な理由がある:

  1. 言語の持つパワーに関して、PythonはJavaScriptよりもパワーがある
  2. Rubyも選択できるが、ユーザーが少ないため、困った時にネットを検索しても解決策が見つからない場合がありそうだ

これだけだ。この流れを決定づけたのが、この1年の、LLMを元にしたAIアシスタントサービスの隆盛だった。
ChatGPTはPythonインタプリタを内蔵しており、ユーザーに答えを示す前に自分で動くかどうか、結果が何か調べてから答えを出す。これはユーザーが求めるものである可能性が高い。一方、他の言語はインタプリタを持っておらず、ネットからかき集めた知識からしか答えられない。

「問題が起きたら自分で解決しよう」などと思えず、問題が起きたら「もうだめだ。私にわかるわけがないんだ」と思いがちな自己肯定感の低い私は、このようなAIアシスタントサービスは僥倖であり、使わない手はないと思っている。

そのような次第で、私はRubyが好きではあるが、JavaScriptほど醜くもない、まさに平凡な — —20年前その言葉はJavaに捧げられていたのだが — —言語を選択する平凡な自分だった。それが、未だにRubyが好きであると宣言するあの記事の作者に対して私が思ったことだった。

ワクワクしない、というのは私にとって、とてもモチベーションを失うことなのだけど。

Ruby推しをずっとしていた筈の、ネット上で気を吐いているあの社長の会社(ソニックガーデン)が今、どの事業をしていると思います?サイボウズのkintoneですよ。あのリレーションも張れない、オートインクリメント型もないDBモドキを、あの社長はどんな気持ちで見ているのだろうか?

そしてこれだ。もし私がJetBrainsを好きだと発言するなら、見る人が見れば私が単なるJavaジョッキーであると見透かされてしまうのだけど、AIアシスタントが不親切なエラーメッセージの原因を答えてくれるならこれ以上の作業効率化はなく、かつてポール・グレアムが「言語の持つパワーこそスタートアップ企業の差別化になる」と言っていたのが、今度は何になるのだろうか?皆がAIアシスタントを使ったら差別化などできない。

20年前に私がEclipseで感じたコード補完の衝撃は、その後、JetBrains IntelliJがもっとうまくやっていた。とはいえそれは「コード補完」という意味では全く同じことであり、直近の20年間はそのような時代だったと思う。
次の20年がAIアシスタントの回答精度こそが作業効率を決定づけるのだとしたら?もう「言語の持つパワー」などどうでもいいのだ。コードを読むのも書くのも、人間ではないのだから。

それが即「プログラマーは明日から失業する」と思っているなら大間違いだ。AIアシスタントに答えてほしい内容を最初に頭の中で想像して、それをうまくプロンプトで言語化できるのは知識を持った人間だけだからだ。

--

--

Hiroki Kaneko
Hiroki Kaneko

Written by Hiroki Kaneko

自営業のソフトウェア技術者。Airbnb TOP5%ホスト。サイクリングと旅行が趣味。

No responses yet