はじめに
開発ツールと公開までの全体像
第1章 スクレイピングアプリをローカルで作る
第2章 Azureの環境を準備して、スクレイピングアプリを公開する
第3章 バッテリーを記録して、マルチデバイスから参照できるアプリを作る
第4章 バッテリー記録アプリを、Azureサーバー上に公開する
第5章 起床と就寝を記録するWebブラウザアプリを公開
付録A バッテリー残量記録の仕様
付録B SQLiteデータベースをグラフィカルに参照する方法
付録C Windows向けにElectronでネイティブアプリ化する
著者紹介
本書は、「JavaScriptならブラウザで少しだけ触れたことがあるよ。でもNode.jsやSQLデータベースは未経験」という読者が、「JavaScriptでWebアプリケーションを作る!データはクラウドサーバー側のSQLデータベースに保存して、どこからでもアクセスできるようにしよう!」という目標を立て、「お試し版として動くWebアプリをまずは作ってみて、公開する」ことを目的として解説した本です。
本章のスタート地点は「開発環境の構築(Node.js、SQLデータベース)」です。目指すゴールは「Microsoft Azureを利用して、ブラウザベースのWebアプリケーションを公開する」になります。これらすべてを無料プランの枠内でお試し版の作成と公開を行います1。また、Windows環境での開発を前提とします。Node.jsは 「標準ライブラリが違うJavaScript言語2。コマンドラインで動作するやつ」くらいに捉えておけばOKです。
本書のゴールにたどり着くために、次の3つのWebアプリケーションの実装を行いながら、Azureでの公開方法、SQLデータベースの設置方法、Webアプリケーションの公開方法、を解説していきます。
1. Twitter上で特定のキーワードが呟かれた日を、カレンダーにマッピングするアプリ3
・サーバー側にデータの保存は行いません。Azureでの公開の第一歩
・Node.js環境でのJavaScriptの動作をやってみる、ことが目的
2. パソコンのバッテリー残量を記録して、マルチデバイスで表示するアプリ
・サーバー側にSQLデータベースを設置してデータを保存
・SQLデータベースの扱いについて経験することが目的
3. ライフログ(起床と就寝時刻)を記録するアプリ
・サーバー側に異なるタイプのSQLデータベース(SQLite)を設置
・Expressフレームワーク、Vue.jsフレームワーク、axiosライブラリなどを利用するのが目的4
「動かすこと、公開すること」を第一の目的としており、Webアプリケーションの実装におけるソースコード(JavaScript+HTML)の仕組みでは無く「そのソースコードを動作させる環境をどう作るか、そのWebアプリケーションをどうやって公開するか?」にフォーカスします。具体的には、3つのサンプルを動かしながら「ローカルでのNode.jsとSQLサーバーの動作環境を構築してサンプルコードを実際に動作させる、続いてAzure上に環境構築を行い公開する」ことを目指します。
その過程で「これを改良したら○○の動作になるかな。やってみよう」とか「Webアプリケーション開発で人気のフレームワークやライブラリを利用すると実装がこんな風に楽になるのか。これを使っていこう」というように、読者が自分で開発をどんどん広げていくため「次の一歩」も合わせて説明してきます。
なお本書を読み進めるには、 初歩のJavaScript言語の知識があることを前提としています。必要に応じて書籍やインターネットなどで事前学習をお願いします。また本書で用いるサンプルのソースコードは「JavaScript以外への背景知識を極力不要とすること、簡単であること」を優先しております。機能面での充実やセキュリティ保持、拡張性については関連書籍などを参照ください。
『RESTful Webサービス』株式会社クイープ/Leonard Richardson著、Sam Ruby監訳、山本陽平 訳、
『node.js超入門』秀和システム/掌田津耶乃 著
『わかばちゃんと学ぶGit使い方入門』シーアンドアール研究所/湊川あい 著
『JavaScript Promiseの本』5 azu 著
本書に記載された内容は、情報の提供のみを目的としています。したがって、本書を用いた開発、製作、運用は、必ずご自身の責任と判断によって行ってください。これらの情報による開発、製作、運用の結果について、著者はいかなる責任も負いません。
本書に記載されている会社名、製品名などは、一般に各社の登録商標または商標、商品名です。会社名、製品名については、本文中では©、®、™マークなどは表示していません。
本書籍は、技術系同人誌即売会「技術書典」で頒布されたものを底本としています。
本書での開発環境のクライアントPCはWindows OS環境とします1。またゴールにたどり着くには、下記の物が必要となります。
1.クレジットカード、Short Message Service(以降、SMSと略記)が利用可能な携帯電話
・目的:
下記のMicrosoft Azure(以降、Azureと略記)のアカウント作成時の個人認証に必要です。携帯電話は、SMSが利用可能であればフューチャーフォン(ガラケー)でもスマートフォンでもタブレットでも構いません。クレジットカードの登録を行いますが、料金は発生しないコースを選択するので、実際の支払いは発生しません。
2.Node.js
https://nodejs.org/ja/
・目的:
ローカル環境での、Node.jsのソースコードの動作確認。
3.SQL Server 2017 Express エディション
https://www.microsoft.com/ja-jp/sql-server/sql-server-editions-express
・目的:
ローカル環境での、SQL Server の動作確認。
4.SQL Server Management Studio 17.5
https://docs.microsoft.com/ja-jp/sql/ssms/download-sql-server- management-studio-ssms
・目的:
ローカル環境とMicrosoft Azure環境での、SQL Server への接続確認。
5.GitHub Desktop
https://desktop.github.com/
・目的:
GitHubへの容易なコミット操作。
6.GitHub(無料枠)
https://github.com/
・目的:
作成したWebサービスのソースコードの管理とMicrosoft Azureへの紐づけ。
7.Microsoft Azure (無料枠)
https://azure.microsoft.com/ja-jp/
・目的:
作成したWebサービスの公開用クラウドスペース。
8.cURL (curl.exe)
https://curl.haxx.se/download.html
・目的:
コマンドラインからhttp通信(GET/POST/)を行うツール。コレが無くともブラウザで代替可能だが、あると便利。
9.Microsoft Visual Code
https://www.microsoft.com/ja-jp/dev/products/code-vs.aspx
・目的:
Node.jsのコーディング。コレが無くとも任意のエディタで可能だが、あると便利。
本書で取り扱う3つのアプリケーションの実装例は、おおよそ次の手順を踏みます。1つのアプリケーションの実装と公開は、約1~2日あればゼロから始めて最後まで辿り付ける内容となっています。
1.ローカル環境で、Node.js上で動作するJavaScriptソースコードの動作確認。
2.ローカル環境で、動作に必要な各種リソース(SQLデータベース)を作成。
3.ローカル環境で、動作に必要な環境変数を設定してアプリケーション全体の動作を確認。
4.リモート環境のAzure に、アプリケーションのリソース(Azure Web App)を作成。
5.リモート環境のAzure で、動作に必要な各種リソース(SQLデータベース)を作成。
6.リモート環境のAzure に、動作に必要な環境変数を設定してアプリケーションの提供を開始。
アプリケーションの実装はJavaScript(Node.jsとブラウザ環境)にて行います。本書では、作成したアプリを「どうやってAzureに公開するか?」にフォーカスしますので、サンプルコードの詳しい説明には踏み込みません。アプリケーションの公開は、GUIが分かりやすいAzureを用いて行います。
スマホアプリを、出来るだけ簡単に作成して公開する方法を考えます。本書で紹介するサンプルアプリケーションの設計のポイントは、「端末側にデータを持つ必要が無く、スマホ端末側には動作のトリガーとなるボタンと、データ表示の機能さえあれば良い」という点です。一般にスマートフォン向けのアプリケーションはJava言語を用いて開発されますが、本書のサンプルのような設計方針の場合には別の方法があります。それが「Webブラウザベースのアプリケーション」です。これは、Chromeブラウザをベースに、htmlとJavaScriptだけで実装が可能なアプリケーションです。本書では、この「Webブラウザベースのアプリケーション(以降、「Webアプリ」と略記)」を開発します。
ブラウザベースなので、クライアント側のユーザーインターフェースは、htmlとJavaScriptだけで作ることができます。必要な知識は、htmlとJavaScriptで実装する範囲だけです。また、動作OSを選びません。作ったアプリを、Android上でも、Windows上でも、iOS上でも、Chrome系ブラウザさえあれば動作させることができます。
クライアント側のブラウザで表示しているWebページから要求を受けて、データ保存や読み出しを行うサーバー側の実装方法を考えます。サーバー側の実装に使えるプログラミング言語は様々ありますが、今回は「クライアント側で利用するプログラミング言語と同じもの」というメリットから、Node.jsを用いたJavaScript言語での実装を選択します。
本書でのサンプルの記載は、多くの場合はキーとなるコード部分の抜粋となります。サンプルコードの全体は次のサポートページ(GitHubのリポジトリです)で公開しています。実際に動作確認を行う際には、サポートページからソースコード一式をダウンロードして利用してください。なお、公開しているサンプルコードの利用するフレームワークやライブラリのバージョンは、本書に記載のバージョンとは異なる場合がありますが、Node.jsのnpm機能を用いて整合されますので動作上の問題はありません。
https://github.com/hoshimado/azurenodesql-book