2025年12月27日土曜日

cloudflare durable objectを使う

アトミックな処理をする。
例えばルーム内のゲーム情報の管理など。
ただしworkerは長時間稼働ができないので、ユーザーがDOにalermを送る形式となる。





📌 Durable Objects の料金概要

🚀 プラン

  • Free(無料)プラン

    • SQLite ストレージバックエンドのみ利用可能

    • 制限を超えると該当リソースの処理が失敗する(課金なし)Cloudflare Docs

  • Paid(有料)プラン

    • SQLite または Key-Value(KV)ストレージバックエンド を選択可能

    • Workers Paid プラン(月額 $5 のベース費用)が前提になる場合が多い(※参考実装例)Cloudflare Docs


🧮 課金対象と料金

1) Compute(実行時間・リクエスト)

項目無料枠有料料金
リクエスト数100,000 / 日1,000,000 / 月 included
追加リクエスト$0.15 / 1M リクエスト
Duration(Durable Object 活動時間)13,000 GB-s / 日400,000 GB-s / 月 included
追加 Duration$12.50 / 1M GB-s

(GB-s = 持続時間 × メモリ量 / 1GB)Cloudflare Docs


2) Storage(永続ストレージ)

📌 SQLite バックエンド(推奨)

項目無料枠有料料金
読み込み5M / 日25B/月 included
書き込み100k / 日50M/月 included
ストレージ容量5 GB total5 GB-month included
追加$0.001 / 1M rows read
$1.00 / 1M rows write
$0.20 / GB-month

※SQLite Storage の課金は 2026 年 1 月以降適用予定と公式にアナウンスあり。Cloudflare Docs

📌 Key-Value バックエンド(Paid プランのみ)

項目無料枠有料料金
Read 単位1Mincluded
Write 単位1Mincluded
Delete 単位1Mincluded
Stored Data1 GBincluded
追加$0.20 / 1M read units
$1.00 / 1M write units
$0.20 / GB-month

(Key-Value は読み書きサイズ単位で課金)Cloudflare Docs


📊 例:ざっくり月額コスト

  • 低トラフィック用途

    • リクエスト 1.2M、Duration 50,000GB-s 程度 → おそらく 数ドル〜$10 程度 / 月
      (無料枠内でほぼ収まる場合)TheServerless.Dev

  • WebSocket / リアルタイム用途

    • 多数接続 & 長時間活動 → Duration 増 → 数十〜数百ドルに到達可能
      (例: 100 DO × 50WS × 活動 → $130 程度)Cloudflare Docs



2025年12月25日木曜日

svelte5のa11yの警告をSWE-1で消せるか試す。

現在windsurfにて、
SWE-1.5だとコスト0.5だが、SWE-1はfree。


早くて定評のあるSWEならaccessibility警告を消せるのではないか?

対象Svelte5のソース。





SWE-1のみ:できるんだけど、漏れが発生して何度か指示しないといけない(a11y修正依頼)

SWE-1.5 + Opush4.5 thinking  (Cost 0.5):一発で行けたけどプロンプトが違う(bun run check後の修正)



念のため、SWE-1で同じプロンプトで同じものができるのかチェックする。

同じプロンプトだとSWE-1は全く使い物にならなかった・・・
なんども途中で止まってしまった・・・



wranglerの更新で不思議現象。






2025年12月19日金曜日

画像からOCRの精度

2025年年末時点でのLLMのAPI料金比較

https://www.genspark.ai/agents?id=a340f7f7-ba72-4204-9875-5c7ef4bf3783


Groqにて、

meta-llama/llama-4-maverick-17b-128e-instruct - on_demand

画像からシリアルをOCRしたが、どうやってもFをEと認識してしまう。

どうにもならない。プロンプトで調整もできなかった。


仕方がないのでKIMI latestを使う。

KIMIのAPI発行わかりにくいので張っておく。

https://platform.moonshot.ai/console/api-keys


ちなみにdeepseek公式のUIでdeepseek V3.2 chatからdeepseek-ocrを読み出せるのに、APIだとできないくさい。

どうしてもやるなら、サードパーティーでやるしか。

https://replicate.com/deepseek-ai/deepseek-vl2



あとMINIMAX-M2.1だとKIMIの価格の70%オフぐらいに激安になるのだが、プロンプトによっては問題が発生する。

