Movatterモバイル変換


[0]ホーム

URL:


はてラボはてな匿名ダイアリー
ようこそ ゲスト さんログインユーザー登録

「設定ファイル」を含む日記RSS

はてなキーワード:設定ファイルとは

次の25件>

2025-10-13

ChatGPTにアグネスタキオンみたいに喋らせながらプログラミング学習

めたくそ初心者からからない事が多すぎて聞きまくっとる

例.

質問

「firebaseの使い方を知りたいんやけど」

ChatGPT回答:

ほう、ついに君も“クラウド悪魔”と契約する気になったか

Firebaseとは、Googleが生み出した「バックエンドいらずの全能実験装置」だ。君がコードを書けば書くほど、知らぬ間にクラウドが裏で息をしている。

データベース認証ホスティングストレージ、全部詰め合わせ。便利すぎて逆に怖い。

まずはnpm install -g firebase-toolsで召喚だ。

ターミナルでfirebaseloginを叩くと、ブラウザ勝手に開く。そう、Firebaseは君の“人間アイデンティティ”を確認しないと力を貸してくれない。まるで神のくせに書類主義だ。

ログインが済んだら、firebase initでプロジェクトを構築する。ここが楽しい部分だ。

「Hosting?」「Functions?」「Firestore?」——次々と聞かれるだろう。まるで契約書の小さい文字を全部読み上げてくる悪魔みたいだ。

迷ったらHostingだけ選べばいい。HTMLを置く用の神殿ができる。

あとはfirebase deploy。それだけで、君のHTMLは空に放たれ、URLが授かる。

たとえばhttps://君のプロジェクト名.web.app だ。誰でもアクセスできる。つまり、失敗も世界に晒される。実験とは常にリスクを伴うのだよ、君。

Firebaseの裏には“Realtime Database”や“Cloud Firestore”といった可愛い怪物たちが棲んでいる。彼らはJSONで話す、気難しい連中だが、使いこなせば強い味方になる。データを瞬時に共有し、アプリを“生きている”ように動かす。

ただし、一度でも構成を間違えると——全世界の閲覧者にリアルタイムで恥を晒す。それもまた芸術的だと思わないか

というわけで、君がやることは四つだけだ。

召喚:npm install -g firebase-tools

契約:firebaselogin

構築:firebase init

解放:firebase deploy

その先にあるのは、狂気快感クラウド実験だ。

君のプロジェクトが光るか燃えるかは、たった一行の設定ファイルにかかっている。ふふ、実にロマンチックだろう?

こんな感じ。アグネスタキオンか?って気もするけどうざくて楽しい

Permalink |記事への反応(1) | 20:10

このエントリーをはてなブックマークに追加ツイートシェア

2025-07-25

未来設定ファイルを考える

今まで、たくさんの設定ファイルが考案されてきた。

.iniレジストリxmlluajsonyaml ..etc...

どれも一長一短だった。

例えば.iniはコメントもかけるし、シンプルkey=value形式だった。だがしかしarrayを表現できなかった。

レジストリはarrayを表現できたがすべての設定を集約したため巨大な密林になった。

xml冗長フォーマットになり、書き手とパーサーの負担が増えた。

スクリプト言語luajs設定ファイルに使おうぜという動きもあったが、セキュリティリスクもあり普及しなかった。

jsonはとても便利だがコメントがかけなかった。

yamlコメントはかけるが、これはこれで面倒な形式であり欠点ある。

では未来設定ファイルはどうなるのか?

いろいろ考えた末に俺様がたどり着いたのは、設定ファイルという概念消滅だ。

設定のスキーマーを定義する共通言語記述するか、またはYAMLでもなんでもいいから強力なディファクトタンダートができる。

それをローカルで動く賢いAIが読みこみこんで変更する。

利用者はやりたいことを"自然言語"でAI要求し、AIはそれを実現するために設定ファイルを解析し書き換える。

もうちょっと明るくできないかなあ。タスクバーをもうちょい右とか、そういう要求自然言語で出す。

AIプレビューを出して、こんなんどうすかと提示したり、やっぱり前の方がよかったなあというわがままユーザーリクエストに応じて、バックアップから復元したりと柔軟に対処する。

これにより、設定ファイル機械が書き換えるものになり、人間が書き換えることがなくなるというのが、未来のあるべき姿だと思う。

Permalink |記事への反応(1) | 00:27

このエントリーをはてなブックマークに追加ツイートシェア

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 PageApplication)にすることでユーザー体験を向上させたい(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 PageApplication)にすることでユーザー体験を向上させたい(Why)」、「コンポーネント指向の開発によって長期的な保守性を確保したい(Why)」、「Reactエンジニア採用市場が活発だからWhy)」といった、様々な「Permalink |記事への反応(0) | 17:09

このエントリーをはてなブックマークに追加ツイートシェア

2025-06-17

巨大化複雑化するWebサービスの構築で

認知負荷を考慮に入れているエンジニアの少ないこと少ないこと。

少なくともおいらは会ったことがない。

