任天堂「今後C++は捨てJavaScriptで開発していく」

2013/03/20(水) 13:07:40.60
任天堂のゲームはこれまで,CやC++といったプログラミング言語で開発されており,
そのため高いパフォーマンスを発揮していたが,反面,開発に時間がかかっていたという。
このセッションではそれ以外の方法,つまりHTMLやJavaScriptを使ってWii Uの全機能にアクセスしつつ,
より手軽にゲーム開発を行う方法が説明されるようだ。
http://www.4gamer.net/games/999/G999905/20130316001/
2013/03/22(金) 11:38:26.18
newを使わない場合はこう。

var x = {};
(function(obj) {
  var maxLength;
  function getMaxLength() { return maxLength; }
  function setMaxLength(val) { maxLength = val; }
  obj.getMaxLength = getMaxLength;
  obj.setMaxLength = setMaxLength;
})(x);

console.log(x.maxLength);    // => undefined
x.setMaxLength(100);
console.log(x.getMaxLength()); // => 100
console.log(x.maxLength);    // => undefined
x.maxLength = 200;        // => can't change Foo's property
console.log(x.getMaxLength()); // => 100
try {
  console.log(x.getMaxlength());
} catch (e) {
  console.log(e.message);
}
2013/03/22(金) 11:54:34.47
それでは、
obj.setMaxLength(1) を
obj.MaxLength = 1 と
間違えてしまうことを防げない。
2013/03/22(金) 11:55:25.08
>>203
グローバル変数に隠蔽とは斬新だなw
2013/03/22(金) 11:59:36.73
JavaScriptにグローバル変数は存在しない。
2013/03/22(金) 12:03:10.04
>>206
実際のプロダクトコードでは、複数階層の名前空間に入れるけどね。
2013/03/22(金) 12:08:07.49
>>208
ためしに
var y = new Foo();
y.setMaxLength(200);
x.getMaxLength();
ってやってみたら?
2013/03/22(金) 12:21:19.07
>>209
どうなった?
2013/03/22(金) 12:40:55.14
>>210
あぁ、203に合わせると最後は
console.log(x.getMaxLength());


とりあえずやってみてよ?
2013/03/22(金) 13:16:53.40
基本的にJavaScriptでは「プライベート変数」はあきらめたほうがいいよ。
newも使わない方がいい。
男なら、publicなプロパティだね。
で、結局typoの問題は解決できないけど、それがJavaScriptってもんだ。
嫌ならTypeScriptがいいんじゃね(使ったことないから知らんけど)。
2013/03/22(金) 13:25:00.70
そもそもタイポと戦えないような奴はプログラマになっちゃいかん
2013/03/22(金) 13:26:27.37
そう、それがたとえ他人の書いたタイポであってもね
2013/03/22(金) 13:30:07.16
タイポは神様からの贈り物なんだよ
2013/03/22(金) 13:46:05.31
Javaをやってると奴隷とかドカタとか煽れるけど、スペルミスなんて、JavaやC#なら入力した
瞬間にエディタが教えてくれるに、それを人間が目で探すとか、動的型の言語のプログラマは
マシーンですか。
2013/03/22(金) 13:59:19.86
JSに限った話じゃないけどテストを書けば問題ないってのは机上の空論だな
>>203もテスト(らしきもの)を書いているけど、結局のところなんのチェックも出来てない訳だし
(203はそろそろ自分の間違いに気がついただろうか?)
2013/03/22(金) 14:25:59.22
>>216
チェックツールあるだろw
2013/03/22(金) 15:53:13.12
JSか
2013/03/22(金) 15:54:14.44
>>203
だからこれは何なんだよw
>var Foo = function() {var maxLength;};
>Foo.prototype.setMaxLength = function(val) {maxLength = val;}
>Foo.prototype.getMaxLength = function() {return maxLength;};
意味がわからんぞw
偉そうなこというまえに基礎からやりなおしてこいよw
2013/03/22(金) 15:57:38.83
>>216
打ってる最中に画面見てないのか?
大文字小文字も規約決めてるだろうし…
2013/03/22(金) 16:02:52.03
l-1とか0-Oとか他人が打ち間違ったのを尻拭いする任務を与えよう
2013/03/22(金) 16:05:52.53
真に恐ろしいのは目の前で裸で立ちすくむソイツではなく
どこに潜んでいるかわからない見えないアイツ
2年前に学ばなかったのか
2013/03/22(金) 16:09:28.79
>>204とか
x.getMaxLength()をx.getMaxLengthってミスしてもとりあえず動いてしまうように見えるし最悪w
2013/03/22(金) 16:24:36.78
JavaScriptが開発効率高いなんてド素人の妄想
2013/03/22(金) 16:27:52.82
>>221
やっぱりスペルミスは目を皿のようにして確認してるのか。
2013/03/22(金) 16:29:34.79
安い底辺プログラマが使えるから開発コスト下げられるとか妄想してるんだろうけど
2013/03/22(金) 16:30:04.30
上のほうが他人のタイポがどうこう言ってる人がいるけど、
自分ならスペルミスしないってのもそうとう凄いと思う。
2013/03/22(金) 16:31:38.03
>>228
「上のほうが」じゃなくて「上のほうで」だな。
頭悪いから日本語でも誤字しまくりだわ。
2013/03/22(金) 16:46:48.90
実行時までエラー発覚しないような言語でバイナリ配信とかサポセン死亡か
2013/03/22(金) 16:52:40.15
>>217
間違いに気づいたよ。指摘ありがと。
普段はnew使わないんだけど(JSONでサーバからデータを受け取ることがほとんど)、
なんとなくnewの例も書いてみたくなって背伸びしちゃった。

