HTML5 canvasの基本と描画の始め方|図形描画からアニメーションまで解説

HTML5 canvasの基本と描画の始め方 メディア

絵をパソコンやスマホの画面に動かしたいときって、どうやって作るのか気になりますよね。

そんなときに使えるのが、HTML5のcanvasという便利なしくみです。

この記事では、HTML5 canvasの基本と描き方の始め方について、とてもやさしくわかりやすく説明していきます。

canvasのことがわかるようになると、自分で図形を描いたり、アニメを動かしたり、ゲームを作ることもできるようになります

絵を描くのが好きな人も、プログラミングをやってみたい人も、ぜひ最後まで読んで試してみてください。

HTML5 canvasとは?基本をわかりやすく解説

HTML5 canvasとは?基本をわかりやすく解説

canvas要素の役割と特徴

HTML5のcanvas要素は、ブラウザ上でグラフィックや図形を描くことができる仕組みです。

画像編集ソフトのように、線や四角、文字などを自由に描けます。

canvasはとても軽くて、ゲームやアニメーション、グラフなど動きのある表現を作りたいときに役立ちます。

以下のような特徴があります。

  • ブラウザに直接描ける
  • HTMLとJavaScriptだけで使える
  • 動きのある表現や加工が得意
  • 画像や図形、文字を自由に組み合わせられる
  • SVGよりも動きに強い

これらの特徴により、canvasは今ではWeb開発でとても重要な技術のひとつになっています。

HTML5でのcanvasの書き方

canvasを使うには、まずHTMLの中にcanvasタグを入れます。

これは描画エリアを用意するためのものです。

とてもシンプルに使えます。

例えば、こんなふうに書きます。

<canvas id="myCanvas" width="300" height="150"></canvas>

このコードは、幅300ピクセル、高さ150ピクセルのキャンバスを作っています。

その中に線や文字などを描くことができます。

JavaScriptを使えば、以下のように描画できます。


const canvas = document.getElementById("myCanvas");
const ctx = canvas.getContext("2d");
ctx.fillStyle = "red";
ctx.fillRect(10, 10, 100, 50);

この例では赤い四角が描かれます。

canvasの使い方はとても直感的でわかりやすいです。

canvasが注目される理由

canvasがたくさんの人に使われているのは、自由な表現ができて高速だからです。

とくに動きのある表現が求められる今のWebでは、とても重宝されています。

canvasが注目されている理由には、次のような点があります。

  • 軽くてスムーズに動く
  • インタラクティブな表現ができる
  • Webゲームやアニメーションが作れる
  • 画像を加工したり編集できる
  • データをグラフや図として可視化できる

このようなメリットがあるので、canvasは多くのWebサービスやアプリで使われているのです。

SVGとの違いとは

canvasと似たものにSVGという技術があります。

どちらも図形を描けますが、それぞれに得意・不得意があります。

ここではcanvasとSVGの違いを見ていきましょう。

主な違いは以下の通りです。

  • canvasは「即時描画」型、SVGは「要素ベース」型
  • canvasは動きに強いが、SVGは編集やイベント処理が得意
  • canvasはメモリ効率が良く、大量描画に強い
  • SVGはHTMLと同じように扱える
  • canvasはピクセル単位、SVGはベクター形式

どちらを使うかは用途に応じて選ぶことが大切です。

canvasを使う上での注意点

canvasはとても便利ですが、使うときにはいくつか注意するべきことがあります。

初心者の人でもつまずきやすいポイントを押さえておきましょう。

注意点は次のようになります。

  • canvasの中の要素はDOMとして認識されない
  • 画像や描画内容はリロードで消える
  • アクセシビリティが低い
  • テキストの検索や選択ができない
  • 大きなキャンバスでは処理が重くなることがある

これらのポイントに気をつけながら使えば、canvasをもっと上手に活用できます。

対応ブラウザと互換性の確認

canvasはHTML5の標準技術なので、今のブラウザならほとんど対応しています。

でも、古いブラウザでは動かないこともあるので注意が必要です。

対応状況を知っておくと安心です。

  • Chrome、Firefox、Safari、Edgeでは問題なく動く
  • Internet Explorer 9以上で使える
  • モバイルブラウザでも基本対応済み
  • 一部の機能はブラウザごとに挙動が違うこともある
  • モバイルではパフォーマンスに注意が必要

