JavaScript とは

JavaScript は、デベロッパーがインタラクティブなウェブページを作成するために使用するプログラミング言語です。ソーシャルメディアフィードの更新からアニメーションやインタラクティブマップの表示まで、JavaScript 関数はウェブサイトのユーザーエクスペリエンスを向上させることができます。クライアント側のスクリプト言語として、これは World Wide Web のコアテクノロジーの 1 つです。例えば、インターネットを閲覧しているときに、画像カルーセル、クリックして表示するドロップダウンメニュー、またはウェブページで動的に変化する要素の色を見ることで、JavaScript の役割を知ることができます。

JavaScript は何に使うのですか?

歴史的に見ると、ウェブページは本のページのように静的なものでした。静的なページは、固定されたレイアウトで情報を表示することが主で、私たちが現代のウェブサイトに期待するすべてのことを実現できてはいませんでした。そこで、ウェブアプリケーションをよりダイナミックに動かすために登場したのが、ブラウザサイドの技術である JavaScript です。JavaScript を使うことで、ブラウザはユーザーの操作に反応し、ウェブページのコンテンツレイアウトを変更することができるようになりました。

言語が成熟するにつれ、JavaScript のデベロッパーはライブラリやフレームワーク、プログラミング手法を確立し、ウェブブラウザの外で JavaScript を使用するようになりました。現在では、クライアントサイドとサーバーサイドの両方の開発に JavaScript を使用することができます。次のサブセクションで、一般的なユースケースをいくつか紹介します。

歴史的に見ると、ウェブページは本のページのように静的なものでした。静的なページは、固定されたレイアウトで情報を表示することが主で、私たちが現代のウェブサイトに期待するすべてのことを実現できてはいませんでした。そこで、ウェブアプリケーションをよりダイナミックに動かすために登場したのが、ブラウザサイドの技術である JavaScript です。JavaScript を使うことで、ブラウザはユーザーの操作に反応し、ウェブページのコンテンツレイアウトを変更することができるようになりました。

言語が成熟するにつれ、JavaScript のデベロッパーはライブラリやフレームワーク、プログラミング手法を確立し、ウェブブラウザの外で JavaScript を使用するようになりました。現在では、クライアントサイドとサーバーサイドの両方の開発に JavaScript を使用することができます。次のサブセクションで、一般的なユースケースをいくつか紹介します。

 

JavaScript はどのように動作するのですか?

すべてのプログラミング言語は、英語のような構文を機械語に翻訳し、オペレーティングシステムがそれを実行することで動作します。JavaScript は大きく分けて、スクリプト言語とインタプリタ言語の二つに分類されます。JavaScript のコードは翻訳されます。つまり、JavaScript エンジンによって基礎となる機械語コードに直接翻訳されます。他のプログラミング言語では、コンパイラがコード全体を別のステップで機械語にコンパイルします。したがって、すべてのスクリプト言語はプログラミング言語ですが、すべてのプログラミング言語がスクリプト言語というわけではありません。

JavaScript エンジン

JavaScript エンジンは、JavaScript のコードを実行するコンピュータプログラムです。最初の JavaScript エンジンは単なるインタプリタでしたが、最近のエンジンはすべて、パフォーマンスを向上させるためにジャストインタイムまたはランタイムコンパイルを使っています。

クライアントサイド JavaScript

クライアントサイド JavaScript は、JavaScript がブラウザ上で動作する方法を指します。この場合、JavaScript エンジンはブラウザのコード内にあります。すべての主要なウェブブラウザは、独自の組み込み JavaScript エンジンを搭載しています。

ウェブアプリケーションデベロッパーは、マウスのクリックやマウスホバーなど、さまざまなイベントに関連するさまざまな関数を持つ JavaScript コードを記述します。これらの関数は、HTML と CSS に変更を加えます。

ここでは、クライアントサイドの JavaScript がどのように動作するかの概要を説明します。

1.   お客様がウェブページにアクセスすると、ブラウザがウェブページをロードします。

2.   ロード中に、ブラウザはページとそのすべての要素 (ボタン、ラベル、ドロップダウンボックスなど) を、ドキュメントオブジェクトモデル (DOM) と呼ばれるデータ構造に変換します。

