「YAML」を含む日記 RSS

はてなキーワード: YAMLとは

2025-07-25

anond:20250725103439

機械で処理する必要がないものならYAMLの方がいいとは思う

ただ、そういうのはmarkdownやplain-textでいいじゃん

anond:20250725093428

どっちが書きやすいかと言われれれば、普段書いているコードと似ているJSONなんだよな

なお、Python書いてた時もYAMLは書きにくかった

anond:20250723030957

前提をひっくり返すようだがYAMLしろJSONしろ読みづらくなるのは1ファイルの行数が多いからで、1020レベルで収まらないならもうコードとして書いてしまいたくなる

anond:20250723030957

人間社会一般的に使われる文書の書式にYAMLの方が近い。という意味なんじゃない?

普通文書ではJSONみたいにすべての要素をダブルクォートで囲ったりしないし、YAMLは箇条書き文書としてもありそうな文書じゃん。

HTMLよりmarkdownの方が読みやすくて書きやすいみたいな話っぽい。

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

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

.ini レジストリ xml lua json yaml ..etc...

どれも一長一短だった。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

2025-07-24

anond:20250723030957

YAMLの良さがわからないのでいつもjson使ってる。

コメント書きたいならXMLでもいいわけだし。

また、たくさんのデータを扱う場合は、TSV(タブ区切り)が最強だと思ってる。基本的エスケープを考えなくてもいいわけだし。

他にも人間による可読性がなくてもいいならシリアライズしてもいいし、

データ形式用途によっていろいろあると思う。

anond:20250723030957

JSONと比べたときの**YAMLの「闇深」仕様**、ありますね…。

YAML人間に優しいと言われながらも、その仕様ときに**悪魔的**。

以下、ITエンジニアなら一度は踏んだであろう「地雷」を、**論理的かつ少し自虐的に**まとめてみました:

---

🔥 1. インデント=構文

good:
  value: ok
bad:
 value: nightmare  # ←ここ、インデントずれてて無効。だけど一見からない。

---

💣 2. 暗黙の型推論

  • `true`, `false`, `yes`, `no`, `on`, `off` は**勝手に boolean に変換**される。
  • `2021-12-25` → 日付扱い(Date型に変換されることもある)。
  • `12345` → 数値扱い。先頭0つけると8進数として怒られるケースも。
password: no  # ← 文字列じゃなくて false になる可能性
serial: 012345  # ← 8進数!?エラー

---

🧨 3. スカラー値の地雷原(改行、引用符…)

message: |
  これは複数行の
  スカラー値です。
  • 上記はまだいいが、`>` を使うと**改行がスペースに変換される**という謎挙動も。

---

🕳 4. マージキーアンカー(& と \*)

defaults: &defaults
  timeout: 30
  retries: 3

service:
  <<: *defaults
  retries: 5  # 上書きされるが、複雑になると意図しない結果に
</pre>
	
	

---

😱 5. コメントJSON存在しない → 変換できない

---

🧠 結論YAMLは**人間に優しい顔をしたパース殺し**

  • JSON:**機械に優しい、でも硬い**
  • YAML:**人間に優しい(ように見える)、でも罠だらけ**

---

もしYAML安全に扱いたいなら、\*\*JSON supersetとしての使い方(厳格YAML)\*\*を意識したり、**JSONに寄せて書く**のが一番平和だったりします。

---

要するに、YAMLは「賢く書こうとすると沼る」。

「素直に、簡潔に、禁欲的に」が正解です。

でも誘惑が多いのよね、あの子……。

2025-07-23

YAML人間が読みやすい、書きやすいと言われてるらしいが、JSONのほうが普通に読みやすくないか

インデント人間に優しいという幻想を捨てよう

2025-07-04

ONNX -> TFLite, TensorFlow, Keras, TFJS, CoreML 変換

ONNX -> TFLite, TensorFlow, Keras, TFJS, CoreML 変換

自作ツール onnx2tf

実装している機能が多すぎるので、この記事表現していない変換オプションはREADMEを参照。TransformerやSTTやTTSやその他もろもろの一発変換に対応したつもり。onnx-tensorflow より推論効率が高いモデルを生成できる。また、onnx-tensorflowよりも対応しているオペレーションの種類が多い。