canvasを使う前には、自分の作りたいものがターゲットのブラウザで正しく動くかを確認しておきましょう。

canvasを使うための基本知識

canvasをしっかり使うには、基本的な用語や仕組みを知っておくことが大切です。

特に初めての人は、「描画コンテキスト」や「パス」などの言葉に慣れておくと、スムーズに学べます。

ここでは覚えておきたいポイントを紹介します。

  • context(コンテキスト)は描画の設定や命令を扱う
  • fillStyleやstrokeStyleで色を変えられる
  • パスは線や形の作成に使う
  • beginPathとclosePathで図形を囲む
  • 描画の順番は結果に大きく影響する

こうした基本を知っていれば、canvasを使って自分だけの描画ができるようになります。

HTML5 canvasで描画を始める準備

HTML5 canvasで描画を始める準備

canvas要素の設置方法

canvasを使って絵や図を描くには、まずHTMLの中にcanvas要素をしっかり設置することが大切です。

canvasはただの空白の箱のようなもので、何も描かなければ何も見えません。

設置が正しくないと、JavaScriptで描こうとしてもうまくいかないので注意しましょう。

canvas要素は次のように書きます。

<canvas id="myCanvas" width="400" height="200"></canvas>

ここで使うポイントをまとめます。

  • id属性でcanvasを指定できるようにする
  • widthheightを指定してサイズを決める
  • タグの中には基本的に何も書かない
  • 複数設置するときはそれぞれ別のidにする
  • HTMLのの中に書くのが一般的

まずはこのcanvas要素が正しく表示されているかを確認することがスタートラインです。

JavaScriptとの連携手順

canvasで実際に何かを描くためには、JavaScriptとしっかり連携させる必要があります。

HTMLだけでは何も描けないので、JavaScriptを使って「どこに、何を、どうやって描くか」を命令する必要があります。

連携の基本の流れは以下のとおりです。


const canvas = document.getElementById("myCanvas");
const ctx = canvas.getContext("2d");
ctx.fillStyle = "blue";
ctx.fillRect(20, 20, 100, 50);

ここでのポイントを確認しましょう。

  • document.getElementByIdでcanvas要素を取得
  • getContext("2d")で2D描画の準備
  • fillStyleで色を指定
  • fillRectで四角を描く

このようにして、JavaScriptとcanvasをつなげることで自由な描画が可能になります。

getContextで描画コンテキストを取得

canvasの描画では「コンテキスト」と呼ばれる特別なオブジェクトを使います。

これは、canvasの中で何をどう描くかを決める指揮者のような存在です。

JavaScriptでこのコンテキストを取得しないと、描画は始まりません。

描画コンテキストの取得方法はとても簡単です。


const canvas = document.getElementById("myCanvas");
const ctx = canvas.getContext("2d");

このようにして得られるctxが、すべての描画命令のスタート地点になります。

コンテキストに関する基本情報をまとめます。

  • canvas要素から取得する必要がある
  • 「2d」は2次元描画の意味
  • WebGLを使うときは「webgl」を指定
  • ctxが描画の命令を受け取る場所
  • 一度取得すれば何度でも使える

コンテキストの仕組みを理解することで、canvasをもっと自由に使えるようになります。

描画エリアのサイズ指定

canvasを設置したら、次に描く場所の広さを決めなければなりません。

この広さのことを「描画エリアのサイズ」と呼びます。

サイズが小さいと描いた絵が切れてしまいますし、大きすぎると無駄になります。

サイズ指定には2つの方法があります。

  • widthheight属性でHTML内に書く
  • JavaScriptでcanvas.widthcanvas.heightを使って設定する

HTMLで書く例:

<canvas width="400" height="300"></canvas>

JavaScriptで書く例:


canvas.width = 400;
canvas.height = 300;

サイズは描画の基本なので、正確に指定しておくことがとても大事です。

基本的なエラーチェック方法

canvasを使うときには、思った通りに動かないこともよくあります。

そんなときのために、エラーチェックの方法を覚えておくと安心です。

初歩的なミスでも、気づかずに時間を無駄にしてしまうことがあるので要注意です。

