+ JavaScript の質問用スレッド vol.130 + [無断転載禁止]©2ch.net
■ このスレッドは過去ログ倉庫に格納されています
JavaScript を自ら学ぶ人のための質問スレッドです。
>>2-6のテンプレを読んだ上で質問してください。次スレは>>950が>>2のテンプレ案(本スレで改善案があれば考慮)を元に立ててください
■規則/推奨ルール
・メール欄を空欄にし、名前にレス番を入れることを強く推奨(なりすまし防止)
・質問内容は具体的に。言葉だけでなく、出来る限り再現性を確認したサンプルコードの掲示。
・質問テンプレートの利用推奨。
・質問への「答え」だけでなく「意見」を出しても良い。
■禁止行為
・丸投げ質問
・迷惑スクリプトの質問
・オレオレ用語の使用(一般的な用語を使用する事)
・煽り、批判等の他人を不快にさせる行為(批判の代わりに「AよりBが良い」のような代案を出す事)
・回答者同士のレスは原則禁止(>>6を参照)
・ライブラリの話題の投稿(>>6を参照)
■質問テンプレート
【環境】OS, ブラウザをバージョンと共に記入してください。(ex: IE8, Firefox4)
【何をしたのか】何をしたら問題の現象が発生するのか。再現手順を具体的に書いてください。
【エラーメッセージ】エラーメッセージがあれば正確に書き写してください。(Windows なら「コピット」を活用)
【期待する結果】最終的にどういう結果を望んでいるのか、を書いてください。
【サンプルコード】現象を再現可能な最小限のコードを書いてください。
1レスに収まらないならコード投稿サイトを利用してください。
http://jsdo.it/ http://jsbin.com/ http://jsfiddle.net/ http://ideone.com/ なんというか、「え?プログラミングってどんなものか知りたいの?」
「じゃあ今見てるブラウザでF12押して、コンソールに1+1って入力してみて」
ってできる気軽さがJSの醍醐味なのに、初期学習者に対してjQueryを押し付けるのは無粋なんだよ
開発者としてならどんどん使ってどうぞ、でもJS初心者の学習には不要 つうかそういうようなプログラミングを勉強したいっていう層や動機無視で
すぐ業務が云々言い出す奴も無粋極まりないと思う
最初はChromeとか今使ってるブラウザで動けばいいじゃない
でもそれを公開しようとした段階で別のブラウザだと仕様が違うことを知り、
じゃあどうするのかを考えるのも勉強だと思うよ
最初からjQueryありきで進めるのはやはり良くない 基本的に俺もjqueryいきなり勧めるやつ否定派だけど
jqueryオワタ論は懐疑的。chrome-extensionで今開いているサイトの使ってるライブラリが分かるやつがあるんだけど
qiitaではreact押しでjquery否定な感じだが
現実はそこまでreact使ってるサイトはないし、jquery使ってるサイトは多い。
多分、理想と現実のギャップを目撃してるんだろうけどね。 このスレはそういう流れをもう何度も繰り返してきたんだよ
>>11にまともなテンプレが載ってるから目を通すと不毛な争いを避けられる どう考えても避けられるとは思わない
歴史の教科書や犯罪事例が合っても犯罪がなくならないのと同じ 何れにしてもライブラリの話題は他所でやれってことでしょ
jQueryなんて専用スレあるんだしそっちに誘導してやればいい >>690
> jQueryがオワコン気味なのは紛れもない事実
せめてシェアが大きく下がってから言うか、
jQueryよりも優れているというコードを書いてから言ってほしい所 >>693
> とりあえずdom操作目的ならvue.jsとかreactを使うから
現実から目をそらさないで考えてみ。
今までHTMLとCSSで書いていました!
というのをvue.jsやreactに置き換えた所あるかい?
vue.jsやreactの欠点は、既存のHTML+CSSに
JavaScriptを付け足して動作をカスタマイズするという
用途に向かないんだよ。 >>696
> qiitaではreact押しでjquery否定な感じだが
> 現実はそこまでreact使ってるサイトはないし、jquery使ってるサイトは多い。
> 多分、理想と現実のギャップを目撃してるんだろうけどね。
理由ははっきりしていて、react押しなのはもともとJavaScriptを
多用するサイトを使っていて、JavaScriptコードのメンテナンスコストが
高くなってしまってるという前提が有るからなんだよ。
残念ながら既存のウェブサイトはページの一部にJavaScriptを利用しているだけ
例えば会社の地図を表示するためにAPIを使ったりとかね
その程度なんだからreactに乗り換えるわけないよ Reactは最近むしろReact Nativeが最近勢い良いじゃん
知ってるか?WebブラウザのためのReact風にNativeアプリを作れるようにした
React NativeをWebブラウザ用に書き出すためのReact Native Webというのがあって
そこそこ使われてるんだぞ?まさに奇想天外だな >>706
> Reactは最近むしろReact Nativeが最近勢い良いじゃん
あー、それは理解できるな
Reactはアプリ用であってウェブサイト用ではない
と考えるとReact Nativeになるもんな
まあどちらにしろウェブサイト用のjQueryに変わる
ライブラリはまだ登場してないことに変わりはないが reactのjsxはキモいんだがわかるやついない? jQueryに変わるウェブサイト用のライブラリってのも必要性が分からんけどな
jQueryで何千行も書いたりしないんだろう?
実際はせいぜい十回くらい要素取るためだけに使ってるだけじゃないの?
なら別にそれ使わなくたって大した違いないじゃん
lodashに含まれる僅か数種類の機能を数カ所で使いたいからといって
わざわざlodashをライブラリに加えたりしないでしょ
逆にアプリケーションとしてフレームワークを使うってことなら
それこそ何千行の短縮になるから価値も理解できるけどさ
なんか取り敢えずちょっとはマシになるだろうから何も考えず取り敢えずちょっと使っとけ
みたいなのは容認できないわ >>709
いやねあんたの言う「大したことはない」は
「面倒だけど、それぐらい我慢できる」って意味になってるんだよ
なんでいちいち我慢しなきゃならんのかと 各ブラウザのバグ対応も有るしな
jQueryをやめると、コードは5倍ぐらいになるからな なんのメリットもないのに使わなくても我慢できるから使うな的な
理屈を言うのやめろよ。メリットを言えよ。メリットを 古いブラウザは動かなくさせられるメリットがある、とか >>712
いや、メリットは暗に言ってるだろ
管理するライブラリが減る、管理しなくて済むと
仮に倍違うとしても、ここで質問されるのはせいぜい数行のもの
その数行の節約のために質問者にjQueryのDL、もしくは管理と
勉強を強制するのはそれこそメリットよりデメリットが上回ってるでしょ
バグ対策とかいうのもここでの質問には基本的に必要ないんだよ
まあ仮に質問者が教えていただいたコード僕のIE6じゃ動きませんと言ったとしても
じゃあjQuery使うと良いよというのが良いのかどうかは分からんがな 必要に応じて適切なライブラリやフレームワークを推奨するんなら分かるけれど
何でもかんでもjQuery有りきっていうのは間違ってるってことでしょ
メリットが有るなんてどのライブラリやフレームワークだって同じだし
ならこの世の全てのライブラリやフレームワーク使うのか?って話になる >>714
> 管理するライブラリが減る、管理しなくて済むと
普通の言語だったらそうだろう
だけど、ブラウザの場合はどうしても避けられない
ブラウザの種類というものが有る。
ブラウザの種類を管理しなければいけないんだ。
jQueryを使うと管理するブラウザの種類が減る
それぞれのブラウザのバグの対応を行ってくれる
そっちのメリットのほうが大きいよ >>715
> 必要に応じて適切なライブラリやフレームワークを推奨するんなら分かるけれど
> 何でもかんでもjQuery有りきっていうのは間違ってるってことでしょ
いや、場合によってはjQueryじゃなくてlodashを勧めたりしてるよ
momentを勧めたことも有る。なんでもjQueryではなく
その他が適切な場合は別の方法を提示してるよ。
単にAngularやReactが適切な質問がないってだけ
それは俺が適切じゃないと思ってるだけで、
jQuery以外のライブラリやフレームワークが適切だと思えば
その例をサンプルコード付きで出してあげればいいじゃない >>714
> 仮に倍違うとしても、ここで質問されるのはせいぜい数行のもの
> その数行の節約のために質問者にjQueryのDL、もしくは管理と
人生で数行しかコードを書かないならそうだろうね。
でも違うからね。 >>716
だから上でも一度言ったがお前の仕事ならそうすればいいさ
俺も仕事ならそうする
でもこのとかのスレの性質上コード作成依頼は当然お断りだし、一問一答のような場合が殆ど
レベルとしては小中学校の義務教育内容なんだよ
jQueryを使ってどう書けますか?どういう道具を使えば実現できますか?という質問なら
その都度、何も考えずにこのライブラリ使えばこれで済むよ、でいいんだよ
でも質問者的にはJSを勉強しよう、理解しようという趣旨で一般的な質問してきてる場合が多い
ここは「JavaScript を自ら学ぶ人のための質問スレッド」だからね
そうじゃないと必然的にコード作成依頼に近くなってくる
その上でここなどでの回答というのは最も単純に物事を解決できるものではなくて
きちんと質問者がJSの勉強を出来るものでないといけないんだよ
誤解しないでほしいけどそれはライブラリの話するなと言うことではないよ
ただjQueryは必須だといってJSに全く向き合おうとしないのは、
何だかんだ理由つけて完全に素のJSから逃げようとするのは行き過ぎということ 質問者に決めてもらえばいい
『私は小中学生なので高校や大学で習う公式で教えないで下さい』か
『私は社会人なので率直に役立つ方法を教えて下さい』か >>719
質問者を育ててるつもりかもしれんがそれはお前のエゴ
育つやつは勝手に育つ
俺達は自由に解答すればいいだけ
それをどう捉えて活かすかは完全に質問者の責任 そんなに「JavaScriptを学ぶ」に
こだわるならDOM APIはブラウザが提供しているAPIであって
JavaScriptではないと言わないといけないな。
どうせダブルスタンダードなんだろうけどな。 ChromeでのみWebGL2のcreateVertexArrayが時々nullを返すんですけど返す条件って分かりませんか?
あとcreateVertexArrayやcreateBufferで作成したオブジェクトも参照が切れた時点でGCで回収されるので明示的にdeleteしなくても大丈夫ですよね? >>723
できれば再現するための最小コード貼ってみて
まあ経験上はタイミング的問題というかバグなのかもしれない
それと昨今のメモリリークバグはdeleteは関係ないよ
JSオブジェクトとリンクされた内部バッファの管理の問題だから
JS側では別策を取る以外何もできないというのが主流だから
とは言えChromeは1年くらい前からネイティブとJSのGCを統合する仕組み強化したから
Canaryでも使っていない限り滅多にお目にかかれないと思うけどね
(ただしBlobURLを使うと仕組み上どうしてもリークする) 取ってつけたように適当な質問しなくていいから(呆) >>722
それは流石にない
まずは銃に頼らず筋肉を付けろと言ってるところに
じゃあ人間の本質は脳だから手足を無くせと言うようなもの >>726
例えが的外れ。
まずjQueryはJavaScriptで使うライブラリなのだから
使う言語はJavaScriptだ。jQueryを使っていても
JavaScriptを使う以上、JavaScriptの勉強になる。
DOM APIはJavaScriptではない。これはJavaScriptの仕様書に
DOM APIがのってないことからも明らか
つまり、おまえはJavaScriptとDOM APIを混同している。 > まずは銃に頼らず筋肉を付けろと言ってるところに
これを「道具に頼らず筋肉をつけろ」と言い換えれば
DOM APIの立場ってのがよく分かるだろう。
jQueryは道具。DOM APIは筋肉。普段の生活で何を使っている?
朝起きてシャワー浴びて着替えて電車に乗って
パソコンを使って仕事をして食べ物を調理して寝る
川に行って水を組んで火を起してお湯にして
何キロも歩いて紙と鉛筆で図表を作って
狩りをして火をおこして焼いて寝る
これが「道具に頼らず筋肉をつけろ」ということだ
無人島ツアーじゃあるまいし、そんなことをして遊ぶ気はない。
どうしても必要なところだけ頑張ればいい DOM APIはCで言うところのOSのAPI(の一部)みたいなもんだと思う
CとJavaScriptは単独ではコンパクトな辺りはよく似てると思う OS、例えばWindowsだと、Win32APIを持ってきて、
これが基礎だと騒がれる気持ちがわかるだろう? ぶっちゃけjQueryが一番息が長くて
これからもほとんど変わらず生き残り続ける
ライブラリだよ。
AngularとかReactとか1年後に今の知識が
使えるかどうか怪しい オワコン云々よりjQueryに変わるような優れたライブラリがないだろ?w まあbootstrapがjQueryに依存してるからなあ
生き残ってる理由はそれが大きいな >>730
数年前ならWin32APIだったと思うが今なら(ネイティブではないが).NETくらいには感じてるよ >>739
本末転倒ってやつだなw
○○が良いから乗り換えた・・・乗り換える理由がある。正しい
○○が嫌だから乗り換えた・・・乗り換える理由がない。間違い Underscore を使っている、Backbone.js でさえ、
イベントハンドラーを追加した要素の、祖先の要素を削除したら、メモリリークを起こす
jQuery では、祖先の要素を削除したら、
その子孫のイベントハンドラーもすべて削除するから、メモリリークしない
jQueryの互換ライブラリのZepto.js でも、メモリリークする それは仕様の違いであってメモリリークとは言わない
もしかしたら生子要素を再利用する場面もあるかもしれないし >>727
> DOM APIはJavaScriptではない。これはJavaScriptの仕様書に
> DOM APIがのってないことからも明らか
JavaScript APIという用語を知らないのか
それから、JavaScriptという仕様書はないぞ
君が「JavaScriot = ECMAScript」と曲解してるだけ そんな文句を付けて何か意味があるのかは知らんが
取り敢えずJavaScriptという仕様書はかつてあったけどな
__defineGetter__やらESの仕様にないがブラウザが実装しているものについて
WHATWGが定義していたが拡張も概ねES仕様書に乗るようになったので削除された >>743
jQueryもJavaScript APIだよ JavaScript APIとはなにか?
https://www.google.co.jp/search?q="JavaScript+API"&oq="JavaScript+API"&sourceid=chrome&ie=UTF-8
Maps JavaScript API - Google Developers
JavaScript API for Office - MSDN - Microsoft
JavaScript API の例 - IBM
Garoon JavaScript API - cybozu developer network JavaScript APIって呼び方意味分からんわ
JavaにJSの環境を公開するAPIならそう呼ぶのはわかるが
ライブラリはあくまでライブラリでしょ
jQueryくらい薄いラッパーではAPIと名乗ることすらおこがましい >>744
「JavaScript, aka.」の事だとしたら、相互運用性の為に非推奨機能をまとめただけの補完的仕様で「JavaScriptの仕様」と呼べるものでもなかったと思う JavaScriptによるAPIなのか
JavaScriptのためのAPIなのか
コンテキストによるだろ それ単体で「JavaScriptの仕様」と呼べるものでもなかったと思う
に訂正しておく 過去にW3CでJavaScript APIという単語を見た覚えがあるけど、今見るとなくなってるね
まあ、API for JavaScriptとでもいえばいいんじゃない? 今の論点はEcmaScriptという仕様の実装であるJavaScriptに
DOM APIが含まれているものは存在しないというところでしょ DOM APIはJavaScript以外からも呼び出せる
だからDOM APIがJavaScript APIなのではなく
DOM API for JavaScript というものがあるという話
"JavaScriptのための" DOM APIなのだから
JavaScriptに DOM APIが含まれていないのは明らか Google Chrome等のJavaScript実装はDOM APIを実装しているだろ >>753
その理屈はおかしい
クロスプラットフォームなAPIはどのプラットフォームでも実装できるというだけ
JavaScritptでもJavaでもPHPでも使えるAPIがDOM API >>754
> Google Chrome等のJavaScript実装はDOM APIを実装しているだろ
その答は「含んでない」
ということを明らかにすれば君も納得できるんじゃない?
なぜ含んでいないのが明らかなのかというと、Google Chrome等のJavaScript実装は
V8 Engineなわけだが、このV8 エンジンは ブラウザではないnodeでも使われてる。
nodeにDOM APIがないのは言うまでもない
そしてもう一つDOM APIを実装しているものとしてBlinkという別の名前がある
https://www.chromium.org/blink
そのblinkから興味深いコメントを持ってきたよ。DOMがBlinkにあることの証拠になるだろう。
> Finally, we’d like to explore even larger ideas like moving the entire
> Document Object Model (DOM) into JavaScript. This has the potential to
> make JavaScript DOM access dramatically faster, but will involve a very
> large re-write of WebKit’s DOM implementation?something that would
> be difficult in WebKit which has two supported JavaScript engines.
Google翻訳
> 最後に、Document Object Model(DOM)全体をJavaScriptに移行するなど、
> より大きなアイデアを検討したいと考えています。これは、JavaScript DOMへの
> アクセスを劇的に高速化する可能性を秘めていますが、WebKitのDOM実装を
> 非常に大きく書き直す必要があります.WebKitでは2つのJavaScriptエンジンがサポートされていません >>755
JavaでもPHPでも使えるから
Java APIでありPHP APIだって
言いたいって話でOK? >>757
それぞれの言語仕様の範疇でDOM APIを呼び出しているわけだから、その解釈でいいんじゃない?
同じDOM APIでもJavaとJavaScriptでは命名規則が微妙に違うよね >>756
仕様と実装の違いは理解できるか?
node.jsはDOM APIを実装しなかった
Google ChromeにおけるJavaScript実装はDOM APIを実装した
それだけの違い >>758
そりゃそうだろ。
概念的にはこんな感じだ
[DOM] - [JavaScript用バインディング] - [JavaScript]
[DOM] - [Java用バインディング] - [Java]
見ての通り、JavaにDOMが含まれているわけじゃない >>759
node.jsとChromeは両方共
同じJavaScript実装を使ってるんだよ。
おまえまずそこからだな。 これ仕様の話をしてんの?
実装の話をしてんの?
「JavaScriptの仕様」なんて話をしている輩は論点がずれている気がするけど そもそも、JavaScriptという名の仕様が存在しないから、JavaScript実装なんてワードを持ってくるのが間違いなんだな >>763
そもそもそれ言ってるやつ「仕様」と「実装」の意味がわかってないと思う
なんかブラウザのことを実装、JavaScript(?)のことを仕様と思ってるっぽい
正しくはブラウザはJavaScript実行環境。
V8エンジンなどのJavaScript実装とBlinkなどのレンダリングエンジン(DOM含む)
これがJavaScript実行環境
JavaScript実行環境は、JavaScriptの仕様でも実装でもない V8エンジンを使っただけどオレオレブラウザ作っても
JavaScript実装したぜすげーだろとはいえないからなぁ な? >>765はブラウザのことをJavaScript実装って言ってるわけだよ
バカってわかっただろ? >>724
どういう環境・状況で発生するか分からないので最小コードは分かりません
開放してないのでメモリリークでnullになってるのかと思ったので
deleteVertexArrayやdeleteBufferで開放してないせいだと思いましたが
明示的にしなくても良いということでしょうか? ドライバのバグかもしれんしとりあえずnullが来ても良いようにするしかない >>770
しなくてもJSオブジェクトの参照が切れれば遠くないうちに回収される
deleteを呼ぶとそれを早める事ができる
と仕様に書いてある 子供の頃自治会の野球やらされ続けて苦痛だったがjQuery推しの奴らはそれと似てるな
ただ皆と上手く遊べるように運動神経付けたいですってだけなのに素振りを押し付けてくる
実際遊ぶことが多いのは野球が多いにしても問題があると思うけどな まーたわけのわからないことを言い出した
野球批判したいだけなら野球板でやればいいだろ マジレスすると、野球の批判ではなく野球のように有名だが特殊なものを
それが常識であるかのように押し付ける事への不満だろ わかってて野球批判へ話をすり替えるためにレスしてるんでしょ >>775
マジレスすると
1. 野球とjQueryが似てると言うだけでその根拠が書いていない(だから似てないかもしれない)
2. 1以外(似てるという根拠がない)野球の話しかしていない
3. 子供の頃野球やらせて苦痛だという前提の話をしてる(苦痛じゃない人には当てはまらない)
4. 運動神経付けたいだけの人という前提で話をしてる(野球やりたい人を含めていない)
5. 素振りを押し付けてくるという前提で話をしてる(野球をさせてくれる所に当てはまらない)
つまり勝手な前提を取っ払って、自分の感想部分を明確にすると
「俺は運動神経付けたいだけなのに、俺の自治会では野球をさせてもらえず
素振りばかりやらされて苦痛だった。でも世の中には野球が好きで野球させてくれる
恵まれた人もいるだろう。そういう自治会であれば苦痛でもなんでもないのに。
そういうところがjQueryと似ている」
と言ってるわけだよ
一言で言うと「俺は野球嫌いで野球やらされるのも嫌い。お前らもそうだろ。そうに決まってる」
と言ってるわけで・・・あぁ、一緒だ
「俺はjQuery嫌いでjQueryやらされるのも嫌い。お前らもそうだろ。そうに決まってる」
おまえの好みを押し付けるな。余計なお世話だって話と一緒だ。
野球やるかやらないかは、勧められた人が決めれば良いこと
提案はなんでもOKだ。 >>788
おまえが野球嫌いだからって他人も同じだと思うな
野球勧められてやるかどうかは、本人が決めることだ
他人のおまえが指図すんな。だまってろ ただの感想にこれだけ突っかかってる時点で自己矛盾してるわけだが、自覚がないのが厄介だな なぜ感想に突っかかることが矛盾になるのか?
意味が分からんな あれかな?
jQueryに文句言っても、黙っていてください
その代わりjQueryに文句言いませんから
とかいう矛盾w jQueryに対して何らしかの不満を持ってて嫌われているんじゃなく
それを使う人のとある振る舞いが注意されてるだけなのにまだわからないか
呆れるね >>783
あんた質問者でも回答者でもないんだろ?
それが余計なお世話ってまだわからないのか?
注意してるのはおまえであって、質問者じゃない
感謝すべき回答をおまえは自分が気に食わないからって
書き込むなって言ってるだけ。
少しは口をつぐんだら?おまえが黙っていれば
おまえに文句はつけないよ?w 「とある振る舞い」とかぼやかして書くから
何が言いたいの分からんが、やって良いことを羅列しておこう
・jQueryの話題をすること
・jQueryのサンプルコードを書くこと(むしろ大歓迎)
・jQueryのすばらしさを語ること
・jQueryのデメリットを言わないこと(ほかの人がやればいい)
・jQuery以外のサンプルコードを書くこと(むしろほかの人がやれ) > おまえの好みを押し付けるな。余計なお世話だって話と一緒だ。
ブーメランだよなあ 「言論の自由」を主張しながら、他者に対しては言論封殺。
そういう行為を二枚舌と言います。 >>785
jQuery信者のjQuery信者によるjQuery信者の為の言論統制 別にjQueryに限らなくても、ちょっとした数行の質問回答程度で
やれ関数型で書くのが安全だのワンライナーがスマートだの拘り過ぎるやつは鬱陶しい
しかもそれが今回のケースでは適当というのならまだ有用だしなんの問題もないけど
jQueryの奴らはDOM操作が伴えば必ずそうしろというただの信仰心の押し付けを行ってるだけだもの 俺はjQueryがどちらかといえば嫌いだが、jQueryユーザには罪はないと思っていたんだ
だが、このスレを見てると、jQueryユーザの宗教染みた押し付けが酷くて、jQueryユーザそのものに嫌悪感を抱くようになりつつある
良識あるjQueryユーザにはいい迷惑だろうな >>789
それはおまえの思い込み。
ただ単にjQuery使ったほうがシンプルにかけるから
書いているだけ。被害妄想も大概にしとけ >>786
ブーメランじゃないよ。
選択肢を増やすのは良いこと。
その選択肢をなくそうとするのはダメなこと。
選択肢をなくそうとするのではなくて
別の選択肢をいわないと >>789-790
そもそもここは荒らしがこの流れにするためにテンプレ撤去して立てたスレなんだから
良識も糞もないんだよ ■ このスレッドは過去ログ倉庫に格納されています