---
title: Canvas API
slug: Web/API/Canvas_API
tags:
  - API
  - Canvas
  - Graphics
  - Overview
  - Reference
  - キャンバス
  - グラフィック
  - 概要
translation_of: Web/API/Canvas_API
---
<div>{{CanvasSidebar}}</div>

<p class="summary"><strong>Canvas API</strong> は <a href="/ja/docs/Web/JavaScript">JavaScript</a> と <a href="/ja/docs/Web/HTML">HTML</a> の {{HtmlElement("canvas")}} 要素によってグラフィックを描く方法を提供します。他にも、アニメーション、ゲームのグラフィック、データの可視化、写真加工、リアルタイム動画処理などに使用することができます。</p>

<p>Canvas API は全体的に 2D グラフィックを対象としています。 <a href="/ja/docs/Web/WebGL">WebGL API</a> は、こちらも <code>&lt;canvas&gt;</code> 要素を使用して、ハードウェアで高速化された 2D および 3D グラフィックを描きます。</p>

<h2 id="Basic_example" name="Basic_example">基本的な例</h2>

<p>この単純な例は、キャンバス上に緑の四角形を描きます。</p>

<h3 id="HTML" name="HTML">HTML</h3>

<pre class="brush: html notranslate">&lt;canvas id="canvas"&gt;&lt;/canvas&gt;
</pre>

<h3 id="JavaScript" name="JavaScript">JavaScript</h3>

<p>{{domxref("Document.getElementById()")}} メソッドで、 HTML の <code>&lt;canvas&gt;</code> 要素への参照を取得します。次に、 {{domxref("HTMLCanvasElement.getContext()")}} メソッドで要素のコンテキストを取得します。 — ここに描画されたものが表示されます。</p>

<p>実際の描画は {{domxref("CanvasRenderingContext2D")}} インターフェイスを用いて行われます。 {{domxref("CanvasRenderingContext2D.fillStyle", "fillStyle")}} プロパティは四角形を緑にします。 {{domxref("CanvasRenderingContext2D.fillRect()", "fillRect()")}} メソッドはこれを左上から (10, 10) の位置で、幅を150単位、高さを100単位の寸法を与えます。</p>

<pre class="brush: js notranslate">const canvas = document.getElementById('canvas');
const ctx = canvas.getContext('2d');

ctx.fillStyle = 'green';
ctx.fillRect(10, 10, 150, 100);
</pre>

<h3 id="Result" name="Result">結果</h3>

<p>{{ EmbedLiveSample('Basic_example', 700, 180) }}</p>

<h2 id="Reference" name="Reference">リファレンス</h2>

<div class="index">
<ul>
 <li>{{domxref("HTMLCanvasElement")}}</li>
 <li>{{domxref("CanvasRenderingContext2D")}}</li>
 <li>{{domxref("CanvasGradient")}}</li>
 <li>{{domxref("CanvasImageSource")}}</li>
 <li>{{domxref("CanvasPattern")}}</li>
 <li>{{domxref("ImageBitmap")}}</li>
 <li>{{domxref("ImageData")}}</li>
 <li>{{domxref("RenderingContext")}}</li>
 <li>{{domxref("TextMetrics")}}</li>
 <li>{{domxref("OffscreenCanvas")}} {{experimental_inline}}</li>
 <li>{{domxref("Path2D")}} {{experimental_inline}}</li>
 <li>{{domxref("ImageBitmapRenderingContext")}} {{experimental_inline}}</li>
</ul>
</div>

<div class="blockIndicator note">
<p><strong>メモ:</strong> <code>WebGLRenderingContext</code> に関するインターフェイスは、<a href="/ja/docs/Web/WebGL">WebGL</a> に掲載しています。</p>
</div>

<p>{{domxref("CanvasCaptureMediaStream")}} は関連するインターフェイスです。</p>

<h2 id="Guides_and_tutorials" name="Guides_and_tutorials">ガイドとチュートリアル</h2>

<dl>
 <dt><a href="/ja/docs/Web/API/Canvas_API/Tutorial">Canvas チュートリアル</a></dt>
 <dd><code>&lt;canvas&gt;</code> の基本的な使いかたと高度な機能の両方をカバーする網羅的なチュートリアル。</dd>
 <dt><a href="http://joshondesign.com/p/books/canvasdeepdive/title.html">HTML5 Canvas Deep Dive</a></dt>
 <dd>Canvas API および WebGL の実践的な書籍規模の入門です。</dd>
 <dt><a href="http://bucephalus.org/text/CanvasHandbook/CanvasHandbook.html">Canvas Handbook</a></dt>
 <dd>Canvas API の手軽なリファレンス。</dd>
 <dt><a href="/ja/docs/Web/API/Canvas_API/A_basic_ray-caster">デモ: 簡単な ray-caster</a></dt>
 <dd>キャンバスを用いたレイトレーシングアニメーションのデモ。</dd>
 <dt><a href="/ja/docs/Web/API/Canvas_API/Manipulating_video_using_canvas">canvas を使用した動画の操作</a></dt>
 <dd>{{HTMLElement("video")}} と {{HTMLElement("canvas")}} を組み合わせて、動画データをリアルタイムに操作します。</dd>
