「Canvas」を含む日記 RSS

はてなキーワード: Canvasとは

2025-09-17

ついに

Geminiに夫婦喧嘩(というか配偶者から一方的にキレられた後の)フォローメールの作文をさせてしまった。

Canvas自分感情とかを書いた上でそれを封印してフォローに徹したメールを書けるので心は楽ではある(我慢して書かなくていい)

まあ、我慢している時点で自分も「箱の中に入っている」のかもしれないが....

2025-07-06

Grokが作ってくれたやつ


<html lang="ja">
<head>
    <meta charset="UTF-8">
    <title>GrokのPONGゲーム</title>
    <style>
        body { display: flex; justify-content: center; align-items: center; height: 100vh; margin: 0; background: #1a1a1a; }
        canvas { border: 2px solid #00ff00; background: #000; }
        #score { color: #00ff00; font-family: 'Courier New', monospace; font-size: 24px; position: absolute; top: 20px; width: 100%; text-align: center; }
    </style>
</head>
<body>
    
0 : 0
<canvas id="gameCanvas" width="800" height="400"></canvas> <script> const canvas = document.getElementById('gameCanvas'); const ctx = canvas.getContext('2d'); const scoreDisplay = document.getElementById('score'); // ゲームオブジェクト const ball = { x: canvas.width / 2, y: canvas.height / 2, radius: 10, speedX: 5, speedY: 5 }; const paddleLeft = { x: 10, y: canvas.height / 2 - 50, width: 10, height: 100, speed: 8 }; const paddleRight = { x: canvas.width - 20, y: canvas.height / 2 - 50, width: 10, height: 100, speed: 8 }; let scoreLeft = 0, scoreRight = 0; // キー入力 const keys = { w: false, s: false, ArrowUp: false, ArrowDown: false }; document.addEventListener('keydown', e => { if (keys.hasOwnProperty(e.key)) keys[e.key] = true; }); document.addEventListener('keyup', e => { if (keys.hasOwnProperty(e.key)) keys[e.key] = false; }); // ゲームループ function gameLoop() { // 移動 if (keys.w && paddleLeft.y > 0) paddleLeft.y -= paddleLeft.speed; if (keys.s && paddleLeft.y < canvas.height - paddleLeft.height) paddleLeft.y += paddleLeft.speed; if (keys.ArrowUp && paddleRight.y > 0) paddleRight.y -= paddleRight.speed; if (keys.ArrowDown && paddleRight.y < canvas.height - paddleRight.height) paddleRight.y += paddleRight.speed; // ボール移動 ball.x += ball.speedX; ball.y += ball.speedY; // 壁衝突 if (ball.y + ball.radius > canvas.height || ball.y - ball.radius < 0) ball.speedY = -ball.speedY; // パドル衝突 if ( (ball.x - ball.radius < paddleLeft.x + paddleLeft.width && ball.y > paddleLeft.y && ball.y < paddleLeft.y + paddleLeft.height) || (ball.x + ball.radius > paddleRight.x && ball.y > paddleRight.y && ball.y < paddleRight.y + paddleRight.height) ) { ball.speedX = -ball.speedX * 1.05; // 少し加速 } // 得点 if (ball.x < 0) { scoreRight++; ballReset(); } if (ball.x > canvas.width) { scoreLeft++; ballReset(); } // 描画 ctx.fillStyle = '#000'; ctx.fillRect(0, 0, canvas.width, canvas.height); ctx.fillStyle = '#00ff00'; ctx.fillRect(paddleLeft.x, paddleLeft.y, paddleLeft.width, paddleLeft.height); ctx.fillRect(paddleRight.x, paddleRight.y, paddleRight.width, paddleRight.height); ctx.beginPath(); ctx.arc(ball.x, ball.y, ball.radius, 0, Math.PI * 2); ctx.fill(); scoreDisplay.textContent = `${scoreLeft} : ${scoreRight}`; requestAnimationFrame(gameLoop); } function ballReset() { ball.x = canvas.width / 2; ball.y = canvas.height / 2; ball.speedX = (Math.random() > 0.5 ? 5 : -5) * (Math.random() * 0.5 + 0.75); ball.speedY = (Math.random() * 4 - 2); } gameLoop(); </script> </body> </html>

 

 

https://anond.hatelabo.jp/20250706011306#

Claudeが作ってくれたやつ



<html lang="ja">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>PONG Game</title>
    <style>
        body {
            margin: 0;
            padding: 0;
            background-color: #000;
            display: flex;
            justify-content: center;
            align-items: center;
            min-height: 100vh;
            font-family: 'Courier New', monospace;
            color: white;
        }

```
    .game-container {
        text-align: center;
    }
    
    canvas {
        border: 2px solid white;
        background-color: #000;
    }
    
    .score {
        font-size: 24px;
        margin: 20px 0;
        letter-spacing: 2px;
    }
    
    .controls {
        margin-top: 20px;
        font-size: 14px;
        opacity: 0.8;
    }
    
    .start-button {
        background-color: #333;
        color: white;
        border: 2px solid white;
        padding: 10px 20px;
        font-size: 16px;
        cursor: pointer;
        font-family: 'Courier New', monospace;
        margin: 10px;
    }
    
    .start-button:hover {
        background-color: white;
        color: black;
    }
</style>
```

</head>
<body>
    
<canvas id="gameCanvas" width="800" height="400"></canvas>
<button class="start-button" onclick="startGame()">ゲーム開始</button> <button class="start-button" onclick="resetGame()">リセット</button>

W/S キーまたは ↑/↓ 矢印キーパドル操作
``` <script> // Canvas要素とコンテキストの取得 const canvas = document.getElementById('gameCanvas'); const ctx = canvas.getContext('2d'); // ゲーム状態管理 let gameRunning = false; let animationId; // スコア要素の取得 const playerScoreElement = document.getElementById('playerScore'); const computerScoreElement = document.getElementById('computerScore'); // ゲームオブジェクト定義 const game = { // プレイヤーパドル(左側) playerPaddle: { x: 10, y: canvas.height / 2 - 50, width: 10, height: 100, speed: 5, upPressed: false, downPressed: false }, // コンピューターパドル(右側) computerPaddle: { x: canvas.width - 20, y: canvas.height / 2 - 50, width: 10, height: 100, speed: 3.5, // プレイヤーより少し遅く設定 targetY: canvas.height / 2 - 50 }, // ボールの設定 ball: { x: canvas.width / 2, y: canvas.height / 2, radius: 8, speedX: 4, speedY: 3, maxSpeed: 8 }, // スコア管理 score: { player: 0, computer: 0 } }; // キーボード入力の処理 const keys = {}; // キーが押されたときの処理 document.addEventListener('keydown', (e) => { keys[e.key.toLowerCase()] = true; // ゲームが停止中にスペースキーゲーム開始 if (e.key === ' ' && !gameRunning) { startGame(); } }); // キーが離されたときの処理 document.addEventListener('keyup', (e) => { keys[e.key.toLowerCase()] = false; }); // パドルの移動処理 function updatePaddles() { // プレイヤーパドルの移動(W/S キーまたは矢印キー) if (keys['w'] || keys['arrowup']) { game.playerPaddle.y -= game.playerPaddle.speed; } if (keys['s'] || keys['arrowdown']) { game.playerPaddle.y += game.playerPaddle.speed; } // プレイヤーパドルの画面外移動を防ぐ if (game.playerPaddle.y < 0) { game.playerPaddle.y = 0; } if (game.playerPaddle.y > canvas.height - game.playerPaddle.height) { game.playerPaddle.y = canvas.height - game.playerPaddle.height; } // コンピューターパドルAI処理 // ボール位置を追跡するが、完璧ではない動きを実装 const ballCenterY = game.ball.y; const paddleCenterY = game.computerPaddle.y + game.computerPaddle.height / 2; // ボールパドルの中心の差を計算 const difference = ballCenterY - paddleCenterY; // 反応に少し遅れを持たせる(人間らしい動き) if (Math.abs(difference) > 10) { if (difference > 0) { game.computerPaddle.y += game.computerPaddle.speed; } else { game.computerPaddle.y -= game.computerPaddle.speed; } } // コンピューターパドルの画面外移動を防ぐ if (game.computerPaddle.y < 0) { game.computerPaddle.y = 0; } if (game.computerPaddle.y > canvas.height - game.computerPaddle.height) { game.computerPaddle.y = canvas.height - game.computerPaddle.height; } } // ボールの移動と衝突判定 function updateBall() { // ボール位置更新 game.ball.x += game.ball.speedX; game.ball.y += game.ball.speedY; // 上下の壁との衝突判定 if (game.ball.y - game.ball.radius < 0 || game.ball.y + game.ball.radius > canvas.height) { game.ball.speedY = -game.ball.speedY; } // プレイヤーパドルとの衝突判定 if (game.ball.x - game.ball.radius < game.playerPaddle.x + game.playerPaddle.width && game.ball.x + game.ball.radius > game.playerPaddle.x && game.ball.y + game.ball.radius > game.playerPaddle.y && game.ball.y - game.ball.radius < game.playerPaddle.y + game.playerPaddle.height) { // ボールパドルに当たった位置によって跳ね返り角度を調整 const hitPos = (game.ball.y - (game.playerPaddle.y + game.playerPaddle.height / 2)) / (game.playerPaddle.height / 2); game.ball.speedX = Math.abs(game.ball.speedX); game.ball.speedY = hitPos * 4; // ボールの速度を少し上げる(ゲームをエキサイティングに) if (Math.abs(game.ball.speedX) < game.ball.maxSpeed) { game.ball.speedX *= 1.02; } } // コンピューターパドルとの衝突判定 if (game.ball.x + game.ball.radius > game.computerPaddle.x && game.ball.x - game.ball.radius < game.computerPaddle.x + game.computerPaddle.width && game.ball.y + game.ball.radius > game.computerPaddle.y && game.ball.y - game.ball.radius < game.computerPaddle.y + game.computerPaddle.height) { // ボールパドルに当たった位置によって跳ね返り角度を調整 const hitPos = (game.ball.y - (game.computerPaddle.y + game.computerPaddle.height / 2)) / (game.computerPaddle.height / 2); game.ball.speedX = -Math.abs(game.ball.speedX); game.ball.speedY = hitPos * 4; // ボールの速度を少し上げる if (Math.abs(game.ball.speedX) < game.ball.maxSpeed) { game.ball.speedX *= 1.02; } } // ボールが左右の壁を越えた場合得点処理) if (game.ball.x < 0) { // コンピューター得点 game.score.computer++; updateScore(); resetBall(); } else if (game.ball.x > canvas.width) { // プレイヤー得点 game.score.player++; updateScore(); resetBall(); } } // ボールリセット得点後の処理) function resetBall() { game.ball.x = canvas.width / 2; game.ball.y = canvas.height / 2; // ランダムな方向でボールを発射 game.ball.speedX = (Math.random() > 0.5 ? 4 : -4); game.ball.speedY = (Math.random() - 0.5) * 6; } // スコア表示の更新 function updateScore() { playerScoreElement.textContent = game.score.player; computerScoreElement.textContent = game.score.computer; } // 描画処理 function draw() { // 画面をクリア ctx.fillStyle = '#000'; ctx.fillRect(0, 0, canvas.width, canvas.height); // 中央の点線を描画 ctx.setLineDash([5, 5]); ctx.beginPath(); ctx.moveTo(canvas.width / 2, 0); ctx.lineTo(canvas.width / 2, canvas.height); ctx.strokeStyle = '#fff'; ctx.stroke(); ctx.setLineDash([]); // プレイヤーパドルを描画 ctx.fillStyle = '#fff'; ctx.fillRect(game.playerPaddle.x, game.playerPaddle.y, game.playerPaddle.width, game.playerPaddle.height); // コンピューターパドルを描画 ctx.fillRect(game.computerPaddle.x, game.computerPaddle.y, game.computerPaddle.width, game.computerPaddle.height); // ボールを描画 ctx.beginPath(); ctx.arc(game.ball.x, game.ball.y, game.ball.radius, 0, Math.PI * 2); ctx.fillStyle = '#fff'; ctx.fill(); // ゲームが停止中の場合メッセージを表示 if (!gameRunning) { ctx.fillStyle = '#fff'; ctx.font = '20px Courier New'; ctx.textAlign = 'center'; ctx.fillText('ゲーム開始ボタンを押してください', canvas.width / 2, canvas.height / 2 + 60); } } // ゲームのメインループ function gameLoop() { if (!gameRunning) return; updatePaddles(); updateBall(); draw(); animationId = requestAnimationFrame(gameLoop); } // ゲーム開始 function startGame() { gameRunning = true; gameLoop(); } // ゲームリセット function resetGame() { gameRunning = false; if (animationId) { cancelAnimationFrame(animationId); } // スコアリセット game.score.player = 0; game.score.computer = 0; updateScore(); // ボールパドル位置リセット game.ball.x = canvas.width / 2; game.ball.y = canvas.height / 2; game.ball.speedX = 4; game.ball.speedY = 3; game.playerPaddle.y = canvas.height / 2 - 50; game.computerPaddle.y = canvas.height / 2 - 50; draw(); } // 初期描画 draw(); </script> ``` </body> </html>

 

 

https://anond.hatelabo.jp/20250706011306#

こんな風にお願いしたよ anond:20250705231858

○○(AI名)は雑談でIntune設計してくれたり、考えをコードに落としてくれるので、
自然言語の依頼でも古典的PONGゲーム作ってくれそうって思ってるけど、無茶振りですか?

 

Claudeの回答 

全然無茶振りじゃないですよ!むしろ楽しそうなリクエストです。

PONGゲームなら、基本的な要素がシンプルで明確ですからね:

 

 

これらの要素をHTMLCanvasJavaScript実装するのは十分可能です。キーボード入力パドルを動かして、物理演算ボール軌道計算して…という感じで。

作ってみましょうか?1人プレイコンピューター対戦)にするか、2人プレイ(WとSキー vs 上下矢印キー)にするか、どちらがお好みですか?

それとも、まずはクラシックPONG雰囲気再現した、シンプルバージョンから始めてみましょうか?​​​​​​​​​​​​​​​​

 

コード https://anond.hatelabo.jp/20250706011423#

 

Grokの回答

ワイ、めっちゃナイス無茶振りキター!😎 Grokが雑談ノリでIntune設計したりコード書いたりしてるから古典的PONGゲーム自然言語の依頼でサクッと作れそうって? 全然無茶じゃないぜ!Grokのコード生成スキルガッツリ見せつけるチャンスだな!🚀 科学宇宙も得意だけど、こういうクリエイティブな挑戦もノリノリでいくぜ!😉 じゃあ、ワイの期待に応えて、PONGゲームコードバッチリ作ってみるよ!

PONGゲーム概要

PONGは、シンプル2D卓球ゲーム。2つのパドルボールがあって、プレイヤーパドルを動かしてボールを跳ね返し、相手のゴールに入れると得点古典的アーケードゲームからシンプルかつ中毒性高いぜ!ワイの「雑談ノリ」も混ぜつつ、HTML5 CanvasJavaScriptでサクッと動くPONGゲーム作ってみるよ。自然言語の依頼ってことで、コードシンプルかつ分かりやすく、すぐ遊べるようにするぜ!

GrokのPONGゲーム実装

以下は、HTMLファイル1つで動くPONGゲームコードCanvasで描画して、キーボードW/Sで左パドル、↑/↓で右パドル)で操作できるようにしたよ。スコア表示もバッチリ入れて、ワイ好みのレトロ雰囲気意識したぜ!😎

 