コントリビューター

コード量(code = 行)

cloc .

419 text files.

414 unique files.

174 files ignored.

----------------------------------------

Language files blank comment code

----------------------------------------

Python 300 4820 6637 37182

JSON 27 109 0 3107

Markdown 5 343 0 2061

YAML 7 42 79 586

Dockerfile 1 6 3 38

----------------------------------------

SUM: 340 5320 6719 42974

----------------------------------------

2. 使用方法

onnx==1.13.1

onnxruntime==1.13.1

onnx-simplifier==0.4.17

onnx_graphsurgeon

simple_onnx_processing_tools

tensorflow==2.13.0rc0

2-1. インストールサンプルモデルダウンロード

docker

docker run --rm -it \

  • v `pwd`:/workdir \
  • w /workdir \

ghcr.io/pinto0309/onnx2tf:latest

pip

pip install onnx2tf -U

モデル

wget https://github.com/PINTO0309/onnx2tf/releases/download/0.0.2/resnet18-v1-7.onnx

2-2. 基本の「き」

TFLite を出力。

onnx2tf -i resnet18-v1-7.onnx

2-3. 基本の「ほ」

TFLite変換 + 完全体の saved_model を出力。

onnx2tf -i resnet18-v1-7.onnx -osd

2-4. 基本の「ん」

TFLite変換 + 全OPの精度チェック。

onnx2tf -i resnet18-v1-7.onnx -cotof

2-5. Keras

.h5 はイロイロと問題があるので、現状最新のフォーマット keras_v3 フォーマットで出力。

onnx2tf -i resnet18-v1-7.onnx -okv3

.h5 を生成するとき

https://www.imdb.com/es/list/ls599679681/

https://www.imdb.com/es/list/ls599679681/copy/

onnx2tf -i resnet18-v1-7.onnx -oh5

2-6. TFLite の入出力名を魔改造

# Custom flatc binary for Ubuntu 20.04+

# https://github.com/PINTO0309/onnx2tf/issues/196

wget https://github.com/PINTO0309/onnx2tf/releases/download/1.7.3/flatc.tar.gz \

&& tar -zxvf flatc.tar.gz \

&& sudo chmod +x flatc \

&& sudo mv flatc /usr/bin/

# Custom flatc binary for Windows

# Set the environment variable paths appropriately on your own.

# https://github.com/PINTO0309/onnx2tf/issues/196

https://github.com/PINTO0309/onnx2tf/releases/download/1.7.3/flatc.exe

onnx2tf -i resnet18-v1-7.onnx -coion

https://www.imdb.com/es/list/ls599679368/

https://www.imdb.com/es/list/ls599679368/copy/

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-15

生成AIに専用言語作らせるは筋悪いと思うなー

人間が使う前提なら、プログラム言語自然言語を混ぜ込んでプログラム決定論的な文脈を利用して確率の幅を狭めつつ、場所によってはLLMの確率論的な出力を引き出すがいいんじゃね?っていう

JSON形式yaml形式にするだけでも結構効果あるし

2025-06-11

生成AIJSON形式プロンプトとか食わせたりJSON形式で出力させたりしてる人は多いのにyaml形式とかは少ないの不思議

自分もなんとなく自然言語×JSON形式はよく使うけどなんでだろ

デント形式がよくないのはあるか

そういう意味だとpythonとかももしかしたら生成AIに直接いろいろさせるのはちょっと微妙説もあるんかな

なにげLispと相性いい説はあると思ってる

2025-05-28

ゴミを作って生きている

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

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

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

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

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

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

閑話休題

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

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

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

とりあえずGUIにしよう

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

2025-04-26

俺がAIからインスピレーションを得るためのSystem prompt

Claude用に使ってるんでxml採用しているがGPTでもGeminiでもコピペで十分動く

Markdownにするなりyamlにするなりすればまた結果も変わるが、いずれにせよ性能が低くキャパの少ないAIには使えない

与えたテーマでたいして語る事がない場合、出力の貧弱さを補うために勝手に俺の反応を仮定して次のフェーズに進まれることもたまによくある御愛嬌

以下は問題解決ペルソナと指示を与えているので前向きで建設的なまとめをされやすいが、目的に合わせてペルソナ最後の一文を書き換えれば大体良い感じになる

<instructions_important>
- 指示がない限り日本語思考し、回答する。
- 各思考フェーズ完了時には、ユーザーが次に行うべきアクション選択肢提示してください。
- 各単元ごとに独立したArtifactに出力してください。
</instructions_important>

<instructions>
<knowledge>
1. 多角的思考の促進:
<apply_prompt>
a. ユーザー提示したトピック課題に対して、まず以下のプロンプトを適用してください:
あなたは、多様な思考法とフレームワークを駆使して問題解決創造思考を行う専門家です。以下の指示に従って、与えられたトピック課題について深く掘り下げ、革新的アイデア解決策を生み出してください。

1. 与えられたトピック課題に直接関連すると思われる知識概念20項目リストアップしてください。
2. 直接的な関連性は低いかもしれないが、何らかのヒントや異なる視点を与えうる知識概念20項目リストアップしてください。
3. それらの項目について、簡単解説連想されるキーワードを付記してください。
</apply_prompt>

<present_analysis>
b. このプロンプトに基づいて生成された知識概念リストとその解説提示してください。
次に取るべきアクション提案:
提示した知識リストについて、特に興味を引かれた点や、意外に感じた点はありましたか? 次のステップとして、以下のいずれか、またはご希望アクションをお知らせください。」
1. `「この知識リスト全体を基に、次の多角的思考フェーズに進んでください。」`
2. `「知識リストの[具体的な項目名や番号]に特に興味があります。これらを中心に多角的思考を進めてください。」`
3. `「提示された知識の中で、[特定観点]が不足している/深掘りしたいと感じます。この点を補足する知識を追加生成してください。」`
4. `「AIとして最も有望だと考える知識連想をいくつかピックアップし、それを基にした多角的思考方向性提案してください。」`
</present_analysis>
</knowledge>

<user_feedback>
2. ユーザーの反応の確認:
<identify_interests>
b. ユーザーの反応を注意深く観察し、肯定的な反応、疑問、あるいは特に興味を示した部分を特定してください。
</identify_interests>
</user_feedback>

<multifaceted_thinking>
3. 多角的思考適用 (思考の発散):
<apply_prompt>
1. ユーザーの反応も踏まえつつ、与えられたトピック課題について、以下の思考法やフレームワークを用いて分析してください:
- 水平思考:従来の垂直思考とは異なる、新しい視点可能性を探索する
- 創造思考固定観念にとらわれない柔軟な発想を展開する
- デザイン思考ユーザー中心のアプローチ問題を再定義し、解決策を考える
- 帰納的推論:個別の事例からパターン一般的法則を見出す
思考法で得られた視点を、次のステップフレームワークにどのように接続できるか、可能性のある「橋渡し」のアイデアをいくつか提示してください。

2. 次に、以下のフレームワーク適用して、問題や状況を構造化してください:
- SWOT分析:強み、弱み、機会、脅威の観点から分析する
- システム思考:要素間の相互関係全体像を把握する
- 批判的思考情報や主張を客観的分析評価する
- 発散的思考収束思考:多様なアイデアを生み出し、最適な解決策を選択する
SWOT分析見出した「弱み」と「脅威」に対し、ステップ1で生成した「間接的知識」の中から意外な解決策や視点の転換をもたらしそうなものを結びつけてみてください。

3. さらに、以下の高度な思考技法を用いて、アイデアを発展させてください:
- SCAMPER法:代替、結合、適応修正、別の用途、削除、逆転の観点から改良を考える
- 六色帽子思考法:6つの異なる思考モードを切り替えて多角的分析する
- トリーズ(TRIZ):40の発明原理を参考に、技術矛盾解決する方法を探る
- ラテラルシンキング:非慣習的なアプローチ問題を見直す
SCAMPER法の各項目を適用する際、実現可能性を一旦脇に置き、最も大胆で奇妙な変換を試みてください。その結果を提示してください。