3.   ブラウザの JavaScript エンジンは、JavaScript のコードをバイトコードに変換します。このコードは、JavaScript の構文とマシンの間の仲介役です。

4.   ボタンをマウスでクリックするなどのさまざまなイベントが、関連する JavaScript のコードブロックの実行を引き起こします。その後、エンジンがバイトコードを解釈し、DOM に変更を加えます。

5.   ブラウザは新しい DOM を表示します。

サーバーサイド JavaScript

サーバーサイド JavaScript は、バックエンドのサーバーロジックでコーディング言語を使用することを指します。この場合、JavaScript エンジンはサーバー上に直接置かれます。サーバーサイド JavaScript の関数は、データベースにアクセスし、さまざまな論理演算を実行し、サーバーのオペレーティングシステムによって引き起こされるさまざまなイベントに応答することができます。サーバーサイドスクリプティングの主な利点は、お客様の要件、お客様のアクセス権、ウェブサイトからの情報要求に基づいて、ウェブサイトの応答を高度にカスタマイズできることです。

クライアントサイドとサーバーサイドの違い

動的という言葉は、クライアント側とサーバー側の両方のJavaScriptを表します。動的な動作とは、必要に応じて新しいコンテンツを生成するために、ウェブページの表示を更新する機能のことです。クライアントサイドとサーバーサイドの JavaScript の違いは、新しいコンテンツを生成する方法にあります。サーバーサイドのコードは、アプリケーションロジックを使用し、データベースからデータを変更することで、動的に新しいコンテンツを生成します。一方、クライアントサイドの JavaScript は、ユーザーインターフェイスのロジックを使い、すでにクライアントにあるウェブページのコンテンツを修正することによって、ブラウザ内で新しいコンテンツを動的に生成します。この 2 つの文脈では意味が若干異なりますが、関連性があり、どちらのアプローチもユーザーエクスペリエンスを高めるために協働します。

動的な機能の実装の他に、2 つの JavaScript の使い方のもう一つの違いは、コードがアクセスできるリソースにあります。クライアントサイドでは、ブラウザが JavaScript の実行環境を制御します。コードは、ブラウザがアクセスすることを許可したリソースにのみアクセスすることができます。例えば、ダウンロードボタンを押さない限り、ハードディスクにコンテンツを書き込むことはできません。一方、サーバーサイドの関数は、必要に応じてサーバーマシンのすべてのリソースにアクセスすることができます。

JavaScript ライブラリとは何ですか?

JavaScript ライブラリは、ウェブデベロッパーが標準的な JavaScript の機能を実行するために再利用できる、あらかじめ書き込まれたコードスニペットの集合体です。JavaScript ライブラリのコードは、必要に応じてプロジェクトの残りのコードに差し込まれます。JavaScript アプリケーションのコードを家と考えるなら、JavaScript ライブラリはデベロッパーが家の機能を向上させるために使用できる既製品の家具のようなものです。

以下は、JavaScript ライブラリの一般的な使用例です。

データの可視化

データの可視化は、たとえば管理画面やダッシュボード、パフォーマンスメトリクスなど、ユーザーが統計を見るために非常に重要です。

Chart.js、ApexCharts、Algolia Places などのライブラリには、データをチャートや地図で表示するウェブアプリケーションを作るために使える関数が組み込まれています。

DOM 操作

jQuery や Umbrella JS などのライブラリは、メニューアニメーション、イメージギャラリー、ボタン、ライトボックスなど、ウェブサイトの標準機能のコードを提供しているため、ウェブ開発を容易にすることができます。

フォーム

すべてのウェブ開発では、ウェブサイトの訪問者が誰かに連絡したり、製品を注文したり、イベントに登録したりするためにフォームを使用します。wForms、LiveValidation、Validanguage、qForms などのいくつかの JavaScript ライブラリは、フォームの検証、レイアウト、条件、変換などのフォーム機能を簡素化します。

数学とテキスト関数

多くのウェブアプリケーションでは、数式を解いたり、日付、時刻、テキストを処理したりする必要があります。そのようなリクエストをすべてサーバーに送るのではなく、クライアントサイドで処理する方がより効率的です。ウェブデベロッパーは、Date.js、Sylvester、JavaScript URL ライブラリなどの JavaScript ライブラリを使ってこれを実現しています

