トップページ⇒tech
1002コメント464KB

+ JavaScript(ECMAScript)質問用スレッド vol.122 + [無断転載禁止]©5ch.io

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん2016/08/29(月) 01:23:24.09ID:MUTWRWKo
プログラマ板の趣旨にあわせてブラウザ限定ではなくサーバーサイドJavaScriptや
トランスパイラなどの関連技術の話題も取り扱うように変わりました。

ECMAScriptの言語仕様の話題。最新ECMAScriptによるモダンな書き方、Promiseやasync/awaitを
使った非同期プログラミング。ES2015、2016、2017等の最新ECMAScriptをブラウザで今すぐ使う方法、
ビルド環境やbowerやnodeのパッケージを使う方法等、モダンなJavaScript環境についての幅広い話をしましょう。

ECMAScript対応実行環境一覧(ブラウザやbabelを含む)
http://kangax.github.io/compat-table/es5/
http://kangax.github.io/compat-table/es6/ (= es2015)
http://kangax.github.io/compat-table/es2016plus/
http://kangax.github.io/compat-table/esnext/

JavaScriptとは?
もともとMozillaの前身のNetscapeが作った言語であり本来のJavaScriptはFirefoxの実装のみです。
JavaScriptの正式な仕様名はECMAScriptです。ですが一般に使われているとおり
ChromeやEdgeで使う言語もJavaScriptとしてこのスレでは扱います。
Firefox等のJavaScript実装は最新のECMAScriptに準拠しています。

※DOMはブラウザが提供しているものでありJavaScript(ECMAScript)の範囲外です。
なのでDOMを使ったプログラミングは原則としてこのスレの対象外です。
DOMはwindowオブジェクト(ブラウザのホストオブジェクト)経由で
参照するもので、window自体、window.document、window.Workerなどです。
これに関する話題はWeb制作板の下記のスレに移動してください。

+ JavaScript & jQuery 質問用スレッド vol.7 + [無断転載禁止]©2ch.net
http://echo.2ch.net/test/read.cgi/hp/1467906819/
+ JavaScript の質問用スレッド vol.130 + [無断転載禁止]©2ch.net
http://echo.2ch.net/test/read.cgi/hp/1463395557/

前スレ + JavaScript の質問用スレッド vol.121 + [無断転載禁止]©2ch.net
http://echo.2ch.net/test/read.cgi/tech/1468158373/
0285デフォルトの名無しさん2016/09/03(土) 18:08:14.44ID:EZVA2rF2
>>283
あんたは重要な点を見落としているね。

あんたが言っているのはすべてbabelを使わなうても当てはまることなんだよ。

ブラウザ間の互換性は完璧ではない。
あるブラウザには搭載されていて、あるブラウザには搭載されていない。
そういう機能がある。

babelはその機能の差を減らすものでしか無い。


話は単純。
1. ブラウザの間での違いはあるしなくならない。(もちろんbabelを使わない場合の話)
2. babelを使わないならばブラウザ間での違いが大きい。
3. babelを使うとブラウザ間の違いが減る。

これを前提の話をしよう。
0286デフォルトの名無しさん2016/09/03(土) 18:13:17.33ID:EZVA2rF2
babelを使うとブラウザ間の違いが減る。
という前提で話をすると、

ES6を完全に搭載していないブラウザが多く使われている今は
babelによって、その機能の差が大きく減る。

そしてその次はES2016、ES2017と話は進んでいく。
当然今のブラウザはES2016、ES2017の対応は少ないだろう。
ある時それらに対応したブラウザが一つだけでた。

となるとやっぱりブラウザの間の違いがでてくる。
そしてまた新しい仕様がでてきて、それに対応しているのはどれ?
という状況がずっと続く。

ブラウザの数は多い。バージョンアップの頻度も高い。
だからブラウザ任せでは機能の差を埋めることは難しい。
そこでbabelがでてくる。babelを使うことで機能の差は減る。
0287デフォルトの名無しさん2016/09/03(土) 18:16:26.40ID:EZVA2rF2
>>284
> でも、モダンで良いコードを書きたいという気持ちが強いなら、古く取り残された環境を切り捨てる勇気も必要だと思う。

モダンで書くよりも重要なのは、今あるブラウザで動かすこと。
そしてその次が開発コストを下げること。

多種多様なブラウザを相手にしていたら開発コストは下がらない。
だからbabelを使ってブラウザ間の違いを減らして
コストを下げることが重要になる。

その次だよモダンで書くことでコストを下げるという理由がくるのは。
優先順位は低い。だからbabelで対応していないものは使わないと言う
選択肢が当然成り立つ。

そして「babelで対応していない機能」は「babelを使わなくてもブラウザが対応した時」に使えばよかろう?
ES6の機能をすべて使うことが目的じゃないんだからさ。
0288デフォルトの名無しさん2016/09/03(土) 18:18:01.40ID:EZVA2rF2
>>284
> ES6対応以降のモダンなブラウザとの二極にするというのはある案だと思っているし、俺のところは今年度からそうしてる。

Safari最新版はアロー関数に対応していないんだが?
0289デフォルトの名無しさん2016/09/03(土) 19:21:50.91ID:N47o0j5/
>>288
Safariはモダンブラウザに含めていない。
ウチではずっとChrome第一Firefox第二、近頃はEdge第三。
他は眼中にない。
0290デフォルトの名無しさん2016/09/03(土) 19:27:20.93ID:EZVA2rF2
>>289
じゃあスマホは?
例えばAndroid 4系はアロー関数に対応していない。
http://caniuse.com/#feat=arrow-functions
0291デフォルトの名無しさん2016/09/03(土) 19:32:55.57ID:EZVA2rF2
Chrome、Firefox、Edgeということは
https://www.netmarketshare.com/browser-market-share.aspx?qprid=0&;qpcustomd=0
ブラウザの66.82%にしか対応していません。

モバイルの場合は
https://www.netmarketshare.com/browser-market-share.aspx?qprid=0&;qpcustomd=1
Chrome、Firefox、Edgeの53.65%にしか対応していませんってことだよね。
(Android Browserを入れても62.22%)
0292デフォルトの名無しさん2016/09/03(土) 19:35:23.00ID:N47o0j5/
>>290
いや、逆だよ。超逆。
Androidの古いブラウザを切り捨てられる時期というのが強い。
Android 4系と言っても、実は後半くらいか徐々に、終盤は大体、
ベンダーがChrome載せててデフォルトにしてるから、実は問題ないんだよ。
一番問題あるのはSafariくらいで、それももうすぐだろう。

