Processing、アプレットやめるらしいよ。(12.10.23)

動機から

  • 新しく芸術工学部に籍を移したので、メインで使用するプログラム環境を改めて選定しようという気になっている。

    --

  • ここ数年は、IDEとしてNeatBeansを使い、Javaでプログラムを組みSwingでGUI環境を作ってきた。
  • 研究用途としては、これでまぁまぁ問題は無かったが(GUIのレイアウトを組むのがしんどい時もあるが)、 さすがに芸術工学部の学部生にこれをやらせる気にはなれない。

    --

  • まず一つは、やはりGUIの問題。レイアウトベースのGUIは、どうしても「あちらをずらせばこちらもずれる」という具合に、wordを編集する時と同じようなイライラを抱えることになる。
  • それと、がちがちの工学系でない人間に、Javaは必ずしも簡単な言語ではない。

    --

  • 一番の問題は、どうやってつくったものを公開するか。これは私自身の今後のモチベーションにも強く関わる。例えば、デモンストレーションの意味合いのあるGUIプログラムを作ったとして、Javaであれば、それをWebで公開する手段は(基本的には)Appletに限られる。しかし、どうしたことだろう。最近、Web上で公開されているアプレットを開くことなんて、めったになくなってしまった。色々調べているうちに、Appletの現状が、かなり旗色の悪いものとなっていること、ほぼ「死に行くもの」として認識されていることがわかった。
  • そう、世の中は、HTML5にぐぐぐぐぐぐぐぐぐと傾いているらしい。HTML5のcanvas要素で、時間的に複雑なグラフィックアニメーションを記述可能になった今、わざわざプラグインを入れて、セキュリティーも気にしながら、HTMLエンジンとは別プログラムを起動して走らせる、、、というようなことには何の魅力もなくなってしまったということらしい。そう、AppletもFlashと全く同じ運命の中にあるというのだ。
  • ということで、HTML5(HTML+Javascript)で全てをやってみるというのも一つの手ではある。ただ、いまHTML5の授業をやってて思うのは、canvas要素を経由してJavascriptでグラフィックを描くのは、それほど楽ではない。それは当然で、Javascript自体は汎用言語であり、グラフィックとかGUIを作ることをとりわけ得意にしているわけではない。

    --

  • ということで、デザイン系にありがちなオチとして、結局はprocessingに落ち着くわけだが、、
  • processingは、これまでは、内部的にはAppletに変換してGUIを作成していたのだが、どうやらその仕組みをバージョン2.0となるのを期に変えるらしい。
  • processingのホームページから、それを予告する情報が断片的に出ているので、以下で翻訳(意訳含む)して、部分的に紹介する.

Appletのサポートについて

 まずは、processing2.0における主要な修正事項をまとめた、 http://wiki.processing.org/w/Changes から、Appletに関する部分を抜粋です。

 Java Appletのサポートを、バージョン2.0-alpha7以降、取りやめることにした。ブラウザからのサポートが得られなくなった今、優先順位の点から見ても、今後もサポートし続けることに、もはや意味を見出せなくなったというが率直なところだ。このサイトからも確認できるように、Appletの仕様は数々の不具合を生んでおり、(中略)こうした問題にいちいち対処できるほどに人生は悠長なものではない。これは好ましくない変更ではあるが、われわれが立っている現実は正にそのようなものなのだから。あなたがたの作品をwebで公開するインタフェースとなっていたという意味で、AppletがProcessingにおいて本質的な役割を果たしていたことは疑いようも無い。引き続きwebでプログラムを走らせるためには、Processing JSかProcessing 1.5を使うことが、現状では最善の策ではある。

 さて、Processing JSとは何か。が書いてあるのが次。

来るProcessing2.0のJavaScriptモードとは

それで、以下が、http://processing.org/learning/javascript の部分的な翻訳(意訳)です。

なぜJavaScriptモードなの?

(中略)

 今日、ほとんどのブラウザは、プラグインによってJavaのアプレットを依然としてサポートしているが、Javaベースのアプリを実装するweb系の開発者は、最近ではほとんどいない。原因は、起動や読み出しにかかる時間的な問題に加えて、「Javaがインストールされていないと動かない」という根本的な問題の中にある。この傾向は、Javaに限ったものではなく、Flashなどの全てのプラグインに起きていることでもある。実際、「ブラウザにプラグインをあてがう」という方式は、人々の関心を完全に失いつつある。セキュリティー、インストール、実装にかかる種々の面倒な問題が、こうした方式を、不便かつ危険なものとしてしまっているのである。