JavaScript フレームワークとは何ですか?

JavaScript ライブラリと同様に、JavaScript フレームワークは、異なる機能を実行し再利用できる、あらかじめ書かれたコードスニペットの集合体です。しかし、JavaScript ライブラリがオンデマンドで使用するための特別なツールであるのに対し、JavaScript フレームワークはあらゆるウェブアプリケーションを形成し整理するのに役立つ完全なツールセットです。JavaScript アプリケーションのコードを家に例えるなら、JavaScript フレームワークは家を建てるために使われるブループリントです。

JavaScript フレームワークのユースケース例をいくつか紹介します。

ウェブアプリケーションとモバイルアプリケーションの開発

AngularJS は、e コマースアプリケーション、リアルタイムアプリケーション、動画アプリケーションなどのウェブアプリケーションの開発とテストを簡素化するフレームワークです。また、React Native は、iOS や Android 向けのネイティブレンダリングによるモバイルアプリケーション開発をサポートするフレームワークです。

レスポンシブウェブ開発

レスポンシブウェブサイトでは、あらゆるデバイスで一貫したユーザーエクスペリエンスを実現します。例えば、モバイルやタブレットの画面は、デスクトップやノートパソコンの画面よりも小さいです。小さな画面でも、例えばウェブサイトの端が切れることなく、正確にデータを表示、および提示したいものです。Bootstrap や Ember.js などのフレームワークを使用することで、デベロッパーはレスポンシブデザインの利点を受け、異なるプラットフォーム間でウェブサイトのルックアンドフィールを簡単にカスタマイズすることができます。

サーバーサイドアプリケーション開発

Node.js は、サーバーサイドのオープンソース JavaScript フレームワークで、ブラウザの外側で JavaScript コードを実行します。デベロッパーはこのフレームワークを使用して、スケーラブルで高速、かつ信頼性の高いネットワークベースのサーバーサイドアプリケーションを構築します。HTTP リクエストとデータストリームを処理し、ファイルシステムをサポートし、複数のバックエンドプロセスを同時に管理することができます。

HTML と CSS とは何ですか?

ハイパーテキストマークアップ言語 (HTML) とカスケーディングスタイルシート (CSS) は、デベロッパーがフロントエンド開発で使用する他の 2 つのプログラミング言語です。HTML は、ほとんどのウェブページの基本的な構成要素です。段落、セクション、画像、見出し、テキストはすべて HTML で記述されています。コンテンツは、HTML に書かれた順番にウェブサイト上に表示されます。

CSS は、HTML のコンテンツにスタイルを適用するために使用するスタイルルールの言語です。背景色、フォント、列、枠線など、ウェブサイトの要素をデザインするために使用できます。

HTML とCSS とJavaScript

この 3 つの言語が一体となって、どのようなサイトでも良好なユーザーエクスペリエンスを実現します。HTML と CSS は主に静的なコンテンツを操作できますが、クライアントサイドの JavaScript コードと統合して、コンテンツを動的に更新することも可能です。

たとえば、HTML ページのスクリプトコードブロックには、その中に JavaScript を含むことができます。HTML ページがブラウザにロードされると、ブラウザは HTML と内部の JavaScript コードの両方を処理することができます。
 

JavaScriptの利点は何ですか?

簡単に学び、使える

JavaScript の構文は Java プログラミング言語からヒントを得ており、学習やコーディングが容易です。デベロッパーは、クライアントサイドスクリプティングのために、ほとんどすべてのウェブサイトとモバイルアプリケーションで JavaScript を使用しています。Node.js は、過去 10 年間にバックエンドのコーディングでも大きな人気を得ています。多くの主要なストリーミングやビデオプラットフォームは、Node.js でコーディングされています。

プラットフォームの独立性

他のプログラミング言語と異なり、JavaScript はどんなウェブページにも挿入でき、他の多くのウェブ開発フレームワークや言語と一緒に使用することができます。一度書いたら、どんなマシンでも JavaScript のコードを実行することができます。このように、JavaScript はアプリケーション開発のプラットフォーム非依存性を実現します。

サーバー負荷を軽減する