ほとんどの場合がViewかViewModelらしきものを使うから、>>204みたいなコーディングしてる。
あと、try-catchはテストじゃなくて、例外が発生することの確認。

結局、JavaScriptってtypoには無力だと思うんだが、反論ある人居る?
2013/03/22(金) 16:57:57.14
>>226
眼を皿って…typoしたときって自分で違和感ない?
「ん?俺今typoしたかな」って…その時だけ見ればいいじゃん
2013/03/22(金) 17:01:42.36
>>231
ES5以降で導入された(る)機能を活用すればインタプリンタが検出してくれたり、
エディタで補間なんかもやりやすくなるよ
>>203だってstrict modeならエラーがちゃんとでるし
もうちょっと勉強しましょう
2013/03/22(金) 17:24:17.27
>>232
ああそうなの。
おれ、タイポにぜんぜん気づかないときがあるわ。
IDEがスペルミスをチェックしてくれる環境とかすごい楽で好き。

スクリプトのstrictモードに需要があったり、JavaScriptにコンバートする
型付の言語が発表されたりするのをみたら、スペルチェックなんか
機械にやらせたいって人おおいんじゃないの。
2013/03/22(金) 17:26:56.10
>>233
それで>>49のtypoの問題は解決できる?
2013/03/22(金) 17:31:45.15
>>235
>>111
2013/03/22(金) 17:32:59.21
>>236
あー、そういうこと。ならいいや。
2013/03/22(金) 18:25:05.35
>>232
俺はちゃんと resultってタイプしてるのに、resalutが正解だったりするからな。
2013/03/22(金) 18:33:54.98
コピペすりゃいいんだよ
240デフォルトの名無しさん
垢版 |
2013/03/22(金) 18:48:03.66
中身はなかったなw
241デフォルトの名無しさん
垢版 |
2013/03/22(金) 18:56:20.02
下請けイジメの任天堂
2013/03/22(金) 18:57:03.39
コナミには負けるw
243デフォルトの名無しさん
垢版 |
2013/03/22(金) 19:56:03.80
はよ
2013/03/22(金) 21:36:56.49
>>239
ITドカタとか「お前の担当のこの画面、こっちのとだいたい同じだからコピペして作れ」みたいのが基本だからな。
2013/03/23(土) 00:15:43.41
つかJavaScriptもEclipseとかVSでエディットすればtypo減るだろ
2013/03/23(土) 07:49:17.45
良く分からんが、Javascriptの有名なライブラリがsealを中で自動的に
使ってくれるんじゃないの?
Javascriptにオブジェクト指向のclassやextendsのような構文を追加
するライブラリがわんさかあるって聞いたが、そのライブラリどもが
自動的に使ってくれるんじゃないのか
2013/03/23(土) 09:05:40.21
Luaのような使い方するんじゃないのかなと思ってたんだが違うの?
2013/03/23(土) 10:25:02.91
>>246
使ってくれるわけない
2013/03/23(土) 10:30:09.23
>>246
デフォルトでseal状態にされたら安全にはなるけど不自由になる
sealをサポートしてないブラウザの割合も多いし
2013/03/23(土) 10:31:11.54
正直、Javascriptの文法はアレすぎて
2013/03/23(土) 10:34:07.28
普通、コア部分はC/C++で開発して簡易なゲームロジックは独自スクリプトとかLuaとか使うもんじゃないの
そこをJavaScriptにするってこと?だったらもう少しマシというか新しい言語選んだほうがよくね?
252デフォルトの名無しさん
垢版 |
2013/03/23(土) 10:40:21.59
コア部分なんて一回開発したら使いまわせるようにするだろ
2013/03/23(土) 12:35:35.83
ここまで、どういう経緯でこういう事になったのかの説明無し
http://www.nintendo.co.jp/ir/library/events/130131/05.html

