質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

Q&A

5回答

245閲覧

webサイトを作るときにjQueryではなくjavascriptから書く必要がある要件ってどんな要件でしょうか。

yamagata_user

総合スコア40

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

0グッド

0クリップ

投稿2017/12/23 07:05

jQueryはjavascriptで記述されていますが、javascriptがわからなくてもjQueryを使えばjavascriptを全く意識することなく簡単にいろいろな機能を実装できるというのがjQueryの特徴だと思っています。
jQueryを使えばスライダーもクリックしたときの様々な処理もハンバーガーメニューも簡単に実装できます。
webサイトを作るときにjQueryがあればjavascriptがいらないように思ったのですがjavascriptの知識がないと実現できない要件というのはあるのでしょうか。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答5

0

まず整理しましょう.

jQueryがあればjavascriptがいらない

完全な間違いです.

jQueryはJavaScript言語で記述されたDOM操作ライブラリであり, 簡単に言うと開発便利キットです. 一方JavaScript言語はプログラム言語です.

NOTE:当初jQueryをフレームワークとして記述していましたが, ライブラリのほうが適切との指摘があったため記述を修正しています.

一般にライブラリはプログラム言語を用いて作られています. そのため, 単純にjQueryとJavaScriptを比較することに意味はありません. (jQueryを操作するためにJavaScriptが必要となるのだからJavaScriptの知識が必要ない訳がない)

jQueryを使えばjavascriptを全く意識することなく簡単にいろいろな機能を実装できる

これはむしろ「DOMを意識することなく様々な機能を実装できる」の間違いでしょう. 因みにDOMはHTML文書を操作するためのAPIです.

まずはこの「API」「プログラム言語」「ライブラリ」の関係を意識して下さい.


さて, 「javascriptDOMから書く必要がある要件」とは概ね次の二つが考えられます.

  • jQueryだけでは実現できないDOM(WEBAPI)の機能を利用する場合

あなたはjQuery万能説を唱えられていますが, 世の中にはjQueryだけでは実現できない仕組み(canvas/SVG/webgl/サウンドe.t.c.)はたくさんあります. そのため仕方なく別のライブラリやフレームワークを導入したり, フルスクラッチでコードを記述することはよくあります.

  • jQueryを導入するまでもない場合

jQueryは高機能なものの, そこまでの機能を必要としないケース(機能が単純な場合)もあります. またjQueryを導入することによるWEBパフォーマンスの劣化を嫌って敢えて直接DOMを操作することもあります.

投稿2017/12/23 07:30

編集2017/12/23 07:57
defghi1977

総合スコア4756

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2017/12/23 07:46

jQuery って、ライブラリじゃないですか?
defghi1977

2017/12/23 07:53

確かにフレームワーク(構造)よりもライブラリ(機能)っぽいですね. ご指摘ありがとうございます.
yamagata_user

2017/12/24 02:18

ありがとうございます。 「jQueryだけでは実現できないDOM(WEBAPI)の機能を利用する場合」「jQueryだけでは実現できない仕組み」とは具体的にはどういったものでしょうか。 canvas、SVG、webgl、サウンドは一つもわかりませんでした。 svgというと画像ファイルの種類のsvgしか知らないですがそれじゃないですよね。 jQueryは量が多く読みこみが遅くなってしまうのでjsで必要なものだけを書くというのは納得です。 ただそうしたパフォーマンス向上という目的以外でjavascriptから書かないと実現不可能な実装ってあるの?と素朴に疑問に思ったんです。
defghi1977

2017/12/24 02:27

>svgというと画像ファイルの種類のsvgしか知らないですがそれじゃないですよね。 まさしくそのSVGです. またWEBブラウザで利用できるAPIの内, jQueryがサポートしているのは(HTML)DOMのごく一部の操作だけです. 以下にその一覧が載っています https://developer.mozilla.org/ja/docs/Web/API これらは必要に応じて自作のスクリプトで操作する必要があります.
guest

0

DOM

javascriptがわからなくてもjQueryを使えばjavascriptを全く意識することなく簡単にいろいろな機能を実装できるというのがjQueryの特徴だと思っています。

jQueryは、そのほとんどがDOM APIを代替するものなので、「JavaScript」を「DOM」に置き換えます。

jQueryしか知らない人たち

私は逆にjQueryはDOM APIを理解しないと、使いこなせないと考えています。
jQueryしか知らない人は「理屈は分からないけど、このように書くと上手く動く」という知識で解決していくタイプです。

例えば、下記コードを書くと、「動的に挿入した要素でもclickイベントが働く」ということをその人は知っています。

JavaScript

1jQuery.on('click', '.foo', function () {});

しかし、理屈は理解していないのです。
ですので、「.html() でノードを上書きすると、同じHTMLで書いているはずなのに内部で定義していたclickイベントが働かない!なぜ?」のように同じ原理で動かない不具合にも気が付くことが出来ません。
従って、その度に他人に質問をし、「このコードはこういう性質があるから、気を付けよう」とケース別に知識を増やしていく傾向があります。
私からすると、それはとても効率が悪い学習方法です。
DOMの基本さえ理解していれば、いくらでも応用が利くのですが、それを知らない故に「コード」と「コードが持つ性質」の対応関係を丸暗記しようとします。

また、jQueryしか知らない人は、jQueryで出来ることと出来ないことの境界線を知りません。
ですので、「~を実現するjQueryのコードを教えて下さい」と質問をします。
それがjQueryで出来ないことだった場合、回答不可能なわけですが、彼らはコードを欲しがります。
彼らは理屈を知らないので、「このコードを書くとこういう結果になる」という経過原理を無視したアプローチを求めます。
彼らはそのつもりがないのかも知れませんが、いわゆる丸投げ質問になりがちです。

