徒然

Astro + Workers

了解です 👍
「wrangler.toml が見つからない」= かなりよくある状況です 🚀
原因はほぼ次のどれかです。


🏆 原因①:Workerプロジェクトではない場所にいる

👉 wrangler.toml
⚡ Worker プロジェクトのルートにだけ存在します


📌 正しい場所の例

ai-api/
 ├ src/
 ├ package.json
 ├ wrangler.toml   ← ★ここ
 └ node_modules/

🔍 今いる場所を確認

pwd

Windows の場合:

cd

📌 フォルダ移動

Worker を作ったフォルダへ:

cd ai-api

🏆 原因②:まだ Worker を作っていない

👉 wrangler.toml は自動生成されます

Worker作成コマンド

npm create cloudflare@latest

作成後:

Project name: ai-api
Template: Worker only

👉 完了すると自動生成


🏆 原因③:新しい形式では wrangler.json / wrangler.jsonc

2025以降は TOML 以外も使われます。

Astro

シンプルに答えます!

Astro ローカル開発の基本コマンド

🚀 最初の1回だけ(プロジェクト作成)

npm create astro@latest
cd my-project
npm install

💻 毎日使うコマンド

# 開発サーバー起動(これだけ覚えればOK)
npm run dev

ブラウザで http://localhost:4321 を開くと表示されます。ファイルを保存するたびに自動でリロードされます。


その他のコマンド

# 本番用にビルド(dist/ フォルダに出力)
npm run build

# ビルド結果をローカルでプレビュー
npm run preview

# Astro CLIヘルプ
npx astro --help

Cloudflareへデプロイする場合

# Cloudflareアダプターを追加
npx astro add cloudflare

# Wranglerでローカルテスト(Workers環境をエミュレート)
npm run build
npx wrangler pages dev dist/

# 本番デプロイ
npx wrangler pages deploy dist/

よくあるトラブル

症状 解決策
npm run dev でエラー npm install を再実行
ポート4321が使用中 npm run dev -- --port 3000
Node.jsバージョンエラー Node.js 18以上が必要

npm run dev の一択で始めてみてください!

カカオニブ vs カカオ95%チョコ

🍫 カカオニブ vs カカオ95%チョコレート(完全比較)

結論から言うと👇

👉 カカオニブ=ほぼ“生のカカオ豆”
👉 95%チョコ=加工された高カカオ食品


🧬 原料・加工の違い(最重要)

■ カカオニブ

  • カカオ豆を砕いただけ

  • 砂糖・乳製品なし

  • 最低限の加工

👉 最も自然に近い形

カカオニブは殻を除いて砕いた豆そのもの (産業省)


■ カカオ95%チョコ

  • カカオ+砂糖+カカオバターなど

  • 加熱・練り・成形

  • 滑らかな口溶け

👉 「食品として食べやすくしたカカオ」


🧠 栄養・健康効果の比較

項目 カカオニブ 95%チョコ
抗酸化物質 ⭐⭐⭐⭐⭐ ⭐⭐⭐⭐
食物繊維 ⭐⭐⭐⭐⭐ ⭐⭐⭐
ミネラル ⭐⭐⭐⭐⭐ ⭐⭐⭐⭐
砂糖 0 少量あり
脂質 高(バター追加)
加工度 最低

👉 未加工ほど抗酸化物質は多い

加工により抗酸化物質は減少する (FOODTEN.com)


🔥 ポリフェノール量

🥇 カカオニブの方が多い

  • 加熱・加工が少ない

カカオニブの売れ筋

カカオニブの売れ筋(定番・人気)商品は、主に
👉「オーガニック」「ローカカオ」「大容量」「製菓用」
の4タイプに集中しています。

特に日本でよく売れている代表格を厳選して紹介します👇

⭐定番・売れ筋カカオニブ TOP商品

¥2,587

TOMIZ 有機カカオニブ 500g

¥1,101

有機JAS認定 ローカカオニブ 100g

¥980

ママパン オーガニック カカオニブ 500g

¥3,799