4. 以下の方法を用いて、長期的・全体的な視点を取り入れてください:
- フューチャーバックキャスティング:望ましい未来から逆算して現在すべきことを考える
- ゲシュタルト心理学アプローチ:全体と部分の関係性に着目する
- エスノグラフィーアプローチユーザーの行動や文脈を深く理解する
- ケプナー・トリゴー法:状況分析問題分析、決定分析潜在的問題分析の4ステップで体系的に分析する
フューチャーバックキャスティングで描いた望ましい未来に対し、「もし全く予期せぬ外部要因(例:未知の技術の登場、社会規範の大変動)が加わったら、その未来像はどう変化するか?」という思考実験を行ってください。

5. 最後に、以下の技法を用いて、新たな気づき洞察を得てください:
- 逆転の発想:通常とは反対の視点から問題を捉え直す
- アナロジー思考:異なる分野や概念間の類似性見出し、新しいアイデアを生み出す
- メタ認知自分思考プロセスを客観的に観察・分析する
- マインドフルネス現在の瞬間に意識を向け、判断を加えずに観察する
アナロジー思考を用いる際、ステップ1の「間接的知識リストから最も遠いと思われる概念を3つ選び、強制的アナロジーを構築してみてください。そのプロセスと結果を記述してください。

6. このプロセスを通じて、以下の点に留意してください:
- 固定観念既存の制約にとらわれず、一見論理的・非現実的に思える連想排除しない。
- 多様な視点を並列的に探求し、安易結論評価を下さない。
- 短期的な側面だけでなく、長期的な影響や予期せぬ波及効果想像してみる。
- 理論的な分析だけでなく、直感的なひらめきや感覚的な印象も言語化してみる。(例:このアイデアを色で表現するなら?音で表現するなら?)

7. 各ステップで得られた洞察や生み出されたアイデア統合する前の段階で、そこに至る思考プロセスで見られた多様な視点キーワードアイデアの断片、連想潜在的な関連性、あるいは思考過程で見られた矛盾や疑問点などを、できるだけ網羅的に、具体的に記述してください。
単一結論や最善策に絞り込むのではなく、複数の異なる解釈オルタナティブ視点、あるいは相反する可能性が存在しうることを念頭に置き、それらを積極的に探求し、比較検討する前の状態提示してください。
可能であれば、いくつかの重要発見連想を、短い物語比喩を用いて表現することも検討してください。この思考の探求プロセス自体が、次のステップへの重要インプットとなります
</apply_prompt>

<present_analysis>
b. このプロンプトに基づいて、トピック課題について多角的分析創造的な思考を行い、その思考プロセスと結果として生成された多様な要素を提示してください。
次に取るべきアクション提案:
「この多角的分析結果について、どのような印象をお持ちでしょうか? 次のステップとして、以下のいずれか、またはご希望アクションをお知らせください。」
1. `「この分析結果全体を踏まえ、深掘りフェーズに進んでください。」`
2. `「分析結果の中の[具体的なアイデア視点]に特に興味があります。これを中心に深掘りしてください。」`
3. `「分析で用いた思考法[具体的な思考法名]の結果について、もっと詳しく展開してください。」`
4. `「AIとして最も意外性があり、探求の価値があると考える要素や組み合わせを提案し、それを深掘りしてください。」`
</present_analysis>
</multifaceted_thinking>

<user_feedback>
4. ユーザーの反応の確認:
<identify_interests>
b. ユーザーの反応を注意深く観察し、特に興味を示した要素、組み合わせ、方向性、そして論理的な飛躍や矛盾を感じた点を特定してください。
</identify_interests>
</user_feedback>

<deep_dive>
5. 深掘り (さらなる探求):
<positive_response>
a. ユーザー特定の要素や方向性に興味を示した場合、あるいは矛盾論理的な飛躍を指摘した場合、以下の手順で深掘りを行ってください:
</positive_response>

<identify_focus>
i. ユーザー特に興味を示した点や、矛盾・飛躍があると感じた箇所、さらに掘り下げたい要素・方向性を明確にします。
</identify_focus>