何故か上手くいったことをスルーすべきか

最近の質問スレッドですが、本件も近い問題を抱えていると考えています。

「jQueryしか知らない人たち」は、コードを書いても何故上手く動くのかを理解していません
彼らは上手く動いている部分だけを見て満足してしまい、上手く動かない部分(バグ)を見逃してしまう可能性があります。
通常はコードを書いてアルゴリズムを頭の中に構築して上手く動くように考えるものですが、彼らが理解している部分は表面上のものなので、深部(DOM)のアルゴリズムを考えることが出来ません。

jQuery と DOM

jQueryはそのほとんどがDOM APIで動作するライブラリです。
DOMを理解することはjQueryの内部動作を理解することに繋がります。
私としては、jQueryの前にDOMを学ぶことをお勧めします。

Re: yamagata_user さん

投稿2017/12/23 08:22

編集2017/12/24 03:04
think49

総合スコア18162

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yambejp

2017/12/23 09:28

回答が空欄になっています
think49

2017/12/24 00:45

細い回線では編集時のプレビューが出来ず、空白バグが誘発されるようです。 プレビューはJS単独では動作しない仕様なんですね…。 安定した回線で再度、編集し直しました。
yamagata_user

2017/12/24 02:32

ありがとうございます。 DOMは一応少しだけ学習して今も学習中ですがほとんど理解できていないです。 「.html() でノードを上書き」とか「DOM API」とか「API」といった用語の意味もよくわかっていないレベルなのですが、なんとなくjavascriptのことがわかりました。 jQuery自体がjavascriptがわからないプログラミングのできない人でもwebサイトでいろいろな機能を実現できることを売りにしているように私は感じているのですが、そうなると逆にjavascriptを学ぶ必要性がわからなくなっています。 ただ、javascriptとかDOMを使うのを避け続けても、というか避けることすら意識しなくてもjQueryのライブラリさえ覚えるなり見つけるなりしてそれを少し書き換えるだけでwebサイトを作るだけならどんな要件でも満たせてしまうように思うのですがあえてjavascriptの知識がないと実現不可能という状況が思い当たりません。 他人がjavascriptを使って作ったwebサイトを修正しろと言われたときとか、そういう特殊なケースということでしょうか。
think49

2017/12/24 03:44

> jQuery自体がjavascriptがわからないプログラミングのできない人でもwebサイトでいろいろな機能を実現できることを売りにしているように私は感じているのですが、 私はこの見解に反対する趣旨の回答をかいています。 「私は逆にjQueryはDOM APIを理解しないと、使いこなせないと考えています。」の部分ですね。 親記事に追記しましたが、下記スレッドの問題に近い問題と考えています。 https://teratail.com/questions/104067 --- たとえ話をすると、こういうことです。 Aさんがある社内業務を機械化する素晴らしいツールを開発しました。 社内の人間は絶賛し、全員がそのツールを使い、手作業でやっていた時の業務フローは忘れ去られました。 Aさんの退職後、Aさんの開発したツールに致命的な不具合が見つかり、社内業務が立ちゆかない状況まで追い込まれました。 しかし、退職したAさんに連絡は出来ませんし、ツールを使う前の業務フローを誰も知らないので、その業務が出来なくなりました。 ツールとはjQueryを指し、手作業の業務フローはDOMを指します。 DOMを理解できる人間が社内に一人でもいれば、そうした細かなバグにも対応出来るでしょうが、誰もいなければ修正することすら出来ません。 DOMを理解している人はコードを書く前のアルゴリズムを描いている時点でバグの存在に気が付くことが出来ます。 しかし、jQueryの動作がブラックボックス化しているjQueryしか知らない人たちは、バグが再現されなければ気が付くことが出来ません。 --- 他に、発想力の差があります。 jQueryしか知らない人たちは、jQueryで今までに書かれたサンプルコード内の発想しかする事が出来ません。 DOMを理解している人は、DOMで出来てjQueryに出来ないことも含めて発想できます。
guest

0

jQueryを使えばjavascriptを全く意識することなく簡単にいろいろな機能を実装できる

ある意味正解だと思います
ただしjavascriptは汎用的な言語であり、jQueryの得意分野は
主にオブジェクトの掴み方とUIの表現でしかなく
jQueryの関数群として用意されていないものはたくさんあります。
(算術関数なんかはとくにそう)
jQueryでもし必要になった場合はjavascriptの記述を利用して
実行する必要があります。
また当然構文についてはjQueryはjavascriptのルールにしたがって
実行していますので「javascriptがいらない」というのは意味が通りません

投稿2017/12/23 07:28

yambejp

総合スコア114775

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

5年以上前の話かな…。
jQueryもJSなので知らなくていいということはない。

teratailで扱う話題としては一番変化が激しいのがJSなので5年前レベルとは常識が変わりすぎてて話が通じない。

投稿2017/12/23 07:24

kawax

総合スコア10377

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yamagata_user

2017/12/24 02:19

ありがとうございます。 例えばどのようなときにjavascriptで書くのでしょうか。
guest

0

jqueryをダウンロードして、開発者ツールのステップ実行で動かしてみると、途中でjqueryのソースが動いてくれているのが分かります。
jqueryはUIやDOM操作など便利に実装できるツールですが、javascriptだけで表現することも可能です。

 jqueryだけできればいいというのは間違いで、jqueryはサイトを重くしてしまう原因にもなりますし、jquery以外にもjavascriptのフレームワークはたくさんあります。どれを使うべきかを作るものによって考えて、その違いについて学んでいくというスタンスがベターかと思います。

投稿2017/12/24 09:13

imamoto_browser

総合スコア1161

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問