JavaScriptにまつわるエトセトラ
JavaScriptに関連する技術用語をまとめました。
個人的な主観も含まれます。
間違いがあれば教えて下さい。
JavaScript
ブラウザ上で動くプログラミング言語。Javaとは全然別モノ(お約束)
JS
JavaScriptの略
jQuery
JavaScriptライブラリ。JavaScriptのコードをより容易に記述できるようなる。document.querySelector(“div”)が$(“div”)で表現できるようになる。悪魔的に便利。
DOM
ドキュメントオブジェクトモデルの略。簡単に言うとHTMLのタグ要素をプログラミングにおけるオブジェクトのように扱うこと。JavaScript側からHTMLを解釈すると、各タグ要素はDOMというオブジェクト扱いとなる。
Ajax
Asynchronous JavaScript + XML の略。JS上の非同期処理。JSはインタプリタ言語なので、処理の実行は記述順に「A→B→C」と順番に処理される。しかし、非同期処理を組み込むとBだけを順番の流れから外して処理を走らせる、といったことができる。「A→C」処理を行いつつ、同時に「B」の処理も行う、という動作を非同期処理という。この時、Cの処理はBの結果に依存させてはいけない(Promiseなどの話はここではしない)。「jQueryを使う=Ajaxを使う」と思っていた時期が私にもありました。
VanillaJS
純粋なJavaScriptのこと。PureJSともいう。主に「jQueryに依存していませんよ」の意で使われる。
ECMAScript(エクマスクリプト)
JavaScriptの言語仕様のこと。各ブラウザごとにそれぞれ独自の言語仕様が存在したので、それを標準化するために生まれた。
ES
ECMAScriptの略
ES5
ECMAScriptのバージョン5。IEで動く。世間一般的に「JavaScript」といえばこの仕様を指す場合が多い。
ES6(ES2015)
2015年に採択されたJavaScriptの仕様。IEが対応してない。おじさんたちから見れば「JavaScript 2.0」みたいな存在。
Polyfill
ES5に存在しない関数やライブラリの代替コードのこと。ES6で書かれたコードをES6未対応のブラウザ上で動かせるように挙動をサポートしてくれるライブラリ。関数やライブラリ単位でpolyfillのモジュールが存在する。
トランスコンパイラ(トランスパイラ)
とあるプログラミング言語を別のプログラミング言語に変換するツール。主にES6をES5に変換したり、altJSをJavaScriptに変換することを指す。
Babel
ES6のコードをES5に変換するツール。トランスパイラ。雑に表現するとBabelはソースに対するサポートでPolyfillはバイナリ(実行)に対するサポートを行う。
ActionScript
今は亡きFlash内で使われていたECMAScriptを拡張した太古の言語。ブラウザ上で動いている。JavaScriptとは全く別モノ。
altJS
alternative JavaScriptの略で代替JavaScript言語のこと。独自の言語仕様を策定して、より実装しやすい言語を目指したもの。最終的にトランスパイラを使ってJavaScriptに変換する。AltJSは日本特有の呼ばれ方らしく、英語圏ではJavaScript FlavorsやFlavors of JavaScriptというらしい(素のJSをVanillaJSというのでこっちの表現のほうが合ってる感はある)。
CoffeeScript
altJSの一種。簡素さと可読性の高い構文を採用したJavaScript。ES6の登場によりイニシアチブが薄れた。
TypeScript
altJSの一種。TSと略す。ES5を拡張した言語。静的型付けを持ったJavaScript。Microsoft産。2020年現在一番波に乗ってる感がある。
Dart
altJSの一種。FlutterというSDKを使えばReactNativeみたいにネイティブアプリの開発用言語としても使える。Google産。
Elm
altJSの亜種。言語仕様とフレームワーク(ReactやVueに当たる部分)がセットになっている。コンパイルでHTMLとCSSとJSのフロンエンド一式を吐き出す。マイクロサービスが徹底されていない限り採用できなさそう。
Node
Node.jsとも言う。サーバーサイドで動くJavaScript。バックエンドもJavaScriptにすれば全部JavaScriptで書けるっしょ?ってノリから生まれた、知らんけど。
Deno
Nodeの後継者として生まれたサーバーサイドで動くJavaScript。TSで書けたりnpmの依存をなくしたりしている。
CommonJS
ブラウザ以外(サーバーサイド)で動くJavaScriptの仕様を定めることを目標としたプロジェクト。≒Nodeの言語仕様という位置づけっぽいがNodeの作者からは「お前の仕様なんて気にしないよ?」と言われているらしく、この言葉自体もあまり聞かないのでオワコン扱いでいいと思う。
Bower
npm的なやつ。オワコンらしいのであまり知る必要はない。
npm
Node(JavaScript上)で利用するパッケージを管理するツール。RailsにおけるBundler的な存在。
yarn
npmをラッピングしてより使いやすくしたnpm。npmよりコマンドのタイピング量が少なくて済む。lockファイル登場によりBundler感が増した。
Express
Node.js用のWebアプリケーションフレームワーク。
Angular
一昔前に流行ったJavaScriptのフレームワーク。ReactとVueの登場により影を潜めた感がある。
Backbone.js
一昔前に流行ったJavaScriptライブラリ。ReactとVueの登場により影を潜めた感がある。
React
JavaScriptライブラリ。UI描画管理(HTML)も含まれるのでフレームワークに近い役割をこなす(SPAだとReactだけでMVCをすべて実装することになる)。FaceBook産。
Redux
JavaScriptライブラリ。主にReactと併用して利用される。Reactをフレームワークっぽく使うために便利なので、だいたいReact+Reduxというセットで扱われる。Fluxという設計思想をもとに作られている。
JSX
altJSの一種。HTMLも記述できるJavaScriptの拡張構文。ReactやVueのソースコードとして主に採用される。UIを管理するライブラリの性格上、コードがcreateElement()地獄になるので、それを回避するためにHTMLを直接書けるように拡張したらしい。Babelを使ってJSにコンパイルする。
Vue
Vue.jsとも言う。JavaScriptのフレームワーク。指定したIDの中のHTMLをハイジャックして、<span>{ hoge.name }}</span> や <li v-for="item of items"> など既存のHTMLソースコードにVue独自の構文を差し込むことが可能。拡張子が.vue のやつはコンパイルが必要。
Vuex
Vue上で利用するJavaScriptライブラリ。ReactにおけるRedux的なもの。
Nuxt.js
VueとNodeを使ったWebアプリケーションフレームワーク(SSR=サーバーサイドレンダリング)。マイクロサービスが徹底されt(ry
Next.js
ReactとNodeを使ったWebアプリケーションフレームワーク。Nuxt.jsのReact版。 マイクロサーb(ry
NestJS
NuxtでもNextでもなくNestJSというものもあるらしい。よくわからないし、調べるつもりもない。
WebRTC
Web Real-Time Communicationの略。ブラウザとブラウザ間でP2P通信を行うための仕組み。主にそれを利用するために用意されたAPI群のこと。ブラウザからカメラやマイクなどのデバイスにアクセスするAPIも用意されている。APIはブラウザが提供しているので、特になんの前準備もなく手元のHTMLに実装していける。IE?知らない子ですね。
Grunt
JavaScript(Node)製のタスクランナー。make的なやつ。複数のファイルをまとめたり、Minifyしたり、トランスパイルを行うために使う。gulpの登場により影を潜めた感がある。
gulp
Gruntをより早く簡潔にしたやつ。
Browserify
Nodeのモジュールをブラウザで動くJSに変換するツール。
Webpack
JS、CSS、画像ファイルをまとめる高機能なモジュールバンドラー。コンパイル言語で言うところのビルダー(コンパイラ+リンカ)に近いイメージ。最終的に一つのバイナリ(実行)ファイルが出来上がるのと同じように、最終的に一つのJSファイルが出来上がる。トランスパイラだとaltJSをJavaScriptに変換するだけだが、これだとさらにCSSと画像も取り込んで一つのファイルにまとめることができる。
Minify
ファイルサイズを軽量化すること。ソースコードからスペースや改行、コメントなどを取り除く。Minify後のファイルは人類には読めなくなる。MinifyされたJSライブラリは*.min.jsといった拡張子で表現される。
ESLint
JavaScriptの静的検証ツール。構文チェックやコード規約のチェックなどに使う。RailsでいうRubocop的なやつ。
V8
Googleが開発したJavaScriptエンジン。JavaでいうところのJVM的なやつ。ChromeやNode.jsのランタイムとして採用されている。
Tag: プログラミング