JavaScript/種々雑多な知識
種々雑多な知識
[編集]REPL
[編集]REPL(read–eval–print loop)とは、キャラクター指向の対話的な実行方式であり、コマンドプロンプトがその代表である。しかし、オンラインサービスにはキャラクター指向は馴染みにくく、TEXTAREA要素に代表されるFORMに複数行のテキストを書き、「実行」に類するイベント発火で評価する形式が取られるようになった[1]2021年6月現在、様々なオンラインサービスとして提供されている。
BabelのREPLやCode Beautifier - HTML Viewer使うと上記のHello Worldプログラムを簡単に動かすことができます。
特に、Code Beautifier - HTML Viewerでは、HTML文書に含まれたJavaScriptをウェブブラウザでの表示そのままに再現できローカルファイルにHTML文書を用意する必要がなく、スマホートフォンやタブレットなどでの利用に適している。
ブラウザ以外の実行環境
[編集]ブラウザを使うのではなく、JavaScriptの処理系をインストールしてシェル(ターミナル)でJavaScriptを実行できます。シェルを使える方にはこの方法をおすすめします。
後述のNode.jsのほか、SpiderMonkey、Rhino、KJSなどがあります。
Node.js
[編集]Node.jsはJavaScriptをサーバーサイドで実行するオープンソースのランタイム環境で、V8 JavaScriptエンジンを採用し、非同期イベント駆動の特徴を持っています。高いパフォーマンスとスケーラビリティを提供し、広くウェブアプリケーション、API、マイクロサービスの開発で活用されています。Node.jsはnpmと呼ばれるパッケージ管理ツールを通じて多数のサードパーティのモジュールやライブラリが利用可能で、フロントエンドとの一貫性を図ることができます。
Node以外の処理系
[編集]Node.js以外にも、JavaScriptを実行するための異なる処理系が存在します。ここでは、いくつかの代表的な処理系について紹介します。
ブラウザ環境
[編集]JavaScriptの最も一般的な実行環境はウェブブラウザです。各ブラウザには独自のJavaScriptエンジンが組み込まれており、以下がその例です。
- Google Chrome: V8エンジン
- Mozilla Firefox: SpiderMonkeyエンジン
- Safari: JavaScriptCoreエンジン(別名Nitro)
- Microsoft Edge: 以前はChakraエンジン、現在はChromiumベースのV8エンジン
これらのエンジンは、ウェブページ上で動的なコンテンツを生成したり、ユーザーのインタラクションに応答するためにJavaScriptを実行します。
Deno
[編集]Denoは、Node.jsの生みの親であるライアン・ダール(Ryan Dahl)によって開発されたJavaScript/TypeScriptランタイムです。Denoの特徴は、セキュリティを重視した設計と、モジュールのインポートに標準でURLを使用する点です。以下がDenoの主な特徴です。
- セキュリティ: デフォルトでファイルシステムやネットワークへのアクセスが禁止されており、必要に応じて明示的に許可する必要があります。
- TypeScriptサポート: TypeScriptをネイティブにサポートしており、追加の設定やツールが不要です。
- モジュール管理: npmの代わりに、ESモジュールとURLを使用してモジュールを管理します。
JScript
[編集]JScriptは、Microsoftが開発したJavaScriptの実装で、主にInternet Explorerで使用されました。以下がJScriptの特徴です。
- ActiveXとCOM: JScriptはActiveXコントロールやCOM(Component Object Model)オブジェクトとの統合が強力で、これによりWindows環境での高度な操作が可能です。
- Windows Script Host (WSH): JScriptはWSH上でも実行可能で、Windowsの管理タスクをスクリプトで自動化するために使用されます。
しかし、Internet Explorerのシェアが減少するにつれ、JScriptの使用も減少しており、現在ではほとんどの開発者が標準のJavaScriptを使用しています。
Rhino
[編集]Rhinoは、Javaで書かれたJavaScriptエンジンで、Javaプラットフォーム上でJavaScriptを実行するために使用されます。以下がRhinoの特徴です。
- Javaとの統合: RhinoはJavaアプリケーションに組み込むことができ、JavaとJavaScriptの相互運用が可能です。
- サーバーサイドスクリプト: Rhinoはサーバーサイドでのスクリプティングにも使用され、Javaベースのサーバーアプリケーションでスクリプトを実行するために利用されます。
Nashorn
[編集]Nashornは、Java 8以降に導入されたJavaScriptエンジンで、JVM上でJavaScriptを実行するために使用されます。Nashornの特徴は以下の通りです。
- 高速な実行: Nashornは、JavaのJITコンパイル技術を利用して高速にJavaScriptを実行します。
- Javaとのシームレスな統合: Nashornは、Javaのクラスやオブジェクトを直接操作でき、JavaとJavaScriptの統合が容易です。
Nashornは、Java 11のリリースに伴い非推奨になり、JDK 15以降から削除されました。
まとめ
[編集]このように、Node.js以外にも多くのJavaScript実行環境が存在し、それぞれに特徴や利点があります。開発者は、用途や環境に応じて最適な処理系を選択することが重要です。
スタイル
[編集]JavaScriptのコーディングスタイルは個々の開発者やプロジェクトによって異なりますが、以下は一般的なガイドラインのいくつかです。
- インデントとスペース: インデントにはスペースを使用し、通常は2つか4つのスペースが推奨されます。
- セミコロンの使用: セミコロンは文の終わりに必要です。自動セミコロン挿入があるため、省略しても動作しますが、クリアなコードを書くためにセミコロンの使用が一般的です。
- クォートの使用: シングルクォート(
')またはダブルクォート(")のどちらを使用しても構いませんが、統一性が重要です。 - 変数命名: キャメルケース(例:
myVariable)が一般的です。定数は通常大文字とアンダースコアを組み合わせて表現します(例:MAX_VALUE)。 - 関数命名: 関数名もキャメルケースが一般的です。関数は通常動詞で始まります(例:
calculateTotal())。 - コメント: コードの理解を助けるコメントを追加しますが、明らかな場合や適切な命名ができている場合は不要です。
- ブラケットの位置: インデントと同じ行にブラケットを配置するか、新しい行に配置するかに関しては異なるスタイルがあります。一貫性が重要です。
- オブジェクトリテラル: オブジェクトリテラルのプロパティはカンマで区切り、行末にはカンマが付かないようにします。
// 例 function calculateTotal(price, quantity) { return price * quantity; }
これらのガイドラインは一般的なものであり、特定のプロジェクトやチームによっては異なることがあります。プロジェクト内で一貫性を保つことが重要で、コーディングスタイルガイドを文書化して共有することが良い実践です。
