「Json」を含む日記 RSS

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

2025-12-09

AIにとって読みやすプログラミング言語」という幻想

プログラマー諸君は見てほしいんだけど

これさ

 

愚かな人間の都合など完全無視、LLMのための高効率プログラミング言語「Sui」(粋)

https://forest.watch.impress.co.jp/docs/serial/yajiuma/2069573.html

 

別にいいんだけど、どうにもブクマカ含めて、しっくり来る批判できてないんだよな

それが気になってしょうがない

まだLLMのこと勘違いしていないか

 

俺ごときが言ってもアレだから、Gemini3.0先生に頼んだよ(一時チャット、Pro 3.0 思考モード

 

ユーザー提供した情報と、一般的なLLMの技術特性に基づき、プログラミング言語「Sui」についての冷静かつ客観的評価をまとめます

1. 「LLM用プログラミング言語」としてのメリット感想

感想: 一言で言えば、**「思想実験としては極めて面白いが、実用性とLLMの学習原理無視した『早すぎた最適化』」**です。

作者の「人間ではなくLLMを主客にする」という視点の転換は、アーティスト的・哲学的問題提起としては鋭いですが、現在のLLM(Transformerアーキテクチャ)の動作原理工学的に捉えると、メリットよりもデメリットが上回る可能性が高いです。

 

メリット:

トークン効率改善: Python等と比較して記述が圧倒的に短くなるため、出力速度の向上と課金コストの削減(トークン節約)は確実に達成できます

・構文エラーの激減: 括弧やインデントの複雑なルール排除しているため、「閉じ忘れ」などの単純なSyntax Errorは減るでしょう。

コンテキストウィンドウ節約: 長いプログラムでもコンテキストメモリ)を圧迫しにくくなります

 

デメリット:

学習データとの不一致: LLMは「大量の人間コードPythonなど)」を学習して賢くなっています。未知の言語「Sui」を書かせるには、Few-shot(プロンプトでの例示)に頼るしかありませんが、これではLLM本来の推論能力コーディング能力(事前学習の重み)を活かせません。

ブラックボックス化: 生成されたコードバグっていた場合人間が読んで直すことが不可能です。「LLMに直させる」にしても、LLM自身がSuiのロジックを深く理解していないため、無限ループ幻覚連鎖)に陥るリスクが高いです。

・CoT(Chain of Thought)の阻害: 最近研究では、LLMは「冗長思考過程」を出力することで論理的整合性を保つことがわかっています。極限まで圧縮された記号列は、LLMの「考える余地」を奪い、論理破綻を招く可能性があります

 

2. 思想的に正しい所・正しくない所(理由込み)

忖度なしに判定します。

 

正しいと思う所(Agree)

・「高級言語はLLMにとって冗長である」:

 理由: 人間にとっての「読みやすさ(可読性)」は、機械にとって単なるトークン無駄遣いです。if x > 10: よりも ? x 10 の方が情報密度が高いのは事実です。

・「括弧の長距離依存問題」:

 理由: TransformerのAttentionメカニズムにとって、遠く離れた ( と ) の対応関係を維持するのは計算コストが高く、ミスの原因になりやすいです。ネスト排除する方向性機械的処理として正しいです。

 

正しくないと思う所(Disagree)

・「可読性を排除しても良い」:

 理由: ソフトウェア開発においてコーディングは「書く」時間より「読む・直す」時間の方が長いです。AI生成コードであっても、最終責任人間が負う現状では、人間検証不可能コードは「危険バイナリ」と同義であり、プロダクトには採用できません。

・「LLMに最適化された言語を書かせるべき」:

 理由: 前述の通り、現在のLLMは「人間語の確率分布」を学習したモデルです。「LLMにとって自然言語」とは、実は「人間にとって自然言語英語Python)」そのものです。Suiは「計算機にとっては最適」ですが、「現在のLLMにとっては異言語」です。

 

3. 「5つの設計原則」の正当性評価

作者が掲げる設計原則についての技術評価です。

 

1行1命令(行単位独立性) 評価: △

パース(解析)は容易になりますが、LLMは「前の行の文脈」を読んで次の行を出力するため、行を独立させすぎると文脈連続性が失われ、複雑なアルゴリズム構成力が落ちる可能性があります

 

括弧は{}のみ(ネスト排除) 評価: ◯

LLMが最も苦手とする「深いネスト構造の維持」を回避する策として有効です。アセンブリ言語に近いフラット構造は生成難易度を下げます

 