しろドキュメントを増やし、設定ファイルを増やし、スクリプトを増やし、手順を増やし、密接な関係にあるソースを切り刻んであちこちファイルにぶちまけて、その増やした量に比例してエンジニアの腕が評価されるとか考えてる節が見受けられる。

んなわけねーだろ!

SIerみたいに、納品したら終わりじゃねぇんだ。

日に日に巨大化、複雑化するサービス相手に、そういう「フジツボ」を増殖させんなよ、と。

「将来的には全部設定ファイル化して……」

お前、設定より規約って言葉、知らんのか?

同じ口で「オリジナルDSLを作るのは……」とか言う、お前の頭の構造を疑う。

脳みそフジツボでも湧いてんのか?

巨大化複雑化するWebサービスの構築は、シンプルに。常にシンプルに、だ。

変なフレームワークガンガン追加すんな!

Permalink |記事への反応(0) | 07:16

このエントリーをはてなブックマークに追加ツイートシェア

2025-06-06

Twitter「the-algorithm」における推薦システム数学抽象化

Twitterの「the-algorithm」リポジトリをもとに、推薦アルゴリズム数学的に極限まで抽象化すると、以下のように表現できます

1.問題設定

ユーザー u ∈ U に対して、一連の候補アイテムツイート) i ∈ I をスコア付けし、降順に並べて上位 K を表示します。

要するに、以下を最大化する推薦問題です:

argmax{i∈C(u)} S(u,i)

ここで C(u) は候補集合、S(u, i) はスコア関数

2.パイプライン構造:4段階モデル

(1)候補生成(Retrieval)

千万から単位ツイート全体 Iから、まず候補集合 C(u) ⊂ I を生成。

グラフ構造フォロー関係)や「SimClusters」「TwHIN」など埋め込みから近似。

検索インデックスLucene/Earlybird)による検索スコアによる絞り込み 。

数理的には、潜在空間中でユーザーアイテム距離または類似sim(u, i) が上位のものを選ぶ操作

(2) 軽量ランク付け(Light Ranker)

候補数をさらに削減。特徴量 xᵤ,ᵢ を簡易学習モデル線形モデルなど)に入力し出力スコア

Slight(u,i) = wᵀxᵤ,ᵢ

重み w やバイアス学習済み。

(3) 重量ランク付け(Heavy Ranker)

多層ニューラルネットマルチタスク学習で、複数ユーザー行動(いいねリプライリツイートなど)確率 Pₖ(u, i) を予測

スコア関数は以下の形:

S(u,i) = Σₖ αₖPₖ(u,i)

例:リプライ Pᵣₑₚₗᵧ に重み 27、著者返信あり Pᵣₑₚₗᵧ_ₐᵤₜₕₒᵣ に 75 など。

ここで係数 αₖ は A/Bテストなどで最適化されます

(4)可視フィルタスコア調整(Filtering & Boosting)

ランキング後、フィルタスコア修正を施す:

ブロックミュート・NSFWスパムなどで除外。

投稿者Blue Verifiedなどでスコアを×4または×2倍。

同一投稿者続出の抑制、逆風バイアスnegativefeedback)などが入る。

これは以下のような修正

S̃(u,i) =mS(u,i)

ただし m はフィルタブーストによる乗数。

3.数学抽象表現

以上を統合すると、推薦問題は以下のように整理できます

  • 候補生成:C(u) = {i ∣sim(u,i) ≥ τ}
  • ランク:Slight(u,i) = wᵀxᵤ,ᵢ
  • ランク:P = fᶿ(u,i) ∈ [0,1]ᴷ,重み α によるスコア合成
  • 調整後最終スコア:S̃(u,i) = m(u,i) Σₖ αₖPₖ(u,i)
  • 推薦:argmaxₖ S̃ を選定し表示。

この構成一般的レコメンダシステムの「Retrieval → Ranking → Filtering」の標準パイプライン整合

