2023年 22月 11月日 - By Marco Colombo
このシリーズの前回の記事では、ウェブページをダイナミックにし、エンドユーザーとのインタラクションを可能にするフロントエンド・プログラミング言語、JavaScriptについてお話した。 JavaScriptは長年にわたってサーバーサイドの機能も拡張し、バックエンドのプログラミングに応用されてきた。 そこでNode.jsの出番となる。
バックエンドプログラミングのためのNode.js
Node.jsは、JavaScriptで書かれたプログラムを実行することで、ウェブサーバーで受け取ったリクエストを処理できる実行環境だ。 Node.jsは、もともとクライアントサイド言語であったJavaScriptを、他のプログラミング言語と同じようにブラウザの外で実行できるようにした本格的な開発プラットフォームである。
本来はブラウザーの中だけで実行されるはずだった言語が、今ではブラウザーの外で実行されるのだ。
このことから、以下のような多くの利点が生まれる:
学習が容易: すでにJavaScriptに慣れ親しみ、クライアント側のプログラミングに取り組んできた開発者は、サーバー側のアプリケーションを開発するために別のプログラミング言語を学ぶ必要はない。 すでにJavaScriptをマスターしているフロントエンド開発者は、それほど苦労することなく、アプリケーションのバックエンド部分に簡単に取りかかることができる。
完全かつ機能的なアプリケーションを作成する能力: JavaScriptという1つのプログラミング言語の知識だけでも、クライアントサイドとサーバーサイドの両方の開発に精通したフルスタック開発者として働くことが可能です。 これにより、包括的で完全に機能するアプリケーションを作成することができる。
様々なアプリケーションを作成可能 JavaScriptコードを実行できる環境があれば、ウェブブラウザに依存しないスタンドアローンプログラムを作成することができます。 これにより、さまざまなタイプやシナリオのアプリケーションを作成する可能性が広がる。
しかし、なぜNode.jsはこれほどまでに開発者に愛されているのだろうか?
前述の利点に加え、Node.jsはオープンソースでクロスプラットフォーム環境であり、世界中の開発者の大規模なコミュニティを誇っている。 さらに、非同期、ノンブロッキング、シングルスレッド、イベントドリブンI/Oモデルに基づいており、高いパフォーマンスと優れた実行速度を保証します。 クライアントからのリクエストを効率的に管理する。
Linux Professional Institute (LPI)のWeb Development Essentials認定資格は、このシリーズのコンテンツに特化しており、簡単なNode.jsアプリケーションの作成を段階的にガイドしています。 さらに、HTML、CSS、JavaScriptを使用してウェブページを作成したことがあれば、アプリケーションのバックエンドロジックの構築を開始し、特定のユーザーリクエストに対してサーバーがどのように応答すべきかを定義することができます。
アプリケーションの強化方法
Node.jsプロジェクトでは、他の開発者によって作成されたさまざまな無料のリソースやツールを利用して、追加機能を組み込んだり、生産性を向上させたり、作業を容易にしたりすることができます。
npmはNode Package Managerの略で、Node.jsプラットフォームのパッケージ・マネージャーです。 コマンドラインインターフェイスを通じて、パッケージ(他の開発者が作成した、特定の機能を実装するビルド済みのプロジェクト)のインストール、削除、管理を行うことができる。 npmはNode.jsパッケージの大規模なオンラインリポジトリで、それぞれが独自の機能を備えていると考えてください。
数え切れないほどあるパッケージの中には、データベースとのやりとりに特化したものもある。 この連載の第1回で述べたように、バックエンド・プログラミングは、データベースとの統合を含め、エンドユーザーから直接見えないすべての側面を包含する。 アプリケーションが外部データにアクセスする必要がある場合、ほとんどの場合データベースを通じてアクセスすることになる。
LPIのWeb Development Essentialsでは、リレーショナルデータベース管理システム(RDBMS)を実装したソフトウェアライブラリであるSQLiteを特に取り上げています。 このタイプのデータベースでは、データは相互に接続されたテーブルに格納され、シンプルで直感的なクエリを使って照会することができる。
データベース照会
リレーショナル・データベースを自由に使えるようになったとき、そのデータベースに対してどのような操作を行なえばよいのか悩むかもしれない。SQLはStructured Query Languageの略で、リレーショナルデータベース内のデータを操作するためのクエリ言語です。 非常に人気があり、ユーザーフレンドリーな言語である:
テーブルの作成と削除
スキーマと呼ばれる、各テーブルで使用可能なフィールドとデータタイプを定義する。
テーブルのデータを更新する
テーブルの行の挿入と削除
情報の取得
データベースの保守と最適化
これで、リレーショナル・データベースがSQLデータベースとも呼ばれる理由が明らかになった!
開発者がSQLを使うのは、SQLがさまざまなプログラミング言語と非常にうまく統合できるからだ。 例えば、Node.jsでSQLiteを使うには、先に述べたnpmパッケージ・マネージャーを使ってモジュールをインストールするだけでよい。 これをインストールすると、リレーショナル・データベースの作成と保守を可能にする一連の関数にアクセスできるようになる。
関連するテーブルに情報を格納するリレーショナル・データベースに加え、NoSQLデータベースとも呼ばれる非リレーショナル・データベースもある。 これらはより柔軟なスキーマを持ち、バックエンドアプリケーションでも同様に使用できる。 非リレーショナル・データベースは、特定のアプリケーションと格納されるデータに最適化されたストレージモデルを使用する(例えば、情報は単純なキーと値のペアとして格納できる)。 この種のデータベースは、開発が容易で高性能、優れた柔軟性と拡張性が特徴である。
以下の表は、バックエンドアプリケーションで一般的に使用される、最も一般的なリレーショナルデータベースと非リレーショナルデータベースの一覧です:
SQL Database
NoSQL Database
Microsoft SQL Server
MongoDB
SQLite
CouchDB
MySQL
Redis
MariaDB
PostgreSQL
SQL言語とSQLiteデータベースに慣れたら、練習がてら非リレーショナル・データベースでデータを操作し、その長所と短所を発見してみよう。
次はどうする?
今回と前回の連載では、WDE認定資格でカバーされる主な技術(HTML、CSS、JavaScript、Node.js、SQL)と、Web開発者としての第一歩を踏み出すためのプログラミング環境について分析してきました。
まだ解明されていないのは、どの学習リソースが実際の認定試験に最も適した準備ができるかということだ。 これからの連載では、Web [...]