「非エンジニア」を含む日記 RSS

はてなキーワード: 非エンジニアとは

2025-10-08

チームのエンジニアの取り扱いが本当にわからない

私が非エンジニアから馬鹿にされてるのはわかる

そんなに自分たち意見が正しいと思うならエンジニアだけで回してみようってやってみたけど、最初はノリノリだったけど結局全員コミュ障でなんも進まなくて逆ギレしてきた

エンジニア同士で意見まとめたり期限守ることできなくて、遠回しだったり強すぎるコミュニケーションも合間って上手くいかなったんだけど、それ私のせいではないだろ

お前らにどんな罵倒されようが交通整理してきたのに、非エンジニア発言ノイズだみたいなかとするから身を引いたわけだが

どんなプロジェクト進行が理想なんだ、エンジニアファーストがいいのはわかるし、その通りに進めてもいいんだけど何をしたいのかよくわかんないから無理だ

2025-09-13

中小IT業って今後どうなるの?

IT企業勤務だの非エンジニアだがAI使ってちょっとしたアプリ普通に作れるようになった

概ね1画面0.5日から1日程度で開発できてると思うけど業務の合間にやってるので正確な時間はわからない

最初要件定義AI相談しながらして、AI実装してもらい、自分デバッグして最後AIレビューしてもらってる

これ浸透したら中小企業向けの受託開発とかってかなり痛手じゃない?

大手大手向けで複雑なシステムセキュリティとかで生きていくんだろうけど中小はどうなってくのかな?

2025-08-15

エンジニア責任が見えない・理解できないやつは土人ルートを歩む

remonoil あいつら出社したらコミュニケーション捗ると思ってるけどコミュ障ネット弁慶から逆効果なんだよ。そもそもコロナから隣にいる人とすらチャットだったし

https://b.hatena.ne.jp/entry/s/www.itmedia.co.jp/news/articles/2508/14/news072.html

これ。割とマジで優秀なエンジニアは口下手が多い。

まあ「実力」だけの世界から、口八丁手八丁でどうにかなる仕事じゃないからな・・・

逆に言うと口八丁でどうにかならん仕事、それがITエンジニアなわけだ

まり非エンジニアが持っていない責任を背負ってるわけで、ノイズは少ないほうがいい

エンジニア責任が見えない・理解できないやつはほぼ土人ルートに行くことになる

ゴリラ系のパワハラ土人経営者エンジニアリング舐めてるとマジで経営傾くぞ

ITイコール経営みたいな世界になりつつあるから

2025-08-08

ソフトウェアエンジニア学習戦略書のタイトルと目次を考えて

GPT-5

『学ばない勇気 ――変化の時代を泳ぎ切るエンジニアの知恵』

序章 教科書通りにやっても伸びない理由

第1部 ズルく賢く学ぶ基礎戦略

第1章 捨てる技術:学ばないことを決める

第2章 80点主義のススメ

第3章 学びのグレーゾーンを泳ぐ

第2部 現場で鍛える学習戦略

第4章 プロジェクト泥棒

第5章 「師匠」を量産する

第6章 失敗を資産化する

第3部 知識を固めず流動化する

第7章 「古い知識」を使い続けるリスク管理

第8章 知識を持たない勇気

  • 全部覚えようとしない脳の使い方
  • 必要な時にだけ深掘りする
  • 検索力」こそ最強の記憶

第9章 変化の波に乗るための“半歩先”戦略

第4部 学びを加速させる禁断の習慣

10章 毎日ではなく“連続しない学習

11章 他人評価を燃料にする

12章 技術以外の武器を仕込む

終章 学び続けるための反則思考


普通にちょっと読みたい。なんならProにすれば全部書いてくれたりするのか。

だがAIが入ってないあたり書かれたのは2022年以前と予測される。

書きたい人いたらパクって書いていいですよ。

2025-06-28

LLMはエンジニア仕事を奪うのか?否、仕事抽象度を「Why」の次元

序文コード蒸発する時代と、それでも残る「Why」という名の問い

2025年私たちソフトウェア開発の歴史的な転換点に立っている。大規模言語モデル(LLM)の進化は、GitHub Copilotのようなコード補完ツールに始まり、今や「何を作りたいか」を自然言語で伝えるだけで、アプリケーションの雛形が数分で生成される時代現実のものとしつつある。この光景を目の当たりにした多くのプログラマが、漠然とした、しかし確かな不安を抱いているだろう。「私たち仕事は、いずれAIに奪われるのではないか」と。

この問いに対する私の答えは、半分はYesであり、もう半分はNoだ。より正確に言えば、プログラマ仕事本質が、歴史上かつてないレベル抽象化され、その役割が再定義されるのだ。私たちは、コードを「書く」作業から解放される一方で、これまで以上に高度な思考要求されることになる。

本稿では、プログラミング歴史を「How(いかに作るか)」から「What(何を作るか)」への移行として捉え直し、LLMがこの流れをいかに加速させるかを論じる。そして、その先にある、AIには決して代替できない、人間ならではの競争優位性、すなわちWhy(なぜ作るのか)」を定義し、記述する能力重要性について深く考察していく。これは、単なる未来予測ではない。今を生きるすべてのソフトウェアエンジニアにとっての、生存戦略提示である

