< 技術に対する興味 | プログラマーにアルゴリズム脳はいらない >

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に変換する。

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

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: プログラミング