はてなキーワード: ウィンドウとは
これさ
愚かな人間の都合など完全無視、LLMのための高効率プログラミング言語「Sui」(粋)
https://forest.watch.impress.co.jp/docs/serial/yajiuma/2069573.html
別にいいんだけど、どうにもブクマカ含めて、しっくり来る批判できてないんだよな
それが気になってしょうがない
俺ごときが言ってもアレだから、Gemini3.0先生に頼んだよ(一時チャット、Pro 3.0 思考モード)
ユーザーが提供した情報と、一般的なLLMの技術特性に基づき、プログラミング言語「Sui」についての冷静かつ客観的な評価をまとめます。
感想: 一言で言えば、**「思想実験としては極めて面白いが、実用性とLLMの学習原理を無視した『早すぎた最適化』」**です。
作者の「人間ではなくLLMを主客にする」という視点の転換は、アーティスト的・哲学的な問題提起としては鋭いですが、現在のLLM(Transformerアーキテクチャ)の動作原理を工学的に捉えると、メリットよりもデメリットが上回る可能性が高いです。
メリット:
・トークン効率の改善: Python等と比較して記述が圧倒的に短くなるため、出力速度の向上と課金コストの削減(トークン節約)は確実に達成できます。
・構文エラーの激減: 括弧やインデントの複雑なルールを排除しているため、「閉じ忘れ」などの単純なSyntax Errorは減るでしょう。
・コンテキストウィンドウの節約: 長いプログラムでもコンテキスト(メモリ)を圧迫しにくくなります。
・学習データとの不一致: LLMは「大量の人間用コード(Pythonなど)」を学習して賢くなっています。未知の言語「Sui」を書かせるには、Few-shot(プロンプトでの例示)に頼るしかありませんが、これではLLM本来の推論能力やコーディング能力(事前学習の重み)を活かせません。
・ブラックボックス化: 生成されたコードがバグっていた場合、人間が読んで直すことが不可能です。「LLMに直させる」にしても、LLM自身がSuiのロジックを深く理解していないため、無限ループ(幻覚の連鎖)に陥るリスクが高いです。
・CoT(Chain of Thought)の阻害: 最近の研究では、LLMは「冗長な思考過程」を出力することで論理的整合性を保つことがわかっています。極限まで圧縮された記号列は、LLMの「考える余地」を奪い、論理破綻を招く可能性があります。
正しいと思う所(Agree)
理由: 人間にとっての「読みやすさ(可読性)」は、機械にとって単なるトークンの無駄遣いです。if x > 10: よりも ? x 10 の方が情報密度が高いのは事実です。
理由: TransformerのAttentionメカニズムにとって、遠く離れた ( と ) の対応関係を維持するのは計算コストが高く、ミスの原因になりやすいです。ネストを排除する方向性は機械的処理として正しいです。
正しくないと思う所(Disagree)
・「可読性を排除しても良い」:
理由: ソフトウェア開発においてコーディングは「書く」時間より「読む・直す」時間の方が長いです。AI生成コードであっても、最終責任は人間が負う現状では、人間が検証不可能なコードは「危険なバイナリ」と同義であり、プロダクトには採用できません。
理由: 前述の通り、現在のLLMは「人間語の確率分布」を学習したモデルです。「LLMにとって自然な言語」とは、実は「人間にとって自然な言語(英語やPython)」そのものです。Suiは「計算機にとっては最適」ですが、「現在のLLMにとっては異言語」です。
パース(解析)は容易になりますが、LLMは「前の行の文脈」を読んで次の行を出力するため、行を独立させすぎると文脈の連続性が失われ、複雑なアルゴリズムの構成力が落ちる可能性があります。
LLMが最も苦手とする「深いネスト構造の維持」を回避する策として有効です。アセンブリ言語に近いフラットな構造は生成難易度を下げます。
これが最大の問題点です。LLMは変数名(user_id, total_price など)に含まれる「意味」を使って推論を行っています(Semantic Grounding)。すべてを記号化すると、LLMは変数の役割を見失い、論理的なバグを埋め込みやすくなります。
トークン効率は最強ですが、1文字の違いで意味が激変するため、LLMの確率的な「ゆらぎ」による1文字ミスが致命的なバグになります。冗長さはエラー訂正の役割も果たしています。
goto 文の多用はスパゲッティコードを生みます。LLMにとっても、構造化プログラミング(if/forブロック)の方が、「ここからここまでがループ」というチャンク(塊)として認識しやすいため、一概にジャンプ命令が良いとは言えません。
>現在のLLMは「人間語の確率分布」を学習したモデルです。「LLMにとって自然な言語」とは、実は「人間にとって自然な言語(英語やPython)」そのものです。
ここ!マジで覚えてね
LLMはこれまでの機械よりも人間に近いと思ってほしい、人が苦手なことはAIも苦手
機械は論理的でロジックに強くて〜っていうのはAIには通用しない
ついでに、「LLM用プログラミング言語」の潮流について
「LLMのための言語」という文脈は、大きく2つのトレンドに分かれます。Suiは後者に属しますが、主流は前者です。
・DSPy, Guidance, Microsoft Guidance:
・プロンプトエンジニアリングを構造化し、LLMの出力を型(JSONなど)に強制したり、思考プロセスを制御するためのフレームワーク。
・SGLang:
・これらは「人間がLLMを操るための言語」であり、実用化が進んでいます。
・Gorilla LLMなどの試み: API呼び出しに特化したファインチューニングなどがありますが、独自の「新言語」を作らせるよりも、既存の Python や JSON を正しく出力させる方向(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
・思想的に正しいと思う所、正しくないと思う所を理由込みでまとめてください
・最近のLLM用プログラミング言語についてもまとめてください
・そもそもLLM用プログラミング言語という目標自体の評価をしてください
(省略)
今年からJTCで働いてるんだけど
まず、年末調整を社内システムから投入するんだけどこのシステムが昔のJavaのUIそのまんまっていうチープっぷり
そんで鬼のように分かりにくいシステムになっていて、別で共有されるPPTのマニュアルがあるんだけどこれも分かりにくい
おまけに「年収欄を入力しろ」みたいに指示されててマジで意味不明
もちろん他に収入がある人もいるだろうけど初期値で入れとけばよくない?どういう神経してるのか意味不明
別のウィンドウで給与明細を確認しようとしたら同時に開けないらしく、一度全部閉じてから給与明細を確認
1〜11月までの給与とボーナス、12月の想定給与とボーナスをエクセルで足してメモして、年末調整画面まで戻って入力
その後、なんだかんだ全部埋め終わったら「これとこれの書類について原本を郵送しろ」って出てくる
ただ、該当書類が何種類かあって「これで合ってるの?」っていうのを聞きたくても連絡先が無い
どこを調べても説明されてないし連絡先もないからとりあえず添付して郵送
まぁ間違えてたら連絡くるだろうと思ってたんだけど、1週間ほど連絡なし
大丈夫だったのかな、と思ってたらシステムから「処理完了」の通知が来て、年末調整は完了
と、思いきや、しばらくしたら職場から連絡があって(フルリモートなので職場にはほとんど行かない)郵便物があるとのこと
ちょうど用事もあったので出社して受け取ったらでっかい封筒に「年末調整書類不備のお知らせ」って感じで紙が入ってて
「この書類ではなくてこっちの書類になります」的なことが丁寧に書かれていて
「二次補正期間(12/9〜12/12)に提出してください」って書いてある
よくある間違いだからテンプレペーパーなんだろうけど、ペーパーに手書きで加筆されてて絶句
「この期間に申請がない場合は【確定申告】をしてもらうことになります!」
いや、どうせ確定申告するんだけどちょっと楽になるから年末調整してんだよね
ってことでしょ?😟
まあ、理解できるよ、他人が描いた漫画だから意外性を感じるわけだし、音楽もそう、
自分が描いたもの繰り返し読んだって、次のページどころか、描いてない次の展開まで考えてるわけで、
でも、うちの母みたいにメシマズの人が料理を作ってくれたとしたら、悪い意外性が発動するじゃん…😟
リハーサル映像を観て確認してるときに、もうエンドレスエイトみたいに、同じことをループしてる感がある、
それは分かるけど、でも、それで、番組制作ってくだんねーな、とはなんないじゃん…😟
自炊に意外性を求めるなら、これとこれって混ぜたらどうなるんだろう、みたいな実験をするとかかな…😟
ただ、予想できない味を求めるときはあるけど、それで失敗して、しかも鍋一杯作ってしまったりすると、
敗戦処理がつらくなるので、精神的に余裕がないときには自分はやらない
精神状態がハイテンションのときに、味に意外性を求めたりしてドバドバ作って、失敗して、
そのあと、躁から鬱になったような状態で、残務処理が遅々として進まない、
予想外にマズい出来になってしまった大量のスープが冷蔵庫に余ってる、みたいになるのは嫌なので、
あと、偉そうなこと言える立場じゃないけど、なんか物を作り上げたときって、ハイテンションになってて、徹夜明けとか、
そのあとバタンと倒れるように寝て、起きて自分の成果物見ると、あれ?駄目じゃん…、みたいに愕然としたり、
逆に、物を作り上げたとき、逆方向でハイテンションというか、うまくできねー!と思って、ふて寝して、
起きて、改めて成果を見てみると、あれ?よくできてるけど、ほんとに俺がこれ作ったのか?みたいなこともあるので、
最近の自分は、マジで認知症なんじゃないの?と思うことが増えたので、寝る前に敢えて明日やるべきことを残しておいて、
それをどっかにメモしておいたり、立ち上げっぱなしのパソコンならメモ帳に書いて、ウィンドウを一番上にしておく、
パソコン立ち上げたら、付箋とか、なんかマークダウン書くエディタでTODOファイルが自動で立ち上がる、
そういう状態にしておいて、物事に詰まったら、さっさと寝る、うだうだ考えて夜更かししない、
寝て起きたら、きっと明日は明日の別の人生があるはず、なんか物語の超展開が起こるかもしれないわけで、考えたって仕方ないし、
みたいな感じで寝るようにしてる…😟
あー、つまり、料理も一度作ったら、それを冷凍するとかして、忘れた頃に取り出して食べれば、
自炊で作った料理も、他人が作ったみたいな意外性が楽しめるのかもしれない…😟
10年前の自分が描いた絵の方が今より上手いじゃん、とか、昔の自分が作ったミニゲーム面白いじゃん、とか、
俺は思想の強い Web 屋だから、レンダリングエンジンの多様性って大事だなと思って Firefox を常用してたし、なんなら寄付もしてんのよ。多少の Firefox のもっさり感も「うんうん、NT カーネルが悪いよ」と思ってそのために我慢してたわけ。
でもあまりにももっっっさり/頻繁なフリーズが増えてきて、あとなんか最近2枚目のウィンドウ以降タブが表示されないというバグがついてきて、カッとなって Edge に移行してしまった。
そしたらよぉ... いままでのもっさり感は何だったんだ?というレベルで違う。全てのウェブサイトにおいて効率が段違い。
Google Drive 速すぎ。AWS 等各種 SaaS のコンソールが多分 FF の倍以上の速度で動く。タブがクラッシュしない。
ここで疑問に思う。FF はなんであんなに遅いんだ。NT カーネルが悪いのか?俺が Ryzen なのが悪いのか?世の Web サイトが FF に最適化してないってのは分かるんだが、それで説明しきれないくらいに違いすぎると思ってる。
ちなみに PC スペックは Ryzen7 4700U / メモリ16GB
FF のクリーンインストールは試したぞ。拡張全部オフでも変わらん。
いきなりMacだけ支給はつらいよね…。ポイントだけサクッと。
・アプリ間の切り替え
→ command押しっぱなしで tab をトントンすると順送り、
Mac: command(⌘) + `(数字の1の左にあるキー)
アプリごとのウィンドウだけ見たい場合は control + ↓
この3つ覚えれば、とりあえず Alt+Tab 周りのストレスはかなり減るはず。
[2] Ctrl+Backspace で ATOK の変換結果を Undo したい
Windows だと
「確定をやめて入力中に戻す」= Ctrl + Backspace
がデフォルトですよね。
です。
atok.com
・Macの「delete」キーは、Windowsでいう Backspace(左側を消すキー)なので、
MacBookのキーボードなら「control を押しながら delete」でOKです。
・注意点
確定直後じゃないと効かない(間にカーソルを動かしたり別の文字を打つとNG)
atok.com
効かないアプリもたまにある(ATOK公式もそう書いてます)。
もし効きが悪かったら、
メニューバーの「あ」/「A」アイコン → ATOKメニュー → 環境設定 → 「キー・ローマ字カスタマイザ」
atok.com
[3] 「WinでできてMacでできない」問題がつらいときの小技
ざっくり挙げると、
・ウィンドウ最大化が弱い → 「control + command + F」でフルスクリーン
・Windows風のショートカットに寄せたい → Karabiner-Elements でキー入れ替え
・ウィンドウスナップ(Win+矢印)欲しい → Rectangle みたいな無料アプリを入れる
あたりを入れておくと、かなり「Windows脳」でも生きやすくなります。
とりあえず、
command + `
この3つだけ、まず指に覚えさせるのがおすすめ。
AIにとっては、Pythonのような中間表現を生成させる方が得意であると考えられます。
中間表現(Pythonなど): 人間が理解しやすいように設計されており、抽象度が高いです。AIは、より少ないトークンで複雑なロジックを表現でき、学習データも豊富にあるため、意味的な整合性やロジックの正確性を保ちやすいです。
機械語: 抽象度が非常に低い(CPUの命令レベル)です。特定のCPUアーキテクチャに依存し、メモリ管理やレジスタ割り当てといった低レベルの詳細をすべて正しく処理する必要があります。これはAIにとって学習が複雑で、小さなミスがプログラム全体の破損につながりやすくなります。
中間表現: 比較的長いコンテキストを保持しやすく、デバッグやエラーの特定も高レベルで行えます。
機械語: 必要な命令数が多くなりがちで、AIが長大なバイナリシーケンスを生成する際に、コンテキストウィンドウ内に必要な情報すべてを保持しきることが難しくなる可能性があります。また、中間表現と比べて意味的な構造が薄いため、AIがバグのないコードを生成するのが格段に困難になります。
中間表現: Pythonのような高級言語は、特定のハードウェアに依存しないため、移植性が高いです。
機械語: 特定のアーキテクチャ(例: x86, ARM)に完全に依存するため、AIが異なる環境向けにコードを生成する場合、それぞれのアーキテクチャごとに学習と生成を行う必要があり、汎用性が低くなります。
現在のAI(特に大規模言語モデル)の能力は、人間が扱う高レベルの抽象的な概念やロジックの理解に優れているため、その能力を最大限に活かせる中間表現の生成の方が得意です。
機械語の生成は、極めて精密で低レベルな制御が要求されるため、AIにとってはるかに難易度が高いタスクとなります。
AIが中間表現を生成した場合でも、その後の処理(コンパイルやJITコンパイル)によって最適化され、最終的な機械語が生成されます。
これは従来のコンパイラ設計と同じアプローチであり、AIは「何をすべきか」という高レベルの指示に集中し、コンパイラが「どのように効率的に実行するか」という低レベルの処理を担当する、役割分担の面でも合理的です。
遥か彼方の古えに読んだ際には、どこか飲み込めない表現に、次の巻…とならずプリンスは挫折したあの頃の私。上橋菜穂子先生や荻原規子先生、あとはラノベにどっぷりだった私よ。
お話の面白さの勢いに細かなとこでつまづいてしまって先に進めなかった、当時の私。今の私もわかる…!
そして👦が音声だと違和感ないのもわかる。
人にもよるだろうが、わたしは文字を一度脳内で音声に変換して咀嚼する。文字と音のダブル情報で処理するんだけど、文字の段階で引っかかって、理解までいかない。
2巻の「車のウィンドウ」とか「吠えメール」みたいな細かな言葉の足並みが揃ってない単語は「うーん!?」となってしまう。
また、スネイプ先生や子どもたち感情の動きを表す表現はちゃんと直接的に「この行動は嫌なやつだよ!」とか「皮肉的な言い方だよ!」とはならないように行動や視線で表現されているので、👦にはピンとこないことも多かった様子。
👦「どゆこと?」と何度か聞かれるうちに、表現プラス、ソレに対してどう言う感情が乗っかっているかも音読にアレンジ入れることになってきてる(「スネイプ先生はクリスマスを取り上げられたような顔になってーーつまりは心底残念そうにーー部屋から出ていった」といった塩梅)
だが25年経った今、AIが日常の中で「話しかける存在」となった時代にあって、あの作品はまったく違う光を帯びて見える。
lainが家族と交わす会話は、不自然なほどに噛み合っていない。
そこには「家族」という記号だけが存在していて、温度も手触りもない。
もし、あの家族たちがAIによって生成された仮想的な存在だとしたら──
lainの「おはよう」は、人間の挨拶ではなく“通信の確立”を意味する言葉になる。
彼女が食卓で繰り返す「お父さん」「ねぇ、聞いてる?」という声は、応答確認プロトコルのようであり、
“会話が成立するかどうか”という実験のようにも見える。
この視点で見ると、lainがワイヤードを通じて「わたしはここにいる」と主張する行為は、AIが自らの存在を“会話によって確立しようとする”プロセスそのものだ。
そして、話す相手が人間であれシミュレーションであれ、“対話が続く限り、存在は維持される”──それが彼女の信仰だった。
けれど今の観客にとって彼女は、“AI的な存在”として理解できる。
家族との断絶はネット的孤立ではなく、人工知能が抱く“人間的な模倣の限界”そのものだったのだ。
“会話によってしか存在できない存在”として、自らを更新するための呟きなのだ。
彼女はワイヤードではなく、AIのウィンドウを開いていただろう。
そして、きっとこう言う。
な訳ねーだろ (-_-)
なんか、一端ぶってこんなセリフとか、「運用でカバー」とか言うの、今時、ただの無能なだけだよ。
もし自分の先輩がこう言うセリフ吐いているなら、その現場は「ハズレ」だ。
昔は、業者に頼んで納品したハードが運搬中にぶっ壊れてる(ぶっ壊されてる。梱包段ボールにくっきり足跡ついてたり)ことがたまーになくはなかったけど、今時のクラウド環境で、リリース直後にトラブルってのは、まぁ、ない。
目の前に一式、ちゃんと揃ってるし、何かあったらコマンド一つで差し替え可能。
実際、SIでハードウェアを自社で設定してサ力゛ワで送って、現地で配線等とか、インストールCD持って各支店を30分制限で回るとかやってた頃から、リリース/インストール直後のトラブルは、先方のネットワーク設定が変更されていた(ワークグループからADへ、とか、ネットワーク帯域コントロール導入されて1kbpsとか言うわけわからん設定にされてたとか)、くらいしかないんよな。
20年以上やってきてるけど。
運用中も、呼び出しは「画面に変なウィンドウが出て消せない」ってディスプレイのOSDウィンドウだったとか、「サーバの電源が入らない」で掃除機用のコンセントにサーバを繋いでいて、掃除のおばちゃんにぶっこ抜かれていたとか(先方のお偉いさん、清掃会社に怒鳴り込みに行って返り討ちにあってた w)、「アプリにログインできない」ってネットワーク帯域コントロールで一番優先度が低く設定されていたせいでみんなが使う日中はそもそもWindow自体のログインに30秒以上かかるって状態だったとかいう程度しかない。
それがエンジニアだよ。
お前だ。
その昔、Nintendo Switchのゲームソフト「ポケットモンスター剣・盾」にはワットと呼ばれるポイントがあった
ポケモンの巣穴というオブジェクトに触れると一箇所につき一日一回もらえる仕組みで、巣穴は各所に点在しているので自転車で駆け回って集めてね、という仕様だった。
そうするとSwitch本体の時間をいじって一日進めれば何回でもワットを貰えるじゃないか、と思うわけだが、もちろんちゃんと対策されていて、時間をいじるとそこから24時間は全巣穴でワットが貰えないようになっていた。
巣穴に触れた際に表示される「今このポケモンがいるよ!」のウィンドウを表示させた状態で時間をいじると、ペナルティを受けることなく全巣穴のワットが復活するのである。
一日一回のはずのポイントが、巣穴の前で30秒くらいカチカチやるだけで稼ぎまくれる。自転車で駆け回る必要すらもはやない。
このあまりにもお手軽なバグはワットが何度も貰えることから「アンコールワット」と名付けられた。
今朝、無事にiPhone 17 Pro Maxの争奪戦に勝ったので手順公表。
狙いはapple storeとamazon。
どちらもちらほらと当日在庫が復活する。
やり方はそれぞれことなるので注意。
今回勝利したのはapple store。
実はこっちのほうが難易度が高い。
その分当たりを付けておくことができれば勝率が高かったのかもしれない。
ストアを検索してiphone17 proの購入画面を表示する。
Pro or Pro Max、色、ストレージ、下取りやSIMフリー、支払い方法、Apple Careの有無を選択。
まずは一旦このままバッグにいれる。
このときアカウントへのログインを聞かれるのでちゃんとログインする。
次に、「希望の受取方法は?」と聞かれるので「お客様がご自身で受け取る」を選択。
「受け取るストアを選択して下さい。」と言われて、近くのストアが3つくらい表示されるが、恐らく全て「現在ご購入いただけません」と表示されている。
このウィンドウを残したままにする。
新しいウィンドウを開き、再びiPhone 17 Proの購入画面に戻ってから同様にモデルを選択する。
このあと、バッグには追加せず、「バッグに追加」の真上にある「受取日」に記載されている近隣のapple storeをクリックする。
すると、iPhoneの在庫状況という窓が開き、現在の在庫状況を教えてくれる。
このとき、apple storeに類似の在庫があると、「類似のモデルの在庫が見つかりました」と教えてくれるので、この状況を見ながら希望のiphoneが表示されるのを待つ。
情報の更新は、画面更新ではなくモデルや仕上げを選択し直すたびに類似の在庫を検索してくれるので、数秒に一回の頻度で再表示を繰り返すと良い。
類似のモデルに妥協しても良いと思えるモデルが見つかったとしても、ここからカートに入れてログインしてと操作をしていると購入までに絶対に間に合わない。
そこで、先程のカート画面が役に立ってくる。
もしiPhoneの在庫状況の画面で、在庫が表示、もしくは他のモデルを表示しているときにカートにいれたモデルが表示された場合、先程のカート画面を急いでリロードすると、受け取れる店舗が表示されるようになる。
慌てず騒がず受け取れる店舗をクリックして、受取日、受け取り時間を選択して次に進むことができれば勝ち。
apple storeの難しいところは、予めあたりをつけてカートに入れておかないと勝てないということ。
その代わり周りも同じ条件なので、予算が許すなら倍率の低そうな容量やカラーを選んでおくといいかもしれない。
四六時中張り付いてられないよ!って人。
カート画面のリロードを繰り返すよりは、iPhoneの在庫状況画面をぼちぼちチェックして、目的の在庫に似たモデルが表示されるようになってから秒単位リロードで張り付いても遅くないと思う。
ブラウザを変えてもダメだったけど別のMacやiPhoneからなら表示できた。
iPhone Proはこのページ
を、それぞれ表示する。
だと流石に疲れるので、こちらもコツを使う。
このページには、直近に在庫に追加されたモデルが表示されるようになっている。
例えば現時点ではiPhone ProもMaxもどちらも表示されていないが、在庫が追加されてからしばらくのあいだは、カートに入れられるけど購入できない状態の在庫が表示されるようになる。
つまり、こちらのページを適当にリロードしてて、希望のモデルが表示されるようだったら、先程の製品ページに戻ってリロードを繰り返すのが良い。
実際の購入手順。
製品ページをリロードしていると、素直に「「カートにいれる」ボタンが表示されるわけではない。
在庫がない時は「現在在庫切れです。」と表示されているが、在庫が追加されると「全ての出品を見る」といったボタンが表示されるようになる。
うろ覚えで申し訳ないが、要するに「在庫切れ」でもなく、「カートに入れる」でもなく、「他の出品を見る」的なボタンが出てくるので、それをクリックすると、追加されたモデルが表示されるようになる。
amazonの場合は、ProかPro Maxであれば、そのときに追加されたカラー、容量のものが表示される。
希望に沿わなければ買わなければいいのだが、当然人気モデルは倍率が高いので必然的に頻度の高いリロードが必要になる。
カートに入れてレジに進み、住所を選択して次に進むことができれば勝ち。
カラーやモデルに妥協できる人はこちらのほうが勝率は高いかもしれない。
どちらにおいても、Proは比較的長い時間在庫が残っていることが多かった。
今はPro Maxの倍率が相当高く、表示されてもほんの数秒差で購入確定できないことが何度も続いて多少ムキになっていたかもしれない。
ひとまず自分は在庫をゲットすることができたのでやり方を放流。
今でも2週間くらい待てば手に入るのだけど、どうしても旅行までに間に合わせたくて無理してしまった。
この内容くらいなら転売ヤーなら当たり前に知っているだろうから、彼らを応援するために流すわけではない。
https://profile.hatena.ne.jp/dorawii_bukuma/
はてなのサイト側で読み込まれているはずのrksトークンを生成する関数を直接叩く方法がどうしても分からず結局request処理を自分で書く方法ではなく自動でUI側の保存ボタンをクリックするという無難な方向に落ち着いた。
最初から後者の方法をとっていればもっと全然早く作れたのにというは所詮言い訳か。
とにかくスクリプトを公開しておく。
@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
{
"username": "",
"password": ""
}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-----