(中略)

 Processing.jsは、Processingのコードを自動的にJavaScriptに変換する。あなたがたは、コードをブラウザで走らせるのにJavaScriptを学ぶ必要が無いわけだ。ProcessingのIDEを開き、新しいJavaScript-modeを選択し、webで実行する。ただそれだけでよい。シンプルなwebページであれば、これだけの知識ですぐに作成できる。

 JavaScript-modeは、グラフィックを生成するのにHTML5のcanvas要素を利用している。canvas要素は、webの新しい特徴の一つであり、ほとんど全ての主要なwebブラウザに実装されている。Processingにおけるあらゆる描画の特徴は、canvasを用いるProcessing.jsの中でも生き延びている。ということで、要は、「canvasをサポートするブラウザは、同時に、Processing.jsをもサポートしている」、という図式が成立するわけだ。

 ただし、JavaScript-modeが、現状ではライブラリをサポートしていないことには注意を向けておく必要がある。あらゆるProcessingのライブラリはJavaで書かれており、それらをJavaScript-modeの中で走らせるにはJavaScriptへの移植が必要となるである。JavaScript-modeはProcessing2.0における全く新しい仕様であるため、JavaScriptで動くある程度のライブラリが使えるようになるには時間が必要である。もし、あなたがlibraryの開発者であり、JavaScriptと互換性のあるライブラリを提供することに興味があるのであれば、もう少し待っていただきたい。私たちは、それを可能にするための仕様や環境づくりをすすめているところだから。

(中略)

Processing.jsを使うProcessingの開発者が知っておくべきこと

 Processing.jsはProcessingと互換性があるが、JavaはJavaScriptではないし、canvasもまたJavaの描画クラスからは幾分異なっている。Processing.jsを使ってより複雑な描画をするためには、いくつかのコツがあるので、それを確認しよう。

  • Processing.jsにはデータに関するディレクトリが存在しない [#l7e54656]
    •  これまでのProcessingは、画像などのリソースは、プログラムの本体とは別に、dataに関するディレクトリにまとめて置かれていた。一方で、JavaScriptでsketchを走らせる場合、そのようなディレクトリは使われずに、同じ階層に置かれることになる。
  • Processing.jsはProcessingを実装するが、全てのJavaを実装できるわけではない [#k0c53a70]
    •  Processing.jsはProcessingと互換性があるが、Javaとの互換性は全く持って保証されない。もし、あなたの(今持っている)プログラムが、純正のProcessingの中で定義されていない関数やクラスを用いている場合、残念ながら、それらはJavaScriptモードでは動かない。ProcessingではなくJavaで書かれたライブラリについても同様である。今後、多くのライブラリが双方のモードのために書かれることで、この状況が変わることに期待したい。

(中略)

Processing.jsさえあれば、webでできることは何でもできる

 あなたの(これまでの)プログラムがwebページの中でも動くとわかったいま、外観をより美しくするにはどうすればいいか、既にあるwebページにどうやって組み入れていこうか、あるいは種々のwebサービスやAPIのデータをどうやって取り込んでいこうか、、色々な考えが頭の中に渦巻いていることだろう。Flickrの画像とProcessing.jsのプログラムを組み合わせることは可能か?イエス。TwitterとProcessing.jsを結ぶことは?イエス。webができることは何であれ、Processing.jsを使ったプログラムが実現してくれるのだ。

 これはとてつもなく重要な考えであり、何度だって繰り返し確認しておきたいことだ。Processing.jsはあなたがたのかつてのJavaをベースとしたコードをJavaScriptに変換することで、描画関数をcanvasの中に埋め込む。結果、動的なwebプログラミング、AJAX、その他のJavaScriptライブラリやAPIなどを使ってwebでできることは全て、processingの環境の中に持ち込むことができる。あなたはもはや、webから切り離された孤島でコードを書いているのではない。どんなものであれ、あなたのコードはwebの世界ではファーストクラスの立派なメンバーとなるのだから。

(中略)

メモ

  • これまでに蓄えてきた、Javaのクラスをどんな形でもいいから使えないか考えたが無理そう。
  • Javascriptに移植するというのが、最も現実的な解か。
  • この歳になって初めて、JavascriptからJavaのライブラリが利用できないことを知った。
  • Maxだって(かつての)Processingだって可能なのに。
  • あらためて、JavaScriptとJavaが全く違う言語であることを痛感。
  • processing2.0のstandard-modeのスケッチは、内部的にはJavaの何のAPIを動かしているのだろう。Swing?、それともそこだけはAppletにしてるのかな。

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2012-10-24 (水) 11:05:12 (1852d)