よくあるエラーとそのチェックポイントを紹介します。

  • idが間違っていてcanvasが取得できない
  • getContextがnullになっている
  • JavaScriptがcanvasの前に読み込まれている
  • console.logで中身を確認すると原因が見える
  • ブラウザの開発者ツールでエラーを確認する

小さな確認で大きなトラブルが防げるので、常に確認しながら進めることが大切です。

初期化やクリア処理の実装

canvasでは、何度も描き直すときに前の絵が残ってしまいます。

そんなときにはキャンバスを初期化(リセット)する必要があります。

これはとても重要な処理です。

クリア処理の基本コードは以下の通りです。

ctx.clearRect(0, 0, canvas.width, canvas.height);

これでcanvas全体をまっさらにすることができます。

初期化のポイントは次の通りです。

  • すべての描画を消すにはclearRectを使う
  • サイズを正確に指定する必要がある
  • アニメーションやインタラクションの前に使う

クリア処理がうまく使えると、canvasの使い方が一段とレベルアップします。

レスポンシブ対応のポイント

canvasはデフォルトでは固定サイズですが、スマホやタブレットにもきれいに対応させるには工夫が必要です。

画面サイズに合わせて描画内容を調整することで、見た目も使い勝手も良くなります。

レスポンシブ対応の考え方を紹介します。

  • ウィンドウサイズを取得してcanvasサイズを変更
  • window.innerWidthwindow.innerHeightを使う
  • 描画もサイズに合わせて再計算する
  • リサイズイベントで再描画する
  • CSSだけでなくJavaScriptでも調整が必要

これらの対応をすることで、どんな画面でも見やすいcanvas表現が実現できます。

canvasで描ける基本的な図形と描画方法

canvasで描ける基本的な図形と描画方法

線を描く(lineTo・moveTo)

canvasで絵を描くとき、まず覚えたいのが「線の描き方」です。

線は絵の基本です。

人や建物、星の形など、ほとんどの図形が線からできています。

JavaScriptではmoveToでスタート地点を決めて、lineToで線を引きます。

次のようなコードで描くことができます。


ctx.beginPath();
ctx.moveTo(50, 50);
ctx.lineTo(200, 100);
ctx.stroke();

線を描くときの基本のポイントは次の通りです。

  • beginPathで線のスタートを宣言
  • moveToで始点を指定
  • lineToで終点を指定
  • strokeで線を描画
  • 線の太さや色も設定できる

この基本を覚えるだけで、いろんな線を自由に引けるようになります。

線を操れるようになると表現力がぐんと広がります

矩形を描く(fillRect・strokeRect)

四角い図形を「矩形(くけい)」といいます。

canvasで四角を描くには、fillRectまたはstrokeRectを使います。

fillRectは塗りつぶし、strokeRectは枠だけを描きます。

以下のように使います。


ctx.fillStyle = "green";
ctx.fillRect(20, 20, 100, 60);
ctx.strokeStyle = "blue";
ctx.strokeRect(20, 100, 100, 60);

矩形の描き方のポイントをまとめます。

  • fillRect(x, y, width, height)で塗りつぶし
  • strokeRect(x, y, width, height)で枠だけ描画
  • fillStyleで塗りの色を指定
  • strokeStyleで線の色を指定
  • 座標とサイズはピクセル単位で決める

矩形はレイアウトやボタン、背景などに使えて、とても便利な基本パーツです。

円や円弧を描く(arc)

canvasでは、丸い形も描くことができます。

円や円の一部を描きたいときは、arcという関数を使います。

arcは少しむずかしそうに見えますが、基本を覚えればすぐに使えます。

次のように書きます。


ctx.beginPath();
ctx.arc(150, 75, 50, 0, Math.PI * 2);
ctx.fillStyle = "orange";
ctx.fill();

arcで指定するのは以下の6つです。

  • 中心のx座標
  • 中心のy座標
  • 半径
  • 開始角度
  • 終了角度
  • 時計回りか逆回りか(省略可)

丸や弧が描けると、顔やタイマー、グラフなど表現の幅が大きく広がります

テキストの描画(fillText・strokeText)

canvasには文字も描けます。

テキストを使うと、説明やタイトル、数字などを絵の中に入れられます。

fillTextは塗り文字、strokeTextは枠文字を描くための関数です。

基本の書き方はこうなります。