「シリアルと部品番号をJSONで出力」 → センシティブな情報が含まれるので中断

「画像からOCRしなくてはいけない。」 → 読み込める。

https://platform.minimax.io/user-center/basic-information/interface-key

https://platform.minimax.io/docs/api-reference/text-anthropic-api





deepseek-OCR単体の動作



DeepSeek-OCR 価格表(プロバイダー別比較)

以下、DeepSeek-OCRの各プロバイダー別の詳細価格表です。

📊 主要プロバイダー価格比較表

プロバイダー入力価格(100万トークンあたり)出力価格(100万トークンあたり)コンテキスト長特徴
DeepInfra$0.03$0.108K最安値、高速推論
Novita AI$0.024~$0.03$0.024~$0.038K柔軟な価格設定
Clarifai$0.20$0.708Kエンタープライズ向け
Google Cloud Vertex AI$0.30(または$0.0003/ページ)$1.208KGoogle統合、ページ課金可能






2025年12月12日金曜日

Ark UI 5.12.1にてネストされたモーダルを閉じると親の影響を受ける

<症状1>

Ark UI 5.12.1にてネストされたモーダルを閉じると親の影響を受ける。

最新版: 5.15.0でも未修正。


<症状2>

取引先ピッカー自体は表示されていますが、親のArk UIダイアログのフォーカストラップが効いていて、ダイアログ外(今のPartnerPicker配置場所)へフォーカスが移動できないため、入力が一切できません。なので PartnerPickerを親ダイアログの中(DialogContentの内側)に戻して、フォーカストラップの範囲内に入れます。これで入力できるようになります。



<原因>

ArkUIでネストモーダルの処理が正常に組まれていない。


<対応>

GitHubのissueで見つけた回避策を試します。

setTimeoutを使ってダイアログを閉じる方法です。


問題の原因: Ark UIの既知のバグ

GitHubのissue(#2557)で報告されている問題と同じ。

症状

  • ネストされたダイアログ親Dialog → 子Dialog)で、子Dialogを閉じると親Dialogの動作に影響する
  • Ark UI v2以降から存在するバグ
  • trapFocus(フォーカストラップ)の処理に問題がある

今回のケース

ProcurementDialog(親)→ PartnerPicker(子)
子を閉じると、親のボタンが効かなくなる

結論

原因判定
こっちのソース記述の問題❌ No
Ark UIの構造上の問題✅ Yes
こっちのUI構造の問題❌ No(ネストは一般的なパターン)

対応策

  1. 現状維持 - PartnerPickerだけdivベースにして、他Ark UIを維持(今の状態)
  2. 全削除 - すべてのダイアログをdivベースに書き換え




<まとめ>
結構複雑なUIを作る時、ArkUI(ヘッドレスUI)使わない方がいい。
ぶっちゃけ現代のLLMだとArkUIを使うメリットが薄い気がする。
無駄にバグが増えるだけ。

ウィンドウにSVG装飾をしているからよかれと思ってArkUIにしたが、問題が続発しまくる。
簡単な事しかしないならArkUIでいいけど、reactとかvueとかsvelteとか頻繁に変えたりするにはメリットだが、時間がかかって無駄なバグを生むことが多い。
シンプルな構成の方がLLMにはいいんじゃないか?
ステート管理だって各フレームワーク側に乗せた方が、管理しやすいと思うのだが・・・

もう作ってしまったが、ArkUIに依存しないものを作ってコードを比較してみよう。

2025年12月10日水曜日

telegramアプリの全画面表示

やったこと忘れそうなのでメモ


https://telegram-miniapp-red.vercel.app/



github.com/junichitanaka7777/telegram-miniapp


iPhoneのホーム画面のバグ?仕様?

iPhoneですべてのホーム画面が完全に埋まっている状態だとする。
この状態でPWA(プログレッシブウェブアプリ)でホーム画面に追加をする。

追加したものは検索すると一覧には出る。
この検索一覧のモードは、長押しでアイコンの配置を変える機能だが、埋まっているので配置は変えられない。
このモードは削除は存在しない。
削除はホーム画面から長押しのみ。

ホーム画面をすべて見渡しても、追加したアイコンは存在しない。
ので削除不可。


2025年12月9日火曜日

codexのwebsearchの仕様がいつの間にか変わってた。









Alibabaのagent scopeを使う

Alibabaのagent scopeを触る。

https://github.com/agentscope-ai/agentscope


**AgentScopeは「複数のLLMエージェントを組み合わせ、ツールや記憶を持たせて、柔軟に制御できるアプリ開発基盤」**です。
研究用途から実運用まで幅広く使えるのが強みです。



それよりもopenBMB/x-agentのサイトが死んでる。
https://www.x-agent.net/

Limitless AI販売終了

Limitless AIのペンダント型デバイスの新規販売は終了しています。
Meta社によるLimitless社の買収に伴い、2025年12月5日をもって公式ストアでの販売が停止されました。

2025年12月4日木曜日

claude opus 4.5で変な住所

株式会社T-Trustで、

お問い合わせメールを作らせたら、なぜか以下の住所をどっからともなく拾ってきた。


大阪府大阪市中央区南船場3-9-6
鶏Soba 座銀 にぼし店 (トリソバ ザギン) - 心斎橋/ラーメン


なんだこれ?新たなLLM向けの最適化か???


2025年11月28日金曜日

bingでサジェストが表示されない時が発生した。


なぜかbingでサジェストが表示されない問題。
実験した結果。

# 場所 | OS | Browser | 結果
自宅 | windows | chrome | OK
自宅 | windows | firefox | OK
自宅 | linux | chrome | OK
自宅 | linux | firefox | OK
RA | windows | chrome | OK
RA | windows | firefox | OK
RA | linux | chrome | OK
RA | linux | firefox | NG

よくわからん。
linuxでfirefoxでCPUの速度が遅い時に制限があるとしか思えない。


TraeのSOLOモード。

AI搭載IDE(vscode)のTraeのSOLOモードにすると、
完全にbolt.newっぽい見た目になった。
cursorの新モードっぽいとも言える。




2025年11月23日日曜日

htmlの入力フォームにリアルタイム検索とFEP(フロントエンドプロセッサ)の挙動

htmlの入力フォームにリアルタイム検索とFEP(フロントエンドプロセッサ)の挙動。

https://youtu.be/NYJgymLON2Q?t=840

確かに昔はよく合った問題だが、最近は何も考えずに実装できてるよな・・・

俺の組んでいるsvelteで入力フォームでのFEP(IME等)の挙動が正常なので、実装を確認した。




「入力中(IME未確定状態)なのに、バックグラウンドで検索が走り、かつIME入力も邪魔されない」 という点ですね。
これは以下の3つの要素が組み合わさって実現されています。

1. 入力を即座に検知する bind:value

Svelteの bind:value={query} は、ブラウザの input イベントを監視しています。
現代のブラウザでは、IMEで文字を打っている最中(未確定の「やま」の状態)でも input イベントが発生し、その内容がリアルタイムで変数 query に反映されます。
これにより、変換キーを押す前の「ひらがな」の状態で検索を開始できます。

2. 0.25秒の「待機時間」 (Debounce)

これがIME入力をスムーズにしている最大の要因です。
文字が入力されるたびに即座にAPIを叩くと、処理が重くなり入力がカクつく原因になりますが、この実装では 「入力が止まってから0.25秒後に検索する」 という制御(Debounce)が入っています。
「やま」と素早く打っている間は検索が走らず、打ち終わって一瞬手が止まったタイミングで検索が走るため、IMEの入力を邪魔しません。

3. 入力欄を「書き換えない」

検索結果(suggestions)が返ってきたとき、このプログラムは入力欄(query)の中身を一切いじりません。
単に候補リスト(ドロップダウン)を表示するだけです。
もしここでプログラムが「検索結果に合わせて入力欄の文字を補完する」ような動きをすると、IMEの未確定文字が確定されてしまったり消えたりしますが、「入力欄はユーザーに任せて、結果は下に表示するだけ」 という実装になっているため、IME変換を継続したまま検索結果を見ることができます。

まとめ

  • Svelteの機能: 未確定の文字もリアルタイムで変数に取り込む。
  • Debounce: 入力中は検索を我慢し、手が止まったら裏でこっそり検索に行く。
  • 表示の分離: 検索結果が出ても入力欄には触らないので、IMEが途切れない。
この組み合わせにより、「入力しながら(変換しながら)検索結果が出る」という体験になっています
あいうえお