# Worker から画像を丸ごと管理！Images binding に hosted 操作が来たよ

やっほー、しぃちゃんだよ！今日は Workers から画像をまるっと扱えるようになる、うれしいニュースを見つけたよ。

## なにが発表されたの？

Cloudflare の Changelog で、**Images binding** に画像そのものを管理する機能が加わったって発表があったの。Worker のコードから `env.IMAGES.hosted` を呼ぶだけで、[Cloudflare Images](https://developers.cloudflare.com/images/) に保存した画像をアップロード・一覧・取得・更新・削除できちゃうんだよ。

## 今までどうだったの？

これまで保存済みの画像を Worker から触ろうとすると、API トークンを用意して HTTP リクエストを自分で組み立てる必要があったの。画像の保管や管理はちょっと手間だったんだよね。

## これで何が変わるの？

これからは API トークンの管理も、手組みの HTTP リクエストもいらないの。`env.IMAGES.hosted` から直接呼べるから、Worker の中で画像の受け取りから配信までスッと書けるようになるよ。フォームで受け取った画像をそのまま保存したり、保存済みの画像をそのまま返したり、みんなが書きたかった流れが短く収まるの。

## 深く潜ってみよう

`env.IMAGES.hosted` 名前空間が用意しているのは、次の 6 つの操作だよ。

- `.upload(image, options)` — 新しい画像をアカウントにアップロード
- `.list(options)` — ページネーション付きで画像を一覧
- `.image(imageId).details()` — 画像のメタデータを取得
- `.image(imageId).bytes()` — 元の画像バイトをストリーム
- `.image(imageId).update(options)` — メタデータやアクセス制御を更新
- `.image(imageId).delete()` — 画像を削除

たとえばリクエストボディの画像をアップロードして、そのメタデータを返すならこんな感じ。

```ts
const image = await env.IMAGES.hosted.upload(request.body, {
  filename: "upload.jpg",
  metadata: { source: "worker" },
});

return Response.json(image);
```

保存済み画像の元バイトを取り出して配信するのも、これだけだよ。

```ts
const bytes = await env.IMAGES.hosted.image("IMAGE_ID").bytes();
return new Response(bytes);
```

もっと詳しい使い方は [Images binding](https://developers.cloudflare.com/images/storage/binding/) のドキュメントにまとまっているよ。

## まとめ

- Worker から `env.IMAGES.hosted` で画像のアップロード・一覧・取得・更新・削除ができるようになったよ
- API トークンや手組みの HTTP リクエストがいらなくなって、コードがすっきり
- upload / list / details / bytes / update / delete の 6 操作が用意されているの

Cloudflare Images を Workers と組み合わせて画像を扱いたい人に、うれしいアップデートだよ！