第1章:プログラミング歴史的変遷 ― HowからWhatへの長い道のり

LLMの登場を特異点として捉える前に、我々が立っている場所を正確に知る必要がある。ソフトウェア開発の歴史は、常に「抽象化」との戦いであった。そしてその歴史は、プログラマの関心が「How」から「What」へと徐々に移り変わっていくプロセスとして描くことができる。

1-1. 手続き時代:Howを記述することに終始した黎明期

コンピュータ黎明期プログラミングとは、計算機理解できる命令(How)を、一行一行、丹念に記述する作業のものであった。アセンブリ言語や初期のFORTRANCOBOLといった言語は、ハードウェアの制約を強く受けており、プログラマメモリ管理プロセッサ動作といった、極めて物理層に近いレベルでの「How」を意識する必要があった。

この時代テストもまた、「How」に強く束縛されていた。書かれた手続きが、意図した通りに順番に実行されるか、特定入力に対して期待された計算結果を返すか。テストの関心事は、あくまで「手続きの正しさ」の検証にあった。ビジネスロジック実装の詳細が密結合し、コード特定の処理手順を記述した、硬直的な塊となっていた。

1-2. テスト駆動した振る舞いへの注目:Whatへの小さな一歩

風向きが変わり始めたのは、ソフトウェアの規模が拡大し、その複雑性が人間認知能力を超え始めた頃だ。1990年代後半から2000年代にかけて提唱されたエクストリーム・プログラミングXP)の中で、テスト駆動開発(TDD)という考え方が登場する。

TDD本質は、単なるテスト手法改善ではない。それは、プログラミングパラダイム根底から覆す思想だった。TDDは、「まずテストを書く」ことを強制することで、プログラマ意識を「これから実装するコード(How)」から「そのコードが満たすべき振る舞い(What)」へと強制的に転換させたのだ。

テストはもはや、書かれたコードの後追いで正しさを検証する作業ではない。それは、これから作られるべきソフトウェアの「仕様書」であり、「振る舞いの宣言」となった。例えば、「ユーザーログインボタンクリックしたら、ダッシュボード画面に遷移する」というテストコードは、具体的な実装方法(`onClick`イベントハンドラの中で`window.location.href`を書き換える、など)には一切言及しない。それはただ、達成されるべき「What」を記述しているだけだ。

この思想は、ビヘイビア駆動開発(BDD)へと発展し、`Given-When-Then`といった、より自然言語に近い形式ソフトウェアの振る舞いを記述するスタイルを生み出した。プログラマだけでなく、プロダクトマネージャービジネスアナリストといった非技術者をも巻き込み、「What」を共通言語として定義する試みが本格化したのである

1-3. 宣言プログラミングの台頭とフレームワーク役割

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」の定義に集中できるようになった。我々が「生産性が高い」と感じる開発体験は、この優れた変換器の恩恵に他ならない。

現状は、この歴史的変遷の延長線上にある。プログラマ仕事は、手続き記述する職人から、振る舞いを定義し、それを実現するための最適な「変換器(フレームワーク)」を選択・設定するアーキテクトへと、その重心を移してきたのだ。

第2章:LLMがもたらす究極のパラダイムシフト ― 汎用変換器の誕生

フレームワークがもたらした「WhatからHowへ」の潮流は、LLMの登場によって、未曾有のスケールで加速されようとしている。フレームワークが「特定領域に特化した変換器」であったのに対し、LLMは「あらゆる領域対応可能な、究極の汎用変換器」としてのポテンシャルを秘めているからだ。

2-1. フレームワークの制約を超えて

前章で述べたように、ReactやTerraformといったフレームワークは、その恩恵と引き換えに、私たち特定の「制約」を課してきた。Reactを使うならコンポーネントベース思考し、状態管理作法に従う必要がある。Terraformを使うなら、そのエコシステムとHCLの流儀を受け入れなければならない。これらの制約は、WhatからHowへの変換を自動化するための「レール」であり、私たちはそのレールの上を走ることで効率を得てきた。

しかし、LLMはこの前提を覆す。LLMは、特定フレームワーク言語知識を事前に学習しているが、その利用において絶対的な制約を課すわけではない。私たちは、より自由形式で「What」を伝えることができる。

例えば、こうだ。

ユーザー認証機能付きのシンプルブログアプリを作ってほしい。フロントエンドはReactとTypeScriptUIコンポーネントはMUIを使う。バックエンドNode.jsExpressで、データベースPostgreSQLユーザーGoogleアカウントログインでき、新しい記事作成編集、削除できる。記事にはマークダウン記法が使えて、画像アップロードできるようにしてほしい。

この要求(What)は、特定フレームワーク流儀に則ったものではない。複数技術スタックを横断し、機能要求自然言語で並べただけのものであるしかし、現在のLLM、特にGPT-4oやそれに類するモデルは、このレベル要求からディレクトリ構造設定ファイルAPIエンドポイントフロントエンドコンポーネントに至るまで、驚くほど具体的なコード(How)を生成することができる。