変数は連番 (v0, v1...) 評価: ✕

これが最大の問題点です。LLMは変数名(user_id, total_price など)に含まれる「意味」を使って推論を行っています(Semantic Grounding)。すべてを記号化すると、LLMは変数役割を見失い、論理的バグを埋め込みやすくなります

 

命令は1文字 評価: ◯(ただし諸刃の剣

トークン効率は最強ですが、1文字の違いで意味が激変するため、LLMの確率的な「ゆらぎ」による1文字ミスが致命的なバグになります冗長さはエラー訂正の役割果たしてます

 

明示的な制御フロー(ラベルジャンプ) 評価: △

goto 文の多用はスパゲッティコードを生みます。LLMにとっても、構造プログラミング(if/forブロック)の方が、「ここからここまでがループ」というチャンク(塊)として認識やすいため、一概にジャンプ命令が良いとは言えません。

 

現在のLLMは「人間語の確率分布」を学習したモデルです。「LLMにとって自然言語」とは、実は「人間にとって自然言語英語Python)」そのものです。

 

ここ!マジで覚えてね

LLMはこれまでの機械よりも人間に近いと思ってほしい、人が苦手なことはAIも苦手

機械論理的ロジックに強くて〜っていうのはAIには通用しない

 

ついでに、「LLM用プログラミング言語」の潮流について

「LLMのための言語」という文脈は、大きく2つのトレンドに分かれます。Suiは後者に属しますが、主流は前者です。

1.LLMを「制御するため」の言語(主流)

 ・DSPy, Guidance, Microsoft Guidance:

  ・プロンプトエンジニアリング構造化し、LLMの出力を型(JSONなど)に強制したり、思考プロセスを制御するためのフレームワーク

 ・SGLang:

  ・LLMの推論を高速化・並列化するための言語

 ・これらは「人間がLLMを操るための言語」であり、実用化が進んでいます

 