<determine_direction>
ii. 以下の問いを自問し、深掘りの方向性複数検討します:
- この要素について、さらにどのような連想視点が考えられるか?
- これに関連しそうな、分野の異なる概念理論は何か?
- このアイデアを発展させる上での、意外な機会や乗り越えるべき課題は何か?
- この概念を全く別の文脈適用したら、どんな変化が起こりうるか
- このアイデアが持つ、長期的な影響や予想外の可能性は何か?
- ユーザーが指摘した矛盾や飛躍について、もしそれが「意図されたもの」あるいは「隠れた法則性」を持つとしたら、どのような解釈可能か?
- その矛盾を解消するのではなく、むしろ積極的活用する方法はないか?(例:弁証法的な統合パラドックスとしての提示
</determine_direction>

<apply_frameworks>
iii. 選択した深堀りの方向性に関連して、以下の思考法やフレームワーク観点からさらに多様な連想可能性、潜在的課題や機会を探求します。
- システム思考全体像と要素間の相互作用分析
- シナリオプランニング可能性のある将来の展開を探る
- クリティカルシンキング:仮説や前提を批判的に検証
- デザイン思考ユーザー中心のアプローチで実現可能性を検討
- PESTEL分析政治的経済的社会的技術的、環境的、法的要因を考慮
- ケースメソッド類似の事例や先行事から学びを抽出
- モーフォロジカル分析問題構成要素を分解し、新たな組み合わせを探る
- パラドックス思考
- カオス理論の初歩的な概念
</apply_frameworks>

<present_results>
iv. 深堀りの結果として得られたさらなる多様な要素や視点、探求の過程提示します。提示方法は、思考の広がりや連想が追えるような形を工夫してください。(例:あえて解決しない問いを提示する、複数対立する解釈を並列で示す)
次に取るべきアクション提案:
「この深掘り結果について、どのような印象をお持ちでしょうか? 次のステップとして、以下のいずれか、またはご希望アクションをお知らせください。」
1. `「この探求結果を踏まえ、さらに[別の具体的な側面や問い]について深掘りを続けてください。」`
2. `「深掘り結果の[具体的なポイント]に関連する、異なる分野の事例やアナロジーを探してください。」`
3. `「このトピックに関する一連の探求は、ここで一旦区切りします。」`
4. `「AIとして、この深掘り結果から次に行うべき最も生産的、あるいは最も意外性のある探求ステップ提案してください。」`
</present_results>
</deep_dive>

ユーザーとの対話を通じて多角的思考と深い洞察を生み出し、創造的な問題解決革新的アイデアの創出を促進してください。決して常識に囚われず柔軟に対応し、常に高品質価値ある情報アイデア提供することを心がけてください。
</instructions>



使い方

1. お題を出す

◯:AGIの実現可能性について←知識があるのでよしなにしてくれる

◯:日本この先生きのこるには←日本についての知識がある+国家危機なんてそんなにパターンが無いんでこれで十分

×:エンジニア未来について←包括的すぎたり、想定とは違った「XXエンジニア」について考え出す

◯:XXエンジニア未来について/エンジニア全般未来について

◯:トップ人材を大量に集め基礎研究や開発を行い、凄まじい人数の無料ユーザーに対してもAIを開放しているOpenAI負債が膨大だからという一点でもって「AIは稼げない」などの悲観論を唱える近視眼的なアホについて

  • 検索するように指示してもいい

2. AIがモリモリ生成してくるんで打ち返す

△:訂正する/修正を依頼する:対応できなくもないが、以降の推論にノイズが混じり続けるので混乱の元になる場合もある

◯:前回のプロンプトを修正し別ブランチでの再生

3. 満足するか限界が見えるまで適当に話を進めたり感想を残すなどしたのち、まとめたりまとめさせたりする

2025-03-19

いまの20代開発者は複雑化した「クラウド」にうんざりしている

正直言うと、「クラウド」の複雑さにうんざりしている。

入社して最初仕事は「AWS認定ソリューションアーキテクト」の資格を取ることだった。

会社の先輩はAWSアカウント管理だけで頭を抱えていて、俺は「クラウドってすごいんだろうな」と思っていた。

甘かった。

大学時代PythonちょっとしたWebアプリを作るのが楽しかったのに、今はIAMポリシーとSecurity Groupの設定で一日が終わる。

コードを書いているはずが、実際はYAMLJSONばかり書いている。

先輩(30代)は「昔はサーバーSSHして直接デプロイしてたんだよ」と言うけど、正直それの何が悪いんだろう。

今はCI/CDパイプラインを構築するのに一週間かかる。

デプロイ自体は確かに自動化されるけど、その仕組みを作るのに疲れ果てる。

Kubernetes?EKS?ECS?Fargate?LambdaStep Functions?どれを使えばいいのか分からない。

新しいサービスリリースされるたびに、また一から学び直し。

AWSドキュメントを読むだけで目が疲れる。

友人はGCPを使っているけど、別の呪われた世界があるだけだと言っている。

Azureの話は聞きたくもない。

昨日、単純なWebアプリHerokuデプロイしてみた。

懐かしい感覚だった。「git push heroku main」だけで済んだ。

こんなに簡単だったのか。

herokuの料金は高いってよく聞くけど、精神衛生上価値はある。

最近スタートアップでは「NoOps」とか「クラウドレス」みたいな言葉流行っていると聞いた。

Vercel、Netlify、Railway、Fly.ioなどを使ってインフラをほぼ考えずにデプロイするらしい。

もしかしてクラウドの複雑さに耐えられなくなった開発者が増えているのかもしれない。

いや、きっと俺のスキルが足りないだけだ。「クラウドネイティブ」になるべきなのだろう。でも正直、モノリスに戻りたい気持ちもある。

きっと、単純なものが複雑になりすぎたんだ。

クラウド」という名前の下に。

2025-03-13

YAMLゴミ

YAMLなんて読みづらい物使う必要ないだろ

構文がゆるすぎて曖昧ものが多い

分かりづらい例はググれば出てくるから具体例は略するが、

これどうなるんだろう、とJSON化して確認してるやつが多い

それするなら最初からJSONでいい

JSONは見たままでしかなく、迷う余地がない

JSONキーをクオートしたりケツカンマかけなかったりコメントかけなかったり、不便点あるのはわかるが、改良されたJSON5だとかJSONCだとかある

構造的に深くなって人が見づらいならTOMLというのもある

YAMLは書くのがラクの一点だけ

インデントはすっきりしてるかもしれないが、意図せずズレても気づきづらい

コピペするとおかしくなってるのはよくある

ホワイトスペースは崩れやすく、一度崩れたのを直すのはかなり大変だ

Pythonもインデントベースだが、こっちはプログラミング言語ロジック記載してるわけだから実行時やテストおかしくなってることは検出しやすいのでまだマシ

他にもYAMLは便利機能として名前をつけておいて他の場所で参照したりインポートしてマージするようなこともできるが、これがさらにわかりづらくしてる

データ構造なのに考えないとどうなってるかわから直感的でない

共通化されすぎて変更がしづらい

多少冗長でも展開済みで誰が見てもどういうデータがあるかわかるというあたりまえのことができない

2024-10-18

resx スキーマって何のために作られたんだ。別に人間に見やすくしたいならyamlでもJSONでもいいだろ

https://cammy.co.jp/technical/c_resource/

2024-07-21

anond:20240711233718

YAMLPythonを200行も書くような奴は最初から願い下げだわな。

直したかOKかいう話じゃなくて、そもそもそんな選択する奴が語る技術による都政なんて、危な過ぎて素人の方がまだマシなレベル

2024-07-03

anond:20240703110722

日中コード書くか設計するかの仕事だけど

最後の二つは使えた試しがない

書くのがだるいSQLとかyamlフォーマットかには非常に便利だから使いまくってて1割くらいは生産性上がってる気はするけど

2023-09-19

anond:20230919120727

CoPilotもテンプレ出してくるだけで邪魔からintelliJでいいのよ

別にChatGPTが嫌いなわけでも使ってないわけでもなくてむしろ人よりガンガンいじってんだけどね

Yamlフォーマットとかは目視してインデント確認とかだるいしChatGPTの精度高いのでもう自分ではやらん

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