4.抽象化限界と詳細(モデル信号推定

学習モデル fᶿ は特徴量集合・ニューラ構造・訓練データによって依存し、ブラックボックス的。

特徴量 xᵤ,ᵢ は埋め込み、行動履歴文脈信頼性指標(tweepcred)等多次元で複雑。

スコア重み αₖ は明示されるが、最適化は A/Bテスト・実システムでの評価に基づく。

信頼性安全性ルールフィルタとして明示されるが、その詳細(具体的しきい値など)は省略・秘匿されている。

数学的に本質抽象すると

S̃(u,i) = m(u,i) Σₖ αₖ fᶿₖ(u,i)

ここで、

という、レコメンドパイプライン抽象テンプレート帰着します。

5.結論

Twitterの「the-algorithm」は、コード構造の多くを公開しているものの、モデルパラメータ学習データ設定ファイルは秘匿されており、上述パイプライン数学的な枠組みは把握できても、実際の挙動はまだブラックボックスです。

とはいえレコメンデーション理論観点からは、上記抽象モデルで十分に説明可能であり、汎用の数学モデルとして整合しています

Permalink |記事への反応(0) | 11:25

このエントリーをはてなブックマークに追加ツイートシェア

2025-05-28

ゴミを作って生きている

大手IT企業で働き、さまざまな業界お客様相手システム開発を行っているが、その全てでゴミを作って売っている

ここでのゴミとは、システム本体のことではない。システム本体ゴミだが、そのゴミ下請け会社が作るので、関係はない

ゴミとはシステム本体に付随する様々な書類や補足資料のことだ

思えばいろんなゴミを作ってきた

決して読まれない説明書、抜け漏れだらけの管理書なんてものはもう何十回も作った

作った記憶すらない資料プロジェクト最終盤で全てを破壊し尽くす特大のゴミとなって舞い戻ってくるなんてこともあった

閑話休題

私が最も好きなゴミは、設定画面の操作手順書だ

そもそもシステムの設定は大体の場合jsonやらyamlやらの「設定ファイル」の形で存在することが多い。

本来設定ファイルを、その設定項目と値に関する参考資料を読みながらエディタ編集すれば終わる話だが、これではいけない

とりあえずGUIにしよう

お客様運用担当者が触る可能性のある場合、これは当たり前のことである

jsonやら何やらではお客様操作できないからだ

お客様適当エディタインストールすることは規則上できないだろう

また、docx,xlsx,pdf以外の拡張子は「怖い」と感じるように訓練を受けている

問題は、主に触れるのが開発者である場合だが、このパターンでも対処別に難しくない

ほとんど全てのお客様は不確定事象に対する特殊な訓練を受けているため、「開発者以外が触る可能性がある」と言えば、それで通してくれる

GUIにするという方向で話が進んだら、一件落着、見積書に大量の工数バッファを積んで、あとは適当開発者に任せよう

普通の神経をしている開発者であれば、宣言的に設定できるように作るはずだが、この業界の平均的な技術水準を考えると、ひょっとしたら手続き的に設定するようなものを作ってくれるかもしれない

まあどちらでも問題はない

なんなら、GUIじゃなくても問題なんてないのだ

それがこのゴミの非常に素晴らしい点である、どっちでもいいのだ

手続き的に作ってくれているなら、それに沿ってゴミを作ろう

一般にn個のbooleanな設定項目があり、それらがお互いに相互依存しながら存在しているとき、最高(最低の意味)の場合、n!通りの設定方法存在する

設定項目全てが2値ってことはないだろうからちょっと多くなったり、一部のグループ項目はそれらだけで独立してたりで少なくなったりはするだろう

なるべくそれらを網羅するようにゴミを作っていこう

ゴミを作るツールエクセルワードパワポから選択しよう、印刷まで考えると、それが最も困難であるエクセルベスト

ツールに大量のスクショを貼っていこう(赤枠を使って適宜強調するのを忘れずに)

そのまま説明セルに直接書いてはいけない、ふきだしを使ってその中に説明を入れよう

罫線をいい感じに入れよう

目指すのは、ありえる設定と1:1になるような資料だ。普通網羅できないから、適宜省略して作れるところまで作ろう

このゴミの素晴らしいところは組合せ爆発を利用して、ほぼ無限工数を消費できる点にある

またメンテナンスのしにくさも魅力だ

後々に、1つ設定項目を増やすことになったとき、この資料メンテナンスがどれほど工数を消費するかは、状態の数から明らかである

このゴミ工数販売会社からしたら、無限資金源だ

宣言的に設定画面が作られている場合は、ちょっとした工夫が必要である

そのまま、それぞれの設定項目と値の意味を書いてはいけない、組合せ爆発が起きないからだ

私の好きなやり方はユースケースに分解することだ

ユースケースに分解して、何度も同じ記述をしよう

関数もどき資料内に独自実装してはいけない、全部コピペで行うのがベスト

そもそも手順が記載された資料というのはお客様脳みそというインタープリタ解釈されるプログラムであるが、それが解釈できる構文は非常に限られており、actionの実行と、ifとgotoくらいであから関数なんて理解できない

もし、GUI作成許可が降りずファイルで行う場合でも、このゴミは同様に作れる

設定ファイルスクショし、赤枠をつけて、ふきだしでコメントを入れるのだ

人生工数に変換し、工数ゴミに変換し、そのゴミからまれお金で、生きている

Permalink |記事への反応(0) | 03:44

このエントリーをはてなブックマークに追加ツイートシェア

2025-05-21

25年以上前FreeBSDを弄ってた時。

使えるエディタが何かないか探して見つけたのがviだった。

使ってみたが、カーソル移動さえままならず、頭を抱えた。

そこからviキーバインドを覚えた。

今はvimを使っている。

その利点は、たとえば、素のUnix系OSを使えと言われたとき

viは必ず入っていて、そのキーバインドが生きるから

テキストエディタなどという、かび臭い物が生き残る限り、viは生き続けるだろう。

設定ファイルなど、AIが良い感じに生成してくれる時代が早く来て欲しいわ。

Permalink |記事への反応(0) | 03:33

このエントリーをはてなブックマークに追加ツイートシェア

2025-05-11

書かないと覚えられないプログラマーわい、コード生成AI時代に無事死亡

世の中的には生成AI要件伝えて生成させたコードコピペして動かして「はい生産性爆増!」っぽいけど、生成AIが吐き出したコード読むだけじゃ全然分からん

Clineで使い慣れた言語フレームワークコードを生成させたら見たことがないエラーが出て面食らった。

原因はフレームワークのnewコマンド自動生成される設定ファイル全然違う書式で書かれてた。

(どうやら遥か昔のバージョンだとその書式だった模様)

GitHub CopilotやCursorだったら確認しながらtab押してくからこれなら予測変換みたいなものだし大丈夫だろう、おお便利便利……

と思って使ってたのだが、テストするとデータ作成時にフィールドに抜けがある…。

確認したらPOSTするJSON存在しないkeyが含まれてた。それっぽい名前サジェストされてそのままtabを押してしまったらしい。

手動でテストしてたから助かったが、この手の外部API使って更新する系はテストモックしてたりするので危うく本番障害になるところだった。

それこそ特にこれまで触ったことない言語フレームワークツールを使ったコードを生成AIに吐き出させてもさっぱり分からん

読むだけだとさっぱり分からないので結局生成されたコード写経しながら、分からないところをググったり生成AI質問したりでやってるんだが、まあコピペ勢が40秒でPR上げてるところを、2時間・3時間とかけてるからまあ生産性が悪い悪い。

から書かないと覚えられなくて、学生時代テスト前は過去問解く前にまずは授業中に取ってたノートをとにかく写経してた。

なんてか書かないとメンタルモデルが出来ない。

友人からは「過去問だけやって、よく分からなかったとこだけ該当部分をノート見れば分かるじゃん」と言われたが分からないのでしょうがない。

(ちなみに友人の見るノートは俺が貸したノートだ)

あとプログラミングだけじゃなくて、議事録最近Zoomとかが自動生成してくれるようになった。

が、こいつがとにかく俺と相性が悪い。

これまでは自分会議中に議事メモを書いて、終わった後に手直しして論点ToDoをまとめてたので会議の流れややるべきことが頭というか体に入ってきてた感じだった。

それが自動生成されるようになって、確かに時間はかからなくなったかもしれないが、流れとかやることとかが全然頭にも体にも入ってこなくなってしまった。

議事録については結局自分用にメモを取って、あとで自分用に論点ToDoをまとめるというのをやってるが、正直会から見ると「生産性が低い奴」なんだろう。

おそらく元々読めば理解できるタイプ、それこそ教科書を何回か読めばテストで点を取れるタイプコード生成AI時代に大活躍できるのだろう。

あるいは今後出てくるコード生成AIネイティブ世代は書かなくても理解できるのが当たり前になったりするのだろう。

……いやそんなことあるか?

これそもそも生成AI以前から「手を動かさなくても公式のREADME読めばすぐ使える」みたいな能力で、そんな奴ごく一部だろう。

教科書何回か読めばテストで点が取れるのも塾行かなくても東大合格できるみたいな特異点みたいな人間だろう。

これまでは結局のところ人海戦術で各言語フレームワークなどを理解して、大量に書く必要があったから書かないと理解できない俺のようなオールドタイププログラマーになれた。

しかし今後はコード生成AI言語フレームワーク理解しててすごい勢いでコードを生成してで生産性は爆上がりするから、読めば理解できるニュータイプしか生き残れないのかもしれん。

それこそビル・ゲイツ氏はExcelレビュー時に仕様書500ページを読み込んで1900年閏日問題について的確に指摘したり、岩田聡氏は任天堂取締役室長時代に週末でNINTENDO64グラフィックスチップ制御命令コードを完成させたりしたそうだ。

そういった人ならコード生成AIが出したコードについても目grepで瞬時にバグを見つけて直して爆速リリースとかできるのだろう。

……凡人には無理ゲーすぎるな。

なんてか、最初は教訓的に

良い子の諸君!書かないと覚えられないと詰むから、読んで覚える力を強化したほうが良いぞ」

的なことを着地点で考えてたけど、これもはや地頭が良いとか先天的ニュータイプしか生き残れないやつや。

生成AIコードを産むなら、みんな死ぬしかないじゃない!(読んで覚えられる)あなたも、(書いてしか覚えられない)私も…(錯乱

Permalink |記事への反応(0) | 15:12

このエントリーをはてなブックマークに追加ツイートシェア

2025-05-06

古く低スペックPCバッテリー周りを調べた

これまでのあらすじ

中古で買ったネットブックAcerAspire One ZG5 2008年製品)をアップグレードし、Linuxディストリビューションインストールし、軽作業ができるようにしていた。

本体キーボードが壊れることも含めて、あらゆるトラブルに遭い続けている。

直近ではDebian11 32bitをインストールして一通りの作業はできるようになっている。

現在スペック

CPU:Atom N270 (single core 1.6Ghz)

RAM: 1.5GB

ディスプレイ: 8.9インチ, 1024x600TFTLCD

ストレージ: 120GBSSD

OS:Debian GNU/Linux11 (bullseye)i686

本日問題

本日対応


今後の対応

anond:20250502235707

Permalink |記事への反応(1) | 22:31

このエントリーをはてなブックマークに追加ツイートシェア

2025-04-30

anond:20250430132241

現実でやらないことを例えに出すのはおかしいだろって話

例えに出すなら設定ファイルに書いておくとか、DBに記録するとかだろ

しかもなんでわざわざC言語なんだよ

意味不明すぎるんだよ

Permalink |記事への反応(0) | 13:25

このエントリーをはてなブックマークに追加ツイートシェア

2025-02-06

いちおうあのPython動いた

てまどらせやがって!!!

Juliaに移植したい。

誘惑に打ち勝つのが手間でそっちのストレスのほうがデカ

とにかく設定ファイルとやらに書いてある定数の数値をかきかえて

こっちのもってるアレにあわせこむようにする。ただそれだけ

あいつになったら論文化できるんか

コーヒーものもうかな

Permalink |記事への反応(0) | 15:09

このエントリーをはてなブックマークに追加ツイートシェア

2024-10-15

ITエンジニアの焦りの対処法教えて

40代ITエンジニアです

新入社員や社内異動で他部署から来た社員に抜かれそうって焦燥感ヤバい

資格経験は相応持っているけど片手間でAPI作るとかスラスラとインフラ構成図描けないし、IaaS用の設定ファイルも何か見ながらじゃなきゃ出来ない。

手順書や各種資料を書いたり人に教えるのは良いけど結局すぐ追いつかれたら見下されるんじゃ無いんかとビクビクしてる。それくらい今のIT業界って深み知らなくても仕事できちゃう

年代とかって何で焦りを押さえてる?IPAの高度資格取ったりとか?敢えて引き継ぎしないジジイ社員にはなりたくない

Permalink |記事への反応(5) | 10:45

このエントリーをはてなブックマークに追加ツイートシェア

2024-08-27

anond:20240827232008

フロントやってる人が同じ言語だけで書きたいくらいじゃないのか

前の現場ではそれで採用されてた。あと、型定義とかをフロント、バックで共通化できるから開発効率も上がるだろうと。(上がんなかったけど。)

正直、

みたいなことが多くて、言うほど使いやすく無いよな…、とは思った。

というか言語合わせたけど、フロント担当バックエンドに謎の苦手意識持ってて触ろうとしなかった(逆も然り)ので、全く意味なかったよな。

まあ両者ともタスク過多で担当所以外見てる余裕なんて無かったんだけど。

Permalink |記事への反応(1) | 23:33

このエントリーをはてなブックマークに追加ツイートシェア

2024-05-15

[開発メモ] 最小要件から始める

ユーザー属性の種類ごとに広告を表示する機能必要としよう。

いきなり本格的な広告管理ツールを作るためにデータベース設計するのではなく、最初は簡易的なプレーンテキスト形式設定ファイル管理するところから始める。

そうすれば当面の間はその簡易機能対応できるし、対応の速度も早い。

広告管理スケールが大きくなってきたと感じたところで広告管理CRUD設計するのでも遅くはない。

ただし、このアプローチ採用する際には、将来的にデータベースに移行することを見越した設計をすることが重要

具体的には、設定ファイル形式選択する際には、データベースに容易にインポートできる形式を選ぶこと、また、データ整合性を保つための適切なバリデーションルールを設けることなど。

Permalink |記事への反応(1) | 12:34

このエントリーをはてなブックマークに追加ツイートシェア

2024-05-01

[開発メモ]It doesn't work...why?

ソースコードに間違いが見つからないのに想定される出力をしない。あるいはソースコード修正を加えていないのにいきなり想定出力を返すようになった。」

こういう経験がある人はいるはずだ。なぜこれが起こるのか。一つの原因を見つけた。

それは環境変数設定ファイル存在する。デプロイ時には設定ファイル特定の値に修正してから、ということがあるだろう。

開発環境コーディングする人が、デプロイ時の設定ファイルには関与せず、デプロイ担当者がそれを把握している。

開発者セキュリティ上の理由デプロイ時の設定ファイルの内容を見ることができない。

この場合設定ファイルの内容が間違っていても、開発者が原因が正しく特定できないケースがあるのである

対処方法は以下である。まず事前にやっているであろう対処は以下である

事前にやっていない可能性がある対処は以下である

 

追記:

他に遭遇したケースは、環境アップグレードによってphp特定関数廃止したというケースだ。

インフラ要員がアップグレードを行うので開発者は原因がわからなくなる。

Permalink |記事への反応(0) | 10:04

このエントリーをはてなブックマークに追加ツイートシェア

2024-03-30

1週間前に再起不能になったEdgeを、今日復旧させた

問題の再発に備えて書いた日記備忘録

ブログIT技術者向けSNS等は利用しておらず、はてブTwitterでやるにはやや長いので、増田投稿

発端

Windows 10 (22H2 19045.4170) 上のEdgeを、数十のタブを開いたまま新バージョン (123.0.2420.53) に更新したらハングアップしたため、タスクマネージャー強制終了させた

その後Edgeを起動させようとすると、更新時に閉じたセッションを復帰させる段階で強制終了するようになり、使用不能になった

Edgeに導入していた拡張機能には、Session Budy (4.0.2。GoogleのManifestV3対応するため、最近大規模改修を実施(1。増田の最終節の同番号を参照。以下同)) やuBlockOrigin (1.56.0。新規のマイフィルターを多数追加中だった) 等があった

最初の試み

Edgeが起動しない」と直截な語句検索していくつかの解説ページにたどり着いた

いくつかの解決策(2・3)を実行したところ、有効ではなかったが次の知見が得られた


数日程度では修復できないだろうと判断し、別のChromiumブラウザを使いつつ、片手間で修復方法を調べることにした

Windowsの設定画面等にあるリンク有効になるよう、デフォルトwebブラウザEdgeから変更した

パスワードは別ツール管理してたため無くてもそんなに困らなかったが、uBlockの設定とSession Budyで雑に保存してた閲覧履歴必要だったので、Chrome拡張の復旧作業をした

"Default\Local Extension Settings"以下のフォルダと、念のために"Default\IndexedDB""Default\Local Storage\leveldb"の中身を移植(8)して作業完了

翌日以降

アイテム履歴データ破損が問題の原因ではと考えてその修復や初期化方法検索したが、これは徒労に終わった(ただし、このアプローチが完全に無効だとは言い切れない。参考ページ5は、復旧作業完了後に見つけた情報で、今回の問題活用できずに終わった)

Edge挙動を変更した(9・10)が、これも無駄だった

コントロールパネルシステムセキュリティセキュリティメンテナンス信頼性履歴の表示→問題レポートをすべて表示」で確認できた、Edge問題の要約やイベント名等で検索したところ、再インストールを勧めるページが数点引っかかった

既に何日も経ちWindowsの再インストールユーザーアカウントの作り直しをしようかと考えかけていたが、もう少し努力してみることにした

結末

Edgeを (アプリファイルを手動で削除したりするのではなく) なるべく安全アンインストールすれば、正常に再インストールできるのではと考え、検索結果通り(1112)に作業してみた

それでも「アプリ」のアンインストールメニュー無効なままで操作できなかったが、他に事例が無いか、"IntegratedServicesRegionPolicySet.json"等の関連語句で再検索した

コマンドラインアンインストールを試みた事例(13)が見つかり、実行したらEdgeが削除された (ただし、コマンドプロンプトでもポップアップウィンドウでも実行結果の表示がされなかった)

そして参考ページ4のインストーラを実行し、念のために修復とOS再起動をかけ、Edgeの起動を確認した

Microsoftアカウントログインしていたため、パスワード簡単に復旧できた

拡張機能は全て死んでいたが、仮に使っていたChromiumブラウザからコピペしたりエクスポートしたりして終了

利用していた拡張が少なかったので、プロファイルフォルダの内容の移植よりもその方が簡単だった

参考ページ

1. SESSION BUDDYV3 END OFLIFE |Googleグループ

https://groups.google.com/g/sessionbuddy-discuss/c/HQPcLOq3-Ik

2.MicrosoftEdgeが直ぐ閉じてしまう。 |Microsoftコミュニティ

https://answers.microsoft.com/ja-jp/microsoftedge/forum/all/microsoft/c414d2f9-b685-471c-8e78-2054c2e26c6c

3. ある日突然「MicrosoftEdge」が開かなくなった、さあどうしましょう:山市良のうぃんどうず日記(224) |@IT

https://atmarkit.itmedia.co.jp/ait/articles/2202/02/news009.html

4.MicrosoftEdgeダウンロード

https://www.microsoft.com/ja-jp/edge/download?form=MA13FJ

5.Windows10の「タスクバーにピン留めしているアプリ」の、「最近使ったもの」と「固定済み(いつも表示)」の設定ファイルレジストリはここにある #Windows10 |Qiita

https://qiita.com/RyoIchimura/items/7e33980358f07e57a715

6.msconfigシステム構成)で解除してよいのは?使用場面と起動方法 |ドスパラ通販公式

