どうしてJavaScriptなの? 『RPGツクールMV』のスクリプトを徹底考察!


先日、『RPGツクールMV』、判明した情報をできるだけ挙げていく。の記事で、判明している情報からできる限りの考察をしてみた。

あれから公式サイトがオープンし、さらに詳しい仕様が判明した。また、先述の記事のコメント欄にて、非常に興味深く参考になる情報を得たので、改めて記事にして紹介してみたいと思う。

「知りません、詳しい人おしえて下さい」というシオンの泣き言に、懇切丁寧に情報を提供してくれたトモタカさん、QwartzMirajeさん、ありがとうございました。

以下、RPGツクールMV 公式サイトの情報と、先ほど紹介したコメント欄での情報提供を元に、考察を進めていく。
なお、スクリプトに対してのみ言及した記事なので、専門的な話もたくさん出てくる。
ある程度はスクリプトを経験していることを前提に話を進めるので、その点はご了承願いたい。

公式サイトから分かる重要なこと

ネイティブアプリとは

公式サイトやファミ通では、「スマートフォンのネイティブアプリなどの開発も行なえる」って書いてあるんだけど……どういう意味なの? ネイティブアプリってなに?

先日の記事で少し触れたが、改めてもう一度説明してみよう。

ネイティブアプリというのは、その端末上で直接処理をして実行するアプリケーションのこと。
と言われてもピンと来ないと思うが、分かりやすく言うなら、AppStoreやGoogle Playに並んでいるほとんどのアプリがこれに該当する。
LINEやTwitter、パズドラなどがネイティブアプリだ。

ネイティブアプリの長所は、端末(スマホやタブレット)が直に演算するため、高度な描画や処理をスピーディに実行できること。
端末の機能(カメラとかプッシュ通知とか)にもアクセスできること。
パワフルで多彩な処理を、スムーズにこなせるということだ。

逆に欠点は、OSに依存するため、開発の難易度が高いこと。
iOSならObjective-C、AndroidならJava。
iOSで出していたけど、Androidでも出したい!なんて場合、Javaで作りなおさねばならないわけだ。
強力な分、その端末の仕様に依存してしまうのである。

ネイティブアプリを作れるということは、ツクールMVではこれらの問題をクリアしたということになる。

だが、従来のRGSSはRubyをベースにしており、当然ながらこのままではAndroidでもiOSでも動かない。RGSSを仮想マシンで動かそうとしても、iOSアプリ開発の規約違反となってしまう。

これらを乗り越えるには、アプリ化する際にRGSSをJavaやObjective-Cに変換する機能が搭載されている必要がある、というのが先日の記事の見解だった。実際、Unityではコードの変換機能を搭載することで、C#でのスマホアプリの開発を実現している。

コメント欄で提供されていた情報だね。厳密には、AndroidだとJava仮想マシンを搭載するみたいだけど。

ああ。だが、実際にそのような変換機能をツクールが用意できるのか、と言うと少しうさんくさい部分もあった。開発言語がなにで、どうやってネイティブアプリを作れるのかには、注目が集まっていたんだ。

ウェブアプリなら問題を解決できる?

さて、ネイティブアプリの他に、ウェブアプリというものもある。ブラウザ上で実行されるアプリケーションのことで、グーグルマップやGMail(ブラウザ版)などがその代表例だ。

google2
▲ブラウザ上で動くグーグルマップ。お世話になっている人も多いだろう。

ウェブアプリの長所は、開発のしやすさにある。
ブラウザで動くので、言語はHTML5。
これは、iOSだろうとAndroidだろうと、WindowsだろうとMacだろうとLinuxだろうと、ブラウザで閲覧するウェブサイトである以上は同じことだ。
OSを選ばず、使い慣れたHTML5で開発ができる……これが、何よりの長所である。

欠点は、ネイティブアプリに比べて動作が遅いこと。
特に、ゲームでは負荷のかかる描画を高速で実行せねばならないため、あまりウェブアプリが使われるケースはない。
グーグルマップのもっさり感を見ていれば、なんとなく伝わるものはあるだろう。