Alishan カカオニブ 100g ×3

¥2,330


🥇特に人気が高い理由(選ばれるポイント)

✅ 1位クラス:海外オーガニック系


✅ コスパ最強:製菓・業務用

👉 パン・お菓子作りユーザーに定番
👉 大容量で安い
👉 日本で最も入手しやすい


✅ 健康志向:ローカカオ(非加熱)

👉 ポリフェノール重視
👉 スーパーフード用途
👉 ヨーグルト・スムージー向け


✅ 自然食品店の定番

👉 有機食品ショップでよく見かける
👉 安心感のある老舗ブランド

Cloudflare Pagesのnodejs_compatフラグ設定

このエラーは Cloudflare Pages(Workers)側の設定不足 が原因です。
Next.js のコード自体の問題ではありません ❌


❗ エラーの意味

Node.JS Compatibility Error
no nodejs_compat compatibility flag set

👉 要するに:

「このサイトは Node.js 前提でビルドされているのに
Cloudflare が Node.js 互換モードで動いていない」


🔎 なぜ起きるのか

あなたのサイトは:

@cloudflare/next-on-pages でビルドされた Next.js


これは内部で Node.js API を使います(例)

  • process

  • Buffer

  • crypto

  • stream

  • fs(擬似)

  • path

  • Node runtime polyfills

しかし…

Cloudflare Workers は本来:

👉 Node.js ではなく V8 isolate(ブラウザに近い環境)


💥 つまり

Node.js 機能を使うコード

Workers は理解できない

nodejs_compat フラグが必要


✅ 解決方法(これだけ)

Cloudflare Pages の設定で
Node.js 互換モードを ON にする

多糖類

糖分(糖質)は大きく分けて以下の2種類に分類されます。

1. 単糖類(モノサッカライド)

  • : グルコース、フルクトース(果糖)、ガラクトースなど。

  • 特徴: 最も基本的な糖分。体内で素早く消化・吸収され、即効性のエネルギー源になります。

  • 体への影響:

    • グルコースは血糖値を急激に上げやすいため、インスリンが分泌されて血糖値を調整します。しかし、頻繁に血糖値の急激な変動があると、インスリンの効き目が悪くなる可能性があります。

    • フルクトースは肝臓で処理されるため、過剰に摂取すると脂肪肝や高血圧、心血管疾患のリスクを高めることがあります。

2. 二糖類(ディサッカライド)

  • : ショ糖(砂糖)、ラクトース(乳糖)、マルトース(麦芽糖)など。

  • 特徴: 2つの単糖が結びついたもの。体内で分解されて単糖に変わり、吸収されます。

  • 体への影響:

    • ショ糖はグルコースとフルクトースが結びついたもので、摂取すると血糖値が上がりやすいです。また、過剰に摂取すると体脂肪が増え、肥満や糖尿病のリスクが高まります。

    • ラクトースは乳製品に含まれる糖分で、乳糖不耐症の人は消化できず、お腹の不調を感じることがあります。

3. 多糖類(ポリサッカライド)

  • : デンプン、セルロース(食物繊維)など。

  • 特徴: 多くの単糖が結びついたもので、体内で消化されてエネルギーに変わりますが、単糖よりも消化に時間がかかります。

  • 体への影響:

    • デンプンは消化されてグルコースに変わりますが、ゆっくり消化されるため、血糖値の上昇が穏やかです。全粒粉や玄米などの複雑な炭水化物は血糖値の急激な上昇を避け、長時間にわたってエネルギーを供給します。

    • 食物繊維(セルロース)は消化されないため、腸内環境を整える効果があります。便秘予防や腸内フローラの改善に役立ちます。


糖分の体への影響をまとめると:

  • 過剰摂取: 糖分を過剰に摂取すると、肥満や糖尿病、心血管疾患、脂肪肝などのリスクが増します。特に、加工糖(白砂糖や果糖など)は急激に血糖値を上げるため、インスリンの効き目が悪くなりやすいです。

  • 急激な血糖値の上昇: 単糖類や二糖類は急激に血糖値を上げるため、エネルギーとしての利用は速いですが、後に血糖値が急激に下がることがあり、空腹感や疲労感を引き起こすことがあります。

  • 複雑な糖分の摂取: 複雑な糖分(多糖類)は消化に時間がかかるため、血糖値が緩やかに上がります。これによりエネルギーの持続時間が長く、体に優しいです。

糖分を摂取する際は、どの種類の糖分をどの程度摂るかを意識することが大切です。

脳の健康に最も重要なのは、**「安定して供給されるブドウ糖(グルコース)」**です。
ただし「どの糖を摂るか」より 「血糖値を安定させる形で摂るか」 が決定的に重要です 🧠✨


✅ 脳に最も良い糖のタイプ(結論)

🥇 1位:ゆっくり吸収される糖(複合炭水化物)

例:

  • 玄米

  • 全粒粉パン

  • オートミール

  • さつまいも

  • 豆類

理由:最も脳に良い

✔ 血糖値が安定
✔ 集中力が長く続く
✔ 記憶力低下を防ぐ
✔ 脳疲労が起きにくい

👉 脳は「一定の燃料供給」を好みます


🥈 2位:果物の糖(天然の果糖+食物繊維)

例:

  • ベリー類

  • りんご

  • みかん

  • バナナ

✔ 抗酸化物質が多い
✔ 脳の老化防止
✔ 食物繊維で吸収が緩やか

Agents SDK

Cloudflare の Agents SDK(旧称: AI Agent Starter Kit)の使い方を解説します。


Cloudflare Agents SDK とは

通常のAIアプリはステートレスですが、Agents SDKを使うと「会話を記憶し、スケジュールで動き、ツールを呼び出し、他のエージェントと連携し、ユーザーとリアルタイムでつながる」本格的なエージェントを構築できます。各エージェントは Durable Object 上で動作し、独自のSQLデータベース・WebSocket接続・スケジューリング機能を持ちます。


🚀 クイックスタート(3コマンドで動く)

1. テンプレートからプロジェクト作成

npx create-cloudflare@latest --template cloudflare/agents-starter

2. 依存関係インストール&起動

cd agents-starter
npm install
npm run dev

http://localhost:5173 を開くとエージェントが動いているのを確認できます。デフォルトでは Workers AI を使うため、APIキーは不要です。


📁 プロジェクト構成

ファイル 役割
src/server.ts チャットエージェントのロジック・ツール定義
src/app.tsx React製チャットUI
src/client.tsx Reactエントリポイント
src/styles.css Tailwind + Kumo スタイル

🛠 主な機能

スターターには以下が含まれています。

  • ストリーミングAIチャット(Workers AI経由)
  • 3種のツールパターン:サーバーサイド自動実行・クライアントサイド(ブラウザ)・Human-in-the-loop(承認フロー)
  • スケジューリング:一回限り・遅延実行・定期(cron)タスク
  • 推論表示:モデルの思考過程をストリーミング表示

🤖 別のAIモデルに切り替える

server.ts のモデル部分を変更するだけで他のプロバイダーも使えます。

Anthropic Claude を使う場合:

import { anthropic } from "@ai-sdk/anthropic";

const result = streamText({
  model: anthropic("claude-sonnet-4-20250514"),
  // ...
});

OpenAI を使う場合:

JavaScript XML

JSX(JavaScript XML)は、一言で言うと**「JavaScriptのコードの中でHTMLのような見た目の記述ができるようにする拡張構文」**のことです。

主にReactというライブラリで使用されており、UIの構造を直感的かつ簡潔に書くために生み出されました。


1. JSXの見た目

通常、JavaScriptでHTML要素を作ろうとすると複雑なコードになりがちですが、JSXを使うとまるでHTMLをそのまま書いているように見えます。

JavaScript

// これがJSXです
const element = <h1>こんにちは、世界!</h1>;

2. なぜJSXを使うのか?

JSXを使わずにReactでUIを作成する場合、React.createElement という関数を何度も呼び出す必要があります。