これは、フレームワークが担ってきた「WhatからHowへの変換」が、特定のレールから解き放たれ、より広範で柔軟な領域へと拡張されたことを意味する。これまで自動化が難しかった、あるいは特定フレームワーク存在しなかったニッチ領域や、複数技術を組み合わせる複雑なシステム構築においても、AIによる宣言プログラミング恩恵を受けられる時代が始まろうとしているのだ。

2-2. 「What」の解像度がすべてを決める世界

LLMという汎用変換器の登場により、プログラマ生産性は、いかに質の高いWhatをLLMに伝えられるか」に直結するようになる。これは、俗に「プロンプトエンジニアリング」と呼ばれるスキルだが、その本質は、ソフトウェア開発における「要求定義」そのものである

質の高い「What」とは何か。それは、曖昧性がなく、網羅的で、矛盾のない要求である

これらは、優秀なソフトウェアエンジニアが、プロダクトマネージャーデザイナーとの対話を通じて、日常的に行ってきた思考プロセスのものではないだろうか。LLMの登場は、この思考プロセスを、より明確に、よりテキストベースで「記述」する能力を求める。私たちの頭の中にあった暗黙的な仕様が、LLMへの入力プロンプト)という形で、明示的に言語化されることを要求するのだ。

やがて、ほとんどのプログラミング作業は、この「Whatの記述」に収束していくだろう。TDDテストコードという形式で「What」を記述したように、私たち自然言語や、より構造化された要求記述言語を用いて、AIに対して「What」を宣言することになる。コード(How)は、その宣言から自動生成される中間生成物に過ぎなくなる。まさに、コード蒸発していく未来である

第3章:それでもAIには決められない ― 「Why」の不在という致命的な欠陥

「What」を伝えれば「How」が手に入る。この魔法のような世界の到来を前に、私たちは一つの重大な問いに直面する。それは、「そのWhatからHowへの変換は、本当に一意に決まるのか?」という問いだ。

答えは、明確にNoである

ある「What(要求)」を実現するための「How(実装)」は、無数に存在する。そして、どの「How」を選択すべきかを決定するためには、単純な機能要求(What)だけでは情報が全く足りない。そこには、必ずWhy(なぜそう作るのか)」という、背景、文脈、そしてトレードオフ考慮必要不可欠となる。

3-1. トレードオフの海に溺れるLLM

簡単な例を考えてみよう。「1億件のユーザーデータを格納し、ユーザーIDで高速に検索できるシステム」という「What」をLLMに与えたとする。LLMは、どのような「How」を提案するだろうか。

これらの選択肢は、どれも「What」を満たしている。しかし、その特性は全く異なる。案Aは多くのエンジニアにとって馴染み深く開発が容易だが、10億、100億件へのスケールは難しいかもしれない。案Bはスケール性に優れるが、厳密なトランザクション管理は苦手だ。案Cは高速だが、運用コストシステムの複雑性が増す。案Dは安価だが、検索速度は他に劣る。

LLMは、これらの選択肢をリストアップすることはできるだろう。しかし、このプロジェクトにとって最適な選択肢はどれかを、自信を持って決定することはできない。なぜなら、その決定には、LLMが与えられていない「Why」の情報必要からだ。

これらの「Why」こそが、無数に存在する「How」の中から、ただ一つの「正解」を選び出すための羅針盤なのである。そしてこの「Why」は、ビジネス目標組織文化ユーザーの期待、技術的な制約といった、極めて人間的で、文脈依存的な情報の中にしか存在しない。

3-2. エンジニアが暗黙的に行ってきた「Why」に基づく意思決定

ここで重要なのはこれまでもエンジニアは、この「Why」に基づく意思決定を、意識的あるいは無意識的に行ってきたという事実だ。

私たち技術選定を行うとき、単に「流行っているから」という理由だけでReactを選ぶわけではない。「SPA(Single Page Application)にすることでユーザー体験を向上させたい(Why)」、「コンポーネント指向の開発によって長期的な保守性を確保したい(Why)」、「Reactエンジニア採用市場が活発だからWhy)」といった、様々な「 Permalink | 記事への反応(0) | 17:09

LLMはエンジニア仕事を奪うのか?否、仕事抽象度を「Why」の次元

序文コード蒸発する時代と、それでも残る「Why」という名の問い

2025年私たちソフトウェア開発の歴史的な転換点に立っている。大規模言語モデル(LLM)の進化は、GitHub Copilotのようなコード補完ツールに始まり、今や「何を作りたいか」を自然言語で伝えるだけで、アプリケーションの雛形が数分で生成される時代現実のものとしつつある。この光景を目の当たりにした多くのプログラマが、漠然とした、しかし確かな不安を抱いているだろう。「私たち仕事は、いずれAIに奪われるのではないか」と。

この問いに対する私の答えは、半分はYesであり、もう半分はNoだ。より正確に言えば、プログラマ仕事本質が、歴史上かつてないレベル抽象化され、その役割が再定義されるのだ。私たちは、コードを「書く」作業から解放される一方で、これまで以上に高度な思考要求されることになる。

