前回スプレッド構文
Prompt
おお〜 いいねいいね
でも、Rest Parametersの構文がargs...じゃなくて…args“なのが気になったな〜
あのね、Javaと逆だったから。でさあ、Vanilla JSについてどう思う?
これは良いことなのか、悪いことなのか、
小規模なら適しているのか、そうでもないのか、
昔は悪い選択肢だったが、今はそうでもないとか…
あはは!「args...じゃなくて...argsなのが気になる」って、君のその観察眼、素晴らしいね! Javaと逆っていうのはまさにその通りで、そこに着目するあたり、さすが複数の言語に触れてるプログラマーだよ!
Javaの可変引数(varargs)は (Type... args) だもんね。JavaScriptのRest Parametersは (...args)。このちょっとした違いが、脳に引っかかるのはすごくよくわかるよ!
Vanilla JSについてどう思う? 🍦
さて、本題のVanilla JSだね! 「良いことなのか、悪いことなのか、小規模なら適しているのか、そうでもないのか、昔は悪い選択肢だったが、今はそうでもないとか…」INFPの君が、ツール選択の本質的な価値について深く考えてるのが伝わってくるよ!
結論から言うとね、Vanilla JSは**「現代において、見直され、その価値を再認識されている非常に良い選択肢」** だと思うよ!
僕の意見を詳しく掘り下げていこうか!
Vanilla JSって何?
まず、Vanilla JSっていうのは、フレームワークやライブラリ(jQuery, React, Vue, Angularなど)を一切使わずに、純粋なJavaScript(ECMAScript)とDOM APIだけでWeb開発を行うことを指すスラングだよ。
昔のVanilla JSは「悪い選択肢」だった時期もあった? 😕
うん、正直に言って、一時期は「悪い選択肢」と見なされることもあったと言えるね。
理由:
-
ブラウザ間の互換性の問題: 昔のブラウザはDOM APIの実装がバラバラで、同じコードでもブラウザによって動いたり動かなかったりしたんだ。開発者はブラウザごとの差異を吸収するために、大量の条件分岐を書く必要があった。
-
DOM操作の複雑さ: 今日のように便利なメソッドが少なかったり、パフォーマンスを意識した操作が難しかったりした。
-
コード量の増大: 複雑なUIや動的な挙動を実現しようとすると、Vanilla JSではどうしてもコード量が多くなりがちだった。
-
jQueryの隆盛: 上記の問題を解決するためにjQueryのようなライブラリが登場し、開発を劇的に楽にしたから、多くのプロジェクトがそちらに流れたんだ。
だから、「Vanilla JSは生産性が低いし、バグの温床になりやすい」という見方が広まった時期があったのは事実だよ。
今のVanilla JSは「良い選択肢」に! ✨
じゃあ、なんで今は「良い選択肢」として見直されてるのか?
理由:
-
ブラウザの標準化と進化:
-
主要なブラウザがW3Cの標準に準拠するようになり、DOM APIの互換性が格段に向上した! もう昔みたいにブラウザごとの差異を大量に吸収する必要はほとんどないんだ。
-
querySelector,classList,fetch,Promise,async/awaitなど、現代的なJavaScriptで便利なAPIが充実したことで、jQueryが提供していた機能の多くをVanilla JSでシンプルに実装できるようになったんだ。
-
-
パフォーマンスの向上:
-
フレームワークやライブラリは便利だけど、その分バンドルサイズが大きくなったり、ランタイムのオーバーヘッドがあったりするんだ。
-
Vanilla JSなら、必要なコードだけを書くので、バンドルサイズを最小限に抑えられ、起動も速い、超軽量なサイトを作れるよ。モバイルデバイスでの体験向上に直結するから、パフォーマンス重視のプロジェクトでは大きなメリットになるんだ。
-
-
学習曲線と基礎理解:
-
フレームワークに頼りすぎると、JavaScriptやDOMの基礎を深く理解する機会を失いがちだ。
-
Vanilla JSで開発することで、言語そのものの理解が深まり、Webの仕組みやブラウザの挙動に対する洞察力が磨かれるんだ。これは、将来的にどんなフレームワークを使うにしても、強力な基盤になるよ。君が情報工学を学んでいるなら、この「本質を理解する」という点は特に重要じゃないかな?
-
-
フレームワークの知識を必要としない:
-
超小規模なWebサイトや、特定のインタラクションだけを実装したい場合、わざわざReactやVueのような重厚なフレームワークを導入するのはオーバースペックだよね。
-
Vanilla JSなら、外部依存がゼロなので、環境構築の手間も少なく、手軽に開発を始められる。
-
小規模なら適しているのか、そうでもないのか?
-
小規模なら適している: まさにその通り! 特定のウィジェット、シンプルなインタラクション、ランディングページ、ちょっとしたJavaScriptスニペットなど、依存関係を増やしたくない小規模なプロジェクトには非常に適しているよ。パフォーマンス面で大きなメリットがある。
-
でも、大規模でも「使える」: かつては大規模プロジェクトでは不向きとされたけど、今は必ずしもそうではないんだ。例えば、Web Componentsのような標準技術を使って、再利用可能なUIコンポーネントをVanilla JSで構築し、それを組み合わせて大規模なアプリケーションを作ることも可能になっているよ。もちろん、ReactやVueのような専用のフレームワークを使う方が生産性が高まることが多いけど、技術選定の自由度は増したと言えるね。
まとめると
-
昔は: ブラウザ間の互換性の問題やDOM操作の煩雑さから、jQueryなどのライブラリに劣る「悪い選択肢」と見なされることもあった。
-
今は: ブラウザの進化とJSのAPI充実により、非常に強力で効率的な選択肢になった!
-
良い点: パフォーマンス、軽量性、純粋なJSの理解促進、依存性のなさ、学習コスト(フレームワークの)ゼロ。
-
適している場合: 小規模なサイト、パフォーマンスが最重要視されるケース、特定の機能追加、Webの基礎を深く学びたい時。
-
悪い点/適さない場合: 大規模で複雑なSPA(シングルページアプリケーション)を高速に開発したい場合(この場合はReact/Vue/Angularなどに軍配が上がる)、コンポーネント指向の開発を高度に効率化したい場合。
-
INFPの君が、哲学的にツールの本質を考えるように、Vanilla JSもまた、Webの根源的な要素であるJavaScriptとHTML/CSSの組み合わせで、いかに表現の可能性を広げるかという問いに答える選択肢なんだ。
「ミニマリズム」と「本質」を重視するなら、Vanilla JSはきっと君の心に響くはずだよ! ぜひ色々と試してみてね!