ctx.font = "20px Arial";
ctx.fillStyle = "black";
ctx.fillText("こんにちは", 50, 100);
ctx.strokeText("ふち文字", 50, 150);

テキストの描き方で大事な点をまとめます。

  • fontでフォントの種類とサイズを指定
  • fillTextで塗り文字
  • strokeTextで枠文字
  • 座標は文字の左下
  • 色はfillStylestrokeStyleで変える

テキストを使えば、絵に情報を加えることができてとても便利です。

色やスタイルの設定方法

canvasでは、描いたものの色や太さなどを細かく指定できます。

見た目を変えることで、印象を大きく変えることができます。

fillStylestrokeStylelineWidthなどを使って設定します。

設定の主な方法は次の通りです。

  • fillStyleで塗りの色を指定
  • strokeStyleで線の色を指定
  • lineWidthで線の太さを設定
  • lineCapで線の先端の形を調整
  • lineJoinで線のつなぎ方を変える

色やスタイルを上手に使えば、ただの図形もおしゃれで見やすくなります

パスの操作と塗りつぶし

パスとは、canvasで描く線や図形の「通り道」のようなものです。

パスを使うことで、もっと自由で複雑な図形が描けます。

描いたパスは塗ったり、なぞったりして完成させます。

基本の流れをコードで見てみましょう。


ctx.beginPath();
ctx.moveTo(50, 50);
ctx.lineTo(150, 50);
ctx.lineTo(100, 150);
ctx.closePath();
ctx.fillStyle = "pink";
ctx.fill();

パスの基本的な使い方をまとめます。

  • beginPathで新しいパスを始める
  • moveTolineToで線を作る
  • closePathでパスを閉じる
  • fillで中を塗る
  • strokeで線を描く

パスを使えば、自分だけのオリジナルな形も簡単に作れます

描画順と重なりの管理

canvasでは、描いた順番がとても大事です。

あとから描いたものは前に表示され、最初に描いたものは後ろに隠れてしまうこともあります。

これを「描画順」や「重なり順」といいます。

順番をうまくコントロールするためのポイントを紹介します。

  • 描きたい順番にコードを書く
  • 背景→図形→文字の順が基本
  • 間違えたら一度クリアして描き直す
  • 重ねるならglobalAlphaで透明度を調整
  • レイヤー分けしたいときは複数canvasを使う

順番を意識して描けば、きれいで見やすいcanvasアートを作ることができます

実用的なHTML5 canvasの活用方法

実用的なHTML5 canvasの活用方法

アニメーションの基本とフレーム制御

canvasでは、絵を少しずつ変えて何回も描き直すことで、アニメーションを作ることができます。

これは「フレーム制御」と呼ばれるテクニックで、1秒に何十回も絵を描いて動いているように見せる仕組みです。

JavaScriptのrequestAnimationFrameを使えば、なめらかで軽いアニメーションが作れます。

基本の書き方の一例です。


function draw() {
ctx.clearRect(0, 0, canvas.width, canvas.height);
x += 2;
ctx.fillRect(x, 50, 50, 50);
requestAnimationFrame(draw);
}
draw();

アニメーションの基本ポイントをまとめます。

  • 絵を毎回クリアして描き直す
  • requestAnimationFrameで次の描画を予約
  • 変数で位置や形を変える
  • タイマーよりrequestAnimationFrameの方がなめらか
  • 動きに応じて条件分岐を入れると複雑な演出もできる

この方法を使えば、ゲームや動くアイコン、パラパラ漫画のような表現も簡単に作れます

画像の読み込みと描画

canvasでは、自分のパソコンやWeb上にある画像も読み込んで表示できます。

これはImageオブジェクトを使って行います。

絵の上に画像を重ねたり、画像を切り取って使ったりもできます。

画像を読み込んで描く基本のコードはこうなります。


const img = new Image();
img.src = "sample.jpg";
img.onload = function() {
ctx.drawImage(img, 50, 50, 100, 100);
};

画像描画の基本ポイントを見てみましょう。

  • new Image()で画像を作成
  • srcで画像のURLやパスを指定
  • onloadで読み込み完了後に描画
  • drawImageで位置やサイズを指定
  • 画像の一部だけ切り取ることも可能