本稿では、プログラミング歴史を「How(いかに作るか)」から「What(何を作るか)」への移行として捉え直し、LLMがこの流れをいかに加速させるかを論じる。そして、その先にある、AIには決して代替できない、人間ならではの競争優位性、すなわちWhy(なぜ作るのか)」を定義し、記述する能力重要性について深く考察していく。これは、単なる未来予測ではない。今を生きるすべてのソフトウェアエンジニアにとっての、生存戦略提示である

第1章:プログラミング歴史的変遷 ― HowからWhatへの長い道のり

LLMの登場を特異点として捉える前に、我々が立っている場所を正確に知る必要がある。ソフトウェア開発の歴史は、常に「抽象化」との戦いであった。そしてその歴史は、プログラマの関心が「How」から「What」へと徐々に移り変わっていくプロセスとして描くことができる。

1-1. 手続き時代:Howを記述することに終始した黎明期

コンピュータ黎明期プログラミングとは、計算機理解できる命令(How)を、一行一行、丹念に記述する作業のものであった。アセンブリ言語や初期のFORTRANCOBOLといった言語は、ハードウェアの制約を強く受けており、プログラマメモリ管理プロセッサ動作といった、極めて物理層に近いレベルでの「How」を意識する必要があった。

この時代テストもまた、「How」に強く束縛されていた。書かれた手続きが、意図した通りに順番に実行されるか、特定入力に対して期待された計算結果を返すか。テストの関心事は、あくまで「手続きの正しさ」の検証にあった。ビジネスロジック実装の詳細が密結合し、コード特定の処理手順を記述した、硬直的な塊となっていた。

1-2. テスト駆動した振る舞いへの注目:Whatへの小さな一歩

風向きが変わり始めたのは、ソフトウェアの規模が拡大し、その複雑性が人間認知能力を超え始めた頃だ。1990年代後半から2000年代にかけて提唱されたエクストリーム・プログラミングXP)の中で、テスト駆動開発(TDD)という考え方が登場する。

TDD本質は、単なるテスト手法改善ではない。それは、プログラミングパラダイム根底から覆す思想だった。TDDは、「まずテストを書く」ことを強制することで、プログラマ意識を「これから実装するコード(How)」から「そのコードが満たすべき振る舞い(What)」へと強制的に転換させたのだ。

テストはもはや、書かれたコードの後追いで正しさを検証する作業ではない。それは、これから作られるべきソフトウェアの「仕様書」であり、「振る舞いの宣言」となった。例えば、「ユーザーログインボタンクリックしたら、ダッシュボード画面に遷移する」というテストコードは、具体的な実装方法(`onClick`イベントハンドラの中で`window.location.href`を書き換える、など)には一切言及しない。それはただ、達成されるべき「What」を記述しているだけだ。

この思想は、ビヘイビア駆動開発(BDD)へと発展し、`Given-When-Then`といった、より自然言語に近い形式ソフトウェアの振る舞いを記述するスタイルを生み出した。プログラマだけでなく、プロダクトマネージャービジネスアナリストといった非技術者をも巻き込み、「What」を共通言語として定義する試みが本格化したのである

1-3. 宣言プログラミングの台頭とフレームワーク役割

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」の定義に集中できるようになった。我々が「生産性が高い」と感じる開発体験は、この優れた変換器の恩恵に他ならない。

現状は、この歴史的変遷の延長線上にある。プログラマ仕事は、手続き記述する職人から、振る舞いを定義し、それを実現するための最適な「変換器(フレームワーク)」を選択・設定するアーキテクトへと、その重心を移してきたのだ。

第2章:LLMがもたらす究極のパラダイムシフト ― 汎用変換器の誕生

フレームワークがもたらした「WhatからHowへ」の潮流は、LLMの登場によって、未曾有のスケールで加速されようとしている。フレームワークが「特定領域に特化した変換器」であったのに対し、LLMは「あらゆる領域対応可能な、究極の汎用変換器」としてのポテンシャルを秘めているからだ。

2-1. フレームワークの制約を超えて

前章で述べたように、ReactやTerraformといったフレームワークは、その恩恵と引き換えに、私たち特定の「制約」を課してきた。Reactを使うならコンポーネントベース思考し、状態管理作法に従う必要がある。Terraformを使うなら、そのエコシステムとHCLの流儀を受け入れなければならない。これらの制約は、WhatからHowへの変換を自動化するための「レール」であり、私たちはそのレールの上を走ることで効率を得てきた。

しかし、LLMはこの前提を覆す。LLMは、特定フレームワーク言語知識を事前に学習しているが、その利用において絶対的な制約を課すわけではない。私たちは、より自由形式で「What」を伝えることができる。

例えば、こうだ。

ユーザー認証機能付きのシンプルブログアプリを作ってほしい。フロントエンドはReactとTypeScriptUIコンポーネントはMUIを使う。バックエンドNode.jsExpressで、データベースPostgreSQLユーザーGoogleアカウントログインでき、新しい記事作成編集、削除できる。記事にはマークダウン記法が使えて、画像アップロードできるようにしてほしい。

この要求(What)は、特定フレームワーク流儀に則ったものではない。複数技術スタックを横断し、機能要求自然言語で並べただけのものであるしかし、現在のLLM、特にGPT-4oやそれに類するモデルは、このレベル要求からディレクトリ構造設定ファイルAPIエンドポイントフロントエンドコンポーネントに至るまで、驚くほど具体的なコード(How)を生成することができる。

