#22 オレはソフトウェアに絶望している
2023年10月版の自分の絶望の表明。
前にPiroさんのOSSに対する投稿を読んで気づいたことがある。
あぁ、僕はソフトウェアに絶望していたのか、と。
アメリカンドリームの時代はすっかり終わって、元々金を持ってるプレイヤーが利益を総取りする時代に回帰してしまっていた。
よく知られているように、資本主義社会においては放っておくと格差は広がっていく。資本が資本を増殖させる性質がある以上、最初から資本を持っている人が有利だとか、様々な理由で格差は広がる。
とはいえ、それでもソフトウェアの世界はまだマシだと僕は思っていた。だからのめり込んだ。だけど、もうそうでもなくなってきているように感じている。
今日は自分のソフトウェア技術の現状の見方、そして展望、そしてこの展望がなぜ僕の「絶望」なのかを書きたい。
過去のソフトウェアを取り巻く環境についての所感
いまのソフトウェアの世界が僕にとって「絶望」という表現で見えるのとは違い、僕がプログラミングを始めたたった10年前は違う様子だった。誰もが資本を持っていない状態で比較的平等に競争に参入することができた。
金が少しでも稼げるのは一握りだけど、それはどんな世界でも一緒だからあまり気にならなかった。
そしてソフトウェアだけじゃなく、計算資源においてもそうだった。初期のFacebookやInstagramは部屋においてあるサーバーで動いていたし、それでよかった。Instagramが始まったのは2010年だが、そんな時代でもそういうものだった。
でもいつしか、そんな時代は変わっていった。
技術の停滞を感じる
プログラミング言語やフレームワークはいまもOSSのものを使うのが主流で、利用をするのに誰かにお金を払う必要はない。
しかし、もはや名も知らぬ個人が作ればよいというものでもなくなっている、というのが肌感だ。誰かが新しいものを作り、それが大きなトレンドを作るという流れはすっかり息を潜めている。
そもそも、技術もかなり固定化した。かつては出てきては滅ぶという印象だったフロントエンドのライブラリもReact(Next.js)とVue.js(Nuxt.js)くらいで相場が決まっていて、これ以外のライブラリを使いたいという意見を見ることはかなり減った(ないわけではないが)。
僕が仕事で使っているPythonというプログラミング言語だと、Webフレームワークはほとんど固定化されており、新しいものが出てくる空気でもない。
言語機能として比較的新しい静的型検査をするツールも、気がつけばコミュニティが作っているmypyを除けばBig Tech(Google、Microsoft、Meta)しかツールを作っていない。
自分の感度が鈍った可能性は高いので、断言するつもりはないがソフトウェア技術の進歩が停滞しているように感じている。
個人的に最近面白いなと思ったのはCDNのEdgeでJSを動作させたりSQLiteが動いたりといった技術だが、これもベンダー依存の技術だ。
クラウドサービスありきの世界
しかも、現実にはたとえばSaaS事業を作ろうとすればAWSやAzureといったクラウドサービスの力を借りずして開発をすることは不可能になっている(DHHのような逆張りをしている人は除く)。
あくまでプロのソフトウェアエンジニアになろうとすればだが、OSSを使っているだけではもう仕事にならないのだ。
AWSで言えばS3だの、ECSだの、Lambdaだの全くもってオープンではない有料の計算資源と密結合になったサービスを使うことになるし、それを避ける方法は事実上存在しない。1そのようなサービスを使ったことがない限り採用しないという判断をしている会社さえある。
なお、筆者の所属企業でもそうである。
富が富を産む世界を目指して
なぜこうなるのか。僕の見立てでは資本主義のシステムがそうさせている。資本主義社会において資本は自己増殖をするものだから、Big Techは資本が資本を産むようなビジネスを実現しようと躍起になり、そのために手に入れたのがクラウドサービスである。
クラウドサービスとはなにかを少し説明する。まず、ソフトウェアを活用したビジネスが成功を重ね、富を蓄積していくにつれ、金銭でない資本も手に入る。それは例えば、ソフトウェア開発やアーキテクチャのノウハウ、プロダクト開発や運用のノウハウといったものだ。
それらがクラウドサービスのような形で提供され始めた。それがAWSやAzureのようなパブリッククラウドと呼ばれているものだ。
このパブリッククラウドは、初期の資本主義社会における工場のようなものだ。ソフトウェアを作るための工場であり、ソフトウェアを運用・提供するための工場、それがパブリッククラウドだ。
AWSやAzureを提供しているAmazonやMicrosoftは、その工場をメンテナンスし洗練させ続けることで、多くの人にその工場を使ってもらうことで利益を得ている。それは初期の産業革命の時期に、工場に人を集めて布を大量に生産していたのと似ている。
ソフトウェアエンジニアをひたすらに飲み込み、ソフトウェアが提供され続ける向上、それがクラウドサービスだ。
AIという名の機械の登場
さてここから先は妄想も入るが、これからの展望の話をしよう。もっと言うと、いまのGitHub Copilotとはなんなのかという話をしよう。
テクノロジーの発展と資本主義に基づいた合理性の追求を進めれば初期産業革命と同じことが、ソフトウェアの世界でも起きるはずだという仮説に基づいて考える。そしてクラウドサービスが工場であることを前項で見た。
次に起きることは、ソフトウェアエンジニアの人数を減らすことと、技術スキルを平準化することだ。なぜなら、ソフトウェアエンジニアの人件費は高いからである。
これを実現するために初期産業革命で起きたのは機械化だ。工場ができて、その工場に機械が導入され、女でも子どもでも安い人件費で働かせられるようになった。それと相似形のことがソフトウェアエンジニアに対しても起きるだろう。
このために、今年の話題のAIやLLMは使われると僕は踏んでいる。つまり、ソフトウェアエンジニアにとってLLMなどのコード生成技術はソフトウェア生産工程の機械化の第一歩として機能すると僕は見ている。
第一歩なのは、ソフトウェアは品質保証の単純作業化が難しいという性質があるので布のようにはいかないだろうと思っているからなのだが、第二歩、第三歩でその課題がある程度クリアされる可能性は存分にあると思う。
ひとことでここにまとめると、かつて資本家が工場と機械の導入によって職人を駆逐したように、今度はクラウドサービスとAIによってソフトウェアエンジニアはいつか駆逐されるだろうと思っている。
補足: SaaS
少しSaaSについても書く。ソフトウェア技術がBig Techなしでは進歩しなくなっているという話は上述した。
SaaSスタートアップも、Big Techに買収されて終わることが増えているように思う。例は枚挙にいとまがなく、Slackはフリーミアムモデルがとても機能してMicrosoftと戦えるまでの地位を得たのに、最終的には独立を維持できずSalesforceに買収された。同じように、FigmaはAdobeに買収された。
Big Techと競えるスタートアップを作るにはプロダクトひとつでは無理なのだと、創業時から複数のプロダクトを作るという戦略(コンパウンドスタートアップという)を立てて実行している人も中にはいる。
しかしコンパウンドスタートアップはそれはそれで非常に敷居が高く、創業者に実績がないと資金調達が難しくて普通はできない。結局それは富めるものしか戦えないゲームに参入しているのとあまり変わらない。
オレは絶望している
結論はもうタイトルに書いてある。オレは絶望している。ただそれだけだ。
別にこの状態が悪いとも思っていない。自分が労働者として日銭を稼いで食べていくにはこの状況を受け入れざるを得ない。諦めている。
僕にとってソフトウェア開発とは目的だ。手段と間違えているわけではない。
より良いソフトウェア開発をすることが、僕の人生の目的だ。より良いソフトウェア開発をするために、より良い人間であろうとし、より良いチームを作ろうとし、より良い組織を作ろうとし、より良い社会を作ろうという、僕の小さな小さな影響の原動力はすべてはここにある2。
なぜソフトウェア開発だったのか。それはただ、楽しかったからだ。そしてこのソフトウェア開発という営みは人類のこれまでの経験をすべて総動員してもなお難しいものであり、解きがいのある課題で溢れていると確信していたからだ。
しかし、その本当に難しくて価値のある課題を、資本主義のシステムに食い荒らされるのを見つめていると、ただただ哀しみと絶望で満ちていく。
どうしようもない。
📻What I Heard📻
The New York Times の看板 Podcast の The Daily で、Hamas に息子が誘拐された母親へのインタビューがあったので聞いた。
Hamas Took Her Son - The New York Times
うまく言い表せない気持ちだ。
僕には子ども、息子や娘がいない。結婚はしていないし、僕の知る限り隠し子もいない。だから、子どもが紛争に巻き込まれて生きているか死んでいるかもわからぬまま日々を過ごすというのが自分の想像を超えている。
老若男女の見境なくガザ地区に誘拐されました、という文字列では表しきれない気持ちが、彼女の口から語られている。
あと、関係ないけれども僕は子ども、未成年とかの小さい子、が別に好きではない。子どもに限らず、あまり個別の人格にフォーカスを当てて好きとか嫌いとか思ったりしない。だからたぶん姪とか甥とかができてもそんなに大事に思わない、気がする。
だけどそれはとは全く別に、どの国だろうがどの人種だろうが、子どもが傷つけられたり命を失ったりすると激しい憤りを覚える。自分でも不思議なのだが、個別の子どもには別に興味がないのに社会のなかにいる子どもを傷つける行いには激しい抗議の意識を持つ。いつも聞いている、ニュースコネクトというポッドキャスト番組の日曜版のコメンテーターの塩野さんが、子どもが傷つくようなことに大義なんてないと言っていて大きくうなづいた。
イスラエルとハマスの戦争でも、どちらの勢力も子どもへの被害が出ている。いつも言っているように始まった紛争をやめろと言うのは無責任だと思うが、子どもが死傷するような状況が長期化するのはあってはならないと思う。
終わりに
このところ、どうしようもない孤独を感じることがある。もっと孤独な人はたくさんいるだろうが、自分も少しそういう領域に少し入ってしまったかと思う。
苦ではないというと嘘になる。とはいえ、孤独を避けるという選択肢もまたない。人が何かをしようとすれば、どうしても孤独になる。
Elastic Leadership の中でこんな言葉が紹介されている。
"There are no Experts. There is only us."
専門家はいない。私たちしかいないんだ。
私たちしかいないし、そして私しかいない。そしてそれは悲観することではない。この世界は、大なり小なり常に、「私」と「私たち」が変えてきたのだし、それ以外に何かを変えられた人はいない。
今日、確かに僕は昨今のソフトウェアを取り巻く環境に絶望していると書いた。しかし、僕の人生の目的がまだより良いソフトウェア開発をすることなのは変わっていない。そして今日、僕はふつうに会社員としても生きている。
どんな課題でも、よりよいソフトウェア開発をするためならひとりの「私」として。専門家ではなくても「私たち」として、向き合っていきたい。
もしも僕に希望があるとすれば、僕の命は尽きていないことにあるし、僕はまだ「私たち」の一員で留まっている。
最後までお読みいただきありがとうございました。もしよければ、購読いただけると幸いです。
この指摘を僕はソフトウェアエンジニア1年生のときからしてきたが、誰も指摘しないどころか考えたことさえないので本当に驚く。
アジャイルサムライを読んだ時に、プロのソフトウェアエンジニアになると誓ったことを今も覚えている。