JavaScript は論理演算を実行し、サーバーの仕事の多くをクライアント自身で行うことができるため、サーバー負荷やネットワークの混雑を軽減するために使用することができます。例えば、登録フォームに入力する処理を考えてみましょう。JavaScript は、携帯電話の欄に 10 桁の数字を入力したかどうかをすばやくチェックします。このようなリクエストをサーバーに送っていたら、エラーのたびにページが再ロードされ、登録作業が非常に遅く、退屈なものになってしまうでしょう。

ユーザーインターフェイスの改善

JavaScript は、複雑な情報を見つけて処理するのに便利な、エレガントなウェブサイトを作ります。デベロッパーは、機能性と読みやすさを拡張し、ウェブサイトのユーザーとのやりとりをより効率的にするために、JavaScript を適用します。

同時実行をサポートする

JavaScript は、複数の異なる命令セットを並行して実行することができます。バックエンドでは、Node.js は同じ量の帯域幅を消費することなく、高度にスケールアップしたサーバー応答を扱い、処理することができます。

JavaScript の制限事項は何ですか?

プログラミング言語では、実際のデータ値のプレースホルダーとして変数を使用します。例えば、あるコードブロックの中で、デベロッパーは x=5 と y=x+1 と書くことができます。コードが実行されると、コンピュータは自動的に x と y をそれぞれ 5 と 6 に変更し、それに対する機能を実行します。データには、文字列、数字、日付など、さまざまな種類があります。そのため、ほとんどのプログラミング言語では、変数の種類を定義することができます。一度定義した変数の型は変更されません。文字列変数に数値を格納することはできません。

例えば、x と y が数字であることをプログラムに伝えてから、x+y という演算を行えば、コンピュータは 2 つの数字を予想して足し算をすることを判断します。一方、x と y を文字列として定義した場合、+ 演算子は 2 つの文字列を足し合わせてより長い単語を作ることになります。

弱い型付き言語

JavaScript は弱い型付け言語です。つまり、プログラマーが変数の型を定義することはできません。変数は実行時に任意のデータ型を格納することができ、演算はその変数型を仮定します。例えば、ある演算の結果が数字の 5 ではなく、文字列の「5」であった場合、その結果は別のデータ型にキャストされる可能性があります。このため、偶発的なコーディングミスや、型エラーによるコードのバグが発生する可能性があります。

TypeScript とは?

TypeScript は、JavaScript を改良し、構文に型を追加したプログラミング言語です。TypeScript は JavaScript に追加の構文を加えて、コードエディタツールがコーディングエラーを早期に発見できるようにします。同時に、TypeScript のコードは JavaScript に変換され、JavaScript と同じ利点をすべて提供します。また、アプリケーションや JavaScript のフレームワークやライブラリで動作します。

AWS SDK for JavaScript とは何ですか?

AWS SDK for JavaScript は、AWS のサービスと統合するための、オープンソースで無料で使える JavaScript ライブラリのセットです。API 開発、より高度な抽象化、そして 3 つのタイプのアプリケーションをサポートしています。

  • ブラウザ用 JavaScript
  • サーバー用 Node.js
  • モバイル開発用 React Native

AWS SDK for JavaScriptは、完全に TypeScript で書かれ、JavaScript にコンパイルされています。このように、下位互換性を気にすることなく、TypeScript のすべての利点を得ることができます。

AWS SDK for Java の使用を開始するには、コード例と移行ガイドを読むか、GitHub から直接インストールします

AWS Amplify for JavaScript とは何ですか?

AWS Amplify は、フロントエンドのウェブおよびモバイルのデベロッパーが AWS 上でフルスタックアプリケーションを迅速かつ容易に構築できるようにする、目的に応じたツールと機能のセットです。Amplify のオープンソースクライアントライブラリは、クラウドを利用したさまざまなカテゴリのオペレーションにわたって、ユースケース中心の使いやすいインターフェイスを提供します。Amplify JavaScript ライブラリは、React、React Native、Angular、Ionic、Vue.js など、さまざまなウェブおよびモバイルフレームワークでサポートされています。Amplify JavaScript の入門ガイドを完了することで開始できます

AWS を使用した JavaScript の次のステップ