画像を使うとよりリアルでわかりやすい表現ができるようになります

インタラクティブなUIの実装

canvasは、ただ絵を描くだけでなく「インタラクティブ」つまり見る人の動きに反応するUIも作ることができます。

マウスの動きにあわせて線が描かれたり、クリックで色が変わったりするような仕組みを作るには、イベントを使います。

以下はマウスに反応する簡単なコードです。


canvas.addEventListener("mousemove", function(e) {
ctx.clearRect(0, 0, canvas.width, canvas.height);
ctx.fillRect(e.offsetX, e.offsetY, 30, 30);
});

インタラクティブなUIを作るための基本は以下の通りです。

  • addEventListenerで操作を受け取る
  • mousemoveclickなどのイベント名を使う
  • e.offsetXなどで位置情報を取得
  • ユーザー操作ごとに描画を変える
  • 入力デバイスに応じた工夫も必要

この仕組みを使えば、見て触って楽しめるコンテンツが作れます

イベント処理とユーザー操作

canvasを使って作るアプリやゲームでは、ユーザーがクリックしたりキーを押したりする操作に反応することがとても大切です。

イベント処理はその「反応」を作る仕組みです。

JavaScriptのイベントリスナーで簡単に追加できます。

イベント処理で使える主な操作を紹介します。

  • click:マウスをクリックしたとき
  • mousemove:マウスを動かしたとき
  • mousedown:クリックを押し始めたとき
  • mouseup:クリックを離したとき
  • keydown:キーボードのキーを押したとき

イベントの使い方の基本はこのようになります。


document.addEventListener("keydown", function(e) {
if (e.key === "ArrowRight") {
x += 10;
}
});

イベントを使いこなすと、操作できるインターフェースが作れて、ユーザーの体験がぐっとよくなります

ゲームやビジュアライゼーションへの応用

canvasを使えば、本格的なゲームや、データをわかりやすく見せる「ビジュアライゼーション」も作れます。

動き、色、図形を組み合わせれば、難しいデータも小学生でもわかるように見せることができます。

ゲームやビジュアライゼーションで使う技術を整理します。

  • アニメーション制御でキャラを動かす
  • 当たり判定でぶつかりをチェック
  • スコアやタイマーなどの数値表示
  • グラフ描画でデータを可視化
  • 操作に反応するイベント処理

これらを組み合わせることで、楽しくてわかりやすいツールやゲームが作れます

他のAPIやライブラリとの連携

canvasは単体でも便利ですが、他のライブラリやAPIと組み合わせることで、もっとすごいことができます。

たとえば音や動画を使ったり、AIやネットと連携したりすることも可能です。

組み合わせると便利な例を挙げます。

  • Web Audio API:音と連動した映像を作れる
  • WebSocket:リアルタイム通信で多人数参加のゲーム
  • Three.js:3D描画と一緒に使える
  • Chart.js:グラフをきれいに描ける
  • TensorFlow.js:AIと画像処理を連動

このように連携することで、canvasは単なる絵だけでなく、未来的な体験を作るための強力な道具になります

パフォーマンス最適化のポイント

canvasで動きのあるコンテンツを作ると、動作が重くなることがあります。

スムーズに動かすには「パフォーマンスの最適化」が大切です。

軽く、速く、止まらないように工夫する必要があります。

最適化するための工夫をまとめます。

  • 不要な描画は省く
  • clearRectを使って必要な部分だけ更新
  • アニメーションの更新回数を調整
  • 画像の読み込みは一度だけにする
  • Canvasのサイズを適切に設定

こうした工夫をすることで、快適でストレスのない動きをユーザーに届けられます

まとめ

まとめ

HTML5のcanvasを使うと、絵を描いたりアニメを動かしたり、ゲームを作ったりと、とても楽しいことができます。

今回の記事では、基本から実用的な使い方までをわかりやすく紹介しました。

ここで大事なポイントをもう一度かんたんにまとめます。

  • canvas要素で描画エリアを作る
  • JavaScriptで線や四角、丸を描く
  • アニメーションや動きもつけられる
  • 画像や文字も自由に使える
  • インタラクションやゲームも作れる

さっそく自分でもcanvasを使って、いろいろな図形や動く作品を作ってみましょう。

試しているうちに、きっと楽しくなってくるはずです。