誤解無いように書くが、
上でも言ったようにプログレッシブ・エンハンスメントだし、
当然全てのコードを書き換えたわけではない。
今年度から新しく初めて長くメンテしていくサービスでのコードは原則そういうポリシーになっただけ。
なので問題は無い。
0293デフォルトの名無しさん2016/09/03(土) 19:40:30.57ID:EZVA2rF2
>>292
意味がわからん。

重要なのは切り捨てるタイミングと
コードを新しくするタイミングの問題。

babelを使うと古いブラウザを切り捨てるタイミングを
自由にコントロールできる。

そして古いブラウザを切り捨てるよりも前にコードを新しくできる。
つまり古いブラウザを切り捨てたときにはすでにコードは新しくなってる。

あんた、今、古いブラウザを切り捨てたのに、
古いコードを抱えてるじゃん。

> Android 4系と言っても、実は後半くらいか徐々に、終盤は大体、
> ベンダーがChrome載せててデフォルトにしてるから、実は問題ないんだよ。
だからシェアのリストだしただろ? ChromeとAndroid Browserを
入れたとしても62.22%にしかならない。
0294 ◆SEdFBOkLSw 2016/09/03(土) 20:12:11.53ID:YIu9WVDu
俺以外とも噛み合ってねえじゃんw
>>284は説明上手いな。
0295デフォルトの名無しさん2016/09/03(土) 20:15:24.73ID:EZVA2rF2
おい、馬鹿(◆SE)がまた来たぞw
0296デフォルトの名無しさん2016/09/03(土) 20:18:55.72ID:EZVA2rF2
重要なのは、ES6対応度テストで合格する割合じゃないんだよね。
どれだけ多くの世間で使われているブラウザに対応できるか。

俺が一番重要視してるのは、より実用的なのはどれかだよ。

ES6対応度テストで9割合格していても、
それが今使われてるブラウザの6割じゃ役に立たない。

ES6対応度テストで8割でもそれを使うことで
ブラウザの9割で動かせるほうが重要。
0297デフォルトの名無しさん2016/09/03(土) 20:22:54.41ID:N47o0j5/
>>293
>>babelを使うと古いブラウザを切り捨てるタイミングを
>>自由にコントロールできる。

いやー一年前まではそう思ってましたよ。
上でも書いたけれど、君の発言を見てると一年前二年前の若い自分を思い出す。
でもそうじゃなかったから使ってないの。まだ分からない?
理由は大体書いたよ。
babelただ使うだけで使わないよりも『より良くなる』時代ってのはもう終わったの。

あんまり踏み込んで欲しくないので書かなかったことを少しだけ言うと、
ウチではES6基本というのは実は嘘。今はもうES2016基本にしかけてる。
で、そのために、『より良くする』ためにbabelではないがトランスパイラ+ポリフィル使ってる。

が、これもES2016の重箱の角はつつけていないので、本当は使わないで済むなら使いたくないのよ。
モダンなコードを書くメリットと、重箱の角を心の隅で気にしないといけないコストと、若干の好奇心のつり合いを見て今はこういう形になっている。

だから本当に100%ES2016で開放された気分で書けてるのかというとそうではない。
あれだけ変更の少ない2016->2015でもそうなんだよ?
babelのES5変換なんて満足できていたのは最初だけ、ブラウザの対応が未熟だった頃だけだよ。

当初君と同じ夢を見ていたウチのメンバーは一年くらいかけて
実は古いブラウザというしがらみから逃れるために、babelというしがらみに縋ってただけだって気がついたの。
今はbabel使って後から外すなんて夢物語だよ。黒歴史。
実はそういった試みで始めたものいくつかあったんだが、まともに活用しきれない。
多くは実らず捨てることになって、一部は泣きながらリファクタリングしてる最中。
0298デフォルトの名無しさん2016/09/03(土) 20:24:00.35ID:N47o0j5/
>>293
でもまあ、ふと思ったけど、俺も今のbabelは触ってないからな。精々半年前の感覚のままだ。
今はもしかしたら殆ど完璧になってて、憂いが減ってんのかな?
そこはちょっと反省。

どうしてbabelで旧ブラウザの対応するのを見限ったかって言うとね、
そもそも、babelのバグや細かい非互換のせいで大きいコードがしばしばまともに通らなかったからだよ。
だから、笑えるけどbabelで通るように書き換えてたの。当然歪になってるから使い回せない、使い回したくないの。

でも今babelの対応状況改めて見てみたらやっぱり無理だ。
マイナーかもしれないけれど、毎度一箇所は使うだろう点が残ってる。
やっぱり痛いのはプロトタイプの設定や、サブクラス化かなぁ。
めっちゃ使うということは無いが、ここらを我慢するのはやっぱりES6使ってるとは俺は思えないわ。
0299デフォルトの名無しさん2016/09/03(土) 20:26:29.35ID:EZVA2rF2
>>297

あんた自分で言ったセリフ思い出してね。

> Safariはモダンブラウザに含めていない。
> ウチではずっとChrome第一Firefox第二、近頃はEdge第三。

Safariに対応できてない、IEに対応できてない。
対応できるブラウザは6割。

それがお前が今できることの限界だよ。
0300 ◆SEdFBOkLSw 2016/09/03(土) 20:27:46.15ID:YIu9WVDu
>>295
無意味な中傷せんと、皆の意見を真摯に聞いとけ。
だいたい同じ事言ってる。

あとな、動作が同じって、それは違うからな。
いくら時間がかかっても良いから同じ結果を出します、ってのは、結果同じでも動作違うからな。
万回以上呼ばれだしたら体感で速度変わるし。
>>278に対してだけど。
0301デフォルトの名無しさん2016/09/03(土) 20:28:02.67ID:EZVA2rF2
>>298
> そもそも、babelのバグや細かい非互換のせいで大きいコードがしばしばまともに通らなかったからだよ。
> だから、笑えるけどbabelで通るように書き換えてたの。当然歪になってるから使い回せない、使い回したくないの。

だったらbabelで通るように書き換えないで、
その機能を使わなければいいだけでは?

だってそもそもbabelを使わないならば
その機能は使えないんだからさ。

その機能を使わないと言う選択肢をとることはできるはずだ。
0302デフォルトの名無しさん2016/09/03(土) 20:28:44.55ID:EZVA2rF2
>>300
今はお前と話はしてない。
お前のみんなの扱いはすでに決まってるんだよ。
おバカさんw
0303 ◆SEdFBOkLSw 2016/09/03(土) 20:30:06.63ID:YIu9WVDu
>>298
そう。だから、結局同じ構文で書いた、ただのbabelって処理系用の言語なんよね。

>>301
それは、babel用のコードを書くに、他ならなくないか?
babel無視したら、そんな回避コード書かんで良いんだから。
俺が仕事でES5書いてるのとレベル全く変わらんじゃないか。
0304デフォルトの名無しさん2016/09/03(土) 20:30:30.26ID:EZVA2rF2
>>297
言ってることが抽象的すぎて
具体例が一つもないよね。

問題があるという前提で話をしているが、
そもそも、お前が言う問題は本当にあるのか?って話。

まず、具体的な問題があることが前提だから
どういうときに問題があるのかを言ってくれないか?
0305デフォルトの名無しさん2016/09/03(土) 20:31:13.84ID:EZVA2rF2
>>303
> それは、babel用のコードを書くに、他ならなくないか?

ぜんぜん違う。その言語はES6でそのまま動く
ES6用とbabel用に違いはない。
0306 ◆SEdFBOkLSw 2016/09/03(土) 20:31:17.36ID:YIu9WVDu
>>302
お前の中だろ。
問題を極端に矮小化したり拡大解釈したり、一般化したり特殊化すんのは良くないぞ。
0307デフォルトの名無しさん2016/09/03(土) 20:32:03.05ID:EZVA2rF2
> 俺が仕事でES5書いてるのとレベル全く変わらんじゃないか。

わざわざES6のコードを避けるほうが大変だろwww

どちらがどれだけ大変かの話をしてる。
babelを使えば、避ける必要性が大きく減る。
0308デフォルトの名無しさん2016/09/03(土) 20:32:49.45ID:EZVA2rF2
>>306
あっちのスレでもお前、馬鹿にされてるじゃんwww
自覚しとけ。

お前は俺に反論できないことはたくさんあったが
それはお前にほとんどレスしてるだろw
0309 ◆SEdFBOkLSw 2016/09/03(土) 20:33:04.45ID:YIu9WVDu
>>305
ES5もES6でそのまま動くよw

babel用に使えないものがあるから使わないのは、ES6のサブセットじゃん。
babel用に使えないものを避けて書いたのと、気にせず書いたES6は違うコードなんじゃねえの?
0310 ◆SEdFBOkLSw 2016/09/03(土) 20:33:43.02ID:YIu9WVDu
>>308
明後日のレスだけして、それで答えた気になってたらしゃーないわ。
0311 ◆SEdFBOkLSw 2016/09/03(土) 20:36:11.49ID:YIu9WVDu
>>307
避ける方が大変?なんだそりゃ。
言語仕様把握せずに開発してる訳でもあるまい。
規約が無い訳でもあるまい。

子供のバイトみたいな話しないでくれ。
0312デフォルトの名無しさん2016/09/03(土) 20:37:02.13ID:EZVA2rF2
>>309
> ES6のサブセットじゃん。

ん? 各ブラウザのES6の実装度を知らないのかな?
どのブラウザでも使えるのはES6のサブセットでしか無いんだけど?
0313デフォルトの名無しさん2016/09/03(土) 20:38:01.48ID:EZVA2rF2
>>311
> 避ける方が大変?なんだそりゃ。

そりゃそうだろ。

どのブラウザで、どの機能が使えるかをいちいち把握しないといけない。
お前アロー関数がSafariで使えないことを把握していたか?

そういった細かい機能を把握する必要がなくなる。
0314デフォルトの名無しさん2016/09/03(土) 20:38:52.88ID:EZVA2rF2
言語仕様を把握していても、アロー関数がSafariで
動かないってことを知ることは出来ないんだよ。
0315 ◆SEdFBOkLSw 2016/09/03(土) 20:41:04.47ID:YIu9WVDu
>>312
そうだね。
だから、ブラウザごとに要件定義すんじゃんね。
そこに、これまたbabelって処理系が入る、と。

お前の理屈破綻してるのわかる?
どこが、一つのES6で良いの?w

最大公約数で書けば良い、なら、
ホントに最大公約数で書けばいいじゃん。ES5。
要件定義できるなら、その最大公約数で書けばいいだけ。

中途半端に先端気取って無駄な事なの。
0316デフォルトの名無しさん2016/09/03(土) 20:41:56.59ID:EZVA2rF2
ES6を完全サポートしているブラウザを100とすると、
babelを使わないと、

1〜100までのすべてのブラウザを考慮しなければいけなくなる。
babelを使えば80以下のブラウザがすべて80にまで底上げされるから
80〜100のブラウザだけを対応すれば良くなる。
0317 ◆SEdFBOkLSw 2016/09/03(土) 20:43:55.93ID:YIu9WVDu
>>313
してたよ。
ついでに言うとOperaも対応してない。
Android標準ブラウザは4系でも全滅。IEも11でも使えない。
0318 ◆SEdFBOkLSw 2016/09/03(土) 20:45:13.51ID:YIu9WVDu
>>316
ES5で書けば100のブラウザ相手に書けんじゃん。
底上げしたから、何もしなくて良いわけでもないし。
骨折り損。
0319デフォルトの名無しさん2016/09/03(土) 20:45:14.45ID:N47o0j5/
>>299
何が言いたいのか、いやもう建設的な話し合いをする気は無いんだろうけど、
一応会話してみるか。

対応するときはES5で書く。それだけでしょ?
そして、その話は本題と関係ないでしょ?

古いブラウザを見限っていいから、Babelを使うなと言ってるんじゃないから。
古いブラウザを見限らないとしても、ウチではBabalは使わない。ただES5で書くだけ。
まさかウチではもう今年度からピュアES6しか書きませんと言ってるのだと思ってた?
誤解させてごめんね。

で、本題はBabalの吐くコードはES_Babalであって、ES6とは遠からず近からずなものでしかないということ。
ES6を使いたいから、後々外せばいいだけだから便利、な感覚でBabelを使うと怪我するよと言ってるの。
Babalを使うのなら、あくまでES_Babelというalt JSを使うんだという認識・覚悟で居たほうが正しい。

そして副題として、俺はそれは嫌ということ。ここは個人的な部分だし、環境なので異論は認めるし、批判は受け付けていない。
二極化提案については、まだ実験中で良し悪し分からず、オススメする気もなくポロッと言ってしまっただけだし、
あまり深入りしてほしくないのでこれ以上話したくない。
0320デフォルトの名無しさん2016/09/03(土) 20:45:47.57ID:EZVA2rF2
>>315
> だから、ブラウザごとに要件定義すんじゃんね。
> そこに、これまたbabelって処理系が入る、と。

ブラウザは実行環境、
babelはトランスパイラ。

違うものを混ぜるなって何度も言っただろ。

お前はES6に対応していないブラウザを一つずつ何個も
この機能は使える?使えない?って悩んでいるのだろうが
babelを使うと、多くのブラウザの最低レベルが揃うんだよ。

お前の言葉で言う最大公約数がES6に底上げされる。
最大公約数5よりも最大公約数10の方がいいだろw
0321デフォルトの名無しさん2016/09/03(土) 20:46:33.45ID:N47o0j5/
おいおい……俺がちょっと推敲してる間に20も進むとか……
0322デフォルトの名無しさん2016/09/03(土) 20:49:51.97ID:EZVA2rF2
>>319
なんか一人二役ご苦労さんって感じになってきたな。
わざとらしく大文字小文字を使い分けてるのかい?www

> 対応するときはES5で書く。それだけでしょ?
そのES5をES6に書き換えるコストは誰が払うんだ?ずっとES5のまま?
なんで可読性、メンテナンス性が低いコードを今のタイミングで量産するのさ?w
長期的なバージョンアップっていうのが考慮されてないぞ。

> で、本題はBabalの吐くコードはES_Babalであって、ES6とは遠からず近からずなものでしかないということ。

なんでそこでbabelの吐くコードを気にしないといけないのかわからん。
そもそもbabelの吐くコードはES5だ。ES_Babelなんてものはない。
babelは言語ではなくて単なるトランスパイラ。言語はES6そのもの
0323デフォルトの名無しさん2016/09/03(土) 20:50:46.13ID:EZVA2rF2
>>318
> ES5で書けば100のブラウザ相手に書けんじゃん。

ただし可読性とメンテナンス性が低いコードになる。
0324デフォルトの名無しさん2016/09/03(土) 20:52:05.59ID:EZVA2rF2
>>317
> ついでに言うとOperaも対応してない。
> Android標準ブラウザは4系でも全滅。IEも11でも使えない。

そっかー、babel使ってテストにもちゃんと通って
手動でも確認したときも問題なく動いていたから知らんかったわーw


まあ嘘だけど、このようにいちいち把握する必要がなくなる。
0325デフォルトの名無しさん2016/09/03(土) 20:52:33.02ID:vfo9HhT2
この板ってどのスレでも定期的にこういう事起こるよね
C#のラムダ禁止おじさんとか
0326 ◆SEdFBOkLSw 2016/09/03(土) 20:52:38.94ID:YIu9WVDu
>>322
一人二役って、アホな発言にも程があるわ。
言うに困ったらそれか。

>>322
言語は、そのものじゃなくてサブセットなんじゃねえの?
0327 ◆SEdFBOkLSw 2016/09/03(土) 20:53:35.43ID:YIu9WVDu
>>323
お前が下手なだけ。

>>324
必要が無いのと、無責任なのは違うよ。
あと、letも、ずっとSafariだけ未対応だった。
0328 ◆SEdFBOkLSw 2016/09/03(土) 20:54:01.45ID:YIu9WVDu
>>325
ラムダは積極的に使えば良いのにな。
0329デフォルトの名無しさん2016/09/03(土) 20:56:57.70ID:EZVA2rF2
>>326
> 言語は、そのものじゃなくてサブセットなんじゃねえの?
そうだなES6の殆どが使えるがサブセットだなw

それよりもES6に完全対応してないブラウザの方が
より大きな問題だよ。
0330デフォルトの名無しさん2016/09/03(土) 20:58:33.36ID:N47o0j5/
もういい。
俺はともかく、ES6ってそんなレベルじゃねーぞって変なこだわり言ってるだけだから。
とりあえずBabel使うとES6でガッツリ書けます。将来的には外すだけみたいに言わないでくれれば他はどうだってよかった。
相手が建設的な話し合いする気がないどころか、現実逃避始めちゃったので、今となってはそれすらどうでもいい。

>>320
>>babelを使うと、多くのブラウザの最低レベルが揃うんだよ。

そう。いいこと言った。
最初からこのくらいに収めてくれてれば俺が駄スレで駄レス重ねる必要もなかったのに。
結局会話にならなかったし、ほんと、無駄な時間過ごしちゃったな〜
0331デフォルトの名無しさん2016/09/03(土) 20:59:03.26ID:EZVA2rF2
>>327
> 必要が無いのと、無責任なのは違うよ。

誰が無責任でいられるって言ったんだよ。
アホかw

ちゃんとテストコード書いて問題なく動くことを確認してる。
それが責任を果たすということだろ。

> あと、letも、ずっとSafariだけ未対応だった。

せっかくより良くなったES6を
全く使えない状況になるんだよねw
0332デフォルトの名無しさん2016/09/03(土) 21:01:48.79ID:EZVA2rF2
>>330
> とりあえずBabel使うとES6でガッツリ書けます。将来的には外すだけみたいに言わないでくれれば他はどうだってよかった。

もちろん将来的には外すだけじゃねーよw

しっかりテストコード書いて、テストする。
これは、babelとは関係なく、ブラウザのバージョンアップでも
急に動かなくなったりする可能性があるのだから当然するべきこと。

babelを外してもし動かなくなるのなら、その部分だけの修正で済むだろ。
今からbabelを外して動くかどうかもテストしてればいいんだよ。

それをやってるから、ES6で書いてbabelを使っても使わなくても
同じように動くコードになるって言ってるの。
0333デフォルトの名無しさん2016/09/03(土) 21:09:12.58ID:N47o0j5/
>>332
だからね。君が言ってるそれは、BabalがES6のコードを完璧にES5に変換できるということ前提なの。
実際はね、ES6ではなく、ES_Babalで書かないといけないの。
ES_BabalというのはES6から機能と安定性を取り去った言語なわけ。
で、それを将来ES6か何かに書き換えるわけ。

それがES5のしがらみとどっちが強いかは人次第なのかもしれない。
君はそれに十分満足していて、俺は不満。ただそれだけなのかもしれない。

でも、ES6を使いこなしていったらすぐに俺の考えに近くなるんじゃないかなという想像。
無駄なおせっかいだったのよ。それだけ。
0334デフォルトの名無しさん2016/09/03(土) 21:13:20.81ID:EZVA2rF2
> 実際はね、ES6ではなく、ES_Babalで書かないといけないの。
だから書かなくて良いんじゃないですかねぇw
ES6で完璧に書けないものは書かなくていい。

なんでES6を使うって言ったら、babelで使えない機能まで
ES6を使おうってするんだ?w


どうせテスト書くだろ。完璧に動かなくてもテストで通る範囲が動けば問題ないんだよ。
そもそもブラウザですらES6に完全に対応していない。

どちらにしろES6に完全対応していない環境と言う前提のもとで、
正しく動くアプリを作るんだよ。作るのが仕事なの。

そしてより可読性、メンテナンス性に優れたコードを今すぐ書くということ。
0335 ◆SEdFBOkLSw 2016/09/03(土) 21:15:25.72ID:YIu9WVDu
>>331
テストコード書いて問題なく動く、そこが違うんだよなぁ。
こっちは仕様と実装からテスト仕様書いてて、
お前は仕様からしか書いてないんだもの。

>>332
お前は本当に何を問題とされているかわかんねえやつだな。
0336デフォルトの名無しさん2016/09/03(土) 21:17:26.35ID:EZVA2rF2
テストコード書いて問題なく動く、そこが違うんだよなぁ。
こっちは仕様と実装からテスト仕様書いてて、

え? だからそのテスト仕様書通り動けばいいだろ?

何言ってるのかさっぱりわからんwww
0337デフォルトの名無しさん2016/09/03(土) 21:18:06.86ID:EZVA2rF2
> こっちは仕様と実装からテスト仕様書いてて、

あ、実装を書かないとテスト仕様書が書けないタイプ?
0338デフォルトの名無しさん2016/09/03(土) 21:21:04.16ID:EZVA2rF2
実装からテストを書くっていうのは、
要するにprivateメソッドを書いてから
そのテストコードを書くって言ってるのかな?

まあまた意味不明なことを言い出したなって
思ってますよw
0339デフォルトの名無しさん2016/09/03(土) 21:23:23.04ID:EZVA2rF2
実装のテストっていうのは、その実装が変われば
同じ動作をしていてもアプリは問題なく動いていても
失敗するものってことでいいんですか?
0340 ◆SEdFBOkLSw 2016/09/03(土) 21:24:59.62ID:YIu9WVDu
>>337
当たり前だろ。。
>>338
違うよ。
コードを書く/書いてもらう前に、何もかも分かった状況にして、こうすれば書けるから、と実装に対する詳細設計を起こすよね。
その詳細設計から書くじゃん、テスト。
実装、がもしかして食い違ってる?
お前が書く内容、って意味じゃなくて、処理系の実装、な。

しかし、改めてbabel見てみたが、末尾再帰もできんままか。
0341 ◆SEdFBOkLSw 2016/09/03(土) 21:26:13.79ID:YIu9WVDu
>>339
何言ってるのかわからん。
その処理系でテストを完了していない限り、失敗も成功もないだろ。宙ぶらりん。
だからテストすんじゃん。
0342デフォルトの名無しさん2016/09/03(土) 21:28:37.51ID:EZVA2rF2
いつの話をしてるのやらw

http://teppeis.hatenablog.com/entry/2015/03/es6-tail-call-optimization

2015-03-29
BabelとTraceurでES6末尾再帰最適化を試す
ちょっと前にBabelに末尾再帰最適化が入って話題になったけど、同じくTraceurにもv0.0.85で最適化が入ったので試してみた。
0343デフォルトの名無しさん2016/09/03(土) 21:28:59.57ID:N47o0j5/
>>334
うん。だから君は、ES6を、モダンで良い言語で書きたいから使ってるわけではなく、
「Babelが対応してる機能」を「Babelが対応してるから」使ってるだけでしょ?
普通はES6で書いて動かすためにトランスパイラを試す筈だが、
君はおそらくBabelをES6入門用的に使っているのだろう。

Babelはもう成長しないが、君はどうするの?
うーん。もしかして、ES2017や18の時代になっても、
Arrayのサブクラスすら作れないなんちゃってES2017で書くの?

ES6-サブクラス+デコレータ-hogehoge+fugafuga
みたいなおかしな言語で書き続けるの??
そこに無理があると言ってるのよ。

君ももし本当にES_BabelをES6と信じてるのなら成長したほうが良いよ。
で、Babelは使うのは良いが憂いができるだけ少なくなるようにした方がいい。
0344デフォルトの名無しさん2016/09/03(土) 21:32:40.61ID:EZVA2rF2
>>340

337 自分:デフォルトの名無しさん[sage] 投稿日:2016/09/03(土) 21:18:06.86 ID:EZVA2rF2 [83/86]
> こっちは仕様と実装からテスト仕様書いてて、
あ、実装を書かないとテスト仕様書が書けないタイプ?

340 返信: ◆SEdFBOkLSw [sage] 投稿日:2016/09/03(土) 21:24:59.62 ID:YIu9WVDu [24/25]
>>337
当たり前だろ。。

この流れで、↓これとか

> コードを書く/書いてもらう前に、何もかも分かった状況にして、こうすれば書けるから、と実装に対する詳細設計を起こすよね。
> その詳細設計から書くじゃん、テスト。

・・・馬鹿なのか?


1. 実装に対する詳細設計を書く
2. つまり詳細設計は実装を書くよりも前に存在する。
3. (実装を書く前の)詳細設計からテストを書く。

実装を書かなくてもテスト仕様書は書ける。
0345 ◆SEdFBOkLSw 2016/09/03(土) 21:35:40.90ID:YIu9WVDu
>>342
おお、if文のあとの再帰で死ぬやつ治ってんだ。
ちなみに、その話のあと、一旦disabledになったのよ。
0346 ◆SEdFBOkLSw 2016/09/03(土) 21:38:38.17ID:YIu9WVDu
>>344
だから。もう。
お前がどう書くかは関係ねえの。
それからテスト書いたら意味ねえじゃん。
ホワイトボックスで、それが検証可能な事には意味があるけど、そうじゃねえよ。
処理系の実装だよ。
0347デフォルトの名無しさん2016/09/03(土) 21:41:34.55ID:EZVA2rF2
>>343
> 「Babelが対応してる機能」を「Babelが対応してるから」使ってるだけでしょ?
違う。ES6の機能のうち、babelで変換しても確実に動くものだけを使ってる。
だから「ES6が対応している機能」のうち「babelでも対応しているもの」を使っている。
が正解。

