カテゴリー
Web開発者向け
Web開発者向けに関する記事を公開しています。
EmDash で日本語のサイトを作るときに手を入れる 3か所
EmDash は日本語の記事をそのまま扱えますが、標準のサイト内検索は日本語の語を取りこぼし、語によっては半分以下しか当たりません。日本語の記事 173本で測った検索の数字と、スラッグと見出しの改行で公開前に決めることを書きました。
EmDash に移す日は DNS を移してから Email Sending に登録する
お客様のサイトを EmDash(Cloudflare Workers で動く CMS)に移すと、レンタルサーバーから送っていた問い合わせの通知と自動返信を、Cloudflare の Email Sending で組み直すことになります。登録は DNS を移した後にしかできないので、切り替えの日は DNS、登録、送信元、ログインの順で進めます。
Claude Code で使う cf docs search は Web 検索並み、docs MCP より正確で安い
Cloudflare の CLI「cf」にドキュメントを検索する cf docs search が入りました。Claude Code に Workers と D1 の 6問(最近変わった 4問と前からある 2問)を 2回ずつ答えさせ、Web 検索とドキュメントを検索する MCP サーバー(docs MCP)と比べると、Web 検索とは正誤も費用もほぼ同じで、docs MCP は 2回は正しく答えられず、費用は 3倍を超える額でした。
Cloudflare の Clairic で請求書を読み、確信度の低い文書だけ LLM に回す
Cloudflare の抽出モデル Clairic で日本語の請求書などを読み、数の項目の確信度が低い文書だけ LLM に回すと、30件の 7割の文書は 0.4秒台で返り、正解率は GLM-5.3 単独(100%)に近い 96.7% になりました。
Cloudflare AI Search で、質問の文でも当たるサイト内検索を付ける
Cloudflare の AI Search を使うと、文字が一致しなくても意味が近い記事を返すサイト内検索を、Workers の無料プランのまま付けられます。日本語の技術記事 172本で、CMS の全文検索では 0件だった質問の文でも、狙った記事が上位に来ました。索引の作り方、Worker からの呼び出し、無料で使える回数に収める仕組みまでの手順です。
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 の確認などの読み直しが読み出しとして数えられました。直したのはバケットの既定です。