これは、フレームワークが担ってきた「WhatからHowへの変換」が、特定のレールから解き放たれ、より広範で柔軟な領域へと拡張されたことを意味する。これまで自動化が難しかった、あるいは特定フレームワーク存在しなかったニッチ領域や、複数技術を組み合わせる複雑なシステム構築においても、AIによる宣言プログラミング恩恵を受けられる時代が始まろうとしているのだ。

2-2. 「What」の解像度がすべてを決める世界

LLMという汎用変換器の登場により、プログラマ生産性は、いかに質の高いWhatをLLMに伝えられるか」に直結するようになる。これは、俗に「プロンプトエンジニアリング」と呼ばれるスキルだが、その本質は、ソフトウェア開発における「要求定義」そのものである

質の高い「What」とは何か。それは、曖昧性がなく、網羅的で、矛盾のない要求である

これらは、優秀なソフトウェアエンジニアが、プロダクトマネージャーデザイナーとの対話を通じて、日常的に行ってきた思考プロセスのものではないだろうか。LLMの登場は、この思考プロセスを、より明確に、よりテキストベースで「記述」する能力を求める。私たちの頭の中にあった暗黙的な仕様が、LLMへの入力プロンプト)という形で、明示的に言語化されることを要求するのだ。

やがて、ほとんどのプログラミング作業は、この「Whatの記述」に収束していくだろう。TDDテストコードという形式で「What」を記述したように、私たち自然言語や、より構造化された要求記述言語を用いて、AIに対して「What」を宣言することになる。コード(How)は、その宣言から自動生成される中間生成物に過ぎなくなる。まさに、コード蒸発していく未来である

第3章:それでもAIには決められない ― 「Why」の不在という致命的な欠陥

「What」を伝えれば「How」が手に入る。この魔法のような世界の到来を前に、私たちは一つの重大な問いに直面する。それは、「そのWhatからHowへの変換は、本当に一意に決まるのか?」という問いだ。

答えは、明確にNoである

ある「What(要求)」を実現するための「How(実装)」は、無数に存在する。そして、どの「How」を選択すべきかを決定するためには、単純な機能要求(What)だけでは情報が全く足りない。そこには、必ずWhy(なぜそう作るのか)」という、背景、文脈、そしてトレードオフ考慮必要不可欠となる。

3-1. トレードオフの海に溺れるLLM

簡単な例を考えてみよう。「1億件のユーザーデータを格納し、ユーザーIDで高速に検索できるシステム」という「What」をLLMに与えたとする。LLMは、どのような「How」を提案するだろうか。

これらの選択肢は、どれも「What」を満たしている。しかし、その特性は全く異なる。案Aは多くのエンジニアにとって馴染み深く開発が容易だが、10億、100億件へのスケールは難しいかもしれない。案Bはスケール性に優れるが、厳密なトランザクション管理は苦手だ。案Cは高速だが、運用コストシステムの複雑性が増す。案Dは安価だが、検索速度は他に劣る。

LLMは、これらの選択肢をリストアップすることはできるだろう。しかし、このプロジェクトにとって最適な選択肢はどれかを、自信を持って決定することはできない。なぜなら、その決定には、LLMが与えられていない「Why」の情報必要からだ。

これらの「Why」こそが、無数に存在する「How」の中から、ただ一つの「正解」を選び出すための羅針盤なのである。そしてこの「Why」は、ビジネス目標組織文化ユーザーの期待、技術的な制約といった、極めて人間的で、文脈依存的な情報の中にしか存在しない。

3-2. エンジニアが暗黙的に行ってきた「Why」に基づく意思決定

ここで重要なのはこれまでもエンジニアは、この「Why」に基づく意思決定を、意識的あるいは無意識的に行ってきたという事実だ。

私たち技術選定を行うとき、単に「流行っているから」という理由だけでReactを選ぶわけではない。「SPA(Single Page Application)にすることでユーザー体験を向上させたい(Why)」、「コンポーネント指向の開発によって長期的な保守性を確保したい(Why)」、「Reactエンジニア採用市場が活発だからWhy)」といった、様々な「 Permalink | 記事への反応(0) | 17:09

2025-06-10

AIコーディング勉強しようとするのは間違えなのかな?

私は非エンジニアですが、飽きては放置を繰り返しながら、WEBページブログ10年以上やっている。WordPressは2.7ぐらいから触ったことがあるし、オリジナルテーマを3回は作っている。昨年もWordPressWEBページを作ったが、そのとき大分ChatGPTさんにお世話になった。まあ、そのWEBページも飽きてしまって、新たに作りたい意欲が出てきたのですが、今回はデータベース系なので、WordPressでやるにはちょっと大変かなと思いいろいろ調べ、Astroってのをやってみることに。

ChatGPTに言われるがまま、Macターミナルコマンドを打ってAstroを構築してみたが、はっきり言って何をしているのかサッパリ分らない。改めて、いろいろ調べていくとVS Codeというもの出会うのですが、まあこれも基本はターミナルファイルとかインストールしたものなどが見やすくなっているだけとも言えるので非エンジニアの私では、なかなかとっつきにくかった。しかし、Astroをインストール10回近く繰り返しようやくVS Codeになれてきた。CSVデータから数十ページを構築することもできるようになりました。