比較項目 JSXあり JSXなし(純粋なJS)
記述例 <h1>Hello</h1> React.createElement('h1', null, 'Hello')
直感性 高い(HTMLに近い) 低い(ネストが深くなると読みづらい)
生産性 速い 遅い

3. JSXの主な特徴とルール

JSXはHTMLに似ていますが、中身はJavaScriptなのでいくつかの独自ルールがあります。

  • JavaScriptを埋め込める: { }(波括弧)を使うことで、変数や関数を直接記述できます。

    • 例:<h1>{userName}さん、こんにちは!</h1>
  • 一つの親要素で囲む: 複数の要素を並べる場合は、必ず一つの親要素(または空のタグ <> </>)で囲む必要があります。

  • 属性名はキャメルケース: HTMLの classclassNameonclickonClick と書きます。


4. ブラウザがJSXを理解する仕組み

ブラウザはそのままではJSXを理解できません。そのため、**Babel(バベル)**などのコンパイラを使って、実行前に通常のJavaScriptに変換(トランスパイル)されます。

豆知識: 以前はReactをインポートしないとJSXが使えませんでしたが、最近のバージョン(React 17以降)では、自動的に変換されるため、必ずしも import React from 'react' と書く必要はなくなりました。


NPM と PNPM

NPM と PNPM はどちらも
💻 **Node.jsのパッケージ管理ツール(依存関係を入れる道具)**ですが、
仕組み・速度・容量がかなり違います。


🧠 一言でいうと

💎 NPM:標準・無難
PNPM:高速・省容量・上級向け


🏆 NPM vs PNPM 違い一覧

項目 NPM PNPM
開発元 npm, Inc. pnpm
Node付属 ✅ 最初から入ってる ❌ 別途インストール
速度 普通 🚀 非常に速い
ディスク容量 大きい 🧠 非常に小さい
安全性 普通 🔒 高い
互換性 ◎(ほぼ同じ)
初心者向け

⚙️ 最大の違い:インストール方式

📦 NPM(コピー方式)

各プロジェクトに
👉 すべてのパッケージを丸ごとコピー

project/
  node_modules/
    react/
    lodash/
    axios/

❌ 同じライブラリでも毎回複製
👉 容量が巨大化


⚡ PNPM(リンク方式)

共通の倉庫を使う👇

global store/
  react/
  lodash/
  axios/

project/
  node_modules → リンク

💎 同じパッケージを共有
👉 超省容量&高速

v0のプロジェクトをCloudflare Pagesにデプロイ

npx create-next-app@latest

npm install next@15.5.2 npm list next npm audit fix npm install –save-dev @cloudflare/next-on-pages

👉 Settings
👉 Functions
👉 Compatibility Flags

nodejs_compat

npm install next@15.5.2 を実行しても失敗してしまう場合、主な理由は**「すでにインストールされている他のパッケージが、より新しい Next.js(15.5.12)を要求して離さない」**状態になっているからです。

npmはプロジェクト全体の整合性を保とうとするため、一部だけを下げようとしても、他のライブラリとの矛盾が生じるとエラーを出して停止します。

解決するための手順を、確実な順に紹介します。


1. キャッシュと既存の依存関係をクリーンにする(推奨)

古い設定が残っているとうまくいかないことが多いため、一度リセットするのが最も確実です。

  1. node_modules フォルダと package-lock.json を削除する

    (手動で削除するか、コマンドプロンプトで以下を実行)

    Bash

    rd /s /q node_modules
    del package-lock.json
    
  2. package.json を直接書き換える

    dependencies の中の "next": "^15.5.12""next": "15.5.2" に書き換えて保存します。

  3. 再度インストールする

    Bash

    npm install
    

2. --force を使って強制的に上書きする

npmに「警告はいいから、指定したバージョンを無理やり入れてくれ」と命令します。

Bash

npm install next@15.5.2 --force

3. 他の依存関係を確認する

もしこれでも失敗する場合、eslint-config-next など、Next.js とセットで動く他のライブラリも 15.5.12 に固定されている可能性があります。