ゲーム機のソフトウェア開発が、どんどん大きな投資を必要とするようになった今、
ウェブサービスの転用、プロトタイプの作成、あるいは、インディーズゲーム制作など、いろいろなことを考えたとき、
ソフトウェアの作り手を広げる試みは非常に重要になってくると思っています。
3月のGDCでは、この『Wii Street U powered by Google』や、
いくつかのVoDサービスの開発に使用された、HTML5やJavaScriptなどのウェブ技術でWii Uソフトを開発できる環境や、
Unityという多くのユーザーに使われているクロスプラットフォームのゲームエンジンなど、
ソフトウェアの作り手を広げる試みについて、いくつかご紹介できる予定です。

はいはい解散解散。
2013/03/23(土) 14:23:09.02
誰でも参入できるのかー
2013/03/23(土) 14:24:46.16
でもやっぱり専用環境購入とロイヤリティはお高いんでしょ?
2013/03/23(土) 22:08:36.49
日本のゲーム会社は無能のカスしかいないのに
なぜか全部自分のとこで作ろうとする
2013/03/23(土) 22:13:37.01
固定長メモリの不安感のせいだと思う。
C時代のレベル、ヒープとかあまりメジャーじゃなかった頃はまだイケてた。
海外の文献見てもメモリ管理怪しいのに何で向こうは気にしないんだろうね。
258デフォルトの名無しさん
垢版 |
2013/03/24(日) 10:15:40.18
Unity 風味前提で、って話でしょ。

この古臭いレスの輩たちは何なの?
2013/03/24(日) 10:49:15.40
Unity 風味?
2013/03/24(日) 10:50:56.42
Unity 風情と書き方ったのではないか?
2013/03/24(日) 10:56:10.18
Unity 一味
2013/03/24(日) 12:44:19.08
UnityのJavaScriptはJavaScriptと全く違うだろ
2013/03/24(日) 16:42:04.96
同じだと主張してたのか?誰が?
2013/03/24(日) 18:12:39.34
Unity風味の人じゃね
2013/03/24(日) 18:18:09.53
あの文章みてUnity風味っていうんだからそういうことだろ
2013/03/24(日) 21:40:15.79
そもそもお前ら

> UnityのJavaScriptはJavaScriptと全く違うだろ

↑これが理解できるのかw凄いな
2013/03/24(日) 22:14:09.44
知らないなら黙ってればいいのに。
2013/03/24(日) 22:17:49.93
その程度をエスパーできない奴にプログラムを書かせちゃいかんな
2013/03/24(日) 22:31:19.48
HTML5ベースのJavascriptの環境とUnity環境両方用意するって話だよね
2013/03/24(日) 22:38:45.92
知らないなら黙ってればいいのに。
2013/03/24(日) 22:42:27.37
今回はunityは関係無いぞ
2013/03/24(日) 22:52:59.88
http://www.nintendo.co.jp/wiiu/hardware/features/internetbrowser/extended_functionality.html
273デフォルトの名無しさん
垢版 |
2013/03/27(水) 22:18:03.24
>>23
> ビックリするかもしれないけどいまやJavaScriptのコードは平均してJAVA並の速度なんだよね

こういう「平気でうそをつく人たち」がウェブ界隈には多すぎる。
JavaScriptは以前よりはずっと速くなったが、依然C++よりはずっと遅い。
単純な演算でも平均して5倍は遅いし、
実アプリケーションではメモリ効率の悪さによる速度低下やキャッシュミス、GCポーズ、
低レベルアクセスのオーバーヘッド、SIMD命令やマルチスレッドを活用できないこと等でさらに差が広がる。

各種ベンチマーク。2のTime、Memory、Codeの表をチェックしてね。これが現実の性能差。

C++ g++ speed ÷ JavaScript V8 speed | Computer Language Benchmarks Game
http://benchmarksgame.alioth.debian.org/u32/benchmark.php?test=all&;lang=gpp&lang2=v8

実際、C++/OpenGLで書かれたものとJavaScript/WebGLで書かれたもので
5倍スループットが違ったりするんですよ?
一番オーバーヘッドが小さい(それこそほとんどOpenGLにコールを渡すだけの)WebGLでだ。

しかもこの1年、JavaScriptの速度の伸びは停滞している。一通り最適化しつくしてしまった。
だから今まで頑なにJavaScriptで十分と言っていたMozillaがasm.jsを作ってきたりしている。

>>36
>これは極端な例だけどJSがダントツで早い状況もある

C++のコード見たがなめとんのか
https://github.com/kwatch/template-engine-benchmarks/blob/master/others/string-concat/cpp/bench_strcat.cpp
274デフォルトの名無しさん
垢版 |
2013/03/27(水) 22:19:43.96
> /*
> * Are you a C++ expert? PLEASE ADVICE ME!
> */

