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

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


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