そしてそれは普段から書いている「実際のブラウザで問題なく動くか?」という
テストがあれば追加工数は必要なくテストできる。

> Babelはもう成長しないが、君はどうするの?
成長してないと判断したところはどれ?
見ての通りes2017に対応したプリセットもある。 http://babeljs.io/docs/plugins/preset-es2017/
仮にbabelが成長しなくても、今書いているコードはそのままES6対応ブラウザで動くし
ES5ブラウザでも動く。今のやり方はそのまま続けられるじゃん。

場合によっては古いブラウザを切り捨てることで、babelが無くても動く。
将来の心配をしなくて済む。そこがAltJSとの違い。

> ES6-サブクラス+デコレータ-hogehoge+fugafuga
> みたいなおかしな言語で書き続けるの??
と言われてもね。現実に存在するブラウザが、そんな感じでしょw
ES6の全てに対応していない。あんた今、そんなおかしな言語で書いてるんだよw

> うーん。もしかして、ES2017や18の時代になっても、
> Arrayのサブクラスすら作れないなんちゃってES2017で書くの?
Arrayのサブクラスを使わないでES2017で書くよ。

お前は古いブラウザを切り捨てるんだろ?
それが要件として認められるならば、俺古いブラウザを切り捨てるだけだよw
0348デフォルトの名無しさん2016/09/03(土) 21:46:47.80ID:EZVA2rF2
>>346
またマッチ・ポンプ?w
テストは実装前に書くって話でいいんだよね?w

俺が言いたいのは、>>335でお前が言った
> こっちは仕様と実装からテスト仕様書いてて、
実装からテスト仕様書くなやってことなんだけど?


で、俺は仕様と詳細設計からテスト仕様書書いて
それをテストコードにしてるから、
実装が変わっても問題ないって話をしてるんだけど。
0349 ◆SEdFBOkLSw 2016/09/03(土) 21:51:24.54ID:YIu9WVDu
>>348
だから、処理系の実装だってば。
お前話の流れが読めないやつだな。
前のレス見ればわかんじゃん。

>>347
だから、それがbabel用のコードなんじゃねえの?
ES6と同じ構文で書いたES6のサブセットな、babelにコンパイルさせる為の言語。
ただ、そのまま他の環境でも動くだけで。
それは、ES5を書いて、これはES6の仕様範囲内だから、ES6です、って強弁するのと変わらんではないか。
0350デフォルトの名無しさん2016/09/03(土) 21:54:03.20ID:N47o0j5/
>>347
うーん。君のポリシーがよくわからないね。
今のブラウザがES6の全てに対応していない?
そりゃそうだ。ES5すら全てに対応してるわけではないからね。

ということは、それより遥かに劣るBabelは極めて不完全って認めるわけなの?
さっきも言ったが俺はそここそが一番気になるんだから。

いや違うか、君は不完全でも気にしないと言ってるわけだ。
ES6とES_Babelの見分けなんてつかないよと、
いや、Babelで変換できないES6の機能なんてES6と認めないよと言ってるわけだ。

やっぱり君はBabel志向なんだよ。
それは違う、とにかく対応を広げるために機能の劣るBabelを仕方なく使ってるんだっていうなら
やっぱりES6ではなくES_Babelを書いてるってことを認めないといけない。

それか、実はES6なんて理解してなくてBabel志向なだけですというのも理屈が通る。
そのどちらか。
0351デフォルトの名無しさん2016/09/03(土) 21:57:03.42ID:EZVA2rF2
>>349
> だから、処理系の実装だってば。

処理系の実装ってなに?

お前は処理系の実装のテストを "書いている" といった。
そうわざわざ言うってことは、当然普段から書いているのだろう?

ブラウザの場合お前はbabel等を使わない。
ってことは当然処理系の実装のテストというのは、
ブラウザが持っているJavaScript実装。
ChakraやSpiderMonkeyやV8という処理系であるはずだ。


お前はこれらのJavaScriptエンジンを
わざわざ開発元がやってるはずのテストを
JavaScriptエンジンの開発や検証という段階でもないのに、
アプリの開発という仕事の中でやってるということか?

そういう話でいいのか?
0352デフォルトの名無しさん2016/09/03(土) 21:59:14.75ID:EZVA2rF2
>>349
> だから、それがbabel用のコードなんじゃねえの?
> ES6と同じ構文で書いたES6のサブセットな、babelにコンパイルさせる為の言語。

ES6のサブセットという言語はない。
俺がES6のサブセットを使っているだけ。

そもそもどのブラウザもES6に完全対応してないのだから
俺だけじゃなくてみんなES6のサブセットを使ってる。

お前、SafariでES6のサブセットを使ったら、
それをSafariで動かすための言語っていうのかよwwww

それぐらいわからんかなw
0353デフォルトの名無しさん2016/09/03(土) 22:05:42.45ID:EZVA2rF2
>>350
> 今のブラウザがES6の全てに対応していない?
> そりゃそうだ。ES5すら全てに対応してるわけではないからね。
>
> ということは、それより遥かに劣るBabelは極めて不完全って認めるわけなの?

そこが話がつながってない。

babelはES6に対応していないブラウザをES6対応に近づけるものであって、
ブラウザとES6対応度で競争しているわけじゃない。

ブラウザは他のブラウザとES6対応度で競争しているかもしれない
その競争でどこそこのメーカーのブラウザが劣っているか劣っていないかって
いう話をするのならわかる。

だがbabelの目的は、劣っているブラウザを救済する所にある。
babelと比較するのであれば同じ目的のTraceurやClosureだろう。

あんたはES6を使いたいとしか思ってないようだが、
俺が一番に考えているのは、より多くのユーザーが使ってるブラウザで動かすということだ。
その上で可読性やメンテナンス性を上げるという理由で出来る限りES6を使うって話をしてるんだよ。
0354 ◆SEdFBOkLSw 2016/09/03(土) 22:15:50.24ID:YIu9WVDu
>>351
文盲なの?

そのエンジンと自社製品の組み合わせのテストだよ。

>>352
最後。
その通り、Safariの為の言語だよ。その時点では。
SafariとFireFoxの為に書いたのであれば、SafariとFireFoxの為の言語。
0355デフォルトの名無しさん2016/09/03(土) 22:17:06.63ID:EZVA2rF2
ん? まさかと思うが、もしかして◆SEって
ブラウザごとにソースコード書き換えてるのか?

あるサイトを作ったとして、
Chromeはアロー関数を使ったコードで
Safariはアロー関数を使わないコード。

一つのコードで複数のブラウザに対応するのではなく
各ブラウザごとに書き換えたを変えてるのか?

まさかな。babelを使うと一つのコードで
複数のブラウザに対応できるぞwww
0356デフォルトの名無しさん2016/09/03(土) 22:18:28.08ID:W9R0/4bk
バベル君面白いw

バベル君の事が理解出来る様に、オレも少しかじってみるわw
0357デフォルトの名無しさん2016/09/03(土) 22:18:34.81ID:EZVA2rF2
>354
> そのエンジンと自社製品の組み合わせのテストだよ。

言い方がおかしいな。

普通は
そのエンジンと自社製品の組み合わせ「で」テストをするという。

確認するが
そのエンジンと自社製品の組み合わせ「の」テストを書いているという意味か?
0358デフォルトの名無しさん2016/09/03(土) 22:19:06.56ID:N47o0j5/
>>353
うん。それならいい。
あくまでES6を意識したBabelScriptという下駄を古いブラウザに履かせるという認識ならいい。


裏切りを知らないサンタクロースを信じる子供か、黒歴史を未経験な魔法に憧れる中二病患者かと思ったから忠告したけど、
そうでないのなら尽く良い。

その他いろんな話をしたが、もうそれに関しての共通理解は諦める。
0359デフォルトの名無しさん2016/09/03(土) 22:20:31.06ID:EZVA2rF2
>>354
◆SEくんおもしろいw

> その通り、Safariの為の言語だよ。その時点では。

じゃあブラウザとバージョンの数だけ別の言語があるってことかい?
0360デフォルトの名無しさん2016/09/03(土) 22:21:58.64ID:EZVA2rF2
>>358
> 裏切りを知らないサンタクロースを信じる子供か、黒歴史を未経験な魔法に憧れる中二病患者かと思ったから忠告したけど、

だからテストコードを書いている。
このテストコードはbabelを使った場合と使わない場合の両方で動く。

裏切られる前提で、裏切られてもすぐに修正できるように
ちゃんと対策をしている。
0361デフォルトの名無しさん2016/09/03(土) 22:24:51.69ID:EZVA2rF2
◆SEの理屈ではJavaScriptという言語は無いってことになるだろうね。

なぜならばどのJavaScriptでも同じブラウザでも
バージョンが違えば、わずかながらでも違いがあるから。

ECMAScriptという仕様を完全に見対している言語もない。

そういえばC++も仕様を完全に満たしている処理系はないっていわれてるな。
つまり、それぞれの処理系で別々の言語が実装されている。それはC++とは呼ばないw
0362 ◆SEdFBOkLSw 2016/09/03(土) 22:29:30.55ID:zOLpCpsC
>>355
基本は両方同じ、かつネイティブに処理されるコードを書いて欲しいね。
依存部分はライブラリで吸収するから。

>>359
え?うん。
お前も認めてたじゃん。どのブラウザもサブセットだって。
0363 ◆SEdFBOkLSw 2016/09/03(土) 22:30:37.47ID:zOLpCpsC
>>361
え?MSの2012でコンパイルできる、cppのソースコード、以外の、現実に則した表現あるの?
0364デフォルトの名無しさん2016/09/03(土) 22:31:28.65ID:EZVA2rF2
>>362
> お前も認めてたじゃん。どのブラウザもサブセットだって。

お前、毎度毎度、重要な単語を抜き取るよなw
わざとやってるだろ。


どのブラウザも「JavaScript(ECMAScript)という言語の」サブセットだって
言ったんだよ。別の言語であればそれはサブセットとはいわない。
0365 ◆SEdFBOkLSw 2016/09/03(土) 22:31:56.90ID:zOLpCpsC
>>357
そうよ。おかしかったらパッチ書いてプルリクするもの。
0366デフォルトの名無しさん2016/09/03(土) 22:32:33.75ID:N47o0j5/
>>360
そこに関しては納得してる。
俺が違和感があるのは、よくそれで問題にならず我慢できるなってこと。

よくArrayのサブクラスとか作らないで済むね?
Proxy使ったこと無い?@@系は?
当然独自クラスシステムフレームワーク構築するのに
プロトタイプ書き換えるとか当然やったこと無いんだろうな〜
って感じ。

そういう驚きと、同じ世界に居ない悲しみ。そんなとこ。
0367 ◆SEdFBOkLSw 2016/09/03(土) 22:32:54.26ID:zOLpCpsC
>>364
重要な単語も何も、本家とサブセットは関係が定義できようが、
サブセット同士はただ違うものとしか。
0368デフォルトの名無しさん2016/09/03(土) 22:33:53.31ID:EZVA2rF2
>>362
> 依存部分はライブラリで吸収するから。

アロー関数は文法なんだから、JavaScriptファイルを
分離しないと、構文エラーになるんだが?

そのライブラリはブラウザごとに読み込むファイルを分けるのか?
またパフォーマンスが落ちそうなことをwww
0369デフォルトの名無しさん2016/09/03(土) 22:35:25.80ID:EZVA2rF2
>>367
だから、そうやって重要な単語を抜き取って焦点をぼかすのはやめろ。

とある言語の、サブセット同士が違うものであっても
それはとある言語のサブセットであって、言語としては同じだろうが。

BASICはどの実装でもBASICであり
COBOLはどの実装でもCOBOLだ。
0370デフォルトの名無しさん2016/09/03(土) 22:37:05.23ID:EZVA2rF2
>>366
> よくArrayのサブクラスとか作らないで済むね?

といわれてもね。長年やってるからね。
長いES5の時代にArrayのサブクラスをつくらないで
やってきた人間に、そんなこといわれてもねw

その他も同じ。

お前のほうがやってきた経験少ないんじゃね?
0371デフォルトの名無しさん2016/09/03(土) 22:41:45.37ID:EZVA2rF2
>>366
そうだな。君、何かのポリフィルを自分で考えたことある?
特定のブラウザでは簡単にできないことを、
別の方法を使って実現するってことをやったことある?

そういう経験がないんじゃないかな?
バッドノウハウといわれるけど、仕事ではそれをやらないといけない。

Arrayのサブクラスが作れないからできませんって
簡単に泣き言を言ったらだめだよ。

