英語版クイズをもとにAIで日本語で作成しました。出典は日本語版ウィキペディアにリンクしています。
JavaScriptは、HTMLやCSSと並ぶWorld Wide Webの中核技術です。1995年にネットスケープでわずか10日間で開発されて以来、ブラウザからサーバ、デスクトップ、モバイルまで利用範囲を広げてきました。 このクイズでは、LiveScriptからの改名やJScriptとの関係といった歴史、ECMAScript 4の破棄などの標準化の経緯、Promiseやプロトタイプといった言語の特徴、そしてNode.jsやWebAssembly、セキュリティの基本まで幅広く出題します。 現役の開発者も、これから学ぶ人も、自分の知識を試してみてください。
全30問の答えと解説。クイズで遊ぶ
Q 01Node.jsのモジュールのインストールに通常使われるツールは?
npm
モジュールは単なるファイルとしてインストールすることもできます。このツールは依存性の扱いも含め、モジュールの構築・インストール・更新を助けます。
Q 02JavaScriptが起源を持つWebブラウザは?
Netscape Navigator
現在ではウェブサイトやバックエンド、デスクトップやモバイルのアプリケーションまで、多岐にわたる用途で利用されています。
Q 03JavaScriptへの型の導入を可能にするトランスパイル言語は?
TypeScript
JavaScriptは動的型付けで、コード上に型表記ができないため完全な型検査は困難です。この言語は型ノーテーションを導入し、トランスパイル時に型検査を行います。
Q 04ブラウザで実行可能なバイナリ形式の命令セット「Wasm」の正式名称は?
WebAssembly
JavaScriptを置き換えるものではなく、協調して動作するよう設計されています。C言語やC++、Rustのコードをコンパイルして、CPU負荷の高い処理をネイティブに近い速度で実行できます。
Q 05ページを再読み込みせずに新しいコンテンツを読み込む技術の名称は?
Ajax
SNSでページを離れることなく新しい投稿を表示できるのはこの技術のおかげです。Gmailのようなアプリケーションがこの利点を活用し、大きなトレンドとなりました。
Q 06JavaScriptを1995年に10日間で開発したネットスケープの技術者は?
ブレンダン・アイク
開発にあたって上司からは「Javaのような外観にしてくれ」「初心者に優しく」「Netscapeブラウザのほとんどなんでも制御できるように」という注文がありました。
Q 07Node.jsが構築されているJavaScriptエンジンは?
V8
イベント化された入出力を扱うサーバサイドの実行環境で、Webサーバなどスケーラブルなネットワークプログラムの記述を意図して作られました。
Q 08JavaScriptのオブジェクト指向は、クラスではなく何に基づいている?
プロトタイプベース
関数型の面では第一級関数をサポートし、関数を第一級オブジェクトとして扱えます。手続き型、オブジェクト指向、関数型のスタイルを併用できる言語です。
Q 09Promiseを同期的なコードのように記述できるJavaScriptの構文は?
Async/await
ネットワーク越しのリクエストのような「待ち」のある処理に対処するため、JavaScriptは非同期処理をサポートしています。最も基本的な記述方法はコールバック関数です。
Q 10JavaScriptの開発当初の名称は?
LiveScript
改名の背景には、当時サン・マイクロシステムズのJavaが大きな注目を集めていたことと、ネットスケープがサンと業務提携していたことがありました。
Q 11米国で「JavaScript」の商標を保有している企業は?
オラクル
商標はもともとサン・マイクロシステムズに発行されたもので、2009年の買収の際に譲渡されました。2024年には解放を求める書簡が回覧されています。
Q 121996年にInternet Explorer 3.0に搭載されたJavaScript実装の名称は?
JScript
この搭載をきっかけに、手軽さからJavaScriptは急速に普及しました。ただし初期はベンダーごとの独自拡張のため、ブラウザ間の互換性は極めて低い状態でした。
Q 13新しいECMAScript構文を旧バージョンへ変換する目的で最も広く使われるツールは?
Babel
こうしたトランスパイラにより、開発者は最新の言語機能を使いながら古いブラウザとの互換性を維持できます。別の言語からJavaScriptへの変換にも使われます。
Q 14ブラウザで最も基本的なセキュリティ機構とされるのは?
Q 21JavaScriptでグローバルオブジェクトを指す標準の名前は?
globalThis
グローバルオブジェクトはコードの最上階層に属します。各実行環境はこれとは別に、ブラウザのDOM APIやNode.jsのfs APIといった独自のAPIを提供しています。
Q 22XSS対策で、innerHTMLの代わりに用いるべきプロパティは?
textContent
XSSはユーザーの入力を無害化せずにHTMLへ挿入することで発生し、セッション情報の窃取やページの改ざんにつながります。
Q 23ECMAScript 4が破棄され、ECMAScript 5が標準化された年は?
2009年
標準化作業がMozillaやAdobe、Googleらの推す案と、MicrosoftやYahoo!の推すECMAScript 3.1に分裂した影響で、2008年8月に大きな方針転換がありました。
Q 24MozillaがECMAScript 4の案に文法を一部取り込んだ言語は?
同一生成元ポリシー
あるオリジンから読み込まれた文書やスクリプトが、他のオリジンのリソースにアクセスすることを制限します。ログイン中の銀行サイトの情報を悪意あるサイトが盗むのを防ぐ仕組みです。
Q 15XSSなどの攻撃を検知・軽減するセキュリティレイヤー「CSP」の正式名称は?
コンテンツセキュリティポリシー
サイト管理者は信頼できるスクリプトの取得元ドメインをHTTPヘッダで指定でき、許可されていないドメインからの読み込みはブラウザに拒否されます。
Q 16JavaScriptへトランスパイルされるプログラミング言語の総称は?
altJS
新しい言語を定義してそのコードをJavaScriptに変換することで、新たな演算子や記法を導入できます。代表例にCoffeeScriptやPureScriptがあります。
Q 17C言語で実装された、最初のJavaScriptエンジンの名称は?
SpiderMonkey
作者自身がNetscape Navigatorのために作成したものです。全てJavaで記述されたエンジンRhinoも、後にGoogleへ移籍するNorris Boydらによって作られました。
Q 182024年9月、JavaScript商標の解放を求める書簡を先頭に立って主導した人物は?
ライアン・ダール
この人物はNode.jsの作者でもあります。書簡にはJavaScriptの生みの親も賛同し、署名者は14,000人を超えました。
Q 19非同期処理のNode.jsでは起きないとされる問題は?
クライアント1万台問題
解決の中核となったのは、シングルスレッドでの非同期処理を容易に実装できるイベント駆動型プログラミング環境です。
Q 20JavaScriptの中核仕様がEcmaインターナショナルで標準化された年は?
1997年
Ecmaインターナショナルは通信に関する標準を策定する国際団体です。標準化以降、実装間の互換性は向上し、DOMなど関連仕様の互換性も高まりました。
Python
Mozillaはこの案を自身でも実装していました。2006年の時点では、この仕様に基づいてJavaScript 2.0を作成することを表明していました。
Q 252000〜2003年のJavaScript 2.0構想がまとまらなかった原因は?
ネットスケープとマイクロソフトの対立
このときネットスケープが提案していた案はアドビのActionScript 2.0に、マイクロソフトの案はJScript .NETへと引き継がれました。
Q 26ECMAScript 4に入る予定だった機能が先送りされた計画の名称は?
ECMAScript Harmony
この計画は後にECMAScript 2015として標準化が完了しました。ECMAScript 5以降、Mozillaの実装もECMAScriptへの準拠を謳うようになり、JavaScript 2.0は事実上死語となりました。
Q 27Node.jsがWindowsの非同期I/O環境IOCPに対応するために作成したライブラリは?
libuv
この抽象化により、Unix系プラットフォームとWindows向けの両方のリリースが可能になりました。Windowsネイティブ版のリリースにはマイクロソフトの支援がありました。
Q 28Node.jsの作者を雇用し、その成長を支援した企業は?
Joyent
Node.jsは2009年に作成されました。PythonのTwistedやRubyのEventMachineと同様の目的を持つ、イベント駆動のサーバサイド環境です。
Q 29「JavaScript」の米国商標が最初に発行された日は?
1997年5月6日
発行先はサン・マイクロシステムズでした。2009年の買収に伴い、商標は現在の保有企業に譲渡されています。
Q 30JavaScript商標の解放を求める書簡の署名者は何人以上?
14,000人
署名者の中にはJavaScriptの生みの親も含まれていました。この商標は2009年の企業買収の際に現在の保有者へ譲渡されたものです。