</dl>

<h2 id="Libraries" name="Libraries">ライブラリ</h2>

<p>Canvas API は非常に強力ですが、利用するのは単純とは限りません。以下に挙げたライブラリは、キャンバスベースのプロジェクトの作成をより速くより手軽にできるようにします。</p>

<ul>
 <li><a href="http://www.createjs.com/easeljs">EaselJS</a>: ゲームやアート作品、その他の高度なグラフィック操作を容易にする、オープンソースのキャンバスライブラリ</li>
 <li><a href="http://fabricjs.com">Fabric.js</a>: SVG のパース機能を持つ、オープンソースのキャンバスライブラリ</li>
 <li><a href="https://www.patrick-wied.at/static/heatmapjs/">heatmap.js</a>: キャンバスベースのデータヒートマップを生成するためのオープンソースライブラリ</li>
 <li><a href="http://thejit.org/">JavaScript InfoVis Toolkit</a>: 対話的なデータの可視化を実現</li>
 <li><a href="https://konvajs.github.io/">Konva.js</a>: デスクトップおよびモバイルアプリケーション向けの 2D キャンバスライブラリ</li>
 <li><a href="https://p5js.org/">p5.js</a>: アーティスト、デザイナー、教育者、初心者のためのフル機能を持ったキャンバス描画機能</li>
 <li><a href="http://paperjs.org/">Paper.js</a>: HTML5 Canvas 上で動作する、オープンソースのベクタグラフィックス向けスクリプティングフレームワーク</li>
 <li><a href="https://phaser.io/">Phaser</a>: ブラウザーゲームを強力にするキャンバスと WebGL の軽量、フリーで楽しいオープンソースフレームワーク</li>
 <li><a href="https://ptsjs.org">Pts.js</a>: キャンバスと SVG の創造的なコーディングや視覚化のためのライブラリ</li>
 <li><a class="link-https" href="https://github.com/jeremyckahn/rekapi">Rekapi</a>: キャンバス用のアニメーション・キーフレーム API</li>
 <li><a href="http://scrawl.rikweb.org.uk/">Scrawl-canvas</a>: 2D キャンバス要素を作成したり操作したりするためのオープンソースの JavaScript ライブラリです。</li>
 <li><a href="http://zimjs.com">ZIM</a>: 便利でキャンバス上のコンポーネントとコーディングの創造性の制御を提供し、アクセシビリティと数百のカラフルなチュートリアルがあります。</li>
</ul>

<div class="blockIndicator note">
<p><strong>メモ:</strong> WebGL を使用する 2D および 3D のライブラリについては <a href="/ja/docs/Web/WebGL">WebGL API</a> を参照してください。</p>
</div>

<h2 id="Specifications" name="Specifications">仕様書</h2>

<table class="standard-table">
 <thead>
  <tr>
   <th scope="col">仕様書</th>
   <th scope="col">状態</th>
   <th scope="col">備考</th>
  </tr>
 </thead>
 <tbody>
  <tr>
   <td>{{SpecName('HTML WHATWG', '#2dcontext', 'the 2D rendering context')}}</td>
   <td>{{Spec2('HTML WHATWG')}}</td>
   <td></td>
  </tr>
 </tbody>
</table>

<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>

<p>Mozilla アプリケーションは <code>&lt;canvas&gt;</code> の対応を Gecko 1.8 (<a href="/ja/docs/Mozilla/Firefox/Releases/1.5">Firefox 1.5</a>) から始めました。この要素はもともと Apple が OS X Dashboard や Safari のために導入したものでした。 Internet Explorer は <code>&lt;canvas&gt;</code> をバージョン9から対応しており、それ以前のバージョンの IE では、ページに効率的に <code>&lt;canvas&gt;</code> の対応を追加するために Google の <a href="https://github.com/arv/explorercanvas">Explorer Canvas</a> プロジェクトによるスクリプトを利用することができます。 Google Chrome や Opera 9 も <code>&lt;canvas&gt;</code> に対応しています。</p>

<h2 id="See_also" name="See_also">関連情報</h2>

<ul>
 <li><a href="/ja/docs/Web/WebGL">WebGL</a></li>
</ul>