ゲームには不向きなウェブアプリだが、公式サイトではブラウザで実行可能なHTML5での出力が基本と明記されている。ネイティブアプリだけでなく、ウェブアプリも作れると言っているわけだ。

えー? ネイティブアプリだけでも大変なのに、ウェブアプリまで作れちゃうの? ツクール開発部に、そこまで太っ腹なことをする余裕あるのかなあ……。

ところがどっこい。これらの疑問を一気に解決してくれるのが、次で説明するハイブリッドアプリだ。

Apache Cordovaでハイブリッドアプリ

ネイティブアプリとウェブアプリのいいとこ取りをしたのが、ハイブリッドアプリだ!

ほほう?

ハイブリッドアプリは、見かけ上はネイティブアプリのように振る舞うが、開発にはHTML5を使う。OSごとの言語の違いを吸収でき、かつネイティブアプリのようにブラウザ以外でも実行できるんだ。

550_bit140702html502
▲本来はウェブアプリで動作させるHTML5のコードをパッケージングすることで、ネイティブアプリのように動作させる。

おお! そんな便利なものが!

ツクールMVが、ネイティブアプリ・ウェブアプリ両方に対応しているのは、そのいいとこ取りをしたハイブリッドアプリを基準にしているからではないか、というのが考察として挙がっているというわけだ。HTML5で開発するハイブリッドアプリなら、HTML5で出力するのもわけないよな。

このハイブリッドアプリの開発をサポートするのが、オープンソースのApache Cordova。
アドビのPhoneGap、マイクロソフトのMulti-Device Hybrid Apps、オラクルのOracle ADF Mobile、IBMのIBM Worklightなど、多数の企業で採用されている。
ツクールMVも、このApache Cordovaを拡張したエディタになるのでは……との見方が出ている。

ん? でも、スクリプトの言語ってたしか……JavaScriptだよね。HTML5じゃなくて。どういうこと?

というか、JavaScriptって、Androidで動かせるJavaとは違うの? よく分からない……。

うーん、一応そのへんも、軽く説明しておくか。

JavaScriptを採用した狙い

JavaScriptとJava。よく、姉妹関係があるのではと誤解されるが、全くの別物だ。互換性もないし、用途も異なる。

JavaScriptは、ネットスケープコミュニケーションズによって開発されたスクリプト言語だ。同社が開発するNetscape Navigatorというブラウザで実装され、主にHTMLだけでは及ばない処理をウェブサイトで実現させるために開発された言語だ。

現在、ネットスケープコミュニケーションズは買収され、Netscape Navigatorもサポートを終了している。IEでも搭載されるようになってから急速に普及し、今でも幅広く使われているぞ。

右クリックの禁止、プルダウンのメニュー、jQueryを使った様々な処理……挙げればキリがないが、基本的にブラウザ上で凝ったことをするための言語であることが重要だ。

Javaは、サン・マイクロシステムズ(現オラクル)が開発したプログラミング言語。ネットスケープとサン・マイクロシステムズが業務提携していたためにJavaScriptが名前や文法を似せただけだ。Javaの詳細まで書くと記事が肥大化するので、ここでは割愛。

まあ、JavaScriptがブラウザ上で動く言語なのは分かったよ。

ハイブリッドアプリを持て囃したものの、ネイティブアプリより動作がもっさりしている欠点は引きずっている。
また、いくらOSの違いを吸収できるとはいえ、HTML5でゲームを作った経験がある人は少ないだろう。

JavaScriptは、ブラウザで動くとは言え、HTMLだけでは困難な処理を実現するために作られたものだ。
やろうと思えばデスクトップアプリも作れるほどしっかりした言語であり、ゲーム開発にはこちらのほうが向いていると言えるだろう。

Rubyも申し分ない言語なのだが、そのままではHTML5に組み込んで出力できない。
ハイブリッドアプリ・ウェブアプリとしてスムーズに出力するには、JavaScriptの方が都合がいいというわけだ。