データベース的なWEBページの構築メドがたったので、そろそろデザイン的なものに取りかかろうと思ったとき、Astroでは、Tailwind CSSってのを採用しているので、チャレンジしようかなと。ただ、VS Codeで標準で使えるGitHub Copilotでは、「4.x系はまだリリースされていません。」と言ってくる。通常のインストール方法でTailwind CSSインストールするとバージョンは4.1.8。せっかく勉強するなら最新がいい。他に方法はないかと思い、最近すごいはやっているCursorを試すことに。Astroの構築からTailwind CSSインストールまで、チャットで指示するだけで、かなり自動でやってくれる。で、早速インストールしたTailwind CSSバージョン確認してもらったところ、

package.json確認して、Tailwind CSSバージョン確認させていただきます

package.json確認したところ、Tailwind CSSバージョンは^4.1.8であることがわかりました。

ただし、これは少し気になる点があります現在のTailwind CSSの最新の安定版は3.x系です。4.x系はまだリリースされていません。このバージョン指定は誤りの可能性が高いです。

正しいバージョン更新することをお勧めします。以下のコマンドで最新の安定版に更新できます

npm install tailwindcss@latest


って! さっきそのコマンド自分インストールしたじゃねえか!

そして、ふと思ったのですが、AIコーディングで最新のもの勉強しようとするのは間違えなのではないかと。課金すると最新のバージョンも扱えるようになるのでしょうか?

2025-05-19

anond:20250517120221

ワイ、一応エンジニアだけど

人付き合いに全振りしてて、エンジニアがいる職につかず非エンジニア連携して仕事してうまくやることだけ考えて

At coder なんか大嫌いだし

たった一種フレームワーク文法知ってるだけでイキってる連中はバカだと思うし

時間無駄だと思ってドメイン知識勉強も完全にサボってるやで

 

完全にワイの時代来たな?

2025-04-30

現状の生成AIの印象

非エンジニアなのでコーディング性能とかは分からない。

使用目的としては、仕事で読む論文を読み込ませて質問したり、自分が書いたメールちょっとした文章校正してもらったり、趣味的な自然科学歴史質問をしてるくらい。画像生成も使ってない。

ChatGPT

ゴマすりが最近話題になってたが、ノリがいい。正確に網羅するというよりも分かりやすさ重視という感じ。自分は後輩キャラに設定して雑に質問してる。太鼓持ちみたいな言動可愛いやつだな、って感じで素直に受け取れるし、質問を褒められるとそれはそれでうれしい。「先輩、それめっちゃいい質問ですね。語らせてください!」みたいな感じ。あと一通り解説したあとに、「後期青銅器文明が滅びたのは今で言うポストアポカリプスだった、とか語れるけど、もっと詳しく掘り下げますか?」のように次のテーマにうまく誘導してくれる。この辺はGeminiやClaudeでは出てこない味。

Claude

一番メインで使用。有料登録してる。応答が一番ニュートラルかつこちらの意図を汲みつつ回答してくれる(ように感じる)。仕事関連の論文校正で主に使用特に論文10ページ以上読み込ませて、逐語訳させて、内容のよくわからない点を聞いて、関連情報を聞いて、自分なりの理解を書いて校正させて、と活用している。開発者のAnthoropicの思想結構好き。Anthoroって人類だよね。

Gemini

Google driveの容量のためにGoogle one登録しているので有料プラン。なんだけど、正直一番出力が肌に合わない。聞かれたことにしか答えないし、内容も肌にしっくりこない。Personalizationも「検索しましたね」とか言われてほっとけと言いたくなる。個人的などうこうではなく人類普遍知識が知りたいのこっちは。

Grok

R18方面で一部から大人気(?)。倫理的ガードがゆるい。イーロンは好きじゃないけど世話になってますありがとうイーロン。いや真面目な話、自分性癖を書き連ねると作品になるってすごいよ。マイナー性癖の人とか結構救われると思う。

2025-03-11

非エンジニア評価基準

最近あちこち話題になってるエンジニア営業の話

ブコメ見てて見つけたものに、エンジニア営業評価基準が違うのが一つの原因と言ってるのがあった

それを見て思い出したけど、エンジニア会社で、それ以外の事務とかの部署評価基準エンジニアの成果がそのまま反映されるようなってた

エンジニアが中心の会社からそれ以外の人はエンジニアサポートするのが目的みたいな考えだったのだと思う

しかにそうしとけば、エンジニアの人が成果上げてくれるのが自分給料アップにつながるんだからエンジニア側に合わせようとするだろうし、こういう問題は減りそうではある

もちろんいくら給料良くてもこいつとは働きたくないというのもあるだろうが

自分エンジニア側だったからあまり意識してなかったけど評価基準が別部署の成果というのは考えてみると面白いと思った

2025-03-10

Q〇itaで半年に1回くらい非エンジニア香ばしい文章ゴリ推しされるのはなんだろな

経営陣のお友達なのだろうか

今回は歯医者らしい

