
はてなキーワード:COBOLとは
経歴書を見て、ちょっと引いた。
GitHubのスター数が現実離れしてるし、技術ブログも見たことない分量。
使える技術は自分の三倍。React、Vue、Go、Rust……カタカナを追うだけで手一杯だった。
「また意識高い系か」
隣の田村が呟く。俺も同じことを考えてた。
古いコードを一目見て渋い顔をする。会議で「そろそろモダンな構成にしませんか」みたいな提案。
コードレビューは容赦なし。「ここ、コンポーネントに責任持たせ過ぎですね」「エラー処理、もっと丁寧に」「テストコード、当たり前に書きましょう」。
ひたすら正論。
うざかった。
俺たちがどうして汚いコードを書いてるか、この男には分からない。
毎日終電、土日は障害対応で呼び出されて、ただ“動くもの”を積み上げるしかないんだ。
俺たちが一週間かかる仕事を、三日で終わらせてくる。
正直、悔しかった。
前職を調べた。同僚が「有名Web系だったらしい」「やっぱり恵まれてるよな」と言う。
自分はSIer、古い文化に浸かりきった人間。あいつは最初から違った世界の住人。
最初から条件が違うのだから、そりゃ勝てるわけがない、そう思っていた。
「実は俺、文系です。完全未経験からSIerでCOBOLとJavaだけで食ってたんです。毎日終電、土日も当然出勤」
……俺たちと同じだ。いや、むしろスタートはもっと後ろだった。
それでも佐々木は毎朝5時に起きて、出社前2時間、帰ってからも1時間。
土日は技術書を読み倒し、何年でも続けた。
「4年やりました。最初の転職活動は100社受けて全滅。でも勉強して、2回目でやっとWeb系に引っかかりました」
7,000時間近く積み上げて、そこにいる。
俺はと言えば、「環境が悪い」「仕方ない」「時間がない」と言い訳して、家ではYouTubeとゲームだけ。
土日もゴロゴロして何も変えなかった。
才能でも環境でもない。ただ、努力したかどうか。それだけだった。
素直に屈辱を噛みしめ、うなずいた。
明日から一緒に朝活を始める。1時間だけでも、たぶんそれでいいんだと思う。
朝活は、正直きつかった。
寝不足のまま早朝の会議室に集まってコーヒーを流し込み、黙ってテーブルを挟む。もちろん最初は普通に勉強だ。
けれど、だんだんと慣れてくると、俺なりの意地も芽生えてきた。
「ああ、昨日この分野を調べてきたんだ」
「なるほど、そっちの技術ではこうやるのか」
ただ教わるばかりじゃ悔しいので、眠い頭で資料を漁って少しでも佐々木に食らいつく。
知識の差は大きい。でも、佐々木も意外と勝負事が好きらしい。「今日はどっちが新しいツールを導入できるか」みたいな余計なルールまで作り出し、コードレビューでお互いをねちねちいじり始める。
気がつけば、朝活は勉強会というより妙な競争の場になっていた。
「あ、そっちの書き方の方が効率いいな」
「また変なイースターエッグ仕込んでる」
仕事でも張り合うようになった。
些細な設計やリファクタリングの方針ひとつで、絶対譲れなくて熱くなった。むきになって議論する。
他のメンバーには「仲悪いのか」と言われたけど、本人たちは別に悪い気がしない。不思議な高揚感。
次第に会社での評価も上がっていた。成果が出ると、お互いに無言でアイコンタクト。
なんとなく、ライバルってやつになっていた。
飲みに誘ったり、逆に誘われたりすることも増えた。くだらない愚痴をこぼし合い、バグの話で夜中まで笑った。
仕事が終わった金曜に、そのまま繁華街で朝まで過ごすこともあった。
ある日、こんな風に、飲みに誘われた。
静かな居酒屋、少しアルコールが入る。気づけば昔話になり、くだらない話、恥ずかしい話、お互いの情けなさをさらし合う夜。
気付いたら閉店まで二人だけ、なぜか離れがたくて、一緒に深夜の街をふらふら歩いた。
妙な感情が残った。
帰り道、不意に言葉がこぼれる。
「なんかさ、お前といるとずいぶん楽なんだよ」
「……わかる。俺もそう」
見ればわかるくらい、距離が近づいた。
休日に技術イベントがあれば二人で出かけ、休日の帰り道は自転車を並べて走った。
日曜の朝、駅前の喫茶店で合流して、黙ってノート開いて並んでいる時間が、いつの間にかすごく安心するようになった。
仕事も私生活も地続きで、ただ一緒にいることが普通になっていく。
もしかすると、お互い惹かれたのかもしれない。でもはっきり「好き」と言うのは、たぶん、もっと先になる気がする。
この歳で、こういう物語があるとは思っていなかった。でも悪くない。
淡々とした毎日のなかで、少しずつ少しずつ、何かが変わっていた。
物語なんて要らないと思っていたけど、何もない毎日のとなりに、こんなふうに誰かがいるのも、たぶん悪くない。
3ヶ月前、うちの開発チームに新しいエンジニアがやってきた。佐々木(仮名)、29歳。
経歴書を見た時点で、正直ビビった。
React、Vue、Next.js、TypeScript、Go、Rust、Docker、Kubernetes…もう何がなんだかわからない。
「また意識高い系が来たよ」
俺も同感だった。
レガシーなコードを見て「これはちょっと…」みたいな顔をする。
と提案してくる。
うぜぇ。
そんな中で何とか動くものを作ってるんだよ。
綺麗なコードなんて書いてる余裕ないんだよ。
3日で仕上げてくる。
悔しかった。
「やっぱりな。恵まれた環境にいたから、あんなことできるんだよ」
俺たちは佐々木を妬んでいた。
そう思っていた。
ところが先週、佐々木と飲みに行く機会があった。
新卒で入った会社は、まさに俺たちと同じようなSIer。Java とCOBOLでレガシーシステムの保守をやっていた。
でも、佐々木はそこで諦めなかった。
土日は技術書を読み漁り、
オンライン講座を受講し、
個人開発を続けた。
「平日は合計3時間、土日は10時間以上勉強してました。それを4年間続けました」
俺は計算した。
=6,880時間。
「最初の転職活動は100社受けて全部落ちました。でも諦めずに勉強を続けて、2回目の転職活動でようやく今のレベルの会社に入れました」
俺は恥ずかしくなった。
佐々木を「恵まれた環境にいたから」と妬んでいたが、実際は俺たちと同じ、いやそれ以下のスタートラインから、血のにじむような努力で這い上がってきた人だった。
俺は何をしていた?
「環境が悪い」
「時間がない」
そう言い訳して、
家に帰ったらゲームして、
努力の量だ。
「今からでも遅くないですよ」
と佐々木は言った。
恥ずかしかったけど、頷いた。
毎朝1時間でもいい。変わりたい。
29歳。まだ間に合うよな?
プログラマーって聞くと今の若い人は稼げる業種って思うかもしれない。でも昔は、そのイメージとはまるで真逆だったんだよ。
90年代初頭、日本はバブルの余韻が残ってたけど、IT業界なんてまだオタクの延長みたいに見られていた。NECのPC-9801シリーズがオフィスの定番で、OSはMS-DOS 3.3とか、その後にWindows 3.1が出ておお、マウスで操作できる!なんて騒がれていた時代だ。
もちろんインターネットなんて一般にはまだ普及してなかった。せいぜいパソコン通信。ニフティサーブ、PC-VAN、アスキーネット。回線速度は2400bps。ピーヒョロロっていうモデム音が夜中の住宅街に響いていた。
俺らはそういう環境でC言語やアセンブラを叩いてたんだ。コンパイルに時間がかかるから、トイレに行って戻ってきてもまだ終わってなかったりした。
今みたいにGitHubでコードを共有なんて夢のまた夢。ソースのやり取りはフロッピーディスクで手渡しだ。5インチのぺらぺらのやつな。運が悪いと磁気にやられて一発で飛ぶ。だから俺たちはよくフロッピー神社に参拝とか冗談言ってた。
正社員で手取り20万ちょっと。下請けやフリーランスだともっと安い。今でいうSESの走りみたいな人売りも普通にあった。客先常駐でCOBOLやらされてバグが出れば徹夜。オフィスに寝袋持ち込んで、カップヌードルと缶コーヒーの山を築く。徹夜明けに食う吉野家の牛丼が唯一のご褒美。今みたいにエンジニアは市場価値が高いなんて考え方はなかったからな。ただの駒だよ。
仕事は増えるのに単価は下がる。Windows 95の発売で世の中はインターネット元年なんて浮かれてたけど俺たちプログラマーの現実は泥臭いコード修正の山。Visual Basic 6.0やDelphiが出て「これで開発効率が上がるぞ」なんて言ってたが、結局は納期に追われるだけ。SunのJavaが登場したときも「Write once,run anywhere」なんて夢を見せてくれたけど、実際には動かないアプレットと格闘する日々。
Linuxが台頭してきたのもこの頃だ。
SlackwareやRed HatLinux 5.2をCD-ROM雑誌付録で手に入れて、夜な夜なインストールに挑戦。LILOがうまく動かなくて起動しない、ネットワークカードを認識しない、X Windowが真っ黒。そんな壁に何度もぶつかっては2ちゃんねる(当時はまだ草の根BBSが多かったが)やUNIX USER誌を読み漁って解決する。それが楽しくて仕方なかった。でも金にはならなかった。オープンソースに貢献しても無償の善意で済まされるだけ。Red HatやMySQL ABが上場するまでは、ただのボランティア活動と見なされてた。
今思うと、あの頃は純粋だった。
技術そのものが楽しくて、ASCIIやOh!Xを小脇に抱えて徹夜でコードを書いた。秋葉原でジャンクパーツを漁って自作PCを組み立ててベンチマークの数字で一喜一憂した。
飯代を削ってもSCSIのハードディスクに投資したし、月刊アスキーの付録CD-ROMに入ってたシェアウェアを片っ端から試した。儲けようなんて意識はなかった。ただ、面白いものを作りたかった。
それが今じゃITは完全に拝金主義。コードの美しさより投資家の顔色を見てる。エンジニアもどこが年収高いかばかりで、言語やフレームワークを選ぶ基準が金になっちまった。Pythonが流行るのもAIブームに便乗してのことだし、ブロックチェーンやNFTなんかバブルがはじける前提のネタ探しにしか見えなかった。
もちろん、技術が商業化されて豊かになった面もある。AWSやGCPのおかげで誰でも世界規模のサービスを立ち上げられるようになったし、GitHubやDockerで開発環境も夢みたいに便利になった。だがその一方で楽しいからやるという純粋さはどこへ行ったんだろう。GitHubの草がどれだけ生えてるかが採用基準になる時代。Qiitaに記事を投稿するのも、技術共有じゃなくて転職市場でのポイント稼ぎ。
あの頃には確かに、金ではなく面白さに突き動かされる熱があった。それが今は金の匂いに上書きされてしまったように感じる。
でも稼げなくても、やる価値があった。
今の若いエンジニアたちにその気持ちがどれだけ伝わるかは分からない。
当時「Hello, world.」と表示されるだけのプログラムに、30年前の俺は心を震わせていた。
LINEオープンチャット「はてなブックマーカー」の1週間分の要約を、さらにAIを使用し、試験的にまとめまています。
---
---
---
---
---
---
---
---
今週のオープンチャットは、死と資本主義、仕事・転職のリアル、健康リスクと医療体験といった社会的・個人的に重いテーマと、バイク・音楽・ゲーム・食文化といった趣味の話題がバランス良く交錯した一週間だった。
熊や法螺貝などユーモラスな話題もあり、深刻さと軽妙さが共存する空間となった。
全体を通じて、参加者は生活のリアルを分かち合いながら、ユーモアや文化を通じて救われていることが感じられた。
https://anond.hatelabo.jp/20240722084249
最近「テクノロジーで政治をかえる」だの、「デジタル民主主義」だのって、やたらと情報工学系のバズワードを振り回す新党がある。「チームみらい」だ。
正直なところ、俺みたいなお堅い開発やってる情報技術者からすると、最初は「またか」ってのが正直な感想だった。政治家が「IT」って言い出すと、ろくなことにならないってのが経験則だからな。
でもちょっと調べてみたら、「チームみらい」の言ってることには、確かに耳を傾ける価値のある部分と、背筋が凍るような懸念点が同居してるってのがわかってきた。
まず、彼らの主張と、俺がポジティブに受け取った点から見ていこうか。
彼らは日本の政治を「バグってる」と表現し、「行政サービスは相変わらず使いづらい」と現状認識は一致する。
「テクノロジーで、政治の透明化・効率化を実現する。それは今すぐできる。そしてあなたの生活を着実に改善できる」と謳ってる。目標としては「テクノロジーで透明化、効率化、スマート化」を目指すんだと。まぁ、これは誰でも言うよな、って感じだが。
「1議席を得て国政政党になったら、政党交付金で永田町にエンジニアチームをつくる」と明言してるのは驚いた。これが絵空事じゃないなら、これまで口先だけだった「IT化」「DX推進」とは一線を画す。
党首の安野たかひろ氏自身がAIエンジニア・起業家だというし、公認候補者の中にも複数の情報技術者がいるのは確認できた。「手と足を動かす実践型」を標榜してるってのも、従来の政治家とは違う姿勢だな。
「自ら開発した政治資金透明化ツール Polimoney にてすべて公開」してるってのは、実際に手を動かした証拠だ。これは評価できる。
「政策をAIと対話しながら深掘りし、意見や要望も簡単に送れる世界初のチャット機能も搭載」したマニフェスト や、「政治参加を"楽しく"可視化!ゲーミフィケーション導入のアクションボード」なんてのも作ってるらしい。これらは「デジタル民主主義」を単なるスローガンで終わらせないという意欲の表れだろう。
ここからが本題だ。彼らの主張を聞いて、俺の脳内には危険信号が点滅しまくってる。
何故なら「具体的な『(情報工学としての)マニフェスト』も『仕様書』も『実装計画』も決まってない」から。
彼らは「アジャイルに、現場で改善していく」って言いたいんだろうが、「基幹システム」と「Webサービス」を一緒にしてはいけない。
銀行の勘定系なんて、たった一行のコード変更でも何十ページもの影響分析とテスト計画が必要になるんだぜ?国民の税金や個人情報、社会保障に関わる行政システムは、国民全員の生活の基盤だ。それを「バグってるから現場で直す」なんて、詳細な設計書も持たずにメスを入れるようなものだ。そんなリスキーなことを許せるか?
「テクノロジーは、難しい技術のことじゃない。できなかったことを、できるようにする方法のことだ」、って言うが、その「できるようにする方法」をどう「堅牢に」「安全に」「持続可能に」実現するかが、情報工学の肝なんだよ。
彼らが作ったPolimoneyやAIチャットは、あくまでプロトタイプや限定的なツールだ。素晴らしいが、それは「小さなシステム」での成功例に過ぎない。全国民が利用する行政サービスを、あのレベルでアジャイルに改善し続けられるのか?アクセスが集中した時、障害が発生した時、どうする?
勘定系システムなら、トランザクション一つが飛んだら新聞沙汰だ。行政サービスもそれに近い重要性がある。「後から直す」では許されないレベルのシステムを彼らがどう扱うのか、その哲学が全く見えてこない。
日本中の行政システムは、半世紀以上かけて積み上げられたレガシーの塊だ。古いCOBOLやFortran、紙のワークフローがそこら中にある。永田町にエンジニアチームを作ったとして、彼らが直面するのは、壮絶な「負の遺産」との戦いだ。
「既存の枠組みにとらわれることなく活動していきます」というが、既存の枠組みに「縛られまくってる」のが日本の行政システムなんだ。これらをどう「解体」し、「再構築」していくのか。それには膨大な時間、予算、そして何よりも緻密な移行計画が必要不可欠だ。
「エンジニアチームが政治や社会の課題を次々解決」 ってのは聞こえはいいが、誰がその「課題」を定義し、どの「解決策」が正しいと判断するのか?エンジニアが政策立案まで牛耳るのか?
今現在としてマニフェスト(情報工学)や仕様書がないということは、「誰が、何を、どう作ったのか」という明確な責任の所在が曖昧になるリスクもはらむ。国民への説明責任をどう果たすのか?
「チームみらい」がこれまでの政治の慣習を破ろうとしている点は評価する。エンジニアを政治の中枢に入れようとする試みも、既存の政治家が積極的にやろうとしなかったことだ。
しかし、彼らがやろうとしているのは、町中の小さなウェブサイトを作るような話じゃない。国家の基幹システムを「アップデート」する話だ。それには、「バグってるから直す」というシンプルな熱意だけでは足りない。
必要なのは、システムの全体像を見通すアーキテクチャ設計能力、膨大なリスクと向き合うセキュリティ設計、そして長期的な運用を見据えたメンテナンス計画だ。
「アジャイル」は魔法の言葉じゃない。基幹システムにおいては、アジャイルの導入にも緻密な計画と準備、そして極めて高い技術力と経験が求められる。
この党が、本当に日本の未来を明るくできるのか、それとも「デジタルの皮を被った理想論」で終わってしまうのか。今の段階では、期待と不安が五分五分だ。彼らが単なる「手を動かす」だけでなく、「システム全体を見通す頭」と「国家レベルの責任を背負う覚悟」を具体的に示せるかに、全てがかかっていると俺は思うぜ。
はてなーは情報工学にそこそこ詳しい連中が揃ってるんだからコレくらいは言って欲しい。
正直、最も不安を覚えるのはチームみらいへ対しチームみらいに勝るとも劣らないレベルの曖昧でふんわりとした評価しかコメントできないお前らへ対しての不安が大きすぎる。
個人的に、安野氏には今回メチャクチャ惨敗したとしても次回また挑戦して欲しいね。もちろん再挑戦は「何が足りないのか?」を指摘してる連中の意見をしっかりと受け止めてやって欲しいね。
Permalink |記事への反応(15) | 15:11
2025年、私たちはソフトウェア開発の歴史的な転換点に立っている。大規模言語モデル(LLM)の進化は、GitHub Copilotのようなコード補完ツールに始まり、今や「何を作りたいか」を自然言語で伝えるだけで、アプリケーションの雛形が数分で生成される時代を現実のものとしつつある。この光景を目の当たりにした多くのプログラマが、漠然とした、しかし確かな不安を抱いているだろう。「私たちの仕事は、いずれAIに奪われるのではないか」と。
この問いに対する私の答えは、半分はYesであり、もう半分はNoだ。より正確に言えば、プログラマの仕事の本質が、歴史上かつてないレベルで抽象化され、その役割が再定義されるのだ。私たちは、コードを「書く」作業から解放される一方で、これまで以上に高度な思考を要求されることになる。
本稿では、プログラミングの歴史を「How(いかに作るか)」から「What(何を作るか)」への移行として捉え直し、LLMがこの流れをいかに加速させるかを論じる。そして、その先にある、AIには決して代替できない、人間ならではの競争優位性、すなわち「Why(なぜ作るのか)」を定義し、記述する能力の重要性について深く考察していく。これは、単なる未来予測ではない。今を生きるすべてのソフトウェアエンジニアにとっての、生存戦略の提示である。
LLMの登場を特異点として捉える前に、我々が立っている場所を正確に知る必要がある。ソフトウェア開発の歴史は、常に「抽象化」との戦いであった。そしてその歴史は、プログラマの関心が「How」から「What」へと徐々に移り変わっていくプロセスとして描くことができる。
コンピュータの黎明期、プログラミングとは、計算機が理解できる命令(How)を、一行一行、丹念に記述する作業そのものであった。アセンブリ言語や初期のFORTRAN、COBOLといった言語は、ハードウェアの制約を強く受けており、プログラマはメモリ管理やプロセッサの動作といった、極めて物理層に近いレベルでの「How」を意識する必要があった。
この時代のテストもまた、「How」に強く束縛されていた。書かれた手続きが、意図した通りに順番に実行されるか、特定の入力に対して期待された計算結果を返すか。テストの関心事は、あくまで「手続きの正しさ」の検証にあった。ビジネスロジックと実装の詳細が密結合し、コードは特定の処理手順を記述した、硬直的な塊となっていた。
風向きが変わり始めたのは、ソフトウェアの規模が拡大し、その複雑性が人間の認知能力を超え始めた頃だ。1990年代後半から2000年代にかけて提唱されたエクストリーム・プログラミング(XP)の中で、テスト駆動開発(TDD)という考え方が登場する。
TDDの本質は、単なるテスト手法の改善ではない。それは、プログラミングのパラダイムを根底から覆す思想だった。TDDは、「まずテストを書く」ことを強制することで、プログラマの意識を「これから実装するコード(How)」から「そのコードが満たすべき振る舞い(What)」へと強制的に転換させたのだ。
テストはもはや、書かれたコードの後追いで正しさを検証する作業ではない。それは、これから作られるべきソフトウェアの「仕様書」であり、「振る舞いの宣言」となった。例えば、「ユーザーがログインボタンをクリックしたら、ダッシュボード画面に遷移する」というテストコードは、具体的な実装方法(`onClick`イベントハンドラの中で`window.location.href`を書き換える、など)には一切言及しない。それはただ、達成されるべき「What」を記述しているだけだ。
この思想は、ビヘイビア駆動開発(BDD)へと発展し、`Given-When-Then`といった、より自然言語に近い形式でソフトウェアの振る舞いを記述するスタイルを生み出した。プログラマだけでなく、プロダクトマネージャーやビジネスアナリストといった非技術者をも巻き込み、「What」を共通言語として定義する試みが本格化したのである。
TDD/BDDによってプログラマの意識が「What」に向かい始めると、コードそのものもまた、宣言的なスタイルへと進化していく。この変化を劇的に加速させたのが、モダンなフレームワークの存在だ。
Reactを例に考えてみよう。Reactが登場する前、フロントエンド開発はjQueryに代表されるように、DOMを直接操作する命令的なコード(How)の連続だった。「このボタンがクリックされたら、この要素のテキストを書き換え、あちらの要素を非表示にする」といった具合だ。
しかし、Reactは「UIとは、ある状態(state)に対する純粋な写像である」という宣言的なモデルを提示した。プログラマがやるべきことは、UIの状態(`state`)と、その状態がどのように見えるか(JSXによるコンポーネント)を宣言することだけだ。状態が変更された際に、DOMをどのように効率的に更新するかという面倒な「How」の部分は、Reactの仮想DOMと差分検出アルゴリズムがすべて隠蔽してくれる。プログラマは「What(UIのあるべき姿)」を記述するだけでよくなったのだ。
この「WhatからHowへの変換」は、様々な領域で見られる。
これらのフレームワークやツールは、いわば「特定の制約下における、WhatからHowへの高性能な変換器」として機能してきた。プログラマは、フレームワークが課す「お作法」や「制約」を受け入れることで、退屈で間違いの多い「How」の記述から解放され、より本質的な「What」の定義に集中できるようになった。我々が「生産性が高い」と感じる開発体験は、この優れた変換器の恩恵に他ならない。
現状は、この歴史的変遷の延長線上にある。プログラマの仕事は、手続きを記述する職人から、振る舞いを定義し、それを実現するための最適な「変換器(フレームワーク)」を選択・設定するアーキテクトへと、その重心を移してきたのだ。
フレームワークがもたらした「WhatからHowへ」の潮流は、LLMの登場によって、未曾有のスケールで加速されようとしている。フレームワークが「特定の領域に特化した変換器」であったのに対し、LLMは「あらゆる領域に対応可能な、究極の汎用変換器」としてのポテンシャルを秘めているからだ。
前章で述べたように、ReactやTerraformといったフレームワークは、その恩恵と引き換えに、私たちに特定の「制約」を課してきた。Reactを使うならコンポーネントベースで思考し、状態管理の作法に従う必要がある。Terraformを使うなら、そのエコシステムとHCLの流儀を受け入れなければならない。これらの制約は、WhatからHowへの変換を自動化するための「レール」であり、私たちはそのレールの上を走ることで効率を得てきた。
しかし、LLMはこの前提を覆す。LLMは、特定のフレームワークや言語の知識を事前に学習しているが、その利用において絶対的な制約を課すわけではない。私たちは、より自由な形式で「What」を伝えることができる。
例えば、こうだ。
ユーザー認証機能付きのシンプルなブログアプリを作ってほしい。フロントエンドはReactとTypeScript、UIコンポーネントはMUIを使う。バックエンドはNode.jsとExpressで、データベースはPostgreSQL。ユーザーはGoogleアカウントでログインでき、新しい記事を作成、編集、削除できる。記事にはマークダウン記法が使えて、画像もアップロードできるようにしてほしい。
この要求(What)は、特定のフレームワークの流儀に則ったものではない。複数の技術スタックを横断し、機能要求を自然言語で並べただけのものである。しかし、現在のLLM、特にGPT-4oやそれに類するモデルは、このレベルの要求から、ディレクトリ構造、設定ファイル、APIエンドポイント、フロントエンドコンポーネントに至るまで、驚くほど具体的なコード(How)を生成することができる。
これは、フレームワークが担ってきた「WhatからHowへの変換」が、特定のレールから解き放たれ、より広範で柔軟な領域へと拡張されたことを意味する。これまで自動化が難しかった、あるいは特定のフレームワークが存在しなかったニッチな領域や、複数の技術を組み合わせる複雑なシステム構築においても、AIによる宣言的プログラミングの恩恵を受けられる時代が始まろうとしているのだ。
LLMという汎用変換器の登場により、プログラマの生産性は、「いかに質の高いWhatをLLMに伝えられるか」に直結するようになる。これは、俗に「プロンプトエンジニアリング」と呼ばれるスキルだが、その本質は、ソフトウェア開発における「要求定義」そのものである。
質の高い「What」とは何か。それは、曖昧性がなく、網羅的で、矛盾のない要求である。
これらは、優秀なソフトウェアエンジニアが、プロダクトマネージャーやデザイナーとの対話を通じて、日常的に行ってきた思考プロセスそのものではないだろうか。LLMの登場は、この思考プロセスを、より明確に、よりテキストベースで「記述」する能力を求める。私たちの頭の中にあった暗黙的な仕様が、LLMへの入力(プロンプト)という形で、明示的に言語化されることを要求するのだ。
やがて、ほとんどのプログラミング作業は、この「Whatの記述」に収束していくだろう。TDDがテストコードという形式で「What」を記述したように、私たちは自然言語や、より構造化された要求記述言語を用いて、AIに対して「What」を宣言することになる。コード(How)は、その宣言から自動生成される中間生成物に過ぎなくなる。まさに、コードが蒸発していく未来である。
「What」を伝えれば「How」が手に入る。この魔法のような世界の到来を前に、私たちは一つの重大な問いに直面する。それは、「そのWhatからHowへの変換は、本当に一意に決まるのか?」という問いだ。
答えは、明確にNoである。
ある「What(要求)」を実現するための「How(実装)」は、無数に存在する。そして、どの「How」を選択すべきかを決定するためには、単純な機能要求(What)だけでは情報が全く足りない。そこには、必ず「Why(なぜそう作るのか)」という、背景、文脈、そしてトレードオフの考慮が必要不可欠となる。
簡単な例を考えてみよう。「1億件のユーザーデータを格納し、ユーザーIDで高速に検索できるシステム」という「What」をLLMに与えたとする。LLMは、どのような「How」を提案するだろうか。
これらの選択肢は、どれも「What」を満たしている。しかし、その特性は全く異なる。案Aは多くのエンジニアにとって馴染み深く開発が容易だが、10億、100億件へのスケールは難しいかもしれない。案Bはスケール性に優れるが、厳密なトランザクション管理は苦手だ。案Cは高速だが、運用コストとシステムの複雑性が増す。案Dは安価だが、検索速度は他に劣る。
LLMは、これらの選択肢をリストアップすることはできるだろう。しかし、このプロジェクトにとって最適な選択肢はどれかを、自信を持って決定することはできない。なぜなら、その決定には、LLMが与えられていない「Why」の情報が必要だからだ。
これらの「Why」こそが、無数に存在する「How」の中から、ただ一つの「正解」を選び出すための羅針盤なのである。そしてこの「Why」は、ビジネスの目標、組織の文化、ユーザーの期待、技術的な制約といった、極めて人間的で、文脈依存的な情報の中にしか存在しない。
ここで重要なのは、これまでもエンジニアは、この「Why」に基づく意思決定を、意識的あるいは無意識的に行ってきたという事実だ。
私たちが技術選定を行うとき、単に「流行っているから」という理由だけでReactを選ぶわけではない。「SPA(Single PageApplication)にすることでユーザー体験を向上させたい(Why)」、「コンポーネント指向の開発によって長期的な保守性を確保したい(Why)」、「Reactエンジニアの採用市場が活発だから(Why)」といった、様々な「Permalink |記事への反応(0) | 17:09
2025年、私たちはソフトウェア開発の歴史的な転換点に立っている。大規模言語モデル(LLM)の進化は、GitHub Copilotのようなコード補完ツールに始まり、今や「何を作りたいか」を自然言語で伝えるだけで、アプリケーションの雛形が数分で生成される時代を現実のものとしつつある。この光景を目の当たりにした多くのプログラマが、漠然とした、しかし確かな不安を抱いているだろう。「私たちの仕事は、いずれAIに奪われるのではないか」と。
この問いに対する私の答えは、半分はYesであり、もう半分はNoだ。より正確に言えば、プログラマの仕事の本質が、歴史上かつてないレベルで抽象化され、その役割が再定義されるのだ。私たちは、コードを「書く」作業から解放される一方で、これまで以上に高度な思考を要求されることになる。
本稿では、プログラミングの歴史を「How(いかに作るか)」から「What(何を作るか)」への移行として捉え直し、LLMがこの流れをいかに加速させるかを論じる。そして、その先にある、AIには決して代替できない、人間ならではの競争優位性、すなわち「Why(なぜ作るのか)」を定義し、記述する能力の重要性について深く考察していく。これは、単なる未来予測ではない。今を生きるすべてのソフトウェアエンジニアにとっての、生存戦略の提示である。
LLMの登場を特異点として捉える前に、我々が立っている場所を正確に知る必要がある。ソフトウェア開発の歴史は、常に「抽象化」との戦いであった。そしてその歴史は、プログラマの関心が「How」から「What」へと徐々に移り変わっていくプロセスとして描くことができる。
コンピュータの黎明期、プログラミングとは、計算機が理解できる命令(How)を、一行一行、丹念に記述する作業そのものであった。アセンブリ言語や初期のFORTRAN、COBOLといった言語は、ハードウェアの制約を強く受けており、プログラマはメモリ管理やプロセッサの動作といった、極めて物理層に近いレベルでの「How」を意識する必要があった。
この時代のテストもまた、「How」に強く束縛されていた。書かれた手続きが、意図した通りに順番に実行されるか、特定の入力に対して期待された計算結果を返すか。テストの関心事は、あくまで「手続きの正しさ」の検証にあった。ビジネスロジックと実装の詳細が密結合し、コードは特定の処理手順を記述した、硬直的な塊となっていた。
風向きが変わり始めたのは、ソフトウェアの規模が拡大し、その複雑性が人間の認知能力を超え始めた頃だ。1990年代後半から2000年代にかけて提唱されたエクストリーム・プログラミング(XP)の中で、テスト駆動開発(TDD)という考え方が登場する。
TDDの本質は、単なるテスト手法の改善ではない。それは、プログラミングのパラダイムを根底から覆す思想だった。TDDは、「まずテストを書く」ことを強制することで、プログラマの意識を「これから実装するコード(How)」から「そのコードが満たすべき振る舞い(What)」へと強制的に転換させたのだ。
テストはもはや、書かれたコードの後追いで正しさを検証する作業ではない。それは、これから作られるべきソフトウェアの「仕様書」であり、「振る舞いの宣言」となった。例えば、「ユーザーがログインボタンをクリックしたら、ダッシュボード画面に遷移する」というテストコードは、具体的な実装方法(`onClick`イベントハンドラの中で`window.location.href`を書き換える、など)には一切言及しない。それはただ、達成されるべき「What」を記述しているだけだ。
この思想は、ビヘイビア駆動開発(BDD)へと発展し、`Given-When-Then`といった、より自然言語に近い形式でソフトウェアの振る舞いを記述するスタイルを生み出した。プログラマだけでなく、プロダクトマネージャーやビジネスアナリストといった非技術者をも巻き込み、「What」を共通言語として定義する試みが本格化したのである。
TDD/BDDによってプログラマの意識が「What」に向かい始めると、コードそのものもまた、宣言的なスタイルへと進化していく。この変化を劇的に加速させたのが、モダンなフレームワークの存在だ。
Reactを例に考えてみよう。Reactが登場する前、フロントエンド開発はjQueryに代表されるように、DOMを直接操作する命令的なコード(How)の連続だった。「このボタンがクリックされたら、この要素のテキストを書き換え、あちらの要素を非表示にする」といった具合だ。
しかし、Reactは「UIとは、ある状態(state)に対する純粋な写像である」という宣言的なモデルを提示した。プログラマがやるべきことは、UIの状態(`state`)と、その状態がどのように見えるか(JSXによるコンポーネント)を宣言することだけだ。状態が変更された際に、DOMをどのように効率的に更新するかという面倒な「How」の部分は、Reactの仮想DOMと差分検出アルゴリズムがすべて隠蔽してくれる。プログラマは「What(UIのあるべき姿)」を記述するだけでよくなったのだ。
この「WhatからHowへの変換」は、様々な領域で見られる。
これらのフレームワークやツールは、いわば「特定の制約下における、WhatからHowへの高性能な変換器」として機能してきた。プログラマは、フレームワークが課す「お作法」や「制約」を受け入れることで、退屈で間違いの多い「How」の記述から解放され、より本質的な「What」の定義に集中できるようになった。我々が「生産性が高い」と感じる開発体験は、この優れた変換器の恩恵に他ならない。
現状は、この歴史的変遷の延長線上にある。プログラマの仕事は、手続きを記述する職人から、振る舞いを定義し、それを実現するための最適な「変換器(フレームワーク)」を選択・設定するアーキテクトへと、その重心を移してきたのだ。
フレームワークがもたらした「WhatからHowへ」の潮流は、LLMの登場によって、未曾有のスケールで加速されようとしている。フレームワークが「特定の領域に特化した変換器」であったのに対し、LLMは「あらゆる領域に対応可能な、究極の汎用変換器」としてのポテンシャルを秘めているからだ。
前章で述べたように、ReactやTerraformといったフレームワークは、その恩恵と引き換えに、私たちに特定の「制約」を課してきた。Reactを使うならコンポーネントベースで思考し、状態管理の作法に従う必要がある。Terraformを使うなら、そのエコシステムとHCLの流儀を受け入れなければならない。これらの制約は、WhatからHowへの変換を自動化するための「レール」であり、私たちはそのレールの上を走ることで効率を得てきた。
しかし、LLMはこの前提を覆す。LLMは、特定のフレームワークや言語の知識を事前に学習しているが、その利用において絶対的な制約を課すわけではない。私たちは、より自由な形式で「What」を伝えることができる。
例えば、こうだ。
ユーザー認証機能付きのシンプルなブログアプリを作ってほしい。フロントエンドはReactとTypeScript、UIコンポーネントはMUIを使う。バックエンドはNode.jsとExpressで、データベースはPostgreSQL。ユーザーはGoogleアカウントでログインでき、新しい記事を作成、編集、削除できる。記事にはマークダウン記法が使えて、画像もアップロードできるようにしてほしい。
この要求(What)は、特定のフレームワークの流儀に則ったものではない。複数の技術スタックを横断し、機能要求を自然言語で並べただけのものである。しかし、現在のLLM、特にGPT-4oやそれに類するモデルは、このレベルの要求から、ディレクトリ構造、設定ファイル、APIエンドポイント、フロントエンドコンポーネントに至るまで、驚くほど具体的なコード(How)を生成することができる。
これは、フレームワークが担ってきた「WhatからHowへの変換」が、特定のレールから解き放たれ、より広範で柔軟な領域へと拡張されたことを意味する。これまで自動化が難しかった、あるいは特定のフレームワークが存在しなかったニッチな領域や、複数の技術を組み合わせる複雑なシステム構築においても、AIによる宣言的プログラミングの恩恵を受けられる時代が始まろうとしているのだ。
LLMという汎用変換器の登場により、プログラマの生産性は、「いかに質の高いWhatをLLMに伝えられるか」に直結するようになる。これは、俗に「プロンプトエンジニアリング」と呼ばれるスキルだが、その本質は、ソフトウェア開発における「要求定義」そのものである。
質の高い「What」とは何か。それは、曖昧性がなく、網羅的で、矛盾のない要求である。
これらは、優秀なソフトウェアエンジニアが、プロダクトマネージャーやデザイナーとの対話を通じて、日常的に行ってきた思考プロセスそのものではないだろうか。LLMの登場は、この思考プロセスを、より明確に、よりテキストベースで「記述」する能力を求める。私たちの頭の中にあった暗黙的な仕様が、LLMへの入力(プロンプト)という形で、明示的に言語化されることを要求するのだ。
やがて、ほとんどのプログラミング作業は、この「Whatの記述」に収束していくだろう。TDDがテストコードという形式で「What」を記述したように、私たちは自然言語や、より構造化された要求記述言語を用いて、AIに対して「What」を宣言することになる。コード(How)は、その宣言から自動生成される中間生成物に過ぎなくなる。まさに、コードが蒸発していく未来である。
「What」を伝えれば「How」が手に入る。この魔法のような世界の到来を前に、私たちは一つの重大な問いに直面する。それは、「そのWhatからHowへの変換は、本当に一意に決まるのか?」という問いだ。
答えは、明確にNoである。
ある「What(要求)」を実現するための「How(実装)」は、無数に存在する。そして、どの「How」を選択すべきかを決定するためには、単純な機能要求(What)だけでは情報が全く足りない。そこには、必ず「Why(なぜそう作るのか)」という、背景、文脈、そしてトレードオフの考慮が必要不可欠となる。
簡単な例を考えてみよう。「1億件のユーザーデータを格納し、ユーザーIDで高速に検索できるシステム」という「What」をLLMに与えたとする。LLMは、どのような「How」を提案するだろうか。
これらの選択肢は、どれも「What」を満たしている。しかし、その特性は全く異なる。案Aは多くのエンジニアにとって馴染み深く開発が容易だが、10億、100億件へのスケールは難しいかもしれない。案Bはスケール性に優れるが、厳密なトランザクション管理は苦手だ。案Cは高速だが、運用コストとシステムの複雑性が増す。案Dは安価だが、検索速度は他に劣る。
LLMは、これらの選択肢をリストアップすることはできるだろう。しかし、このプロジェクトにとって最適な選択肢はどれかを、自信を持って決定することはできない。なぜなら、その決定には、LLMが与えられていない「Why」の情報が必要だからだ。
これらの「Why」こそが、無数に存在する「How」の中から、ただ一つの「正解」を選び出すための羅針盤なのである。そしてこの「Why」は、ビジネスの目標、組織の文化、ユーザーの期待、技術的な制約といった、極めて人間的で、文脈依存的な情報の中にしか存在しない。
ここで重要なのは、これまでもエンジニアは、この「Why」に基づく意思決定を、意識的あるいは無意識的に行ってきたという事実だ。
私たちが技術選定を行うとき、単に「流行っているから」という理由だけでReactを選ぶわけではない。「SPA(Single PageApplication)にすることでユーザー体験を向上させたい(Why)」、「コンポーネント指向の開発によって長期的な保守性を確保したい(Why)」、「Reactエンジニアの採用市場が活発だから(Why)」といった、様々な「Permalink |記事への反応(0) | 17:09
Linuxサーバで動くようにプログラムを書き換える必要があるが、現行COBOLのシステムがサグラダファミリア状態で書き換えた結果の妥当性を検証しきれないため
日本はまだ書き換え進んでるほうで、米国の金融機関や自治体なんか酷いものだ。英語が出来てCOBOLが出来れば米国なら死ぬまで食える。日本もそうなりつつあるが
あー、今日もまた「未経験歓迎!文系でもOK!」なSES案件が流れてきてて笑っちゃった。なんなんだろうね、あの「文系でもプログラマーになれる!」って謎の希望。そりゃあ、HTMLコピペして「動いた!私、天才!」って言うだけなら誰でもなれるよ。問題はそこから先。で、結局「とりあえず現場行って、仕様書通りにJava書いてください、できない?ChatGPTで聞いてください」みたいな感じで、現場の椅子だけ温めてるのが山ほどいるわけ。
でもそういう人たちが悪いっていうより、そういう人しか使えないビジネスモデルが悪いんだよね。SESって、要するに人月商売でしょ?だから現場で「使える風」に見せかけられれば、それで会社には金が入る。「お前、技術力低すぎだろ」って思っても、パワポで週報書いてくれるだけで感謝される謎の世界。で、その下請けのさらに下請けで、ガチャで当たった案件に放り込まれて、気づいたらCOBOLメンテしてたりする。
一方で、海外のエンジニアってどう?CSの学位持ってて、プロジェクトの選定にも入って、設計にも深く関わってて、給料も2倍3倍。あっちはエンジニア=技術者として尊敬されてる。こっちは?「人材派遣会社に所属する作業員」。この差はでかい。特に辛いのは、自分の技術が評価されるより先に「営業の腕」で現場が決まるってこと。技術じゃなくて、営業力で飯が食えるって、なんのためのエンジニアよ?
俺は一応、大学院でCSやってたし、論文も書いてたし、そういう意味じゃまだ「エンジニアの世界」の片鱗を見てきたつもり。でも日本の現場に入ると、その知識なんて全然活かせないのよ。優秀であることより、「指示されたことだけやって、余計な口出ししない」ことの方が求められる。そりゃあ、優秀なやつから抜けていくよね。で、残るのは「とりあえず現場で大人しくしてる」だけの自称エンジニアたち。
ま、そういう俺も、来月からまたSESで別の現場。たぶんまた、隣の席に「未経験から入りました!」って笑顔で言う人が座ってて、「チャットGPTって便利ですね!」とか言うんだろうな。いや、別に悪くはないけど、これってエンジニアって言えるんかな?
フジテレビやTBSのドラマに出てくるような、客が自ら自分が経験した奇妙な出来事や恋愛話をマスターに語る酒場が本当にあることを、今日初めて知った。あれはフィクションのための舞台装置だと思っていたのだが、本当に実在するとは思いもよらなかった。それも東京ではなく、千葉県の地方都市でだぞ。
でも、自分はこの会話に入れない。「金持ちそうな謎の老婆に連絡先を突然渡された。アレは一体何だったんた?逆玉の輿のチャンスだったのか?」という話で盛り上がった後に、もしも「いやー、自分、COBOLのコードをWindows FormsやWPFにリプレイスするのに今、苦労してるんですよ」とか愚痴っていたら、「コボルって何?ウィンドウズ・フォームズって?」と返されて、急速に場が冷えてしまっていたことであろう。
あんな、脇役のオジサンがヒロインの悩みに間接的にスポットライトを当てるような会話のシーン(その後、ヒロインが自室で体育座りしながらオジサンとの会話を思い出し、誰にも話していない彼氏との行き違いに悶える、よくあるアレ)に出会えるとは。そして自分は、その会話の雰囲気に参加できるネタを何も持ち合わせていない、場違いな客。
極右の思想は基本的に人口の一部抹殺が含まれるんだけど、それを彼らは「面倒なものを視界に入れない権利がある」「きれいごとを押しつけられない権利がある」などして正当化する。しかし実際に人が死んで自分が汚れ役になる覚悟はできておらず、犠牲者が出ると狼狽えてフェイクニュースで隠蔽
30.1万 件の表示
あとナチスは極右と言われるが、国民社会主義ドイツ労働者党という名前はどう見ても左翼です。
そもそもフェイクニュースで隠ぺいと言うが、フェイクニュースという概念自体がなかったもので、強いて言えばプロパガンダの間違いだと思います。
もっともフェイクニュースとかいう連中ほど平気でうそをついているので、フェイクニュースとか言う人たちは軒並み信じないんですけどね。
ニュースがフェイクかどうかなんて関係がないです。事実かどうか、間違っていないか、そうした点です。
ポル・ポト(Pol Pot)と彼の率いたクメール・ルージュ(クメール・ルージュ:カンボジア共産党)は極左(左翼急進主義)なので、どうみても歴史を知らないようだ。
返り血を浴びる覚悟がないのに悪ぶってみせる。「楽な方に流れるのは仕方がない」といいながら、その方向が楽ではないという事実から目を背けるために過剰な努力を注いでしまう。そんなMAGAたちには既視感がある。
しかし、米国の「移民を勝手に死人扱いにして追い出す」って、ほとんど中学生じみたやり方だな。
知能犯になりきれていない。
返り血を浴びる覚悟がないのに悪ぶってみせる。「楽な方に流れるのは仕方がない」といいながら、その方向が楽ではないという事実から目を背けるために過剰な努力を注いでしまう。
少なくともトランプ大統領はJ6という嘘をでっちあげられ、メディアから叩かれました。しかも2回も暗殺されかけています。返り血を浴びる覚悟?
社会保障給付を受けている」というのは、アメリカで報道された実在の不正利用ケースに関係しています。
→ たとえば死去した移民の名前や社会保障番号を用いて不正に医療保険や給付金を受け取るといったケースが指摘されています。
移民に限らず、死亡届の処理ミスや身元不明の者を死亡者として登録してしまうなどの事務的問題もありました。
→ こうした制度の不備が一部で「死人扱い」の誤解を生んでいます。
イーロン・マスクの「150歳が社会保障給付を受けている」という主張は“誤解”である
https://wired.jp/article/elon-musk-doge-social-security-150-year-old-benefits/
コンピュータープログラマーたちはすぐに、「150」という数値は不正の証拠ではなく、米社会保障局(SSA)の給付システム特有の仕様によるものだと指摘した。このシステムは、60年前のプログラミング言語であるCOBOLで主に構築されている。COBOLは多くの米国政府機関のシステムに使われてきた。
しかし、COBOLは現在ではほとんど使用されていない。そのため、マスクが抱える若手エンジニアチームはこの言語を知らない可能性が高い。
COBOLには日付型がないので、一部のシステムではすべての日付を特定の基準日に基づいてコード化する方式が採用されている。よく使われる基準日のひとつに1875年5月20日があり、これはパリで主催された単位の確立と普及を目指す国際会議「メートル条約」の開催日である。
これらのシステムでは、生年月日が未入力または不完全な場合、基準日が自動で適用される。このことから、2025年時点で該当データはすべて150歳と表示されるというわけだ。
これは、DOGEが発見したとする状況について考えられる説明のひとつにすぎない。実際には、マスクはSSAのウェブサイトを確認するだけでよかった。そこには2015年9月以降、115歳に達した時点で給付金の支払いを自動的に停止すると明記されているのだ。
ナンセンスですね。COBOLを知らないという根拠が「若いから」というのは失当です。なんの根拠にもならない。また150歳までは年金を受け取っていなくても115歳まで受けっているのは不正です。だれが給付を受けたのか。
このようにワイヤードのようなレベルの低い反論しかできないため、不正給付は疑いようもない事実です。
あと自分たちが気に入らないから人を馬鹿ときめつけて語るということは、ウソをついているからです。
「勝手に死人扱いにして」「追い出す」というのは、
という、ほとんど陰謀論的・中二病的な筋立ではないでしょうか。。現実には、死亡と記録されたために給付が停止されたり、移民局との照合ミスにより処理が誤ったりしたケースがあるに過ぎないと言えるでしょう。極めて感情的な発言で、事実とは異なっています。
この質問、まるで「スマホ使ってる大人ってどこにいるの?ガラケーで十分でしょ」レベルですね。
技術スタックの多様性を理解できない時点で、筆者は「エンジニア」以前に「物事を相対的に見られない人」確定です。
「とか」で濁すあたり、具体的な業界事例を知らないことがバレバレ。
「Windowsでないと動かないアプリ多いだろ」という雑な一般論で逃げるの、典型的な「自分が知らない世界は存在しない」症候群です。
この表現を使う時点で、筆者は「自分は本物のエンジニアだ」という謎の優越感に浸っています。
しかし、OSの選択で技術者の価値を決めつけるような狭量さは、むしろ「ドカタ」の思考パターンそのものですね。
「()」で揶揄うつもりでしょうが、SIerやホスト系を馬鹿にできる根拠は?
実際、金融や公共機関の基幹システムはCOBOLやメインフレームで動いており、彼らがいなければ社会が止まるのですが……。
筆者のシステムへの依存度を調べたら、案外「SIer()」の作ったシステムにお世話になってるかもしれませんよ?
「動かないから仕方なく使ってる」という前提が全て間違い。
技術選定は「適材適所」が基本で、Windowsが最適なケース(産業制御、Active Directory連携、.NET環境など)を無視する態度こそ、無能の証です。
Microsoftの時価総額(3兆ドル超)やAzureのシェアを考えたら、Windows/Windows Serverが「ダサいレガシー」という認識は完全に時代錯誤。
「Linuxがカッコいい」「Windowsはダサい」で思考停止してる時点で、筆者は10年前の技術オタクのまんまですね。
この主張から推測するに、筆者の経歴は……