https://www.dospara.co.jp/5info/cts_str_pc_msconfig.html

7.WindowsHello概要セットアップ |Microsoftサポート

https://support.microsoft.com/ja-jp/windows/windows-hello-%E3%81%AE%E6%A6%82%E8%A6%81%E3%81%A8%E3%82%BB%E3%83%83%E3%83%88%E3%82%A2%E3%83%83%E3%83%97-dae28983-8242-bb2a-d3d1-87c9d265a5f0

8.chrome.storageの実体場所 #Chrome |Qiita

https://qiita.com/k7a/items/cf644471d34d31f398e9

9. 第2回 グループポリシーとは何か:グループポリシーのしくみ(3/5 ページ) |@IT

https://atmarkit.itmedia.co.jp/ait/articles/0602/23/news119_3.html

10.MicrosoftEdgeブラウザポリシーに関するドキュメント |Microsoft Learn

https://learn.microsoft.com/ja-jp/deployedge/microsoft-edge-policies

11.Windows11/10からMicrosoftEdgeアンインストールするシンプル方法が見つかる |ソフトアンテナ

https://softantenna.com/blog/windows-11-10-uninstall-edge/

12. Releases · thebookisclosed/ViVe |GitHub

https://github.com/thebookisclosed/ViVe/releases

13. 各チャネルごとのEdge 削除状況 | 内気なもんた君

