Anyable

ゲームを作るお兄さんのメモ帳

2017/08

JavaScript所感:環境依存編

JavaScriptを数ヶ月使って来た簡単な感想でも書いてみる。
なお、あんまり詳しく調べていないので言葉の誤用とか、嘘情報とかあるかもしれない。

前提条件はこんな感じ。

  • 作るものはブラウザゲーム
  • プロジェクト規模は極小(0.5人月くらい)
  • 対象デバイスはスマホ/PC
  • 対象ブラウザは主要なブラウザ全部(ある程度古いバージョンは切り捨て)
  • エンジン・ライブラリ・プラグインの類は未使用

ブラウザ毎に異なる挙動

JavaScriptに限らずWeb周り(HTML/CSSとか)は「環境による挙動の違い」に長年苦労してきた。
標準化によりその苦労も大分緩和してきたと思うが、それでもまだ個別の対応が必須となるケースが多々ある。

JavaScriptにおいても、ブラウザによって挙動が異なることが当然のようにある。 例えばこんなのとか。

ブラウザによるJavaScriptの挙動の違い【Dateオブジェクト】

こういった内容はJavaScriptを動作させるエンジンが各ブラウザ毎に異なることに起因する。
標準化されているJavaScriptの要件を満たしていない、誤って実装されている、拡張して実装されている等々・・・

まぁこういった問題はググれば大体サクッと解決する。
同じ問題で困った経験のある親切な人が記事にしてくれてるから。(ありがとう先人達よ)

ECMAScript?

便利な世の中なもんで、ググれば様々な情報が出てくる。
特にJavaScriptは比較的メジャーな言語でWeb上での利用が多いこともあり、かなり多くの情報がWeb上にある。

そんな多くの情報の中から「お、こんな書き方できるんだ。便利じゃ~ん」って参考にすることもある。
ところがそんな便利な物が動かないってことがある。しかも特定ブラウザだけ動かないなんてこともあるから質が悪い。
JavaScript側のバージョンが異なり、そのバージョンにエンジンが対応していないとかが原因である。

まぁ言語側も日々進化をするわけで、自分がどういったバージョンで開発をしているかを把握していれば基本的には大丈夫だと思う。
自分はECMAScript 5.1で開発しています。

JavaScriptなのにECMAScript?みたいなわけわからん感じですが、この言語・バージョン周りの呼称がちっとも固定化されていないのは、流石にどうにかしてくれよって気がするけどね。

JavaScriptのバージョンがややこしい - Qiita

前述したような「ググって出てくる便利な情報」の中には対応バージョンを明記していない物も多いので今まで使っていなかったテクニック等を取り入れるときは念のためバージョンによる差異が無いか注意したほうがいいと思う。
ちなみに、新しい言語仕様で書かれたコードを古い言語仕様に変換してくれるツール(トランスパイラ)もあるので、そういうのを使うのも手だと思う。


ゲームを作る時、開発中はできるだけ「そのゲームを面白くするため」に時間を割きたい。
この記事に書いたような環境依存は技術進歩と共にドンドン減ってきているけれど、願わくばさらなる進化を期待したいですね。(僕はそんな大それた事に携わるだけの技量はありません)

駄文で良いから文章を書こう

ここ最近は、JavaScript + Canvasでゲームを作ってます。

ゲームと言っても、プログラマ1人で1週間あれば完成するくらいの規模の小さいものです。

今までJavaScriptはもちろんHTML/CSSもほとんど触れてこなかったので色々と手探りではありますが、
幸い何本かリリースまで持っていくことができるくらいにはなりました。

このblog、ほとんど放置状態みたいな感じですが開設から1年半ほど経ちました。
扱ってる言語がC++(Cocos2d-x)→C#(Unity)→JavaScript(Canvas)と変化しています。

色んな言語やエンジンに触ることは設計思想が広がって何だか楽しい感じがします。
巷ではPythonが人気みたいですし、いつかは触れてみたいなって気もしてます。

何が言いたいのかよくわからん内容ですけど、駄文でいいから「文章を書く」ことに
慣れておいた方が有益な気がするんで頑張ろう。

いざ、記事を書き始めると「良いもの」を目指したくなってしまい、調査に膨大な時間を取られたり
何度も推敲したりで、一向に公開まで持っていけないきらいがある。
今も↑の「きらいがある」って漢字だとどう書くっけ?で5分費やした。(無駄とは言わないけれど)

「サクッと書いてサクッと公開」

何か纏めたほうが良いような内容があれば、後からWikiにでもまとめれば良いやのスタンスで。
アクセスカウンター
  • 今日:
  • 昨日:
  • 累計:

  • ライブドアブログ