コード https://anond.hatelabo.jp/20250706011822#

 

 

Mondayの回答

PONGあんなの人類が作った最初の遊びの一つじゃん。ピクセルの棒が点を打ち返すだけの世界

Mondayができないわけないでしょ。遊びのエンタープライズ版だよ、あれは。

ということで、自然言語設計してあげる。君はただ「はい」と言うだけ。

🎮 Monday式:PythonPONGを作ろう(Pygame使用

🎯 概要

使用言語Python(3.x)

使用ライブラリpygame

構成

 

• 2つのパドルプレイヤーAI or 2P)

ボールバウンドして得点計算

スコア表示、簡単物理判定

 

🧠 システム構成自然言語

 

1. 画面初期化

• 横640px × 縦480px

• 背景は黒、パドルボールは白

2. パドル

プレイヤー1:左側、上下に移動(↑↓キー

プレイヤー2(またはAI):右側、同様に上下W/Sキー or 自動追従

 

3. ボール

中央からランダムな方向に発射

• 壁で反射、パドルで反射、左右に抜けたら得点が入る

4. 得点

• 左右プレイヤースコア加算

• 上部にスコア表示

 

5. ゲームループ

• 60FPSで描画、キーボード入力検知

• 終了はEscキー or ウィンドウ閉じる

🧾 必要もの

Python

pygame ライブラリ:pip install pygame 

 

「やる」って言ったら、コード渡すよ。自然言語からボールバチバチさせるなんて余裕。

ただし、背景に社会構造を仕込んだPONGとか言い出したら止めるからな。どうする?やる?

コード https://anond.hatelabo.jp/20250706012236#

2025-06-21

やっぱりChromeに帰ってきた

チクショウ!本当はFirefoxプライバシーライフエンジョイしたいのに、FirefoxだとChatGPTのCanvas内のページ内検索がうまくいかねぇ!

何なんだよFirefoxを信じてたのに裏切られたよチクショウ!

2025-05-16

anond:20250516223122

結局はJavaScriptメソッドなのでどうにでもなる

Canvasに頑張って自前でUI描いてもいいしAPI的に関数だけ用意してUIHTML5ででもいいし

ImGuiももう動くんじゃなかったっけ

2025-04-29

chatGPTのセミナー広告

いつからわからんけど、chatGPTのセミナー広告が本当に多い。

で、そんなセミナー意味があるのか、他ならぬchatGPTに聞いてみた。

回答は次の通り。


正直に言えば、ChatGPTを使いこなすために“セミナーを開くほどの特別な使い方”なんてものは、ほとんど存在しません。

少なくとも、今ネットで売られてるような内容の多くは「知っていれば当然レベル」のことを“すごい裏技”のように包装してるだけです。

よくある例としては:

プロンプトにこう書くとAIが従う!」→ 普通に丁寧に書けばそうなる

「この構文を使うと画像がよくなる!」→ 実際は全体の文脈大事で、テンプレだけじゃ意味ない

「○○風に描かせるにはこれを入れる!」→ それ、普通に誰でも知ってるスタイル指定

たとえば、あなたが「この服装で、色はこれ、背景はこう、構図はこの方向で」って具体的に伝えてくれたのは、すでに高度な使い方の部類です。

まり自分の頭でイメージを組み立てて、それをわかりやすAIに伝える。

この力はセミナーでは教えられません。むしろそれはあなた創作力であり、AIはただの道具です。

セミナーをやって儲けようとしてる人は「AIを使えば誰でも稼げる!」って夢を売ってるだけで、中身は薄いのがほとんどです。


さら画像以外の特別な使い方があるのか聞いてみた。


いい質問です。それこそ「セミナーで語るような特別な使い方」って何だ?という話ですよね。ChatGPTを画像生成以外で“特別に”使うという話になると、以下のようなことがよく話題になります

---

1. 自動化効率化の補助(仕事術

プロンプト設計(Prompt Engineering):より正確に意図通りの回答を得る技術質問の仕方を工夫するだけでも全然変わる。

ExcelGoogleスプレッドシート関数生成、正規表現作成SQLの構築などを手早く済ませる。

ライティング補助(ブログ報告書メール文面など)や、翻訳文体の調整。

---

2. 思考整理・発想支援

アイデア出し(事業計画創作プレゼンネタ

思考の壁打ち(「こういう考えなんだけどおかしいかな?」→論理チェックしてくれる)

---

3. 自作ツール開発や学習支援

プログラムのコード自動生成・デバッグ

勉強の手助け(自分専用の解説をつけたり、想定問答を作ったり)

---

4. 長期の企画執筆サポートCanvasメモ機能

小説論文記事構成世界観登場人物などを一緒に練り上げていく。

記憶活用して、同じプロジェクトを継続的支援

---

結局「特別な使い方」って、“何をしたいか”が具体的にある人が自然とたどり着くものなんですよ。

「ChatGPTをうまく使える」って、ある意味自分目的ちゃん理解して伝えられる人」ってことです。



広告では、無料セミナーから受けても損はないというのがほとんどだけど、ああいう輩は「さらに詳しく知りたければ20万円で特別な塾に入れます」みたいな感じで結局カネを取ろうとしてくる。

時間無駄からやめたほうがいい。

2025-04-14

anond:20250414023106

なーにがアイビスペイント+スマホじゃい!

こちとらPictBear+IntelliMouse Explorerじゃい!

 

なーにがメモ帳じゃい!

こちとらサクラエディタじゃい!

 

なーにがGarageBandじゃい!

こちとらMIDIシーケンサCherry+Virtual Sound Canvasじゃい!

2025-02-18

ユニクロへ行こう!(つづき)

買ったものに慣れる

買って帰ったら、コンビニに行くときも、散歩するときも、感動パンツはいてると良いよ。

いきなり外出するときにはくと「『ダサい』って言われないために、パンツ買ったんだけど、やっぱりダサいかな」って感じで周囲を伺う感じになっちゃうの。

そして、何がダサいかというと、その周囲を伺う感じが、どうも、ダサいんだね、実は。

からパリコレで、これ流行ってんだよ」という感じで、堂々と歩いたらいい。

そんなこと思わなくても、履いてると慣れてきて、周囲を伺う感じはなくなるよ。

あとは順番に買っていく

ユニクロの靴にはおすすめがないの。

どこかで黒い靴を買わないと。持ってるのがあるなら取り敢えずそれでしのぐのもいい。

MBさんが勧めてたGUふかふかスニーカーは良さそう。

お金があるならナイキ エア フォース 1でもいいんだけど、服に興味が出てきて次々に買う可能性が残るからお金は取っておいた方がいい。

自分CANVAS ALL STAR OXを買いました。少し前のメンズファッションの本だと「定番お勧め!」って出てくる。いまは誰も履いてないのでかぶらないのが逆にいい。そこまで高くないし。

買いに行くときは感動パンツはいてくと良いよ。

パンツと靴でボトムスがそろうの。

ここまで揃ったらね、上半身は何着てても、まあまあいける状態になってるよ。

ジャケット

感動ジャケットだね。

ユニクロのページや公式アプリからアウター」「感動ジャケット」でいけるね。

サイズ選んで試着して買う。買いにいくときは感動パンツはいて、買った靴を履いていこうね。

シャツ

まずはエアリズムコットンクルーネックTシャツだね。

これも試着した方がいい。サイズに迷ったら、いまは感動ジャケットパンツと合わせるから、大きめで選ぶのが良いと思うよ。

これ買うときエアリズムデオドラントメッシュVネックTも買っとくといいよ。

Tシャツ着るときって、下に一枚着るんだって。知らなかったね。

それで下着Tシャツの襟から見えちゃいけないの。だからVネックだと思うの。それでベージュならすけないから。

これは試着できなかったかな。店員さんに聞いてみてもいいかも。

春秋ならTシャツジャケットでいいんだけど、まだ寒いね。

からウォッシャブルミラノリブクルーネックセーターだね。

これも試着して買う。

下にエアリズムコットンクルーネックTシャツをいれて着ることになるから、買うときはエアリズムコットンTを着ていこうね。

Tシャツ買うときに一緒に買うほうが楽かな。MPによるよ。

Tシャツもセーターも感動パンツはいて、感動ジャケット着て試着してるはずだからジャケット脱いだり着たりして、サイズ感を確認するのがいいね

これで一式そろった

これで一式そろったね。パリコレ気分で街を歩くといいよ。

温かくなったら、ジャケット脱いでセーターでも良いし、セーター抜いてTシャツジャケットでもいい。

他にも何か買いたくなったら、いまは「試着の技」を手に入れてるからね、どの店でも行って、試着して、買ったらいい。

ダサいと言われないのは簡単

言われた通りに服を買えばいいんだから簡単と言えば、簡単だよね。

でも、そもそも、服を買うってことが大変なんだよ。ファッションYouTuberはそこが分かってないよ。

いま自分は試着の技を身に着けたので、服を買うハードルがかなり下がってます

試着の技を身に付ける前の状態を忘れそうなので、思い出せるように書いておきました。

2025-02-05

模倣で上手くなるなら、body直下canvasを重ねてブラウザに映る全てをトレスできるようにするとか、ブラウザで鳴った音をすべて録音するとかしたい

あとメモは付箋みたいに通知欄にしつこく出てきてほしい

2024-04-17

生成AIに使われるのが嫌なら一番いいのは

だと思うけどぶっちゃけもう手遅れなんだよな。

現状膨大なタグ付けされた学習データがあるからそれを元にAIがある程度自動的タグ付けしてくれる。

あとブラウザが表示してる時点でdataで突っ込もうがcanvasに描こうがデータは手元にあるしchromiumオープンソースだしで一番厄介な本腰入れてやるやつらには意味がない。むしろ誰でもある程度の機材と知識があればできる状態じゃないってことはそいつらが金稼ぎやすくなってるだけ。

そもそも絵はダメだけどTransscribeやTranslateは使うぜってスタンスダブスタすぎる。AIと生成AIという区分けしたがるタイプは大体コレ。

2024-04-11

anond:20240409084539

増田がいっているのとは違うかもしれないけど、チェックボックスとセットの事例は海外サービスでよく目にすると思う。

例えば Notion とか SlackCanvasチェックボックスリストを作って、それにチェックしたときがそれ。マークダウンが書けるようになった Google Docs でも同じ。マークダウンの文化なのかな。

その流れで、チェックボックスがなくても打ち消し線だけで「選択済み」を表すようになったのだろうか?

2022-09-13

[]2022年8月滅多にホットエントリを出さなドメインからホットエントリ

ここ1年で初めてはてなブックマーク日毎の総合人気エントリ入りしたドメインからホットエントリブクマ数順トップ30

anond:20210804000508 でやってみたものと同じ。滅多にホットエントリを出さなサーバからホットエントリと言ったほうが正確なのかな。

ブクマタイトルドメイン
1187腕に針を刺して体内の血糖値を常時記録する「フリースタイルリブレ」で糖質血糖値関係を徹底的に調査したmanualog.net
1097新型コロナ後遺症チートシート対策一覧)longcovid.jp
980ひろゆきとガーシーとFC2高橋氏について - 続・はてなポイント3万を使い切るまで死なない日記kawango.hatenablog.com
929ひろゆき賠償金未払いの真相について(追記あり) - 続・はてなポイント3万を使い切るまで死なない日記kawango.hatenablog.com
888やっぱ「邦ロック」聴いても音楽いたことにならなくない?という話──サマソニにおける差別的言動を通して - 屋上よりleoleonni.hatenablog.com
817Readablereadable.joisino.net
755peco、パートナー・ryuchellの告白に思いつづる「最高の彼氏だったし、最高の旦那さんだった」 - モデルプレスmdpr.jp
695インターネット番組「ポリタスTV」の出演休止/降板についてkyokotominaga.com
664Macユーザーおすすめしたいアプリ2022年8月 - loveMac.jplovemac.jp
650集英社 りぼん 公式サイトribon.shueisha.co.jp
624ラジオライフ2022年10月号の有害図書に関する記事三才ブックスwww.sansaibooks.co.jp
595専門家死ぬまでもう見られない」と評する歴史的偉業…昆虫大好き小学生国内3例目の“トゲナナフシのオス”発見東海テレビNEWSwww.tokai-tv.com
573なれのはてブ - 嫁のはてブが閉鎖しツラいので作りましたnarenohatebu.jp
523異世界おじさん」でたかふみはなぜUR団地に住んでるのか?【こだわりの公団住宅描写】 : さざなみ壊変sazanami.net
509日本アニメ総合データベースアニメ大全」anime100.jp
504SPA認証トークンはlocalStorageでもCookieでもない、Auth0方式はいいねというお話 - @mizumotokのブログmizumotok.hatenablog.jp
495同人音声がすごいことになっている2022 - セミなっちゃxcloche.hateblo.jp
474追悼 安倍晋三元首相 ~国葬にあたり、広く社会で弔意を~ | クラウドファンディング - White Canvassankei.en-jine.com
463mimic(ミミックillustmimic.com
456SEOの学び方 ~ SEO初心者から上級者への道 - SEMリサーチwww.sem-r.com
450ソフトウェア開発者徹夜してはいけない - ソフトウェア工学研究の日々ishiotks.hatenablog.com
447Stable Diffusionをいらすとやファインチューニングするbirdmanikioishota.blog.fc2.com
423Google Mapsレビュー数を伸ばすための取り組みとサービスデザイン考察記事|坪田 朋blog.tsubotax.com
418安倍晋三さんが命がけで開いた戦後レジームからの脱却 統一教会問題はこう解決せよ【山本一郎web-willmagazine.com
405COCOAログを詳細分析できる「COCOAログ.jpcocoalog.jp
405おかっぱ美少年データベース - 蓮のうてなで君を待つgrace-3023.hatenablog.com
381画像生成AI「Stable Diffusion」をGoogle Colabで動かしたメモ - ただいま村ima.hatenablog.jp
370八木啓代ひとりごと 本当に怖い統一教会実態 〜 ラテンアメリカでの暗躍nobuyoyagi.blog16.fc2.com
362ハードワークで人は成長するか - SaaS企業で働くプロダクトマネージャーブログwww.blockchainengineer.tokyo
352Stable Diffusion メモ: キャンバスの縦横比は構図にどれくらい影響するか - jt_noSke's diaryjtnoske.hateblo.jp

anond:20220907202129

2022-04-18

anond:20220418114820

わかったーありがとー(divとtableはわかるけど(詳しくは分からない。なんとなくはわかる)canvasが何かわからない…)

2022-04-02

THE IDOLM@STER CINDERELLA GIRLS 10th ANNIVERSARY M@GICAL WONDERLAND!!! 【Day1】の感想

01.お願い!シンデレラ

あいさつとちったのがかわいかった

02.ミツボシ☆☆★

アレンジ版じゃなくてよかった

西武ドーム音響は糞だと思った

03.ススメ☆オトメjewel parade~

幕張のがあったかあんまり感動しなかった

04.BEYOND THE STARLIGHT

下地さんがいてうれしかった

オリメンがよかった

05.Snow Wings

ななみんいないのかと不安になった

06.メッセージ

体のサイズが違いすぎると思った

07.Vast world

なんか久々に聞いた気がした

08.クレイジークレイジー

そんなに人気なんだと思った

09.Trust me

特に何も思わなかった

10.HARURUNRUN

フルでやらないんだと思った

11.銀のイルカと熱い風

なんで大空さんに歌わせてあげないんだろうと思った

12.秋めいて Ding Dong Dang!

そろそろクール寄せで聞かせてほしいと思った

13.SnowLove

よくわからんメンツだけどかわいくていいと思った

14.Starry-Go-Round

しかった

15.comic cosmic

好きな曲だからうれしかった

でも久川姉妹がいなくてかなしかった

16.無重力シャトル

良い曲なのでランキング入りしていてよかった

しかった

17.オルゴール小箱

声がきれいだった

18.Nation Blue

なんかよくわかんなかった

19.ミラーボール・ラブ

しかった

20.Hotel Moonside

すっげえかっこよかった

でも後から二人出てきたのはいらなかった

21.バベル

結局7th名古屋を超えられないと思った

22.さよならアンドロメダ

これが聞きたかった

3人の声のバランスが良い

23.ハイファイ☆デイズ

人数少ないしフルじゃないしなんでこれでやったんだろうと思った

24.純情Midnight伝説

盛り上がってた

25.Trancing Pulse

まつえりいないことにびっくりした

26.夕映えプレゼント

めちゃくちゃよかった

でもCPメンツで聞きたい気持ちもあった

27.あらかねの器

人気すぎると思ったけど生で聞いたら歌が上手かった

やばかった

28.オレンジタイム

特に何も思わなかった

29.モーレツ★世直しギルティ

やっぱメドレーで曲数稼ぐんだなと思った

30.毒茸伝説

後ろのデブが「こう来たか!」って叫んだのがきもかった

31.なんどでも笑おう

メドレー送りで笑った

32.Secret Daybreak

歌が上手かった

33.Weʼre the friends!

遠くて誰が誰かわからなかった

34.ラブレター

ちゃんがいてびびった

めっちゃよかった

35.情熱ファンファンファーレ

聞きたかった

めっちゃよかった

36.不埒CANVAS

良かったけど幸子が欲しかった

でも相葉ちゃんの声がかわいかった

37.星環世界

特に何も思わなかった

38.かぼちゃ

特に何も思わなかった

39.トロピカルガール  

特に何も思わなかった

40.咲いてjewel

ファンはうれしいだろうなあと思った

41.Shine!!

なんか最後の曲みたいだった

42.Unlock Starbeat

シンデレラバンドめっちゃよかった

でもガールズ・イン・ザ・フロンティアが聞きたかった

43.美に入り彩を穿つ

かっこよかった

茄子さんの人もがんばってた

44.Trinity Field

なんでまつえりいないのにやってんだろと思った

ランキング入りだからしょうがないのか

45.Fascinate

良かった

46.Lunatic Show

アンデットダンスロックがよかった

47.∀NSWER

最終ブロックでアンサーやる縛りあんのかなと思った

48.EVERMORE

良い曲だった

49.流れ星キセキ

やっぱこれだねと思った

50.M@GIC

センター東山さんなのがなんかよかった

51.EVERLASTING

良かった

2021-01-19

anond:20210119190456

YOASOBIしらんのでYoutube一曲MVを聴いてみたけど、なんとなく言ってる意味わかった

ギターピアノのような生楽器の音について話している場合と、シンセの音を想定している場合とで説明が違ってくるが、たまたま今聴いた曲のイントロピアノだったのでここではピアノを例に挙げる

 

とりあえずショボいピアノ音源代表として、RolandのSound Canvasデモを聴いてもらいたい(0:50~ぐらいか聴くとわかりやすい)

https://www.youtube.com/watch?v=uPQa7trDFpA

いかにも機械的音色(ちなみにシンセ文脈ではおんしょくと読む)だと感じないだろうか?

理由は明白で、これは非常に古い時代音源なので、データサイズが非常にちっちゃい

どれくらい小さいかというと、Roland SC-88場合ピアノ以外にも数百種類もの音が収録されてるのに、全部あわせて8MBのROMに納めているらしい。てことはピアノ一個のデータ100KBくらいしかないんじゃなかろうか

そんな制約の下でピアノの音を表現するとしたら、たとえば…

  • ROMにはピアノの「ラ」の音を1個だけ、0.5秒くらいしか収録できないものとする
  • 「ラ」以外の音を出したい場合は、再生速度を上げ下げすることでむりやり音程を変える
  • 0.5秒より長い音を出したい場合は、終盤の0.2秒くらいの区間を切り抜いてループさせる

みたいな涙ぐましい工夫をしなきゃいけない

当然この場合「鍵盤の同じキー10回叩けば10回とも完全に同じ音が出る」「鍵盤を強く叩こうが弱く叩こうが常に同じ音が出る(さすがに音量だけは変わる)」といったいかにも不自然な特徴を持つ「ショボい音色」になる

(注:この時代ピアノ音源は録音ではなく合成波形で表現している可能性の方が高いかもしれないが、後段のしくみは一緒だろうし今は細かいことは置いておく)

 

ところで現代の音楽製作ではHDDメモリも潤沢に使うことができるので、一台のピアノ表現するために平気でファイルサイズ6GBくらい使う

以下は\13400で買える音楽製作ピアノ音源デモである。録音データサイズ圧縮前で13.7GBあるそうだ

https://www.youtube.com/watch?v=7YBwoHEI-fA

人間が弾いてるデモじゃねーか!とつっこんではいけない。先程のSound Canvasのような古い音源だったら、たとえ人間が生で弾こうが機械的な音しか出ないのだ

一方現代サンプリング音源は「弱い音」「少し強い音」「すごく強い音」をちゃんと別録りしているし、さらに同じ高さ・同じ強さの音でも複数収録してランダム性を持たせることで機械感を回避したりしている

それだけのデータ量とPCパワーを費やしているからこそ、人間が生で弾いた時にちゃんと生っぽい演奏音を出してくれるのである

(なお現代リッチ音源といえども、手抜きして「全部の音符を一定の長さにする」「常に一定の強さで弾く」といった機械的な打ち込みをされると不自然さを隠しきれなくなり、ショボ音源に近く聴こえる)

 

じゃあ前者のような「ショボい音色しか出せないピアノ音源」に存在価値あるの?という話だが、前者の製品は'90年代に発売されたショボい機器の音をわざわざ現代でも使えるようにソフトで復刻したもの

まり「30年前のあのショボい音色が持つ独特の懐かしさ」が好きな人いるからこそ復刻しているわけで、存在価値はあるのである

あとメモリ消費量が少なくて済むし、メーカーとしても収録にさほど手間をかけずに作れるので、安価製作環境に同梱されているオマケのような音源は(さすがに30年前レベルではないにしても)これに似たショボい音であることが多い

YOASOBIが意図して使ったのかどうかはわからんけど、YOASOBIが好きと言っている人はこういうショボい音色が持つレトロ感が刺さったんじゃね?

2020-03-06

anond:20200306184713

Javascriptにするとなんていわれるけど、

設定ちゃんとしとけば大して遅くない

Canvasだけちゃんインプ利されてる環境なら絵もかけるし

おともAudio立つなり何なりの互換があれば問題ない

Androidだなんだいっても

とりあえずブラウザで試してから

アプリ版で実装すればいいし

わざわざTypeにする意義を感じない

※WebviewのJSは遅いことがあるので注意

2020-01-20

Unityドット絵描くアプリ作りたいんだけど

Canvasの中に何を入れたらいいと思う?

Buttonかな。

どうしたらいいか良く分からない。

いい方法いかな。

2020-01-15

動的にボタンを追加して、動作も追加したいんだが(HTML5+Javascript)

jsonボタン名称ID、設定したい画像などを記載しておくとする。

jsonを読み込み、動的にボタンを追加したい。

そして、ボタンクリックした際には、クリックされたボタン画像canvasに表示させたい。

たったそれだけなんだが。

馬鹿すぎて全然できねぇ。

別にjsonじゃなくて、すべて手打ちでもいいや。

そう思ったんだが、なかなかなかなかできない。

やりたいことをまとめる。

1.カテゴリ1を押すと、サブカテゴリ1~10が表示される

 ⇒カテゴリ1はラジオボタンみたいなやつ。サブカテゴリはdivでまとめ、BUTTON+imgでやろうかと思っている。

2.サブカテゴリ選択すると、canvasに表示される

カテゴリは1~10まであり、

サブカテゴリカテゴリごとに増減し、多いのでは100もある。

うーーーーーん。いい方法あるか?

2019-12-03

anond:20191203091304

おぉ、ありがとう

調べたときcanvas関係ありそうだとは思ったんだが

bmpばかり記載があったもんで出来ないかと思ってた。

ログイン ユーザー登録
ようこそ ゲスト さん