SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

ウェブの最新技術が魅せる「Firefoxの灯」

Canvas&Processing
~ ウェブの最新技術が魅せる「Firefoxの灯」(2)


  • X ポスト
  • このエントリーをはてなブックマークに追加

Processing.jsを試す

Processingの準備

 Processing.jsとは、Processingという描画ツールをJavaScriptに移植した描画ライブラリで、John Resig氏らの手によって開発されました。Processingは、コンピュータを使ったメディアアートが多く輩出されてきた背景をうけて開発された、プログラミング言語および統合開発環境です。グラフィクス作成に特化したProcessingの言語は非常に簡単化されており、プログラム初心者にも比較的開発が容易です。

 Processing.jsは、このような特徴を持つProcessingをブラウザで実行・開発できるようにJavaScriptにポーティングされたライブラリであり、Processingとほぼ同じメソッド群を持ちます。実装面では、さきに紹介したCanvasをラップするような形で実装されています。

 ここでは、先ほどCanvasを用いて実装したことを、Processing.jsを使って再現してみます。まずは以下のようにProcessing.jsを利用可能にします。

HTML
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" lang="ja">
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf8" />
    <script src="jquery-1.5.min.js"></script>
    <script src="processing-1.2.3.js"></script>
    <script src="processing_1.js"></script>
    <title>processing_1</title>
</head>

<body>
    <canvas id="main_canvas"></canvas>
</body>
</html>
JavaScript: processing_1.js
$(document).ready(function(){
    //Processing でラップする Canvas を取得
    var canvas = document.getElementById("main_canvas");
    //Processing オブジェクトを作成し、初期化
    new Processing(canvas, Main.init); 
});

var Main = {
    init: function(processing) {
    }
}
上記ソースコードを実装したサンプル

 HTMLでは、Processing.jsを読み込みます。ファイル名は、processing-.jsとなっており、サンプルではバージョン1.2.3を利用しています。JavaScriptでは、ドキュメントの読み込み完了を受け、Processingの初期化を行っています。Processingをnewする際、1つ目はCanvas要素を、2つ目にはコールバック関数を引数として渡しており、Processingの初期化が完了すると、Main.initが呼ばれます。

矩形を描こう:Processing.js編

 Processingでの描画はとても簡単です。以下に先ほどと同じ矩形を描いています。

HTML
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" lang="ja">
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf8" />
    <script src="jquery-1.5.min.js"></script>
    <script src="processing-1.2.3.js"></script>
    <script src="processing_2.js"></script>
    <title>processing_2</title>
</head>

<body>
    <canvas id="main_canvas" style="background-color: gray"></canvas>
</body>
</html>
JavaScript: processing_2.js
$(document).ready(function(){
    //Processing でラップする Canvas を取得
    var canvas = document.getElementById("main_canvas");
    //Processing オブジェクトを作成し、初期化
    new Processing(canvas, Main.init); 
});

var Main = {
    init: function(processing) {
        //Processing のキャンバスサイズを 400x400 にする
        processing.size(400, 400);

        //このまま描画すると、ストロークも一緒に描画されるので、ストロークをなくします。
        processing.noStroke();
        //塗りつぶしの色を赤にする
        processing.fill(255, 0, 0);
        //矩形
        processing.rect(150, 250, 100, 50);
    }
}
上記ソースコードを実装したサンプル

 コールバック関数の引数として渡されるのは、初期化したProcessingのインスタンスです。このオブジェクトを操作して、さまざまな描画を行うことができます。まず、サイズを400px×400pxにして先ほどと同じように矩形を描きましたが、とてもシンプルに描けることが分かります。

 注意点は、rectなどで描画を行う際、fillやstrokeの設定をそのまま引きずって、塗りつぶしとストロークの描画を同時に行います。従って、塗りつぶしだけ行いたいときはnoStrokeを、ストロークだけ描画した場合はnoFillをそれぞれ呼び出してから描画を行います。上記の例では、塗りつぶしだけ行いたかったため、noStrokeを呼んでいます。

 ここでもサイズ絡みの注意点があります。Processing.sizeメソッドの内部では、引数で渡されたサイズを、自身がラップしているCanvas要素に対しても割り当てます。一方で、CSSで指定してあったwidth、height属性は削除されています(今後変わる可能性もあるかとは思います)。

次のページ
いろいろな形をいろいろな色で描こう:Processing.js編

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
ウェブの最新技術が魅せる「Firefoxの灯」連載記事一覧

もっと読む

この記事の著者

赤塚 大典(アカツカ ダイスケ)

1976年東京生まれ。都立航空工業高等専門学校を卒業後、4輪レーサーを目指すも断念。蕎麦屋、溶接屋を経てプログラマになる。プログラマとしては、京阪奈地区の研究所に7年従事し、その間、2003年IPA未踏ユース、2006年IPA未踏ソフトウェア創造事業に採択される。未踏において、Firefoxの拡張機...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

Mozilla Japan(Mozilla Japan)

一般社団法人 Mozilla Japanhttp://mozilla.jp/

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/6121 2011/09/06 13:16

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング