ブログ
Web 制作・システム開発に関する記事を公開しています。
EmDash の管理画面で記事を直すと Workers 無料プランで 503 になる
Workers の無料プランで EmDash 1.3.0 を動かし、管理画面で記事を直すと、自動保存が 1回 61〜135ms の CPU を使い、4分で打ち切られて管理画面が約 2分 503 になりました。CLI で入れたときは打ち切られず、無料のままなら本文は外で仕上げてまとめて入れることになります。
Void は import を見て Cloudflare のリソースを作り、作った物は消さない
KV を使う Astro のノートアプリでは、ID を貼る作業が Void で無くなりました。ただ、どのページからも呼ばれていないファイルでも、`void/storage` を import する行があるだけで R2 バケットが作られ、そのファイルを消してもバケットは残りました。Void は作るリソースをファイルの置き場所と import から決めます。作る前に一覧は出さず、作った物を自動では消しません。
OpenCode 2.0 の Code Mode は同じ Claude で費用が Claude Code の4分の1
同じ Sonnet 5.5 と同じ MCP サーバーで、GitHub の Issue を Linear に写す作業を Claude Code と OpenCode 2.0 の Code Mode で比べました。費用は4分の1になりましたが、往復の回数はほぼ同じで、減ったのはモデルが本文を書き写す出力でした。
EmDash 1.3 で coalesce: true を足すと D1 の読み取りが 1.2 並みに戻る
EmDash 1.3 は D1 を session: "auto" で使うサイトの先読みを止め、手元の計測ではトップページ 1回の読み取りが 439行から 18行に減りました。新しいテンプレートが既定にした coalesce: true を足すと先読みが戻り、往復は 3回から 2回に減る代わりに 440行を読みました。
GitHub Actions の lockfile は composite action の中の action まで記録する
uses を SHA で固定しても composite action が中でタグで呼ぶ action は固定されず、GitHub Actions の lockfile はそれも記録します。そうした action が無ければ、記録されるのは SHA で固定したのと同じコミットです。
小さな Workers アプリなら TanStack Start
一覧・詳細・フォームの同じアプリを TanStack Start 1.0 と Next.js(vinext と OpenNext)で作り、Cloudflare Workers に載せるならどれを選ぶかを比べました。新しく作るなら Start、Next.js のコードがあるならまず vinext で動かし、動かない物だけ OpenNext にします。
D1 と R2 を使う Workers サイトは Deno の celld で動くが、今は移すメリットが無い
D1・R2・Cron を使う EmDash の Workers サイトを、Cloudflare Workers 以外で動かす環境として Deno の celld 0.6.2 に載せました。設定 5か所とコード 3か所を直すと自前の 2台で動きましたが、Workers のキャッシュと TLS を失い、ビルドのたびの手直しとベータ版のツールを抱えることになります。今は移すメリットが無く、使い道は Cloudflare から出られる道があるかを手元で確かめておくことです。
Cloudflare Workers のログの枠は 12月から件数に直すと半分以下
12月から Workers Logs の枠は件数から容量(GB)に変わります。invocation logs(リクエストごとに自動で残るログ)を既定のまま残す Worker のログを測ると 1 リクエスト約 5KB で、件数に直すと Free は 1日約 10 万、Paid は月約 840 万リクエスト分と、今の枠の半分以下でした。
Cloudflare Pages に終了日は無く、Workers でも無料の範囲は同じ
Cloudflare Pages に終了日は発表されておらず、静的アセットの配信は Workers に移しても無料で無制限のままです。変わるのは、Cloudflare のネームサーバーを使っていないドメインをカスタムドメインにできないことと、ビルドの数え方です。移した後に Cron Trigger をサイトごとに置くと、無料プランではアカウント全体で 5本を超えた所で上限に当たります。
EmDash を本番で半年使った料金と WordPress 移行
EmDash は Cloudflare の無料プランで動くと言われます。9 サイトを半年本番で動かし、WordPress から 6 サイトを移した実例で、管理画面の保存の CPU 時間と移行で直した物を示します。9 サイトは無料のままで、有料にしても 1 アカウント月 5 ドルです。
Claude Code の壊れた hook は onFailure で止まり迂回されなかった
Claude Code の PreToolUse の hook は、パスの誤りや時間切れで壊れると既定では操作を黙って通します。onFailure に block を付けると 65回すべて止まり、Edit の見張りを Bash で迂回した回は 0 でした。
YouTube API の公開予約は監査なしでも公開された
監査前の YouTube API のプロジェクトで上げた動画は非公開のまま公開に変えられないとヘルプは説明していますが、リファレンスは制限しないと書いています。publishAt を付けて上げた 12本はすべて予約の時刻に公開されました。その条件と確かめ方です。
pnpm 12.11 のスキル承認は一度許すと更新で危ない指示も素通りする
pnpm 12.11 から、依存パッケージに入っているスキルを承認した物だけ繋ぐようになりました。承認したあとにバージョンを上げて、増えたスキルを Claude Code が読むかを試しました。普通の承認だと更新はそのまま通り、バージョンつきで書くと承認待ちに戻ります。
Haiku 5.5 は 4.5 で失敗した作業もこなし費用は Sonnet の約 1/10
Claude Code のサブエージェントに 5種の作業を 3回ずつ渡すと、Haiku 4.5 は 15回中 4回失敗し費用も Sonnet 5.5 並みでしたが、Haiku 5.5 は low でも全部通り費用は Sonnet 5.5 の約 1/10 でした。速くはなりません。
Claude Code が約 0.01 ドルと説明した Cloudflare R2 に 10 ドル以上かかった
Claude Code が約 0.01 ドルと説明した Cloudflare R2 に 10 ドル以上かかりました。Standard の指定は管理画面にしかなく、指定せずに上げた素材がバケットの既定の低頻度アクセスに入り、SHA-256 の確認などの読み直しが読み出しとして数えられました。直したのはバケットの既定です。
小さなアプリで Cloudflare の監査スキルを手順どおり回すと /security-review の 30倍の費用
Cloudflare の security-audit-skill を約 170行の Workers のアプリで /security-review と同じモデルで比べました。主な脆弱性は両方が毎回挙げ、手順どおりに回すと費用は約 30倍、素のままなら約 4倍でした。
WordPress と EmDash の差は好みではなくプラグインの作りにある
WordPress から EmDash に乗り換えるメリットはあるのか。どちらも同じことができるなら好みの問題ではないのか。9 サイトを 1.1 まで運用した私の答えは、差は好みではなく、管理者なら誰でも本番のコードを触れる WordPress の作りにある、です。エコシステムの未成熟と、国内に始める場所が無いことまで含めて書きます。
Remix 3 を Next.js と比べたら、DB 同梱は本当で圧縮は自分で入れる
Remix 3 と Next.js 16 で同じ問い合わせフォームを作って比べました。DB の同梱と DB を読むページの速さは本当でした。圧縮は既定で切れていて、入れると JS は Next.js の 3分の1 になりますが、既定の強さのままだと処理量が落ちます。
npm を止めるだけなら Claude Code の mod は要らず hooks で足りた
CLAUDE.md の「npm ではなく pnpm を使う」を Haiku 4.5 に守らせるやり方を、Claude Code の mod と hooks で 5 通りずつ試しました。npm を止める点ではどれも hooks で mod と同じ結果になり、試した中で mod にしかできなかったのは、書き換えた記録を画面に出し続けることでした。
AWS の判定モデル Strands Decider 2B はコードレビューのバグ探しに使えない
AWS の Strands チームが公開した判定モデル Strands Decider 2B に PR の差分からバグを当てさせました。既定の設定では長い差分の後ろを黙って捨て、設定を上げた伸びは大きい PR 1 本を丸ごと高く付けた結果でした。