JavaScriptを使って描画するCanvasとは?

Canvasとは?Canvasとは、JavaScriptを使って動的に図を描くために策定された仕様です。これまで、動的に図を表示させる方法としては、Flashが代表的な選択肢でした。しかし、Canvasを使うことで、テキストエディタさえあれば、誰でも無料で動的に図を描くアプリケーションを作ることが

羽田野 太巳

2008年5月1日 20:00

Canvasとは?

Canvasとは、JavaScriptを使って動的に図を描くために策定された仕様です。これまで、動的に図を表示させる方法としては、Flashが代表的な選択肢でした。しかし、Canvasを使うことで、テキストエディタさえあれば、誰でも無料で動的に図を描くアプリケーションを作ることができるようになるのです。

手前みそで恐縮ですが、図1は筆者がCanvasを使って作った棒グラフを描くJavaScriptライブラリのキャプチャ画像です。Canvasを使うことで、簡単な図だけではなく、かなり凝ったデザインも扱うことができることがおわかりいただけると思います。

しかし、Canvasは決してFlashの代替技術ではありません。まずは、Canvasの特徴を簡単にまとめてみましょう。Canvasの特徴としては、「JavaScriptを使って描画する」「文字は描けない」「アニメーション機能がない」の3つがあります。それぞれについて見ていきましょう。

では、1つ目の特徴「JavaScriptを使って描画する」から解説します。Canvasは、真白(実際には透明)なエリアにJavaScriptを使って描きます。このエリアとは、HTMLに記述されたcanvas要素を表します。

実際のコードは「

」となります。まさに、真白なキャンバスに筆を使って絵を描くという行為を、JavaScriptを通して実現するのです。

JavaScriptを使うことが前提であることのメリットとして、状況に応じて動的な図を表現できることが挙げられます。たとえば、前述のグラフでも、誰がいつ見ても同じグラフを表示したいのであれば、GIFやJPEGの画像を用意すれば済む話です。しかし、訪問者によって異なる図を表示させたい場合や、ボタンを押すなどのアクションを通して異なる図を表示させたい場合は、JavaScriptを使って図を描くCanvasは、非常に有効な選択肢となります。

2つ目に「文字は描けない」という特徴があります。Canvasの仕様には文字を描く機能がありません。前述のグラフには文字が描かれていますが、これはCanvasの仕様に基づいて描かれれたものではありません。まずCanvasで図を描き、その上にDOMスクリプティングを使って、DIV要素を座標指定で表示しています。

最後に「アニメーション機能がない」について説明します。Canvasの仕様には、アニメーションのための機能が組み込まれていません。一度描いた図を左から右へ秒速5ピクセルで動かすといったことが、Canvasの仕様そのものには規定されていません。もしCanvasを使った図にアニメーションを加えたい場合は、JavaScriptを使って、1コマずつ図を描き直すといった操作が必要になります。

このように、Canvasにはいくつかの制限があり、何でもできるわけではありません。利用シーンに応じて、Canvasなのか、Flashなのかを使い分ける必要があるでしょう。

Canvasの生い立ち

2008年1月にW3CにおいてHTML 5の公開草案初版(First Public Working Draft)が公開され話題になりました。CanvasはHTML 5で新たに規定された仕様です。しかし、Canvasは、HTML5で新たに考え出されたものではありません。これは、Appleが策定した技術仕様で、当初、Mac OSでおなじみのDashboardで使われたものです。

HTML 5は策定中ということもあり、2008年4月時点で、HTML 5を完全に実装したWebブラウザはありません。しかし、Canvasに関してはSafari 1.3以降、Opera 9以降、Firefox 1.5以降ですでに実装されています。Internet Explorerには実装されていませんが、CanvasをエミュレートするJavaScriptライブラリを使うことで、あたかもCanvasが組み込まれているかのように図を描くことができます。ですのでCanvasは、すでに実用レベルに達していると言っても良いでしょう。

次に、実際にCavansを使ったJavaScriptアプリケーションをいくつか紹介していきます。

Webブラウザ表示領域内に子ウィンドウを表示するJavaScriptライブラリは数多くありますが、Mocha UIはそれをCanvasで実現しています。かなりきれいなデザインで子ウィンドウが表示されますが、画像を使うことなくCanvasで実現しています。

bevel.jsはCanvasを使った画像の縁取りを演出するJavaScriptライブラリです。画像に縁取りを与えたりシェード(影)を加えたりすることができます。

最後に筆者が作成したグラフ表示ライブラリです。円グラフ、棒グラフ、折れ線グラフ、レーダーチャートを表示することができます。

この記事のキーワード :

人気記事トップ10

人気記事ランキングをもっと見る

企画広告も役立つ情報バッチリ! Sponsored

ClickHouse Cloudが実現した広告運用SaaS「ATOM」のデータ基盤革新、パフォーマンスを向上しながら、運用負荷とコストを削減 11月11日 6:20 AIで開発が加速する時代、品質保証はどう変わる? Tricentisが示すAIエージェント活用の実像 11月9日 6:45 悪用までの猶予が「1分」に迫るフロンティアAI時代に開発と本番を貫く脆弱性管理が必要 10月29日 8:30 欧州CRA対応とSBOM運用。AI生成コードのOSS混入問題の対策とは ――スニペット単位で検出する「FossID」「Insignary Clarity」によるSBOM運用 9月16日 6:40 PostgreSQLからTiDBへ、稼働中SaaSで進める段階的DB移行の実践と再設計への展望 9月7日 6:30 機能安全開発におけるGoogleTestの活用を支援!「Parasoft C/C++test CT」で実現する効率化&AI連携 4月14日 6:30 【CNDW2025】Grafanaが明かす「オブザーバビリティの哲学」ー最小限の労力で実用的なインサイトを得るには 1月23日 6:30 【CNDW2025】プロダクト急増に備える基盤刷新 ーウェルスナビがECSからEKSへの移行で得た知見とは 1月15日 6:30 【CNDW2025】250環境を5人で運用、構築時間は30分に ーKINTOテクノロジーズが語るインフラ基盤組織の作り方 2025年12月18日 6:30 新たな自動化で熱視線! AIエージェントの「推論能力」を支える2つのコンポーネントとは? 2025年11月28日 6:30