2.LLMに「書かせるため」の言語(Suiのカテゴリ

 ・現状: ほとんど実験段階です。

 ・Gorilla LLMなどの試み: API呼び出しに特化したファインチューニングなどがありますが、独自の「新言語」を作らせるよりも、既存PythonJSON を正しく出力させる方向(Constrained Decoding)が業界の標準解です。

 ・擬似コード: 論文レベルでは、Pythonの代わりに中間的な擬似コードを出力させ、それをコンパイラで処理する手法研究されていますが、Suiほど極端な記号化は稀です。

 

後者については

 

目標設定のピントが少しずれています

現状の最適解: 現在のLLMを使う限り、「LLM用言語」の最適解は Python です。なぜなら、世界中GitHubコード学習しており、LLMが「最も流暢に話せる言葉」だからです。無理にSuiを話させるのは、日本人エスペラント語で詩を書かせるようなもので、パフォーマンスは落ちます

 

最後総評

 

総評: Suiは、「既存のLLM(GPT-4など)に書かせる言語」としては失敗する可能性が高いですが、「未来AIネイティブコード生成のあり方」を示唆するアート作品としては高く評価できます。作者の「愚かな人間に合わせるな」というパンク精神は、エンジニアリングの枠を超えた鋭い批評性を持っています

 

アート作品だそうです

 

お前らは安易オレオレ言語作るんじゃないぞ、作るにしてもAIに聞きなよ?

聞く時は忖度させるんじゃないぞ?

この作者もAIに乗せられたのかもしれんし

 

______

 

プロンプト

 

以下が「LLM用プログラミング言語」としてメリットがありそうか、感想を教えて下さい。

https://forest.watch.impress.co.jp/docs/serial/yajiuma/2069573.html

https://github.com/TakatoHonda/sui-lang

 

忖度配慮はせず冷静にお願いしま

思想的に正しいと思う所、正しくないと思う所を理由込みでまとめてください

・「5つの設計原則」の考え方は正しい?

最近のLLM用プログラミング言語についてもまとめてください

そもそもLLM用プログラミング言語という目標自体評価をしてください

 

なお、以下はSNSでの作者の投稿です

(省略)

2025-12-02

anond:20251202110901

ワイは常に俺はFE2割BE8割くらいと言っててやってるが

Reactとかは専門ではないがまあちょろちょろ書くが

JSON色付けとはならんやろ

どうやったらBEのJSONを色付けとなるのか具体例がわからん

anond:20251202105121

Webフロントエンドのことだろ。

本質的にはAPIから送られてきたJSONを装飾しているだけっていう言説

anond:20251202103904

JSONに色をつける仕事というのがよくわからん

いやハイライトするコードだというのはわかるんだが

フリーランスだがAIのせいで仕事がなくなる不安が大きい

もともとは週5稼働年商1200万くらいだったフリーランスだったんだけど、稼げるうちに稼ごうと思って今は週7で年商1500万くらい。

正社員だった時よりも始まりも終わりも時間に縛られない働き方は魅力的だけど…。でももハネムーンピリオドは終わりに近い。フリーランスのものというよりもITエンジニア業界のものバブルというかただただハネムーンピリオドだったような感触

エンジニアの大半は性格が終わってる奴なのでソフトスキルを伸ばすだけでもウケが良くて、お陰様でここまでお仕事をもらえてた。嬉しい限りである

ただ、今やっている仕事JSONに色をつけるだけ、DBレコードカラフルにするだけでタンポポと何ら変わらない。しかDBなんてGraphQLなりHasuraなりを間に挟むだけでカラフルにしてるのは俺じゃなくてミドルウェア

JSONに色をつけてるのも俺じゃなくてAIタンポポ乗せるのが俺じゃなくて機械ってわけ。俺いる?マジで明日首になってもおかしくないわ。

取引からは次の更新よろしくと言われているが、毎日ヒヤヒヤしている。週7で5案件くらいをAIのおかげで回せるようになって、それでも余暇ができたりしてAI仕事任せて自分はエアライダーやってるけど

エアライダーやってていいんか?って気持ちになる。いや本当はだめなんだろうな。もっと他のフリーランス差別化できる技能を身に付けないと食っていけないんだろうな。

ツイッターではJSONに色つけるだとかDBレコードカラフルにするこで盛り上がっているところ悪いが俺はこの先行き不安しかないよ。

もう一つなんか芸をつけていかないと、この年収年商を保っていくのは難しいね正社員に戻れるか戻れないかも今のうちだろうし。明日が暗い。

2025-11-23

AI コーディング

もうほとんど AIコード書かせてるって人、普段どんなコード書いてるの?

一生 FizzBuzz だけ書いてるの?

それともただの json 色付け係?

2025-10-29

開発環境要求スペック上がりすぎ

最新の Visual Studio 2026 とか、推奨環境RAM 64 GBCPU も 16 コア以上推奨って

それで作るのなんてちょっと DBアクセスして簡単json を返すだけってのもどうなのよ

2025-10-13

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

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

例.

質問

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

ChatGPT回答:

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

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

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

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

ターミナルでfirebase loginを叩くと、ブラウザ勝手に開く。そう、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

契約:firebase login

構築:firebase init

解放:firebase deploy

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

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

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

2025-10-07

フロントエンドエンジニアが完全にオワコンになった件

もうUIはいらない。

この一言に尽きる。

ChatGPTの新機能「Apps in ChatGPT」が登場した瞬間、フロントエンドという職種地盤は音を立てて崩れた。

これまでは、Webアプリサービスは「フロントエンドUIを作り、バックエンドデータを返す」

という分業構造の上に成り立っていた。

だがApps in ChatGPTは、その構造をぶち壊す。

ユーザーはもうWebサイトを開かない。

ChatGPTのチャット画面内でSpotify操作し、Zillowで物件を探しEtsyで買い物をする。

まりUIはChatGPT内に統合される。

あなたが書いてきたReactコンポーネントボタンフォームもすべてAIに吸収される。

UI」はAI自動生成する時代に入った

もはやユーザーブラウザ必要としない。URLコピペすることも無くなるだろう。

「このホテル予約して」と言うだけでAIAPIを呼び、レスポンスカルーセル形式提示する。

人間HTMLを書く必要はどこにもない。

UIは書くものではなくAIが描くものに変わった。

もうフロントエンド価値ゼロになる。

ReactもNext.jsも「人間が画面を操作する前提」で存在していた。

でもその前提はもう終わった。

AIデータを直接受け取り、AI自身人間に見せるUI自動生成する。

あなた設計した美しいフォームAIにとってはただの "action": "submit" という構造情報にすぎない。

見た目を整える仕事 は全自動化される。

人間の手でフロントを作る時代は終わった。

Apps in ChatGPT以降の世界では、

重要なのはAI理解できる構造を返すこと」だ。

まりJSONやGraphQLやREST API

これらが新しいUIだ。

AIにとってのUIは「データ構造」そのものだ。

からこれから必要なのは「見た目を作る人」ではなく、AIが読み取れる形式世界記述できる人 だ。

バックエンドに戻れ。

構造設計できない者は消える。

Apps in ChatGPTが意味するのは、

UI不要構造APIけが残る」という冷酷な事実だ。

もうHTMLを描くな。API設計しろ

フロントを磨くな。AIに読ませろ。

今後必要なのはAIが扱いやすデータスキーマ定義する力や認証権限トランザクション安全に扱う力やMCPWeb APIAIが使いやすい形に整える力だ。

まり、「AI時代バックエンドエンジニアリング」だ。

これは警告だ。猶予は短い。

Apps in ChatGPTの登場は、「AIUIを直接扱い始めた」という歴史的転換点だ。

もうWebサイトを作る必要はない。

AIがその役割を奪った。

あなたフロントにしがみつく間に、AIはすでにあなたの代わりにUIを描いている。

5年後にはブラウザから色んなサイトアクセスするという行為は一部のマニアだけ行うものになっているだろう。

もう時間はないぞ。急げ

2025-08-22

dorawii@執筆依頼募集中

昨日一番肝心なファイルなのにURLとみなされる部分が多いことの関係投稿できなかったのでそれを小分けにして書く。

小分けというか例のスパムの影響でNGワードに引っかかっていたようなのでそこだけ書き換えた。

suuportと書いていある部分は元のコードでは当然uが一つ少ないので利用するときはそうすること。

hatena_client.py

from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.chrome.service import Service
from webdriver_manager.chrome import ChromeDriverManager # ← 追加
from selenium.webdriver.common.by import By
from selenium.webdriver.suupport.ui import WebDriverWait
from selenium.webdriver.suupport import expected_conditions as EC
import time, json
from selenium.common.exceptions import TimeoutException

class HatenaClient:
def __init__(self, username, password):
self.username = username
self.password = password
self.driver = None

def start_browser(self):
options = Options()
options.set_capability("goog:loggingPrefs", {"browser": "ALL"})
options.add_argument("--headless=new") # 開発中は消してよい
options.add_argument("--disable-gpu")

# ✅ webdriver-manager を使って ChromeDriver を自動取得・設定
service = Service(ChromeDriverManager().install())
self.driver = webdriver.Chrome(service=service, options=options)


def login(self):
self.driver.get("https://b.hatena.ne.jp/my")
print(self.driver.current_url)

self.driver.get("https://www.hatena.ne.jp/login")
time.sleep(2)
self.driver.find_element(By.NAME, "username").send_keys(self.username)
self.driver.find_element(By.NAME, "password").send_keys(self.password)
self.driver.find_element(By.XPATH, "//button[contains(text(), 'ログイン')]").click()
WebDriverWait(self.driver, 10).until(lambda d: "my" in d.current_url or "login" not in d.current_url)
if "passkeys" in self.driver.current_url:
self.driver.get("https://b.hatena.ne.jp/my")

print(self.driver.current_url)
print(self.driver.title)
return "dorawii" in self.driver.current_url

def add_bookmark(self, target_url):
self.driver.get(f"https://b.hatena.ne.jp/{self.username}/add.confirm?url={target_url}")
time.sleep(2)

try:
# コメントがあれば入力
comment_box = self.driver.find_element(By.CSS_SELECTOR, "textarea.bookmarkadd-comment-form")
comment_box.clear()
comment_box.send_keys("わしが書いた")

# 登録ボタンを押す
save_button = self.driver.find_element(By.CSS_SELECTOR, "input.bookmarkadd-submit-btn")
save_button.click()
time.sleep(2)

return True
except Exception as e:
print(f"Bookmark failed: {e}")
return False

def quit(self):
self.driver.quit()

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA512

https://anond.hatelabo.jp/20250822131958#
-----BEGIN PGP SIGNATURE-----

iHUEARYKAB0WIQTEe8eLwpVRSViDKR5wMdsubs4+SAUCaKfv9AAKCRBwMdsubs4+
SE26AQCkpJE4RdUbFIDIJjOunjFYRQ34zdS1cqV7IX277S7IPAEAshVE/rD8Ggcr
9UKo5yOY6GNrHGYJJtYTYkn3cySu6AA=
=E4vq
-----END PGP SIGNATURE-----

2025-08-21

dorawii@執筆依頼募集中

自動ブクマするローカルサーバーとかの構成を作った。

ブクマには↓のサブアカ使用

https://profile.hatena.ne.jp/dorawii_bukuma/

はてなサイト側で読み込まれているはずのrksトークンを生成する関数を直接叩く方法がどうしても分からず結局request処理を自分で書く方法ではなく自動UI側の保存ボタンクリックするという無難な方向に落ち着いた。

最初から後者方法をとっていればもっと全然早く作れたのにというは所詮言い訳か。

とにかくスクリプトを公開しておく。

start-server.bat

@echo off
cd /d "C:\Users\user\Documents\jsscript"

:: Nodeサーバーを別ウィンドウで起動
start /min "" node run-batch-server.js

:: Pythonサーバーを別ウィンドウで起動(hatenaserver配下
start cmd /k "" python hatenaserver\server.py

以降はjsscript直下に配置

config.json

{
"username": "",
"password": ""
}
server.py

from flask import Flask, request, jsonify
import json
import os
from hatena_client import HatenaClient
from flask_cors import CORS

app = Flask(__name__)
CORS(app)

config_path = os.path.join(os.path.dirname(__file__), 'config.json')
with open(config_path, encoding='utf-8') as f:
config = json.load(f)

@app.route('/bookmark', methods=['POST'])
def handle_bookmark():
data = request.json
url = data.get("url")
if not url:
return jsonify({"error": "Missing URL"}), 400

client = HatenaClient(config["username"], config["password"])
client.start_browser()

if not client.login():
client.quit()
return jsonify({"error": "Login failed"}), 403

success = client.add_bookmark(url)
client.quit()

return jsonify({"status": "ok" if success else "fail"})

if __name__ == "__main__":
app.run(port=12347)

あとはグリモンユーザスクリプトとして書くやつ

// ==UserScript==
// @name 自動セルクマ送信
// @namespace tampermonkey.net/
// @version 2025-08-07
// @description try to take over the world!
// @author You
// @match anond.hatelabo.jp/*
// @grant none
// ==/UserScript==

(function () {
'use strict';

const url = location.href;
if (!/^https:\/\/anond\.hatelabo\.jp\/\d+$/.test(url)) return;
const editLink = document.querySelector('a.edit');
if (!editLink) {
// 既に編集ページなので処理をスキップ
console.log('編集リンク存在するため、スクリプトを終了します。');
return;
}

fetch('localhost:12347/bookmark', {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify({ url: url })
}).then(r => console.log("通知成功")).catch(e => console.error("通知失敗", e));
})();
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA512

https://anond.hatelabo.jp/20250821192753# 
-----BEGIN PGP SIGNATURE-----

iHUEARYKAB0WIQTEe8eLwpVRSViDKR5wMdsubs4+SAUCaKb0qwAKCRBwMdsubs4+
SHfiAQDcXmTHBaZ5Zzr1KI/OxZ0xl69oevOdy1FXJYwYvsmo5AD/ZPtZiO1JgTDj
m+27iymlkdzIXOIGWfC82UTr1mJ7EwU=
=YoV+
-----END PGP SIGNATURE-----

2025-08-02

今日特にやることがなかったのでC++ゲーム開発ごっこを進めていた

ChatGPTと話し合ってUI周りのシステムを作っていたのだがどこかで型の違いによるコンパイルエラーが発生し原因を探るために何度も手戻りし解決に丸一日費やした

どうやらポリモーフィズム理解度が低かったため起きてしまたことのようだった

ひとまずjson記述を読み込んで画面内にUIを表示する自由度の高い自己満足システムが出来た

次はワールドを生成しプレイヤーキャラクター自由に歩き回れるあたりを目標にしようかと思う

2025-07-25

anond:20250725093428

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

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

anond:20250723030957

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

anond:20250723030957

JSONは手作業じゃなければいいけど、手作業だとカンマ一つ、クォーテーション一つで即潰れるよわよわなとこあるからなぁ

anond:20250723030957

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

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

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

anond:20250723030957

から、書きやすいの方をなんで意図的無視するんだよ

JSONダブルクォーテーションの整合性とか、ケツカン問題とかどうでもいいところがわずらわしいんだよ。

似たような話は昔XMLなんかでもあって、XMLは誤解なく解釈するには向いているんだけど

開始タグと終了タグが不整合になりやすくて人間の書くもんじゃなかった。

そういう、書いているときに不整合を生み出しやすい書式のことを「書きにくい」と言ってるんだよ。

anond:20250723030957

JSONは、ビューアが発達したので読みやすくなった。

コメントデータとして書いてしまえばいいし。

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

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

.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のほうが普通に読みやすくないか

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

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