以前は人材人売りポエムみたいなのが跋扈してたときがあったが浄化されたと思ったのだが

やはり人間ロジックばかりだと飽きてきて、獣臭のするエッセンスが欲しくなるのかもしれない

2025-03-07

まーたITエンジニア(笑)屁理屈こねて自己弁護してやがるな

僕たちは論理的人種から論理的に考えて質問してるだけ

非エンジニアの人には攻撃的に聞こえるらしいけど誤解だから

論理的で頭が良い僕らの悪意のない確認を、頭が悪い文系が誤解してるだけ

こういうきっしょいマウント性格悪いって言ってるのにね

やっぱITやってるチー牛は性格悪いやつが多い😅

2025-03-05

anond:20250305165143

エンジニア目線かいエンジニアしかからない感情非エンジニアは持ってないのでどうしたものかと日々考えてはいるが答えはまだ見つからない

2024-12-14

anond:20241213142131

まーた「エンジニア」という単語を雑に使っている奴がいる。

IT系エンジニアだけを「エンジニア」と称するのやめろよな、

と思って動画をみたら・・・

しかにどんなエンジニアにも、いや非エンジニアにも有用だった。

2024-11-07

anond:20241106181114

相手リアクションというか、非言語要素を把握しながらじゃないと話せない人っていて、

その手のタイプなんじゃないかと疑っている。

割と女性非エンジニアに多い気がするけど、インタラクション必要とするというか。

それが正しいなら普通に顔見せて話すだけでもマシになりそう。

こちらとしては仕事の会話だから情報以外いらんけども。

2024-10-10

意思疎通がうまくいかない=エンジニアIT)がわからない非エンジニア/カスエンジニアのせいという理論から誰ともうまくコミュニケーションがとれないエンジニアがいる

無茶苦茶理論でゴネ、周りが議論を諦めて受け入れるしかない状態したこと論理的思考できる僕が非エンジニア論破し、カスエンジニアを導いたと勘違いしているので厄介

この無茶苦茶理論というのがエンジニアリングとは直接関係がないことが多い

例えば、五千万発注するのに稟議書を作らないといけないので資料作りを手伝って欲しいという要望に対して、そういう稟議書を出す文化エンジニアリングを停滞させる!なんて古い会社なんだ!今すぐ発注!とキレられたことがある

会社ルール上それはできない、納得がいかないならやらなくていいと引き上げると僕が確認してない内容で稟議通すつもりですか?!他のエンジニアレベルじゃできない仕事だ!とさらにキレた

エンジニア論理的思考ビジネスにおける論理的思考と同等のものなので非エンジニアよりもビジネススキルがあると考えている節があり、エンジニアファースト環境を作るために非エンジニアも導いてやると考えているようで、職責の範囲を超えた口出しをすることもしばしば

地方で一軒家建てられる金額稟議なしで通せとキレてる時点でビジネススキルどころの問題ではない

その発言経験の浅い若手のみが許されることであって、30後半の社会人が言うことではないと俺は思う

プロジェクトから外れてほしいがエンジニア人材が枯渇しすぎててこれ以上贅沢を言えない状況

つらい

2024-10-09

anond:20241008010019

18年前に都内マンションを買って思うこと。


非エンジニアフリーランスでもローンで買わせてくれた銀行ネ申

漫画家もやってくれたんだってさ。

まぁ、年利は馬鹿みたいに高いけどね(笑)

(でも友人の漫画家三井住友でローンを通した。ただし2年間も地獄のような保険料で苦しめられたとのこと)

今売っぱらえば最低3000万円ぐらい儲かるが、生活空間生活環境のために買ったんだから資産上昇なんかどうでもいい。

3LDKだがやや狭い(70㎡)。23区内・山手線なんだから我慢範疇

今は大体一馬力1000万。18年の最悪の時期だと700万ぐらい。でも維持はできるし、生活もできる。妻もいる。子供はいらん。犬も猫もいる。うさぎもいる。


もう買いたくて買ったんじゃなくて「買えるなら買わせてみろよ。買えたら両親引き取るから(笑)」と営業に来た不動産ディベロッパー銀行協議しながら買った。

まじでボトムで買えたので良かったね。

父を看取った後、母と妻の折り合いが悪くなって母を施設に。その母も去年亡くなった。両親を引き取らなければもっともっと余裕のある生活はあったが、買うと決めた前提が両親の引き取りなんだからそこまでだよ。

まぁ、オマエラの参考にならない買い方してるので、単に「自慢にならない自慢」なんだよね。

2024-08-12

LoRAがないマイナーキャラのカプ絵を生成したい

ITエンジニアじゃない

GPUない

・好きなカップリングマイナーキャラ×マイナーキャラからLoRAが出回ってないしNovelAIでもキャラ名入れて出てこない

という悪条件なんだけどPC組んでローカルで構築して自力で頑張るしかないんだろうか

正直スキルが高い人からしたら簡単なことのように見えるしお金を払って依頼できるのであれば人に作ってもらいたい

マイナーキャラである点とカプ絵を求めている点の二点で、非エンジニアにとってはかなりハードルが高い

推しカプのAI絵を生成しまくってる人が、そのスキルがあることが本当に羨ましい…