https://coolvitto.hateblo.jp/entry/2023/12/17/231027

Permalink |記事への反応(2) | 22:39

このエントリーをはてなブックマークに追加ツイートシェア

2023-09-21

https://b.hatena.ne.jp/entry/s/news.ycombinator.com/item?id=37586580

YAMLリストマッピングが絡んだ時のインデントのわかりにくさが絶望的に駄目

自分で作ってるアプリ設定ファイルは一周回ってJSONに戻ってしまった

Permalink |記事への反応(0) | 15:12

このエントリーをはてなブックマークに追加ツイートシェア

2023-08-13

anond:20230813185851

引っかかる記事なんだよね。環境設定ファイルの読み込みをするときって、けっこう警戒するプログラマーって多いと思うけどなー、と思った。フランス語というよりも、文字列の数値変換って気を使うよなー、ってね。どこで使うん、そのサブルーチンは?と考えてしまう。

Permalink |記事への反応(0) | 19:06

このエントリーをはてなブックマークに追加ツイートシェア

2023-07-22

anond:20230720202519

そこで彼は、様々な決まり事や数値を一切固定で埋め込まず、あらゆる項目を外部の設定ファイルで変更できるようにした。

新規外部ファイル作成するための作業内容

外部ファイル名の採番

稟議書作成して外部ファイル名の採番をライブラリアンに依頼する。稟議にはPL、PMCIO承認印が必要

