Cloudflare Imagesã§ç»åã«æåãå ¥ããæ¹æ³ïŒå®è£ ã»æéã»æŽ»çšäŸ
Cloudflare Imagesã§ç»åã«æåãå ¥ããæ¹æ³ããWorkerã®ã³ãŒãäŸãããã©ã³ããã¬ã€ã€ãŒããã£ãã·ã¥ãæéãŸã§è§£èª¬ããŸããåºå®ã¬ã€ã¢ãŠãã®SNSã«ãŒããååç»åãããã©ãŠã¶ã¬ã³ãã©ãŒãå¥ã®ç»åAPIãªãã§çæããèšèšãå¶çŽãæ¡ç®æ§ãåããŠããçšéãŸã§å®åç®ç·ã§æŽçããŸãã
å ¬éæ¥

ç»åã«æåãå
¥ããåŠçããåååç1æãšåçãªæåå1ã€ããCloudflare Workerå
ã§å®æçã®ãœãŒã·ã£ã«ã«ãŒããŸã§ä»äžããŸããæ°ãã.text()ãœãŒã¹ã§ã©ã¹ã¿ãŒåœ¢åŒã®ããã¹ãã¬ã€ã€ãŒãäœãã.draw()ã§ç»åäžã«é
眮ãã.output()ã§æçµãã¡ã€ã«ãè¿ããŸããåºå®ã¬ã€ã¢ãŠãã®é
ä¿¡ã¯ãŒã¯ãããŒãªãããã©ãŠã¶ã¬ã³ãã©ãŒãå¥ã®ç»åAPIãžåŠçãåããããªãµã€ãºãæåå
¥ãããšã³ã³ãŒããé
ä¿¡ãŸã§ã1æ¬ã®ãã§ãŒã³ã§å®çµã§ããŸãã
Cloudflare Imagesã§ç»åã«æåãå ¥ããæçãã€ãã©ã€ã³
ãŸãã¯ãäœåºŠã§ãåçŸã§ããã¬ã€ã¢ãŠãã1ã€çšæããŸããæ¬¡ã®äŸã§ã¯1200Ã630ã®ãããã¯ãã«ãŒããçæããèŠåºãã?text=ããåãåãããã©ã³ãæå®ã®åºå®ãã©ã³ãã§æç»ããŠWebPãè¿ããŸãã2ã€ã®example.comã®ã¢ã»ããURLã¯ãèªåã§ç®¡çããURLã«çœ®ãæããŠãã ããã
Wranglerã®èšå®ã«Images Bindingã远å ããWorkers Cacheãæå¹ã«ããŸãã
{
"images": {
"binding": "IMAGES"
},
"cache": {
"enabled": true
}
}ç¶ããŠãWorkerããBindingãå©çšããŸãã
const CARD_IMAGE = "https://assets.example.com/product-card.jpg";
const BRAND_FONT = "https://assets.example.com/fonts/Brand-Bold.woff2";
export default {
async fetch(request, env) {
const url = new URL(request.url);
const headline = (url.searchParams.get("text") || "AUTUMN DROP").trim();
// This is a layout limit for this card, not Cloudflare's 1,000-character ceiling.
if (!headline || [...headline].length > 120) {
return new Response("Text must contain 1 to 120 characters", { status: 400 });
}
const source = await fetch(CARD_IMAGE);
if (!source.ok || !source.body) {
return new Response("Source image unavailable", { status: 502 });
}
const textLayer = env.IMAGES.text(headline, {
font: { url: BRAND_FONT },
size: 72,
color: "#FFFFFF"
});
const result = await env.IMAGES
.input(source.body)
.transform({ width: 1200, height: 630, fit: "cover" })
.draw(textLayer, { left: 72, bottom: 72 })
.output({ format: "image/webp" });
return result.response({
headers: {
"Cache-Control": "public, max-age=86400, stale-while-revalidate=604800"
}
});
}
};/card?text=Autumn%20Dropãžãªã¯ãšã¹ããããšãæå®ããæèšã巊端ãšäžç«¯ãããããã72ãã¯ã»ã«ã®äœçœ®ã«å
¥ã£ã1200Ã630ã®WebPãè¿ããŸããå€åããããã¹ããç»åURLã«å«ãŸããããããã®äŸã§ã¯ãã£ãã·ã§ã³ããšã«èªç¶ãšåºæã®URLãå²ãåœãŠãããŸããæ¬çªç°å¢ã§ã¯ãå¯èœã§ããã°åºå®ã®ãã£ã³ããŒã³IDãååIDã䜿ã£ãŠãã ãããå
¬éã¯ãšãªæååã§èªç±å
¥åãåãä»ãããšãããªãšãŒã·ã§ã³æ°ã«äžéããªããªããã³ã¹ããšäžæ£å©çšã®äž¡é¢ã§åé¡ã«ãªããŸãã
ç»åãœãŒã¹ãšãã©ã³ãã®ãªãªãžã³ã¯åºå®ããããèš±å¯ãªã¹ãã§å¶éããŸãããã®ãµã³ãã«ã§ã¯ã蚪åè ãä»»æã®ååŸå ãæå®ã§ããªãããã«ããŠããŸããå ¬éWorkerããªã¢ãŒãã¢ã»ãããååŸããå Žåããã®å¢çã¯æ¬ ãããŸããã
Cloudflareã®å éšã§ã¯äœãèµ·ããŠããã®ã
ããã¹ãã®ã©ã¹ã¿ã©ã€ãºãšã¯ãæåããã¯ã»ã«ã«å€æããåŠçã§ãã.text()ã¯ãéæãªã¹ããã«ãŒã«æåãå°å·ããå°ããªçµçæ©ã ãšèãããšåãããããã§ãããã.draw()ããã®ã¹ããã«ãŒãåçã«éãã.output()ãäž¡è
ã1ã€ã®æçµãã¡ã€ã«ã«ãŸãšããŸãã
ãã®æãæ¹ããããšãAPIã®èšèšãçè§£ãããããªããŸããããã¹ãã¯ãã©ãŠã¶äžã§ç»åã®æåã«æµ®ãã¶HTMLèŠçŽ ã§ã¯ãããŸãããã¬ã³ããªã³ã°åŸã¯ãç»åãæ§æãããã¯ã»ã«ã®äžéšã§ãã
æçµãã£ã³ãã¹ã®ãµã€ãºã¯ããŒã¹ç»åã§æ±ºãŸããŸããããã¹ãã®äœçœ®ã¯ãtopãleftãbottomãrightã®ãã¯ã»ã«ãªãã»ããã§æå®ããŸããäœçœ®ãæå®ããªããã°äžå€®æãã§ããåããªãŒããŒã¬ã€ã«leftãšrightããŸãã¯topãšbottomãåææå®ããããšã¯ã§ããŸãããäžéæåºŠã¯0ãã1ã®ç¯å²ã§ãããã©ã«ãã®åæã¢ãŒãã¯overã§ãã
.draw()ã¯è€æ°åã€ãªããããŸããåŒã³åºãé ãã¬ã€ã€ãŒé ãšãªããæåŸã«æç»ãããã®ãæåé¢ã«æ¥ãŸããCloudflareã¯URLããŒã¹ã®å€æåãã«ãcf.image.drawé
åãžtextãšã³ããªã远å ããŸããããã ããããŒã¹ç»åããã§ã«R2ãCloudflare Imagesããªã¯ãšã¹ãããã£ãå¥ã®fetchããçãã€ããšããŠå±ããªããBindingã®ã»ããé©ããŠããŸãã
éèŠãªã®ã¯ãã¬ã€ã¢ãŠãã倿ããæ©èœããªãç¹ã§ããCloudflareãçŸåšããã¹ãã¹ã¿ã€ã«ãšããŠææžåããŠããã®ã¯fontãsizeãcolorã§ããããã¹ãããã¯ã¹ãæãè¿ããèªåãã£ãããè¡ã®é«ããåéãé
眮ãçžåãã圱ã代æ¿ãã©ã³ãã¯ææžåãããŠããŸãããæ¹è¡äœçœ®ãã»ãŒããŸãŒã³ãåååãé·ãããå Žåã®åŠçã¯ãã¢ããªã±ãŒã·ã§ã³åŽã§æ±ºããå¿
èŠããããŸãã
å ç»åã ãã§ãªã宿ããã«ãŒãããã£ãã·ã¥ãã
Images Bindingã®ã¬ã¹ãã³ã¹ã¯èªåã§ã¯ãã£ãã·ã¥ãããŸãããWorkers Cacheããªããã°ãåããªã¯ãšã¹ããæ¥ããã³ã«Workerãåããå
ç»åã®ãã³ãŒããšãšã³ã³ãŒããç¹°ãè¿ãããŸãããã£ãã·ã¥ãæå¹ã«ããŠCache-Controlãèšå®ããã°ããã®åŠçãåå®è¡ããã«å®ææžã¿ã®ã¬ã¹ãã³ã¹ãCloudflareããé
ä¿¡ã§ããŸãã
ãã£ãã·ã¥ãšImagesã®èª²éã¯ãå¥ã ã®åé¡ã解決ããŸããCloudflareã¯BindingããŠããŒã¯å€æåäœã§èª²éããŸããå ç»åãšãã©ã¡ãŒã¿ãŒã®çµã¿åããã1ã€ãªãã1æŠæã«ã€ã1åãšããŠæ°ããããåãæã«åäžå€æãç¹°ãè¿ããŠãImagesã®äœ¿çšéã¯å¢ããŸãããããã§ããã£ãã·ã¥ãããã«ã¯ãWorkerã®åå®è¡ãšç»ååŠçã®åŸ ã¡æéãé¿ãããã䟡å€ããããŸãã
ãŠããŒã¯å€å®ã®äžã§ããã¹ãæååãã©ã®ããã«æ£èŠåããããã«ã€ããŠãCloudflareã¯åå¥ã«èª¬æããŠããŸãããèªç€Ÿã®å©çšããŒã¿ã§ç¢ºèªã§ãããŸã§ã¯ãããŒã¹ç»åããã£ãã·ã§ã³ãã¹ã¿ã€ã«ãåºåã®çµã¿åãããç°ãªããã³ã«æ°ãã倿ã«ãªããšèŠç©ããã®ãå®å šã§ãã2,000ååã«5çš®é¡ã®ã«ãŒããµã€ãºãçšæããã«ã¿ãã°ãªããåã«ãŒããäœååé²èЧãããŠãã10,000ããªãšãŒã·ã§ã³ãšããŠæ±ãããå¯èœæ§ããããŸãã
ã¬ã€ã¢ãŠãããã§ã«æã£ãŠãããªããæ¡ç®ã¯å€§ããå€ãã
Cloudflare Images Freeã«ã¯ãæ¯æ5,000ä»¶ã®ãŠããŒã¯å€æãå«ãŸããŸããææãã©ã³ã§ãæåã®5,000ä»¶ã¯æéã«å«ãŸãããããè¶ ããåã¯1,000ä»¶ããã$0.50ã§ããCloudflareèªèº«ã瀺ã10,000倿ã®äŸã§ã¯ããã®æã®Images倿æéã¯$2.50ã«ãªããŸãã
BannerbearãçŸåšæ²èŒããŠããæéã¯ãAutomateãã©ã³ãæé¡$49ã§1,000 APIã¯ã¬ãžãããScaleãæé¡$149ã§10,000ã¯ã¬ãžããã§ããéåžžã®ç»åã¬ã³ããªã³ã°1åã§1ã¯ã¬ãžãããæ¶è²»ãã远å ãã©ãŒããããã¹ã±ãŒã«ãAIã¬ã€ã€ãŒã«ã¯ããã«åçãããããŸãã
$146.50ã®å·®é¡ãããã®ãŸãŸå®æåå士ã®ç¯çŽé¡ãšæããããšã¯ã§ããŸãããBannerbearãæäŸããã®ã¯ããã³ãã¬ãŒããšãã£ã¿ãŒã飿ºæ©èœãããŒã åãã¯ãŒã¯ãããŒãåããå®çšçãªãã¶ã€ã³è£œåã§ããäžæ¹ãCloudflareãæäŸããã®ã¯ã¬ã³ããªã³ã°ã®æ§æèŠçŽ ã§ãããèšèšãå®è£ ãæ€èšŒãç£èŠãä¿å®ã¯èªåãã¡ã§æ ããŸããImagesã®å€ææéã«å ããŠãå ç»åã®ã¹ãã¬ãŒãžè²»çšãšãšã³ãžãã¢ãªã³ã°å·¥æ°ãçºçããå ŽåããããŸããCloudflare Imageså ã®ã¹ãã¬ãŒãžã«ã¯å¥æéãèšå®ãããŠããŸãã
ããã§ãå€æåºæºã¯æç¢ºã§ãããã¶ã€ã³ã«ãŒã«ãããŒã ã§ãã§ã«ç®¡çããç»åãªã¯ãšã¹ããCloudflareäžã§åŠçããŠãããªããå¥ã®ã¬ã³ããªã³ã°ãµãŒãã¹å¥çŽã¯å¿ é ã§ã¯ãªããªããŸããããŒã±ã¿ãŒãæ¯é±ã¬ã€ã€ãŒãèŠèŠçã«åããå¿ èŠããããªãããã®å¥çŽã§è³Œå ¥ããŠããã®ã¯é«äŸ¡ãªãã¯ã»ã«ã§ã¯ãªãããšãã£ã¿ãŒãšéçšã¢ãã«ã§ãã
广ã倧ãã7ã€ã®ã¯ãŒã¯ãããŒ
1. ã«ã¿ãã°è²©ä¿ã«ãŒã
æ°çŸSKUãæ±ãå°å£²äºæ¥è ãªããæ¿èªæžã¿ã®èæ¯ã¬ã€ã¢ãŠãã1ã€ç¶æããçŸåšã®åååãäŸ¡æ Œãåšåº«æ³šèšããã£ã³ããŒã³æ å ±ãåã«ãŒãã«æç»ã§ããŸããåšåº«ããŒã¿ããã£ã³ããŒã³ããŒã¿ãããªã¬ãŒã«WorkerãåããããŒã±ãããã¬ã€ã¹çšãŸãã¯SNSçšã®å®æç»åãè¿ããŸããäŸ¡æ Œå€æŽã®ãã³ã«æäœæ¥ã®æžãåºãåŸ ã¡ãçºçãããå åçã«è§Šããã«åãæ¿èªæžã¿ã¬ã€ã¢ãŠãããåçæã§ããããã广ãèŠèŸŒããŸãã
çžæ§ãããã®ã¯ãé·ããå¶éã§ããã³ããŒã§ãã2è¡ã®åååãš1ã€ã®äŸ¡æ Œãããžãªãäºæž¬ã§ããŸãããè²©ä¿æã®æ®µèœã¯ããã¯ãããŸããã
2. ã¡ãã£ã¢ã»CMSåããœãŒã·ã£ã«ã«ãŒã
èšäºã®å ¬éæã«ãèŠåºããŸãã¯åºå®ã®èšäºIDãæž¡ããŠ1ã€ã®ãšã³ããã€ã³ããåŒã³åºãæ§æã§ããWorkerãããŒããŒç»åãååŸããŠã¿ã€ãã«ãæç»ããOpen Graphç»åãŸãã¯ãœãŒã·ã£ã«ã«ãŒããè¿ããŸããå ±æç»åã®æ¬ èœãæŽæ°æŒããæžããå ¬éåŠçã®éäžã§ã¹ã¯ãªãŒã³ã·ã§ããçšãã©ãŠã¶ã®å®äºãåŸ ã€å¿ èŠããªããªããŸãã
CMSããã§ã«Cloudflareã®èåŸã§åããŠããå Žåã¯ãç¹ã«æåã§ããç»åãé ä¿¡ããã®ãšåããšããžå±€ã§çæãã宿çURLããã£ãã·ã¥ããŠç¹°ãè¿ãå ±æã§ããŸãã
3. ããŒã±ãããã¬ã€ã¹ã®ã¹ããŒã¿ã¹ç»å
ããŒã±ãããã¬ã€ã¹ã§ã¯ãåºåã«ãŒãã«NEWãRESERVEDãSOLDãååã®ç¶æ
ãæåšå°ãªã©ãå»å°ã§ããŸããåºåãµãŒãã¹åŽã§çãããã¹ãå€ãå€ãããšãç»åãšã³ããã€ã³ããæ°ããèŠãç®ã®ç¶æ
ãçæããŸããåºåè
ãå
åçãç·šéããªããŠããã«ãŒããåã蟌ãŸããå
ã§è³Œå
¥è
ãç»åå
ã®ã¹ããŒã¿ã¹ã確èªã§ããŸãã
ããžãã¹äžã®å¹æã¯æ å ±ã®æ£ç¢ºãã§ããå€ãã¹ããŒã¿ã¹ã®ã«ãŒãã¯åãåãã察å¿ãå¢ãããæåŸ å€ãã®ã¯ãªãã¯ã«ã€ãªãããŸããæ±ºå®è«çãªãªãŒããŒã¬ã€ãªããããŒã¿ããŒã¹ã®ã¬ã³ãŒãã«åãããŠåãæ¿ããããŸãã
4. ãã©ã³ãã£ã€ãºãšå°åå¥ãªãã¡ãŒã®ã¯ãªãšã€ãã£ã
飲é£åºããµãŒãã¹æ¥ã®ãã©ã³ãã£ã€ãºãªãããã©ã³ãã®æ§å³ãåºå®ãããŸãŸãå°åããšã«éœåžåããªãã¡ãŒãæ¥ä»ãäŸ¡æ Œã倿Žã§ããŸãã1ã€ã®ãã£ã³ããŒã³å®çŸ©ãã倿°ã®ããŒã«ã«çãäœãããããå埩çãªå¶äœäœæ¥ãæžããã€ã€ããã©ã³ããè²ãé 眮ãšãã£ããªã¹ã¯ã®é«ãèŠçŽ ãçŸå°æ åœè ã®æäœå¯Ÿè±¡ããå€ããŸãã
èœãšã穎ã¯é·ãå°åã§ããå®å šã«èªååããã«ã¯ã宿ž¬ããããã¹ãå¹ ã代æ¿ãµã€ãºããŸãã¯äºåæ¿èªæžã¿ã®ç¥ç§°ãå¿ èŠã§ãã
5. ã€ãã³ãã»ã¹ã±ãžã¥ãŒã«ã«ãŒã
ã€ãã³ããã©ãããã©ãŒã ãªããç»å£è
åãã»ãã·ã§ã³æå»ãéšå±çªå·ãçŽåã®CANCELLED衚瀺ãåºå®ãã¹ã¿ãŒã«æç»ã§ããŸããå
ã®ã¹ã±ãžã¥ãŒã«ãæ£ãšããŠç¶æããã«ãŒãçæãåºåå·¥çšã«ããŸããã€ãã³ãéè¿ã«è©³çްãå€ãã£ãŠãããã¶ã€ããŒã«äœåãã®ãã¡ã€ã«ãéãçŽããŠããããããã°ããåæ ã§ããã®ãå©ç¹ã§ãã
6. 顧客ã¬ããŒãã®ã¹ãããã·ã§ãã
ã¬ããŒãã£ã³ã°è£œåã§ã¯ãã¡ãŒã«ãã¡ãã»ãŒãžçšã®ãã©ã³ãä»ãã°ã©ãç»åã«ã察象æéã顧客åãäž»èŠææšã远å ã§ããŸããWorkerã¯ãã§ã«ã¬ã³ããªã³ã°ãããã°ã©ããããŒã¹ã«ãå€åããå°æ°ã®ã©ãã«ãå ãã軜éãªæçµåœ¢åŒã§è¿ããŸããé ä¿¡å ã§ããã·ã¥ããŒãèªäœãåãããªãå Žåã«æå¹ã§ãã
ããã¹ãã¬ã€ã€ãŒã§ããã·ã¥ããŒãå šäœãæãããšããŠã¯ãããŸãããæåŸã«æ±ºå®è«çãªã©ãã«ãä»ããå·¥çšã§æãåãçºæ®ããŸãã
7. ç€Ÿå æ¥åçšã©ãã«
å庫ããã£ãŒã«ããµãŒãã¹ãã¢ãã¬ãŒã·ã§ã³ã®åããŒã ã§ã¯ãæ€æ»ç¶æ³ãããããã«ãŒããã¬ãã¥ãŒçµæãªã©ã®çãã¹ããŒã¿ã¹ã察象ç©ã®åçã«æç»ã§ããŸããåšèŸºã®ã¡ã¿ããŒã¿ãåé€ãããã·ã¹ãã ãçµç±ããŠããç»åå ã®è¡šç€ºã¯æ®ããŸããæèã®ãªãç»åãåãåã£ããšãã«ã確èªã®æéãæžãããã®ãå©ç¹ã§ãã
ããã¯æ¥åäžã®å©äŸ¿æ§ãé«ãããã®ã§ãããå ã®èšé²ã眮ãæãããã®ã§ã¯ãããŸãããã¹ããŒã¿ã¹ã¯ããŒã¿ããŒã¹ã«ä¿æããç»åã¯ãã®ãã¥ãŒãšããŠæ±ã£ãŠãã ããã
éçºãã䟡å€ã®ãã3ã€ã®ãããã¯ã
ææåïŒæ¥çš®ç¹ååãœãŒã·ã£ã«ã«ãŒãAPI
åºå®ã¬ã€ã¢ãŠãã¯ãããã®ã®ããã©ãŠã¶ã¬ã³ããªã³ã°åºç€ãéçšããããªãã¡ãã£ã¢ã代çåºã倿 ç¹ããžãã¹åãã«ããã©ã³ãã«ãŒã«ãå®ãã«ãŒãçæãµãŒãã¹ãæ§ç¯ããŸããè³Œå ¥è ãããŒããŒç»åãšæ¿èªæžã¿ã®ã³ããŒé ç®ãæž¡ããšããµãŒãã¹ãå°æ°ã®ã¢ã¹ãã¯ãæ¯ã«å¯Ÿå¿ããåºå®URLãè¿ãä»çµã¿ã§ãã
ç±³åœã®ããŒã¯ãŒãããŒã¿ã§ã¯ãsocial media post makerã®æéæ€çŽ¢æ°ã¯480ãã¯ãªãã¯å䟡ã¯$19.95ãšæšå®ãããŠããŸãããã®å®å
šäžèŽãã¬ãŒãºã¯API賌å
¥è
ããåºãå±€ãå«ã¿ãŸãããCPCãéåžžã«é«ãããšãããå瀟ããã®å¶äœæ¥åã®é¡§å®¢ç²åŸãç«¶ã£ãŠãããšåãããŸããBannerbearã®æé¡$49ãš$149ã®ãã©ã³ã¯ãèªåã¬ã³ããªã³ã°ã«ãã§ã«äºç®ãæããããŒã ã«ãšã£ãŠãçŸæç¹ã®æ¯èŒåºæºã«ãªããŸãã
販売å¯èœãªæå°æ§æã¯ã1ã€ã®Workerãåºå®ããã3çš®é¡ã®ã«ãŒãã¬ã€ã¢ãŠãã管çç»é¢ã§ã®ãã¬ãã¥ãŒãCMS Webhookã峿 ŒãªãœãŒã¹èš±å¯ãªã¹ããåºå®ãã£ãã·ã¥ããŒãåãŸããããªãããã¹ãã®å€±æãã¥ãŒã§ãã売ãã¹ã䟡å€ã¯.text()åŒã³åºããã®ãã®ã§ã¯ãªããå
¬éã·ã¹ãã ãšã®æ¥ç¶ãå®å®ããŠåãããšã§ãã
課é¡ã¯ãã³ãã¬ãŒãã®ç®¡ç責任ã§ããCloudflareã¯é¡§å®¢åãã®ããžã¥ã¢ã«ãšãã£ã¿ãŒãæäŸããªããããæ°ããã¬ã€ã¢ãŠãã®ãã³ã«åå¥å¯Ÿå¿ãå¢ããå¯èœæ§ããããŸããããã§ããããææåãªã®ã¯ãæ°ããããªããã£ãã«ãã£ãŠç¶ç¶çãã€åæ¥äŸ¡å€ã®ããã¯ãŒã¯ãããŒããã¬ã³ãã©ãŒãåãé€ãã€ã€ã飿ºãšãã©ã³ãçµ±å¶ã補å䟡å€ãšããŠæ®ããããã§ãã
ã«ã¿ãã°åã販ä¿ã©ãã«ãšã³ãžã³
äŸ¡æ Œãã»ãŒã«ç¶æ ãé éäºå®ãã³ã¬ã¯ã·ã§ã³åãååç»åã«è¿œå ãããECããŒã åãã®ãã£ãŒãé§ååã³ã³ããžã¿ãŒãæ§ç¯ããŸããCSVãPIMãã³ããŒã¹WebhookããããŒã¿ãæŽæ°ãã倿ŽãããããªãšãŒã·ã§ã³ã ããåçæããŸãã
Product label makerã®ç±³åœã§ã®æšå®æéæ€çŽ¢æ°ã¯320ã§ããåçšæå³ããããCPCã¯$6.03ãåºåäž»éã®ç«¶äºãæ¿ãããªã£ãŠããŸããã©ãã«äœæã«ææéèŠããã蚌æ ã§ã¯ãããŸããããã®æ€çŽ¢ã«ã¯ã«ã¿ãã°ç»åã§ã¯ãªãå°å·çšã©ãã«ãæ±ãã人ãå€ãå«ãŸããŸãã
MVPã«å¿ èŠãªã®ã¯ãååãã£ãŒããšã®ã³ãã¯ã¿ãŒãå°æ°ã®åºå®ãããžãã¢ã¹ãã¯ãæ¯ããªã»ããããã¬ãã¥ãŒãé·ãåååãäŸ¡æ Œæ¬ èœãžã®å¯Ÿå¿ã«ãŒã«ã§ãã課é¡ã¯å¯Ÿè±¡ç¯å²ã§ããå®ç©ããã±ãŒãžã§ã¯ãå°å·è§£å床ãå¡ãè¶³ããããŒã³ãŒããæ³èŠå¶ã®ç¢ºèªãå¿ èŠã§ããããã®ã©ã¹ã¿ãŒãªãŒããŒã¬ã€ã ãã§ã¯è§£æ±ºã§ããŸãããããããä»çµã¿ãŸã§è£œåã«å«ããªãéãã販ä¿ç»åãžã®ã©ãã«è¿œå ã«ç¯å²ãçµãã¹ãã§ãã
çµã¿èŸŒã¿åã®æåå ¥ãããŒã«
æ¢åã®ã¯ãªãšã€ã¿ãŒåã補åãããŒã±ãããã¬ã€ã¹ãã³ãã¥ããã£è£œåã«ãå°ããªãšãã£ã¿ãŒéšåãçµã¿èŸŒã¿ãŸããç»åãéžã³ãçãããã¹ããå ¥åããæ¿èªæžã¿ã®ãã©ã³ããšè²ããéžæããã»ãŒããšãªã¢å ã«é 眮ããŠæžãåºãæµãã§ããCloudflareã補åç¬èªã®UIã®èåŸã§æçµã©ã¹ã¿ã©ã€ãºãæ ããŸãã
Add text to imageã®ç±³åœã§ã®æšå®æéæ€çŽ¢æ°ã¯6,600ã§ããããååŒæå³ã®åŒ·ãadd text to image appãçŽ320ä»¶ãããåãããŒã¿ã»ããã§ã¯å幎æ¯23%å¢ããŠããŸããéèŠã¯ç¢ºãã«ãããŸãããå€ãã®æ€çŽ¢è
ãæåŸ
ããŠããã®ã¯ç¡æã®æ±çšãšãã£ã¿ãŒã§ãã
MVPã¯ãå¶çŽä»ããã¬ãã¥ãŒã4ã6çš®é¡ã®ããã¹ãããªã»ããã1ã€ã®æžãåºããšã³ããã€ã³ãã宿çURLçšã®ã¹ãã¬ãŒãžã§æ§æã§ããŸãã課é¡ã¯å·®å¥åã®åŒ±ãã§ããç¬ç«ããæ±çšããŒã«ã§ã¯ãæçããç¡æãšãã£ã¿ãŒãšç«¶ãããšã«ãªããŸããç»åããŠãŒã¶ãŒãå ¬éå ããã§ã«æ±ãã補åã®æææ©èœãšããŠæäŸããã»ããçã«ããªã£ãŠããŸãã
ãã®çšéã«ã¯åããªãã±ãŒã¹
Cloudflare Imagesã¯ããã¹ããæç»ããŠåæã§ããŸãããããã衚瀺ããæèšã決ããããã¿ã€ãã°ã©ãã£ãã¬ã¹ãã³ã·ãã«ãããããã©ã³ãã¬ã€ã¢ãŠããæ¿èªããããããŒã±ã¿ãŒåãã®ãã³ãã¬ãŒããšãã£ã¿ãŒãæäŸãããã¯ããŸãããããããä»äºã®é£æãªãããã«æ©èœã®ãã¶ã€ã³èªåå補åãå©çšããã»ãããå 補ä¿å®ããå®ãæžãå ŽåããããŸãããã©ã³ãã·ã¹ãã å šäœãå€ããã¢ãããŒãã«ã€ããŠã¯ãCanva AI 2.0ã®ãã©ã³ãå·æ°ãã¹ããåç §ããŠãã ããã
å®çšäžãå°å ¥ãæ¢ããã¹ããµã€ã³ã¯5ã€ãããŸãã
- ã³ããŒã«é«åºŠãªæãè¿ããèªåãã£ããããªããããã¹ãããŸãã¯éžæãããã©ã³ãã§æªæ€èšŒã®èšèªåºæã·ã§ãŒãã³ã°ãå¿ èŠã§ãã
- ç·šéè ãã¬ã€ã€ãŒãèŠèŠçã«ç§»åããéçºè ãä»ããæ°ãããã³ãã¬ãŒããå ¬éããå¿ èŠããããŸãã
- å ¬éãšã³ããã€ã³ãããèš±å¯ãªã¹ããªãã§ä»»æã®ç»åãœãŒã¹URLããã©ã³ãURLãåãä»ããŸãã
- ããªãšãŒã·ã§ã³çæãå¶éã§ãããã©ã³ãã ãªã¯ãšãªæååã«ãã£ãŠFreeæ ã®5,000倿ã䜿ãåããæ°ãããªã¯ãšã¹ãããšã©ãŒ9422ã§å€±æããå¯èœæ§ããããŸãã
- ããŒã«ã«ãã¹ããããã¹ãæç»ã«äŸåããŸããäœå¿ å®åºŠã®ããŒã«ã«Imageså®è£
ã察å¿ããã®ã¯å¹
ãé«ããå転ã圢åŒã ããªã®ã§ããã®æ©èœã§ã¯
npx wrangler dev --remoteã䜿ã£ãŠãã ããã
ãã©ã³ããšããã¹ãã®äžéã¯å³æ Œã§ããã«ã¹ã¿ã ãã©ã³ãã¯20 MB以äžãæç»ããå 容ã¯1,000æå以äžãã©ã¹ã¿ãŒã¬ã€ã€ãŒã¯4096Ã4096ãã¯ã»ã«ä»¥äžã§ãªããã°ãªããŸãããã©ãã«ãèŠåºãã«ã¯ååäœè£ã®ããäžéã§ãããç»åAPIãããŒãžã¬ã€ã¢ãŠããšã³ãžã³ãšããŠäœ¿ã£ãŠãããšããæå³ã§ã¯ãããŸããã
ç»åã«æåãéããã«ã¯ã©ãããã°ããã§ããïŒ
env.IMAGES.input(imageBytes)ã§ããŒã¹ã®ãã³ãã«ãäœããenv.IMAGES.text(content, { font, size, color })ã§ããã¹ãã¬ã€ã€ãŒãäœæããŸãããã®ã¬ã€ã€ãŒã.draw()ã«æž¡ããæåŸã«.output({ format })ãåŒã³åºããŸããåºåãµã€ãºã¯ããŒã¹ç»åã«ãã£ãŠæ±ºãŸããŸãã
ç»åã®äžã«ãªãŒããŒã¬ã€ã远å ããæ¹æ³ã¯ïŒ
Images Bindingã§ã¯ãç»åãã³ãã«ãŸãã¯.text()ã®ãã³ãã«ã.draw(overlay, options)ã«æž¡ããŸãããã¯ã»ã«ãªãã»ããã«ã¯topãleftãbottomãrightã䜿ããåéæã«ããå Žåã¯opacityãæå®ããŸããã¬ã€ã€ãŒãå¢ããã«ã¯.draw()ãããã«é£çµããŸããæåŸã«æç»ãããã®ãæåé¢ã§ãã
ããã¹ããªãŒããŒã¬ã€ã¯ã©ãå®è£ ããŸããïŒ
ç»åã®çãã€ããæ±ããªããåè¿°ã®Images Bindingã¯ãŒã¯ãããŒã䜿ããŸããURLããŒã¹ã®fetch()倿ãªããcf.image.drawé
åã«textãšã³ããªã远å ããåãfontãsizeãcolorãªãã·ã§ã³ãæž¡ããŸããç»åãœãŒã¹ãR2ãCloudflare Imagesããªã¯ãšã¹ãããã£ãå¥ã®fetchã¬ã¹ãã³ã¹ã«ããå Žåãéåžžã¯Bindingã®ã»ãããã£ããå®è£
ã§ããŸãã
ç»åå ã®è¢«åäœããåŸãã«æåã眮ãã«ã¯ïŒ
ãã®ããã¹ãæ©èœã«ã¯ãææžåããã被åäœã®èªåå颿©èœããåçŽãªbehindã¹ã€ããããããŸãããã©ã®ãªãŒããŒã¬ã€ãåé¢ã«ãªããã¯æç»é ã§æ±ºãŸãããã¯ã»ã«ã®æ··ããæ¹ã¯åæã¢ãŒãã§æ±ºãŸããŸãã人ç©ãååããåŸãã«æåã眮ãã«ã¯ãå¥éçšæãã被åäœãã¹ã¯ãŸãã¯åæ¯ã¬ã€ã€ãŒãããã¹ãã®åŸã«æç»ããå¿
èŠããããŸãã
åçå ã®æåãã¢ãã¡ãŒã·ã§ã³ãããã«ã¯ïŒ
ãã®ãªãªãŒã¹ã§ææžåãããŠããã®ã¯ãã©ã¹ã¿ã©ã€ãºãããããã¹ããšç»åã®åæã§ãããããã¹ãã®ã¿ã€ã ã©ã€ã³ãã¢ãã¡ãŒã·ã§ã³æ©èœã§ã¯ãããŸãããæåãåããå¿ èŠãããå Žåã¯ãåç»ãŸãã¯ã¢ãã¡ãŒã·ã§ã³çšã®ã¬ã³ãã©ãŒã䜿ã£ãŠãã ãããã¢ãã¡ãŒã·ã§ã³ç»åãå ¥åããã°ãåãã¿ã€ãã°ã©ãã£ãå¶åŸ¡ã§ãããšã¯èããªãã§ãã ããã
èªç€Ÿã®ã«ã¿ãã°ãå ¬éã·ã¹ãã ã«åãããä¿¡é Œã§ããç»åãšã³ããã€ã³ããå¿ èŠãªããAIãããã¯ã·ã§ã³ã·ã¹ãã ãããçžè«ãã ããã
- å ¬éæ¥
- ã«ããŽãªãŒ
- Design
- èšèª