くそこいつまじでむかつく
素人がベンチマーク取んなや
275デフォルトの名無しさん
垢版 |
2013/03/27(水) 22:26:48.58
ttp://phoboslab.org/log/2012/08/letter-to-john-carmack
> Native code developers shouldn’t be defensive about true accusations of security and stability
> limitations, and JS developers shouldn’t be defensive about true accusations of inefficiency.

「ネイティブコード開発者はセキュリティと安定性の限界に対する正しい非難に抗弁するべきではないし、
JavaScript開発者は非効率性に対する正しい非難に抗弁するべきではない」

とかのJohn Carmackがおっしゃっております(´・ω・`)
心より同意するものです(´・ω・`)
276デフォルトの名無しさん
垢版 |
2013/03/27(水) 22:32:21.95
HAL-NOTEとMSX-VIEW
2013/03/27(水) 22:37:41.83
セキュリティて
CならともかくC++はあんま起きないだろ
2013/03/27(水) 22:40:14.07
>>273
こういう、ベンチマークで10倍差だからとかいう奴って、ほんと頭悪いわ
279デフォルトの名無しさん
垢版 |
2013/03/27(水) 22:42:24.09
>>23はJavaと比べてるんだけどさ

>>273てアホなの?
280デフォルトの名無しさん
垢版 |
2013/03/27(水) 22:44:51.67
まさかの任天堂スマホアプリ参入宣言かと
281デフォルトの名無しさん
垢版 |
2013/03/27(水) 22:47:07.94
HAL-NOTE
282デフォルトの名無しさん
垢版 |
2013/03/27(水) 22:47:38.30
OSをHAL-NOTEに!
2013/03/27(水) 22:54:33.49
>>279
Javaと比べても遅いみたいだが?
284デフォルトの名無しさん
垢版 |
2013/03/27(水) 22:55:18.23
HAL-NOTEあげ
2013/03/27(水) 23:15:21.35
>>283
そういう事を言ってるんじゃないんだが
お前には理解できんか
2013/03/27(水) 23:18:22.27
人のせいにしないで、自分の説明能力をうたがいましょう。
287デフォルトの名無しさん
垢版 |
2013/03/27(水) 23:22:25.30
MSX-VIEW
2013/03/27(水) 23:48:53.75
うむ
>>273の説明能力には難ありだな
2013/03/28(木) 07:52:57.65
Enchant.jsってやつ使ったけどhtmlとjsでここまでできることに感動した。
2013/03/28(木) 09:07:03.23
javaと比べたら平均して2倍遅い程度か
意外とすげえな
速いじゃん
2013/03/28(木) 13:45:00.91
タイトルからウソまみれのスレで喧嘩すんなよ
2013/03/28(木) 21:36:19.68
これがHTML+JavaScriptの世界は開発速度なんだよな。

【GDC 2013】HTML5+JavaScriptで容易にWii Uでのゲーム・アプリ開発が可能に・・・「任天堂ウェブフレームワーク」発表
http://www.inside-games.jp/article/2013/03/28/65097.html
2013/03/28(木) 22:19:32.42
webkitベースか
294デフォルトの名無しさん
垢版 |
2013/03/28(木) 22:25:05.92
JavaScriptは言語であって、コンパイラが優秀であればC/C++に匹敵する速度は出る。
任天堂は、専用コンパイラを開発する、しているはず。
言語的にはC/C++と似通っていてるが、自由度が高く開発効率はいいんだろう。
295デフォルトの名無しさん
垢版 |
2013/03/28(木) 22:30:09.45
(*´・∀・)(・∀・`*)ヘー
296294
垢版 |
2013/03/28(木) 22:35:24.46
読んだら違ってた。環境自体は独自開発じゃなく既存品を使うんだな。
2013/03/28(木) 23:32:46.02
せっかくだから任天堂はfirefoxos採用しれ
2013/03/29(金) 00:14:18.23
何や彼や言って、結局上手く行かんべさ、アホか?
2013/03/29(金) 00:30:35.28
いい機会だからasm.js採用したら
2013/03/29(金) 00:59:21.03
別にほっといたってC++なんか捨てられるのはわかってるんだからわざわざ騒ぐ事でもないな
これからスクリプトでやっていく流れは皆わかってるだろうし、JavaやC#とスクリプト言語を使い分けていくでしょう
2013/03/29(金) 01:01:25.28
webkitベースということだからfirefox系のものを使うことは無いな
JavascriptVM自体はどこから持ってきたのか説明はあったのかな?
2013/03/29(金) 01:04:15.14
>>300
C++自体が捨てられるなんてことはほぼ無いぞ
環境自体はほぼC++で作ってるんだから
2013/03/29(金) 01:07:10.02
まぁそう思いたかったらそれでいいんじゃないの。
レスを投稿する