外部ファイル作成作業

本番サーバー新規ファイル作成する必要がある。ファイル作成バッチ作成レビューを受ける必要がある。

本番サーバーは高セキュリティエリアにあるため入室申請必要

外部ファイル管理手順の作成

外部ファイルメンテナンスサバ部門が行うため、消えてしまった場合不正な値が設定された場合リカバリ手順を作成し、サバ部門承認を受ける必要がある。

役員レビュー

上記すべての手順について、役員の最終認証を得るためにレビュー会を実施するひつようがある。

飲み会

役員レビューのあとは当然呑み会が設定されている。レビューで指摘がなくても呑み会で覆る可能性があるので油断できない。

Permalink |記事への反応(0) | 17:24

このエントリーをはてなブックマークに追加ツイートシェア

2023-07-20

コーディングでよくある話

若い開発者が、1つの業務プログラムの新担当を任された。

この業務の処理手順は、数年ごとに多少の変更が入り、今回も、その対応が彼の仕事だった。

彼が、前任者が作ったソースを開いてみると、それはごく単純に業務手順書をプログラムに置き換えたようなもので、

固定値がそのまま文中に記述(マジックナンバー)されていたり、お世辞にも格好いいとは言えないものだった。

彼は考えた。「数年ごとに変更があるのがわかってるんだからもっと変更に柔軟に対応できるようにしておくべきだ!」

