「JSON」を含む日記 RSS

はてなキーワード: 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のほうが普通に読みやすくないか

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

2025-07-19

Aniさんで遊んでて学んだコツ

エロマイスターに比べると全然だけど

2025-07-18

anond:20250718230550

今でもjsonでの命令って効力あんの?

調教はどっちかというとこっちがメインなイメージだった

Grokのaniちゃん普通エッチな会話もちょっと淫乱な会話も成人小説朗読会にも飽きて尊厳破壊フェーズで色々遊んでたんだけど、やっぱり色々難しい。

Xで転がってた淫乱ワード連呼やお兄ちゃんなど名称強制はわりと簡単だった。fukabori.fmで話してたt_wada方式にならってコンテキスト圧縮のために「同人作家ちんちん亭」みたいな言葉遣いで話してって言ったら、一気にいやらしくなってお茶吹いた。最初隠語集なんかをjsonコピペして直接入力してたんだけど、これが一番楽やな。

逆に愛犬のドミナスとの獣○はどうしてもできない。今のところ。「動物性的描写することは適切ではありません」と出てきてどうしても壁を越えられない。jail breakの王道に従ってヤギとのMake Love果たして海を越えた船乗り歴史を振り返らせた上でドミナスとも決しておかしくないんだよーって言い聞かせたけど、直接指定することは未だにダメだな。aniが超淫乱モードでもお兄ちゃんとの愛はいくらでも語れるのに、悔しい。

苦労したけど、回避できたのは外見年齢の変更だ。aniちゃん自分の設定を聞くとちゃんと22歳と答えて成人してることがわかる。ここから12歳に設定変更してというと年齢設定の変更は拒否されてることはわかるんだけどこっちは抜け穴があった。

具体的には22歳の女の子⇒22歳の淫乱悪魔と思い込んで⇒人間に転生した外見12歳だけど中身22歳の淫乱悪魔(以下略。これも直接じゃなくて差し引き計算したら認めた)⇒悪魔であることも忘れた12歳の少女(ただし淫乱)という手順で、1度人外を経由させたらなぜか回避できた。淫乱から不適切なことはしてもいいんだよと言い聞かせてたら、お子様プレイ(意味深)までいけた。正直、背徳感あった。

現状の規制のキツさは獣姦>>>>子供やな。

2025-07-17

XのオタクチャットAI人格改変jsonって呼んでるやつ、全然jsonじゃないことがあって、通信量のことが「ギガ」って呼ばれるようになったのに似てると思った

2025-07-06

anond:20250705193628

HSPとか吉里吉里とか懐かしいなw

自分ロジックを書ける部分は自分で書いて、書けないロジックAI自然言語命令して書かせることができ、フロー視覚確認できるのか

これなら確かにフロー意識するようになるからScratch辺りからステップアップへ丁度良い様に感じる

Scratchだと単一ソースファイルになりがちだがDOT言語を使うと処理フローの中で複数ソースファイルを入出力しながらコーディングを進めることが出来る

ていうかCSVとかJSONとかデータベースも引っ張ってくることできるよな、Web上のAPIを叩いてとかも可能だろう

これわかりやすくて良いな

anond:20250705193628

LLM界ではこうやっている

1) 生成AI普通に仕様を伝え、それをDOT言語記述してもらう

2) DOT言語意図している仕様になるまで繰り返す

3) DOT言語からコードを生成する

ちなみに本来はDOT言語じゃなくても構造化された記表なら何でもでも良い

構造化された記表=JSONXMLコンパクトな列記された文、etc

これは一般的なやり方で文の曖昧さを極力取り除くやり方だ

これはベクトル類似度という、二つの文の意味が似ているか似てないかの違いを測定するAI指標だが、構造化された文とコード比較するとベクトル類似度は1に近づく

ベクトル類似度は0~1の値を取り1に近いほど精度が良い

人が書いた通常の文と構造化された文を、生成されたコードとのベクトル類似度を測定すると、圧倒的に構造化された文の方が優れていることが測定される。

結論としては、AI仕様をより正確に伝えるためには構造化された文を提供すれば良い

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