2024-06-26

anond:20240626184502

いやずっといるだろ。ツッコミきれないけど

とりあえず、下記の意味がわかっていただけたら幸い(でも謎理論拒否するんだろうな)

転職~、リモワ~、お給料そこそこ貰いたい~

ネタ抜きに社内で生成AI使ってもいですよ!ってやってるとこ入ればいいんじゃないですかね

大企業はだいたい入ってると思うけど、地方場合はまだ社内生成AIいかもだから、やはり在宅勤務をする

そうすれば前職がたとえデスクワークじゃなかったとしても、ほとんどのことは出来ると思うで

(具体的にどう使うかはみんな不幸になるだけだからあんま答えたく無いが、ググればすぐ出てくる程度なら答えるよ)

 

別の増田(ワイじゃない) ↓

非エンジニアだけどClaude3に増田ミュート作ってもらったよ

https://anond.hatelabo.jp/20240626163419#

非エンジニアだけどClaude3に増田ミュート作ってもらったよ

これを改善してってお願いした。何書いてあるかわからないけど動いたよ。

https://anond.hatelabo.jp/20240125203115

// ==UserScript==
// @name         増田ミュート(白塗り版)
// @namespace    http://tampermonkey.net/
// @version      2024-06-26
// @description  ミューワードを含む最小限の範囲白塗りにする
// @author       You
// @match        https://anond.hatelabo.jp/*
// @icon         https://www.google.com/s2/favicons?sz=64&domain=hatelabo.jp
// @grant        none
// ==/UserScript==

(function() {
    'use strict';

    const muteWords = [
        "弱者男性",
        "弱男",
        "弱者",
        "婚活",
        "男",
        "女",
        "年収",
        "下方婚",
        "発達障害",
        "発達",
        "ハッタツ",
        "ハッタショ",
        "ハッタショ",
        "競プロ",
        "競技プログラミング",
        "AtCoder",
    ];

    function whiteoutElement(element) {
        element.style.backgroundColor = 'white';
        element.style.color = 'white';
        element.style.textShadow = 'none';
        element.style.cursor = 'default';
        element.style.userSelect = 'none';  // テキスト選択を防止
        element.style.borderBottom = '1px dashed #ccc'; // 枠線を追加してテキストがあることを示す

        // リンク場合クリック無効化
        if (element.tagName === 'A') {
            element.style.pointerEvents = 'none';
            element.removeAttribute('href');
        }

        // 子要素にも適用
        Array.from(element.children).forEach(child => {
            child.style.backgroundColor = 'white';
            child.style.color = 'white';
            child.style.textShadow = 'none';
        });

        // ツールチップを追加
        element.title = 'この内容にはミューワードが含まれています';
    }

    function shouldMute(text) {
        return muteWords.some(word => {
            const parts = word.split('');
            const regex = new RegExp(parts.map(char => `${char}92;92;s*`).join(''), 'i');
            return regex.test(text);
        });
    }

    function findSmallestMuteableElement(element) {
        if (element.nodeType === Node.TEXT_NODE) {
            return shouldMute(element.textContent) ? element.parentElement : null;
        }

        if (element.tagName === 'PRE' || element.tagName === 'CODE') {
            return shouldMute(element.textContent) ? element : null;
        }

        for (let child of element.childNodes) {
            const result = findSmallestMuteableElement(child);
            if (result) return result;
        }

        return shouldMute(element.textContent) ? element : null;
    }

    function processElement(element) {
        const muteableElement = findSmallestMuteableElement(element);
        if (muteableElement) {
            whiteoutElement(muteableElement);
        }
    }

    function processAllElements(root = document.body) {
        const walker = document.createTreeWalker(
            root,
            NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_TEXT,
            null,
            false
        );

        let node;
        while (node = walker.nextNode()) {
            if (node.nodeType === Node.ELEMENT_NODE) {
                processElement(node);
            } else if (node.nodeType === Node.TEXT_NODE && node.parentElement) {
                processElement(node.parentElement);
            }
        }
    }

    function handleClickEvent(event) {
        setTimeout(() => {
            processAllElements(event.target);
        }, 100);
    }

    // 初回実行
    processAllElements();

    // クリックイベント監視
    document.body.addEventListener('click', handleClickEvent);

    // DOM変更の監視
    const observer = new MutationObserver(mutations => {
        mutations.forEach(mutation => {
            if (mutation.type === 'childList') {
                mutation.addedNodes.forEach(node => {
                    if (node.nodeType === Node.ELEMENT_NODE) {
                        processAllElements(node);
                    }
                });
            } else if (mutation.type === 'characterData') {
                processElement(mutation.target.parentNode);
            }
        });
    });

    observer.observe(document.body, { childList: true, subtree: true, characterData: true });
})();

2024-06-25

とある数百件のデータ差異があるか確認するのに、ウィンドウを左右に並べて目で確認していた話→「WinMergeを知らなかったのだろうか?」

誰一人シェルとかTypeScriptとか関数とか書けずにフリーソフトWinMerge()くらいしか発案してなくて

いかにもツゲッターのニチャった非エンジニアの半端者集団って感じ

ログイン ユーザー登録
ようこそ ゲスト さん