
はてなキーワード:コンポーネントとは
ChatGPT:
はい、Delphi(ObjectPascal)のソースも読めますし、解説・リファクタ・バグ箇所の指摘・他言語への移植案など対応できます。
VCL /FMX、Generics、Interface/RTTI、プロパティ/イベント、レコード・セット型、メモリ管理(string/AnsiString/UnicodeString の違い)、スレッド(TThread / TTask)、WinAPI/COM 呼び出し、uses単位構成、.dfm(フォーム)やリソース周りもOKです。
コードを貼ってくれれば、1ステップずつ説明や改善案を出します(DelphiのバージョンやVCL/FMXも書いてあると精度上がります)。
UNIFACEはどう?
ChatGPT:
はい、UNIFACE(Proc言語)も対応できます。フォーム/サービス/レポート/エンティティなど各コンポーネントのトリガ(initialize, validate, leavefield など)、operation/entry、newinstance/activate/call、retrieve/e, read,write、エラー制御($status, $procerror)や論理名・assignment(.asn)、署名/パラメータ、DSP/REST・SOAP連携、DBドライバ設定までOKです。
コードや .asn を貼っていただければ、処理フローの解説、バグ箇所の指摘、リファクタ、他言語・他フレームワークへの移植案(例:REST API化、Java/Python 置き換え)まで具体的にやります。
可能なら UNIFACE のバージョン(9/10/10.4 など)、DB(Oracle/SQL Server 等)、OS を添えてください。
増田の投稿をChatGPTに聞いたら、次のような答えが返ってきたよ。
----------
この投稿はインパクト重視の論調で書かれていますが、内容にはかなりの誇張と誤解が混ざっています。
確かに「Apps in ChatGPT」のような機能は、ユーザー体験の一部を「チャットUI」に統合する可能性を持っています。しかし、それが「フロントエンドエンジニア=不要」という結論にはなりません。
人間が情報に触れるには、必ず何らかの「インターフェース」が必要です。AIが自動生成しようが、それを心地よく見せ、操作しやすくするための設計原理(アクセシビリティ、情報設計、心理的デザイン)は残ります。AIがHTMLを生成するようになっても、「どのような体験を提供すべきか」を定義するのは依然として人間です。
次に、Apps in ChatGPT=Webの終焉という見方も現実的ではありません。
これは「一部のユーザー行動の置き換え」にすぎません。人々がすべての行動をチャット上で完結させたいとは限らず、ビジュアル的な体験(ゲーム、ECのUI、SNS、動画編集、ダッシュボード操作など)は、テキストUIよりも視覚的UIの方が圧倒的に優れています。Spotifyの例にしても、ChatGPT上で曲を探すことはできても、音楽体験そのものはSpotifyアプリ内のインターフェースで完結したほうが豊かです。
さらに言えば、「AIがUIを描く」時代は「フロントエンドの再定義」の時代です。
Reactコンポーネントを手書きする仕事は減るかもしれませんが、「AIに指示してUIを生成し、それを調整する」役割は残ります。人がHTMLを書かなくても、ユーザー体験を設計する力・AIが生成したUIを検証する力・アクセシビリティやブランド整合性を担保する力が求められるようになります。
一方で、この投稿が指摘している**「構造を設計できる人の重要性」**は確かに的を射ています。
API設計、データスキーマ、セキュリティ、AIと連携するバックエンド構造への理解はますます価値を増します。UIの自動生成が進むほど、裏側の整合性・信頼性を支えるエンジニアリングが中心的になるのは確かです。
要するに、フロントエンドは「消滅」ではなく「変質」していく段階に入っています。コードを書く職種から、AIを使って体験を設計・制御する職種に移行していくというのが、現実的な見立てです。
この一言に尽きる。
ChatGPTの新機能「Apps in ChatGPT」が登場した瞬間、フロントエンドという職種の地盤は音を立てて崩れた。
これまでは、Webアプリやサービスは「フロントエンドでUIを作り、バックエンドでデータを返す」
という分業構造の上に成り立っていた。
だがApps in ChatGPTは、その構造をぶち壊す。
ChatGPTのチャット画面内でSpotifyを操作し、Zillowで物件を探しEtsyで買い物をする。
あなたが書いてきたReactコンポーネントもボタンもフォームもすべてAIに吸収される。
もはやユーザーはブラウザを必要としない。URLをコピペすることも無くなるだろう。
「このホテル予約して」と言うだけでAIがAPIを呼び、レスポンスをカルーセル形式で提示する。
ReactもNext.jsも「人間が画面を操作する前提」で存在していた。
でもその前提はもう終わった。
AIがデータを直接受け取り、AI自身が人間に見せるUIを自動生成する。
あなたが設計した美しいフォームもAIにとってはただの "action": "submit" という構造情報にすぎない。
Apps in ChatGPT以降の世界では、
これらが新しいUIだ。
だからこれから必要なのは「見た目を作る人」ではなく、AIが読み取れる形式で世界を記述できる人 だ。
バックエンドに戻れ。
Apps in ChatGPTが意味するのは、
今後必要なのは、AIが扱いやすいデータスキーマを定義する力や認証・権限・トランザクションを安全に扱う力やMCPやWebAPIをAIが使いやすい形に整える力だ。
これは警告だ。猶予は短い。
Apps in ChatGPTの登場は、「AIがUIを直接扱い始めた」という歴史的転換点だ。
あなたがフロントにしがみつく間に、AIはすでにあなたの代わりにUIを描いている。
5年後にはブラウザから色んなサイトにアクセスするという行為は一部のマニアだけ行うものになっているだろう。
もう時間はないぞ。急げ
Permalink |記事への反応(17) | 09:37
経歴書を見て、ちょっと引いた。
GitHubのスター数が現実離れしてるし、技術ブログも見たことない分量。
使える技術は自分の三倍。React、Vue、Go、Rust……カタカナを追うだけで手一杯だった。
「また意識高い系か」
隣の田村が呟く。俺も同じことを考えてた。
古いコードを一目見て渋い顔をする。会議で「そろそろモダンな構成にしませんか」みたいな提案。
コードレビューは容赦なし。「ここ、コンポーネントに責任持たせ過ぎですね」「エラー処理、もっと丁寧に」「テストコード、当たり前に書きましょう」。
ひたすら正論。
うざかった。
俺たちがどうして汚いコードを書いてるか、この男には分からない。
毎日終電、土日は障害対応で呼び出されて、ただ“動くもの”を積み上げるしかないんだ。
俺たちが一週間かかる仕事を、三日で終わらせてくる。
正直、悔しかった。
前職を調べた。同僚が「有名Web系だったらしい」「やっぱり恵まれてるよな」と言う。
自分はSIer、古い文化に浸かりきった人間。あいつは最初から違った世界の住人。
最初から条件が違うのだから、そりゃ勝てるわけがない、そう思っていた。
「実は俺、文系です。完全未経験からSIerでCOBOLとJavaだけで食ってたんです。毎日終電、土日も当然出勤」
……俺たちと同じだ。いや、むしろスタートはもっと後ろだった。
それでも佐々木は毎朝5時に起きて、出社前2時間、帰ってからも1時間。
土日は技術書を読み倒し、何年でも続けた。
「4年やりました。最初の転職活動は100社受けて全滅。でも勉強して、2回目でやっとWeb系に引っかかりました」
7,000時間近く積み上げて、そこにいる。
俺はと言えば、「環境が悪い」「仕方ない」「時間がない」と言い訳して、家ではYouTubeとゲームだけ。
土日もゴロゴロして何も変えなかった。
才能でも環境でもない。ただ、努力したかどうか。それだけだった。
素直に屈辱を噛みしめ、うなずいた。
明日から一緒に朝活を始める。1時間だけでも、たぶんそれでいいんだと思う。
朝活は、正直きつかった。
寝不足のまま早朝の会議室に集まってコーヒーを流し込み、黙ってテーブルを挟む。もちろん最初は普通に勉強だ。
けれど、だんだんと慣れてくると、俺なりの意地も芽生えてきた。
「ああ、昨日この分野を調べてきたんだ」
「なるほど、そっちの技術ではこうやるのか」
ただ教わるばかりじゃ悔しいので、眠い頭で資料を漁って少しでも佐々木に食らいつく。
知識の差は大きい。でも、佐々木も意外と勝負事が好きらしい。「今日はどっちが新しいツールを導入できるか」みたいな余計なルールまで作り出し、コードレビューでお互いをねちねちいじり始める。
気がつけば、朝活は勉強会というより妙な競争の場になっていた。
「あ、そっちの書き方の方が効率いいな」
「また変なイースターエッグ仕込んでる」
仕事でも張り合うようになった。
些細な設計やリファクタリングの方針ひとつで、絶対譲れなくて熱くなった。むきになって議論する。
他のメンバーには「仲悪いのか」と言われたけど、本人たちは別に悪い気がしない。不思議な高揚感。
次第に会社での評価も上がっていた。成果が出ると、お互いに無言でアイコンタクト。
なんとなく、ライバルってやつになっていた。
飲みに誘ったり、逆に誘われたりすることも増えた。くだらない愚痴をこぼし合い、バグの話で夜中まで笑った。
仕事が終わった金曜に、そのまま繁華街で朝まで過ごすこともあった。
ある日、こんな風に、飲みに誘われた。
静かな居酒屋、少しアルコールが入る。気づけば昔話になり、くだらない話、恥ずかしい話、お互いの情けなさをさらし合う夜。
気付いたら閉店まで二人だけ、なぜか離れがたくて、一緒に深夜の街をふらふら歩いた。
妙な感情が残った。
帰り道、不意に言葉がこぼれる。
「なんかさ、お前といるとずいぶん楽なんだよ」
「……わかる。俺もそう」
見ればわかるくらい、距離が近づいた。
休日に技術イベントがあれば二人で出かけ、休日の帰り道は自転車を並べて走った。
日曜の朝、駅前の喫茶店で合流して、黙ってノート開いて並んでいる時間が、いつの間にかすごく安心するようになった。
仕事も私生活も地続きで、ただ一緒にいることが普通になっていく。
もしかすると、お互い惹かれたのかもしれない。でもはっきり「好き」と言うのは、たぶん、もっと先になる気がする。
この歳で、こういう物語があるとは思っていなかった。でも悪くない。
淡々とした毎日のなかで、少しずつ少しずつ、何かが変わっていた。
物語なんて要らないと思っていたけど、何もない毎日のとなりに、こんなふうに誰かがいるのも、たぶん悪くない。
もう結構まえからWindowsの機能アップデートは爆弾とか地雷とかそういう感じなのですぐにアップデートするメリットは無い。
肝心の追加される機能も待ちに待ったようなすげーものであることはまず無いので半年くらい遅らせても困ることは無い。
以下やりかた(Pro版)
3.[コンピューターの構成] → [管理用テンプレート] → [Windowsコンポーネント] → [Windows Update] → [Windows Updateから提供される更新プログラムの管理]とたどる
4.[プレビュービルドや機能更新プログラムをいつ受信するかを選択してください]を開き、 "有効" にする
下のほうの[プレビュービルドまたは機能更新プログラムがリリースされた後、受信を延期する日数] → "180" にする
3ヶ月前、うちの開発チームに新しいエンジニアがやってきた。佐々木(仮名)、29歳。
経歴書を見た時点で、正直ビビった。
React、Vue、Next.js、TypeScript、Go、Rust、Docker、Kubernetes…もう何がなんだかわからない。
「また意識高い系が来たよ」
俺も同感だった。
レガシーなコードを見て「これはちょっと…」みたいな顔をする。
と提案してくる。
うぜぇ。
そんな中で何とか動くものを作ってるんだよ。
綺麗なコードなんて書いてる余裕ないんだよ。
3日で仕上げてくる。
悔しかった。
「やっぱりな。恵まれた環境にいたから、あんなことできるんだよ」
俺たちは佐々木を妬んでいた。
そう思っていた。
ところが先週、佐々木と飲みに行く機会があった。
新卒で入った会社は、まさに俺たちと同じようなSIer。Java とCOBOLでレガシーシステムの保守をやっていた。
でも、佐々木はそこで諦めなかった。
土日は技術書を読み漁り、
オンライン講座を受講し、
個人開発を続けた。
「平日は合計3時間、土日は10時間以上勉強してました。それを4年間続けました」
俺は計算した。
=6,880時間。
「最初の転職活動は100社受けて全部落ちました。でも諦めずに勉強を続けて、2回目の転職活動でようやく今のレベルの会社に入れました」
俺は恥ずかしくなった。
佐々木を「恵まれた環境にいたから」と妬んでいたが、実際は俺たちと同じ、いやそれ以下のスタートラインから、血のにじむような努力で這い上がってきた人だった。
俺は何をしていた?
「環境が悪い」
「時間がない」
そう言い訳して、
家に帰ったらゲームして、
努力の量だ。
「今からでも遅くないですよ」
と佐々木は言った。
恥ずかしかったけど、頷いた。
毎朝1時間でもいい。変わりたい。
29歳。まだ間に合うよな?
言いたいことは分かるけど、ノイジーマイノリティではなくて、視野が狭い人の特徴だと思う。で、それらはマイノリティかというとマジョリティじゃねえかなって。根拠はないけど。
例えば
やりたい仕事って大企業のオフィスワークみたいなのだろうけど、そういうキラキラ仕事って有名大学でてないとできないからね。
高学歴以外でそういう職場に入れても派遣とかになるから、可処分所得を考えると地方のがマシっていう。
あとはスキルアップ繰り返した結果入れる感じかな。
この実態ってどれだけの人が知ってる?
大企業入ったことがある人、あるいは少なくとも大企業とお付き合いのある人じゃないと分かんないんじゃない?これ。
ドラマなんかで、未だに
みたいな表現になるじゃん。
あれはテレビ屋が実際に一般企業で働いた事が無いから、大企業のコンプライアンスレベルとか今どうなってるのかわかんなくてこう言う表現になっちゃうわけよ。
で、そんな解像度の低い表現をみて、東京行けば高層ビルでキラキラオフィスワークができる!って思ってしまって行ってしまうのは仕方がねえんじゃねーかなって。ある程度さ。で、NHKの報道にできていた人たち、どれぐらいの幅でそう言った視点持ててる?ってのは疑問だよね。
地方移住の現実とか言われるけど、上京の現実みたいなのもちゃんといるんじゃね?って思う。
だから横の旅(地域を横断した旅、違う地方に行く、都会に言ってみる、外国を見に行く)だけじゃなくて縦の旅(違うコミュニティを見てみる、階層を超えてみてみる)事が大事なんだよ。大企業の連中も中小企業のリアルなんてわかんないでしょ。逆に。
で、今のこどもたちはこれを超える教育を受けてるんだよな。地元にある会社に依頼をして、仕事体験フェアみたいなことをやっている。キッザニアやKandoみたいなやつのミニ版。小中学生向けのやつから、高校生向けのもうちょっとがちな奴、大学生のもあったかな。大学生まで来ると殆ど求人とかわんなくなるけど。内容は地元の企業が自分のところの製品を持ち込んで、どんな仕事をしているかを説明していながら、実際に一部体験するという内容。製造している車のコンポーネントを持ってきて最後の組立をやらせたり、木工会社がCNC加工機持ち込んで彫刻作ったり、測量会社がドローンを飛ばしたり、病院が採血練習用の模擬腕もってきて注射体験ができたり。
営業の仕事だと地方でも普通に女性がやってると思うけど、単にその企業が女性に営業させなかったというだけな気がする。n=1みたいな。その地方を代表するような企業だったんだろうか。
こういうのの実態を見る事ができる。少なくともn=の数に足しにはなって、今の会社がまずくて他の会社に転職すりゃ思った仕事ができるって知れるのか、それとも都会にはキラキラ仕事があるから上京しますみたい夢の方を信じてしまうかをちゃんと選べるようになるんだよね。
キラキラ仕事を得るには努力しなきゃいけないという事も、キラキラ仕事をやってる人たちはそれ相応に犠牲を払って努力した結果でそこにたどり着いていると言う事も理解できる。そうすりゃ、希望する人はちゃんと努力する道も選べるってもんでさ。
昔ながらのPHPとテンプレートで動いていた大規模システムを、Next.jsベースのモダンな構成に置き換えるプロジェクトをやったんだけど、これがなかなかうまくいかなかった話。
1年以上かけて、コンポーネント化されたNext.jsアプリとして開発を進めて、見た目もコードも“今どき”になった…はずだったんだけど、完全な置き換えはできず、結局は既存のPHPシステムと共存させる形に。
その間、運用人員がいなかったから他社に協力を依頼して、お金もかなりかかった。
でも、いざリリースしてみると、「誰がどこを触れるのか分からない」「直したいけど全体の影響が読めない」みたいな状態になり、むしろ運用の手間は以前より増加。タスクは溜まり続けている。
ぶっちゃけ、従来のシステムのままで運用していた方が、楽だった面も多い。
もちろん、古いシステムに限界がなかったわけじゃないけど、今は「置き換えた結果、前よりもしんどくなってる」状態で、結構困ってる。
「古いけど運用実績があって、そこそこ動いてるシステム」を「最新の技術で綺麗に作り直す」って、理想はあるけど、現実的には時間もお金もかかるし、引き継ぎやドキュメント、周辺業務の整備まで考えると、運用の現場がついていけなくなることも多い。
しかも、複雑な状態になると、関わるエンジニアの数も制限されて、どんどん属人化していく。
会社やめたほうがいい?
何度キャッシュを削除したりしても
や「コンテンツが利用できません」「コンテンツサーバーに接続できません」みたいなエラーメッセージでダウンロードが失敗するようになったPCがある。
今回、回避に使った手法は、正常に動作する別デバイスでダウンロードし「ゲームファイルをローカルネットワーク経由で転送」機能を使い迂回する方法。
実際に有効になるかは自動識別みたいなので、設定を有効したら再起動したり、既に進んでいたキャッシュを削除してみたりするのも効果があるかもしれない。いかんせん再現性を調査しにくいものなのでいかがでしたかレベルの話になるが…備忘録である。
再販可能コンポーネントは転送できないようだが、これはセキュリティソフトの一時停止、steamの管理者権限での実行、更新の連打などまあ通りいっぺんの方法でなんとか突破してほしい…
D−120:00JST、パートナー個体との外食セッションをスケジュール通り実行開始。
プロセス稼働中、内蔵フィジカル・モジュール(腹部サブシステム)に軽度の不具合シグナル(PainFlag=TRUE)が発生。
座席離脱時、携行ユニット(Bag)からウォレット・モジュールを物理抽出し、ポケット・ストレージに再配置。
この操作は純粋にリスクマネジメント層のアルゴリズムに従った結果であり、感情層の意図はゼロ。
トイレからのリターン後、相手個体の感情UIにおいて「Smile」「Neutral」コンポーネントが非表示化、
代わりに「Irritation」コンポーネントがフルスクリーンで描画される。
【フェーズ3:原因解析】
帰路において感情ログが開示され、WalletRemovalイベントが**"TrustViolationException"**として処理されたことが判明。
相手個体の推論エンジンでは「ウォレット携行=不信感」というIF文がハードコードされている模様。
本ユニット側では当該行為はISO/IEC 27001準拠のセキュリティオペレーションと認識しており、信頼スコア(3年連続稼働)に影響なしと評価。
逆に同様のアクションを相手個体が実行した場合、"WellDisciplined()"関数を返す仕様。
説得パケット送信は失敗(StatusCode=406 Not Acceptable)。
①「国または知識はこれでよろしいですか?」の画面から「Moicrosoftアカウントを追加しましょう」の画面の間に「Shift」キーと「F3」キーと「Alt」キーを押す。するとコマンドプロンプトが表示されるので、そのウィンドウを「Alt」キーを押しながらマウスでクリックしてアクティブにする。
②「startms-cxh-for-key-b:localonly」と入力して「Enter」キーを押す。Moicrofoftアカウントを作るためのウィンドウが表示されるので、任意のユーザー名とパスワードを入力して「次へ」を押す。
セットアップ終了後、
③スタートメニューなどから検索して「グループポリシーの編集」を起動(事前にBitRockerはオフにしておく)
④左のツリーから「コンピューターの構成」→「管理用テンプレート」→「Wandowsコンポーネント」→「BitRockerドライブ暗号化」→「オペレーティングシステムのドライブ」を選び、右側のリストで「ネイティブのUEFIファームウェア構成……」の項目をダブルクリック
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
電気自動車の成長と先進的なディスプレイ技術の採用が世界市場の成長を牽引
電気自動車業界では、インバーターやバッテリー管理システムなどの主要コンポーネントにパワー半導体が使用されています。静電チャックはこれらの半導体の製造において重要な役割を果たしており、EVの採用が拡大するにつれて、2023年には世界中で約1,400万台の新しい電気自動車が登録されました。
https://www.researchnester.jp/industry-reports/electrostatic-chucks-market/8
世界の静電チャック市場規模は、2024年に132.9百万米ドルと推定され、2037年末までに259.9百万米ドルを超え、2025―2037年の予測期間中に5.3%のCAGRで増加すると予想されています。2025年には、静電チャックの業界規模は259.9百万米ドルに達すると見込まれています。
世界の静電チャック市場の成長に関連する主な成長要因と課題は次のとおりです。
成長の原動力:
課題:
• 厳格な業界規制と標準を順守すると、運用の複雑さとコストが増大する可能性があります。
•代替のウェーハ処理ソリューションと新興技術との激しい競争が市場シェアに影響を与える可能性があります。
https://www.researchnester.jp/industry-reports/electrostatic-chucks-market/8
アプリケーション別に見ると、世界の静電チャック市場は半導体、無線通信、電子機器、医療、防衛、航空宇宙などに分かれています。これらの中で、電子機器部門は大きな市場シェアを獲得する見込みです。これは、スマートフォン、ラップトップ、IoTガジェットなどのデバイスにおける高度な半導体の需要が高まっているためです。
地域別に見ると、北米は予測期間中に市場シェアの大部分を占める見込みです。この地域、特に米国では電子機器製造業が成長しており、静電チャックなどの高度な機器の需要が高まっています。半導体製造工場 (ファブ) への投資の増加とIoTデバイスの台頭により、市場は堅調な成長を遂げています。
このレポートでは、SHINKO ELECTRIC INDUSTRIES CO.,LTD.、NGK Insulators,Ltd.、SumitomoOsakaCement Co.,Ltd.、TOTOLtd.、TsukubaSeiko、Beijing U-PRECISION TECH CO.,LTD.、AKE Environmental Technologies、Creative Technology Corporation、Lam Research、などの主要プレーヤーの現在の競争状況も提供しています。
鈴川エディタやEmEditorで少ないメモリー使用量で巨大テキストをファイルを編集できるとうたってるが、.NETでも見事に再現できたぞ。
1.2億行×100文字の全置換えでGCのメモリー使用量は340MB程度で、行の操作は86MB程度、合わせて426MBだ。
その辺の.NET製テキストエディターコンポーネントに組み込んでも500MBぐらいで済むと思う。
(その代わりワークファイルは30GBぐらいは行ってるはず)
鍵はropeというデーター構造を使用することとropeにアクセスする際、ディスクに保存する機構を付け加えるだけだ。
特にソースコードで見るべき個所はBigList.cs、Node.cs、DiskPinableContentDataStore.csの所だけだ。
多少遅くて構わないなら、ディスクに保存することはそこまで難しくはない。
メモリーマップドファイルは何かと面倒なので使ってないが、.NETでMMDataStructuresとかメモリーマップドファイルを扱うやつがあるんで、メモリーマップドファイルでも行けるはずだ。
benchmark start
size:120000000
AllocatedGC Memory:66,304bytes
AllocatedGC Memory:101,257,168bytes
AllocatedGC Memory:101,247,232bytes
AllocatedGC Memory:333,371,424bytes
AllocatedGC Memory:333,257,000bytes
AllocatedGC Memory:331,904,816bytes
clear buffer
AllocatedGC Memory:66,304bytes
AllocatedGC Memory:86,939,136bytes
AllocatedGC Memory:87,272,912bytes
clear buffer
AllocatedGC Memory:69,448bytes
ソフトウェア開発において「コード補完・単体テストの自動生成」から出発し、「願っただけで全てがすぐに叶う状態(完全自動生成)」を最終目標として、段階を詳細に示す。
⸻
【第1段階:コード補完・単体テストの自動生成(2023年~2024年)】
•GPTシリーズやCopilotをはじめとした現時点の技術水準。
•開発者の意図をある程度予測して関数単位の補完・簡易なテストコードを生成可能。
⸻
【第2段階:仕様書・要件からの関数レベル自動実装(2024年~2026年)】
•AIが自然言語で書かれた仕様を関数レベルで直接コードに翻訳。
•開発者が関数定義やインターフェース設計を自然言語で伝えるとコードが生成される。
•AIがテストコードをさらに詳細に自動生成し、境界値分析・異常系シナリオにも対応。
⸻
【第3段階:コンポーネント~モジュールレベルの自動生成(2026年~2028年)】
•システム要件や簡易な設計書を基に、AIがより大きな単位でコードを生成する。
•特定のフレームワークやライブラリを適切に自動選定・使用可能。
•UI/UX設計も、要件をAIが受け取りプロトタイプを自動作成。
⸻
【第4段階:アプリケーションの全体設計から初期プロトタイプ自動生成(2028年~2030年)】
•アプリケーション全体の要件定義やビジネスロジックを自然言語で指定すると、AIがアーキテクチャ選定から初期プロトタイプ生成まで対応。
•開発者の役割はプロトタイプ検証・調整・デバッグが中心となる。
• 多くの標準的なシステム開発では、開発期間が大幅に短縮される。
⸻
【第5段階:AIによる自律的アプリケーション構築と運用保守(2030年~2033年)】
•自然言語または口頭での依頼だけで、要件定義・設計・実装・運用までAIが自律的に行う。
• 実行環境の自動構築(クラウド環境やインフラの自動調整)まで含めてAIが担当。
•AIはフィードバックをもとに、改善・改修・自動アップデートを実施。
⸻
【第6段階:概念や意図のみで動的にシステムが生成される状態(2033年~2037年)】
• 「こうしたい」「こうあればいいな」という抽象的・概念的な願いをAIが完全に理解し、システム全体が即座に動的に生成される。
•開発者の役割はAIの生成結果を最小限のチェック、倫理的監視、法的責任の判断に限定される。
•システムはリアルタイムに利用者の要望を把握し、動的に再構成や最適化を行い続ける。
⸻
【最終段階:願っただけで全てがすぐに叶う状態(2037年以降)】
• 完全に人間の意図・願望のみでソフトウェアシステムが瞬時に具現化される世界。
•AIが人間の思考・感情・状況を正確に読み取り、意識的な操作や指示を必要としない。
•現実世界との統合(物理環境への影響・IoTデバイス・ロボティクスとの連動)が完全に実現される。
• 開発という概念自体が消滅し、人間の願望と現実の境界が事実上消失する状態。
⸻