{"provider_name":"Hatena Blog","title":"JavaScript\u3067\u53f0\u5f62\u88dc\u6b63 \u25ab\ufe0f","blog_url":"https://blog.kimizuka.org/","width":"100%","height":"190","html":"<iframe src=\"https://hatenablog-parts.com/embed?url=https%3A%2F%2Fblog.kimizuka.org%2Fentry%2F2025%2F11%2F30%2F000000\" title=\"JavaScript\u3067\u53f0\u5f62\u88dc\u6b63 \u25ab\ufe0f - \u307f\u304b\u3065\u304d\u30d6\u30ed\u30b0\u30fb\u30ab\u30b9\u30bf\u30e0\" class=\"embed-card embed-blogcard\" scrolling=\"no\" frameborder=\"0\" style=\"display: block; width: 100%; height: 190px; max-width: 500px; margin: 10px 0px;\"></iframe>","image_url":"https://cdn-ak.f.st-hatena.com/images/fotolife/k/kimizuka/20251129/20251129203116.gif","categories":["JavaScript"],"published":"2025-11-30 00:00:00","version":"1.0","description":"WebGL\u3067\u53f0\u5f62\u88dc\u6b63\u306e\u51e6\u7406\u3092\u66f8\u3044\u3066\u307f\u307e\u3057\u305f\u3002 DEMO https://jsfiddle.net/kimizuka/hzfk5xvr/5/ \u30bd\u30fc\u30b9\u30b3\u30fc\u30c9 const state = { corners: null, selectedCornerIndex: null, image: null, gridSize: 50, isDragging: false, dragStartPos: null }; const mat4 = { create: () => new Float32Array([1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1]), \u2026","blog_title":"\u307f\u304b\u3065\u304d\u30d6\u30ed\u30b0\u30fb\u30ab\u30b9\u30bf\u30e0","url":"https://blog.kimizuka.org/entry/2025/11/30/000000","provider_url":"https://hatena.blog","author_url":"https://blog.hatena.ne.jp/kimizuka/","type":"rich","author_name":"kimizuka"}