Arrayのサブクラスを作ることが目的になることはまずない。
別の方法で顧客の要求を実現するんだよ。

これって発想力の問題かなぁ、それとも問題解決能力?
0372デフォルトの名無しさん2016/09/03(土) 22:56:19.81ID:N47o0j5/
>>370
当然俺もいきなり活用できたわけじゃない。
折角の機能活用できるようになろうとここ1,2年実験・研究を人一倍積み重ねてきたのよ。

いや、違うか。それより前から、特にES4の頃からかなぁ
JSなんてと言われる声が大きかった時でも、
これからはJSの時代だ。JSを深く知ろう、そしてJSの良さをもっと知ってもらおう。
JSを良くしていこう。とずっとずーっと思ってたのよ。

だからES6の盛り上がりには喜んだし、
MLも当初から参加して全て読んで、細部だが提案にも参加した。

そして実装される前から、トランスパイラではなく、エンジン毎実装されているエミュレータでテストしたりしてきたのよ。
ブラウザに機能がコミットされたら、いやされる直前に自分でローカルでコミットして即ビルド。
とにかく誰よりもよくES6を知り、よく使えるようになろうと努力した。

というのは多少大袈裟だが、そのくらいの熱はあるよ。
0373デフォルトの名無しさん2016/09/03(土) 22:59:14.75ID:N47o0j5/
つかArrayのサブクラスもできるんだけどね。
__proto__がサポートされていれば。
0374 ◆SEdFBOkLSw 2016/09/03(土) 23:12:05.52ID:YIu9WVDu
>>369
いや、それは言語名を拡大解釈しすぎだろ。
0375 ◆SEdFBOkLSw 2016/09/03(土) 23:14:31.28ID:YIu9WVDu
>>371
お前どう聞いてもそのノウハウないんだけど。
なんか書いたことある?アーキとしてライブラリ。

>>368
うん、文法上無理なものは、無理に使わないよ。

ライブラリはブラウザごとに違うよ?
当たり前だけど、そのブラウザ用に書いてるからパフォーマンス高いよ(笑)
0376デフォルトの名無しさん2016/09/04(日) 01:41:38.94ID:dQFc65WQ
そもそも、ブラウザのソースをむっちゃ細かく読み、ブラウザごとに誤差レベルのパフォーマンスのためにプログラムをかき分け、利用者にはKBのバージョンまで指定する
そんならネイティブで書いたほうがいっそ早くね?
0377デフォルトの名無しさん2016/09/04(日) 01:42:25.34ID:dQFc65WQ
↑ネイティブっていうのはブラウザ上じゃなくてって意味ね

それだと今度はOSのソースを読み出すのかな?
0378 ◆SEdFBOkLSw 2016/09/04(日) 02:09:57.16ID:OwMR9jkC
>>376
クラサバの話?
だいたい似たようなもんだよ。
社内端末は、何処の会社でもそうだろうけど、標準品のパターンしか無いから。
クラサバは基本的にはあんまり作らんけどね。
標準品があるがゆえにが、何かにもインストールするのは難しい。

毎月10日に数万人が同時使用するようなものもあるから、ウェブ向きのもあるんだけどね。
0379 ◆SEdFBOkLSw 2016/09/04(日) 02:11:11.84ID:OwMR9jkC
>>377
案件次第だけど、RedHatと、MSは調査させることができる保守契約だから、
ソースは見なくて済むよ。
0380デフォルトの名無しさん2016/09/04(日) 02:40:24.68ID:dQFc65WQ
よくよく考えると、ハードウェアにも依存するよね
テストだけじゃなくてソースまで読むとなると、CPUとかグラフィックカードの設計図まで見ながら実装や結果が異なるかもしれない!とか言いながら開発してるのかな?

これとかは面白かったな
https://www.sophos.com/ja-jp/press-office/press-releases/2014/12/ns-browser-fingerprints-the-invisible-cookies-you-cant-delete.aspx
0381 ◆SEdFBOkLSw 2016/09/04(日) 02:52:39.61ID:puAB8LUN
ハードウエア依存するね。
そのへんはウェブ屋がよくまとめてくれてるよ。
このCSSをONにしたら、アニメーションがGPU使ってる行われるので、適宜利用可能そうであれば取り込んでください、とかたまり来るな。
0382デフォルトの名無しさん2016/09/05(月) 21:45:07.44ID:g6CwjeFO
こういうwebアプリってどうやってつくってるんですか
pdgを縮小とかって、どうやってやってるのでしょうか?
javascriptは関係ありますでしょうか?
https://smallpdf.com/jp
0383デフォルトの名無しさん2016/09/05(月) 23:05:01.84ID:La2BdvKf
void func(int a)
{
0384デフォルトの名無しさん2016/09/05(月) 23:10:26.66ID:La2BdvKf
未使用変数への対処ですが、C言語だと

void func(int /*a*/)
{
....
}

void func(int a)
{
(void)a;
....
}

こんな風にしますが、JavaScriptだと定石みたいなのはありますか?

$('#element').on('mousedown', function(/*event*/) {

});

でよさそうな気がしますが、アロー関数の時は

$('#element').on('mousedown', /*event*/() => {

});

こんな風にしないとだめでかっこ悪いきがします。
0385デフォルトの名無しさん2016/09/06(火) 00:15:41.30ID:vTB9MQXO
>>384
未使用変数を必ず対処しないといけないということはない。
例えばイベントハンドラで引数にeventやeを取るのは「形」だ。
型宣言みたいなもんで、それを書いてあるからといって必ずしも
eventを利用しないことは皆知っている。

むしろその関数が別定義されていても、eventを受ける関数、
イベントハンドラの定義なんだと瞬時にわかるので意味がある。

つまりイベントハンドラとしてイベントを受け取るということだけで、
機能が満たされて意味的に「未使用」ではないとも見れる。
もしくは本当にイベントをトリガーとして関数を呼び出したいだけであれば、
引数を書かないでおくべき。

コメントアウトする文化はないのでけしてしてはいけない。
上で述べた引数をあえて書く、書かないは、関数の機能やニュアンスを表すための
弱い動的型付け言語における読み手に対する情報の追加だ。

しかしコメントアウトは書き手にとってのメタ的な情報でしか無い。
読み手に未使用変数の情報を伝えても何のプラスにもならないし、
何らかのニュアンスの提示かと思わせて混乱させるだけだ。
■ このスレッドは過去ログ倉庫に格納されています