ふにゅう。難しすぎてワケが分からないよ!

まとめてみるか。

・そのままネイティブアプリを作ると、複数の言語の壁にはばまれてしまい、難易度が高い。ツクール側にも高度な機能を要求される。

・HTML5で記述すれば、あらゆるプラットフォームで出せるものの、速度が遅い……。

・そこで、強力なJavaScriptの力を借りて、ウェブアプリやハイブリッドアプリの開発をサポートする形にした!

一応言っておくと、JavaScriptでスクリプトを記述でき、HTML5でも出力できるという情報が確定しただけ。そこから先のことは、情報提供により当サイトで考察しただけなので、確定事項ではありません。

また、情報提供をもとにいろいろ調べたうえで書いていますが、なにぶん不勉強なので、間違ったことを書いているかもしれません。新たな考察や誤情報の指摘は、お手数ですがコメントやメールフォームにてご報告いただけたら幸いです。

連日にわたってツクールMVの考察をしたため、非常に疲れた。頭がフットーしそうだよぉ……。

そのまま爆ぜろ!

追記

前回の記事でもコメントで情報提供をしてくれたトモタカさんが、今回の記事を経てより詳細な考察を書いてくださいました。
RPGツクールMV, 価格破壊とCordova搭載考察 – トモタカラボ

有益な情報提供、および更なる考察に感謝します。

入門者のJavaScript (ブルーバックス)
立山 秀利
講談社
売り上げランキング: 14,532

 

あわせて読みたい

7件のフィードバック

  1. usagi より:

    javascriptの採用、プラグインによる機能の管理ができるってことは、
    javascript製のゲームエンジンとか簡単に相乗りさせられるのかな?

    マップでは、シンボルエンカウントにして、
    戦闘は、enchant.js(ゲームエンジン)でアクションにするとか

    こういうのができれば、いろんな事ができそうだ。

    • 弓猫 弓猫チャンネル より:

      まだ詳細は不明ですが、JavaScriptなら、RGSSよりも高度なことができそうですし、先人たちのスクリプトも活用できそうですよね。
      スクリプターとしては夢の広がる話です。

  2. トモタカ より:

    記事中に私のコメントを言及して下さり、ありがとうございます。
    トラックバックにも表示されてますが、弓猫さんの記事に触発されて、自分もちょいと考察を書きました。
    クロスプラットフォーム開発の現状についてと、RPGツクールMVの価格的な立ち位置についてがテーマです。
    > RPGツクールMV, 価格破壊とCordova搭載考察
    tomotaka.tk/tkoolmv_apachecordoba/

    この記事とは別の角度から書いてみたので、参考になりましたら幸いです。

    • 弓猫 弓猫チャンネル より:

      こちらこそ、記事のリンクを貼ってくださりありがとうございます。
      クロスプラットフォーム開発の現状や課題について詳しくまとめられており、大変参考になりました。

      僕も僕で、トモタカさんのコメントに触発されて当記事を書き起こしました。
      新しいツクールの誕生に向けて、今後も情報交換ができたらいいですね。

  3. asuto より:

    一般的に「HTML5でアプリを作る」と言った場合、明示的にしろ黙示的にしろ
    実装部分はJavaScriptで書かれるというのが前提なので当記事の記述はやや不適切だと感じます。
    HTMLはあくまでページ記述言語であり、単独ではゲームやアプリのような動的ページの生成はできません。
    この文脈での「HTML5」とは「HTML5+CSS3+JavaScript」という最近のWeb技術をひとまとめに言っているに過ぎません。
    「HTML5(だけ)でゲームを作った経験がある人」は「少ない」のではなく「いない(できない)」のです。
    またHTML5もJavaScriptもネイティブコードでないというのは同じなので、
    仮にパッケージ方法がどうであろうと実行速度の問題は解決されません。

  4. 師子乃 より:

    ハイブリッドアプリ、勉強になりました。

  1. 2015年8月8日

    […] どうしてJavaScriptなの? 『RPGツクールMV』のスクリプトを徹底考察! […]

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)