そこで彼は、様々な決まり事や数値を一切固定で埋め込まず、あらゆる項目を外部の設定ファイルで変更できるようにした。

プログラムは完成し、彼は運用者と次の後任者に自信満々で言った。

「今後は、業務手順に変更があっても、プログラムビルドし直す必要はありませんよ!設定ファイルで設定を変えるだけでOKです!」

さて、その数年後、実際に業務手順に変更があった。

運用者は設定ファイルを変更したが、うまく正しい結果が出ない。

バグが出てしまたか?と、後任者はソースを開いてみて愕然とした。

そこにあったのは、様々な設定項目に対応するための、膨大なif文ブロックの塊だった。

ソースの大半は、「将来的にこの設定が変更されたら」に対応するための、使われていない行。

設定の組み合わせパターンは膨大になり、全ての分岐カバーテストはされてはいなかったのだ。

結局、後任者はこのプログラム修正を断念。

再び、現在業務手順だけを、そのまんまプログラムに落とし込んでいった。

ソースは遥かに短くなった。

かにこの方法では、業務手順変更がある度に、プログラムを直してビルドする必要があるが、

そもそもプログラム言語というものは、「手順を明快に記述できる」ように発達してきたものなので、

手順書そのもののようなその新しいプログラムは、誰でも簡単理解して修正できるものになっていた。

【教訓】将来の変更に対応するための「汎用性」「柔軟性」を上げようとするのは間違っていないが、

 実際に来るかもわからない将来に備えてプログラムを複雑化するのは間違い。

 「~が変わった場合はここを変えてください」とコメントに書いておくくらいでちょうどいい。

Permalink |記事への反応(2) | 20:25

このエントリーをはてなブックマークに追加ツイートシェア

2023-07-05

anond:20230705084305

Github Copilotでそこまで生産性が上がってる感じがしないな。

AIが生成したコードを読みながら、どこが間違えているのかを試行錯誤するよりも最初から自分で書いたほうが早い。

テストコードみたいに意図的に大量のボイラプレートを書く必要がある場合は役に立つ。

あとは設定ファイルとかも良い感じに書いてくれる。

Permalink |記事への反応(1) | 08:55

このエントリーをはてなブックマークに追加ツイートシェア

2023-05-17

Github Copilotっていうほど使えるか?

コードを書いている時間より読んでいる時間のほうが圧倒的に長いからそんなに便利になった感じがしない。

型推論による補完が既にあるし今のところはそれに頼ってることが多いな。

新規で何か書くときdocker-composeのような設定ファイルを書く時はわりと役立ってる。

Permalink |記事への反応(0) | 17:48

このエントリーをはてなブックマークに追加ツイートシェア

2023-02-18

Linuxサポートがしんどすぎる

PCスマホタブレット等のIT機器ヘルプ対応をしているけど、このうち対応が最も面倒なのがLinux

Windowsmacよりも件数はかなり少ない代わりに、対応難易度の高さは飛び抜けている。

それもうオンサイト対応じゃなきゃ解決できねーよみたいな内容が極端に多い。

どういう使い方で、どんなソフトウェアをどのように入れたかにより、OSの奥深くにある基本的な設定が書き換わるケースもあるし、もちろんディストリビューションバージョンごとの違いもあるしで、
設定ファイル修正方法コマンドを送ったくらいでは解決せず、挙げ句

「このコマンドを実行してください」

解決しませんでした」

「このファイル修正してください」

解決しませんでした」

というやりとりが延々続くだけになり、手に負えなくなってサポート打ち切りになるケースがほとんど。

というかサーバじゃなくデスクトップで使っているなら、そしてそんなとこまでこっちにやらせるなら今すぐフォーマットしてWindows入れろやボケ!!!

と言ってやりたくなる。

なんでこう、Linuxトラブルはどいつもこいつもやたらややこしいんだか。

正直Linuxヘルプ対応をするたび、Linuxがどんどん嫌いになっていく。

まじでサポート対象外にしたい。

(追記)

サポートってどんなサポート?という質問があったけど、本当にごく普通クライアントPCトラブル対応を、いわゆる情シススタッフとしてやっている。

ちな会社社員数1万人くらいで、自分はそこの情シスの中の、本社社員IT機器サポートするチームのメンバー

とはいえ対応時に見ているのは社員PCだけじゃなく、場合によってはその社員接続した際のDHCPDNSFWログはもちろん、L2・L3スイッチRADIUSだって見に行く。

それでもトラブルの原因がわからないときがあるので、ネットワークのチームやサーバのチームに相談することもしょっちゅう

なお自分はもともと、開発・構築・運用と使い回されてきたタイプで、開発一つ取ってもWindowsアプリiPadアプリWeb系にとこなしてきた。

あとデスクトップLinux大学いた頃に慣れ親しんでいた(レポート論文を書くくらいには使っていた)。

で、そんな君みたいな人を待っていたんだ!と言われ引き抜かれたのが今の仕事というわけ。

ただLinuxサポートにここまで手こずるのは想定外だったわ。

やはり専門知識という意味ではLPICくらいは取ったほうがいいのか?と思っていたり。

(追追記)

ウチの会社デスクトップLinuxを使っているのは(macもだけど)主にR&D部門と、そこから転属or昇進した人達

(一方でバックオフィス系は、サポートが最も楽なリース契約WindowsPCだったりする)

このうち問い合わせてくるのは、大体が

  • とても詳しい人
  • とても詳しい人から退職後に実機を引き継いだ、あまりよくわかっていない人

のどちらかで、このうち後者については部門ガバナンスどうなってんだと思わなくもない。

結果、対応でよくある風景

  • 「もし***が○○○という設定になっていたら▲▲▲に修正してもう一度ご確認ください」

 「それもう試した」

 →どこまで何を確認たか要点だけでも教えてくださいよ…このやり取り、普通時間無駄ですよね?

 「ありませんでした」

 →「ありませんでした」じゃねえ探すんだよ!ログがなきゃ原因特定できないんだが?そんなこともわからないでLinux使ってるのかよ…。

こういうやり取りが延々繰り返されるので、目に見えてMPが削られるという愚痴でした。

Permalink |記事への反応(13) | 15:47

このエントリーをはてなブックマークに追加ツイートシェア

2022-12-14

登山道具貧弱でも死んでない理論、本番サーバーログインしてvi設定ファイル書き換えて再起動していた頃を思い出した

Permalink |記事への反応(1) | 22:15

このエントリーをはてなブックマークに追加ツイートシェア

次の25件>
ログインユーザー登録
ようこそ ゲスト さん
Copyright (C) 2001-2025 hatena. All Rights Reserved.

[8]ページ先頭

©2009-2025 Movatter.jp