目次

はじめに

この本の目的
参考書
免責事項
表記関係について
底本について

開発ツールと公開までの全体像

必要な開発環境とアカウント、その入手先
公開までの手順
開発言語としてJavaScriptを選択
サンプルのソースコードについて

第1章 スクレイピングアプリをローカルで作る

1.1 クライアントの表示UIとしてカレンダーを作成する
1.2 カレンダーに、追加の情報を表示する
1.3 ローカルで、動的な表示を行ってみる
1.4 ローカルでのNode.js のインストールとサンプルコードの動作確認
1.5 Twitterから特定のキーワードをスクレイピングする
1.6 スクレイピングしたデータをカレンダーに表示する

第2章 Azureの環境を準備して、スクレイピングアプリを公開する

2.1 GitHub アカウントとリポジトリの作成
2.2 Microsoft Azure アカウントの作成
2.3 Webサービスのリソース作成とGitHubリポジトリの紐付け
2.4 認証情報を設定する
2.5 さぁ、複数のデバイスからアクセスしよう

第3章 バッテリーを記録して、マルチデバイスから参照できるアプリを作る

3.1 データの保存先に、SQLデータベースを選択
3.2 SQL Server Express のインストールと動作確認
3.3 SQLデータベースのテーブル構築
3.4 SQLデータベースへの、SQL Management StudioからのI/O確認
3.5 SQLデータベースへの、APIによるI/O確認

第4章 バッテリー記録アプリを、Azureサーバー上に公開する

4.1 Azure SQL のリソース作成と動作確認
4.2 Azure SQLデータベースのテーブル構築と動作確認
4.3 クライアントからのコマンドラインベースでAPI利用

第5章 起床と就寝を記録するWebブラウザアプリを公開

5.1 起床と就寝のログを記録するアプリを設計
5.2 データベースの設計とSQLiteデータベースという選択
5.3 サーバー側:SQLiteデータベースへのアクセスを覚える
5.4 簡単なユーザー登録と認証を作成して、SQLへのアクセスI/Fを組み上げる
5.5 Expressフレームワークで簡単に実装
5.6 Azure Web Appへ配置と設定の仕方
5.7 Vue.jsフレームワークでクライアント側のUIを作成
5.8 クライアント側UIを含めてAzure上で動作確認をする

付録A バッテリー残量記録の仕様

A.1 API仕様
A.2 APIの動作概要

付録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 著

免責事項

 本書に記載された内容は、情報の提供のみを目的としています。したがって、本書を用いた開発、製作、運用は、必ずご自身の責任と判断によって行ってください。これらの情報による開発、製作、運用の結果について、著者はいかなる責任も負いません。

表記関係について

 本書に記載されている会社名、製品名などは、一般に各社の登録商標または商標、商品名です。会社名、製品名については、本文中では©、®、™マークなどは表示していません。

底本について

 本書籍は、技術系同人誌即売会「技術書典」で頒布されたものを底本としています。

1. 「無料プラン」は時間当たりのアクセス数やDatabaseのサイズなどが小さめですが、試用する範囲では十分です。また後から、「有料プラン」へ変更することで容易にスケールアップできます。もちろんスケールダウンも容易です。

2. JavaScript言語に「標準ライブラリ」はありませんが、C言語でのニュアンスで捉えてください。

3. 学習コストを下げるため、TwitterのAPI(利用申請が必要)は利用せずにスクレイピング(Webページから直接情報を抽出)を用いた例になります。

4. フレームワークは開発の枠組みを提供するのに対してライブラリは単一機能を提供する等の区分はあるのですが、本書の範囲で「規模の大小」の捉え方で構いません。

5. 次のURLにて、Creative Commons Attribution-NonCommercialの ライセンス で公開されている書籍です。http://azu.github.io/promises-book/

開発ツールと公開までの全体像

必要な開発環境とアカウント、その入手先

 本書での開発環境のクライアント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を用いて行います。

開発言語としてJavaScriptを選択

 スマホアプリを、出来るだけ簡単に作成して公開する方法を考えます。本書で紹介するサンプルアプリケーションの設計のポイントは、「端末側にデータを持つ必要が無く、スマホ端末側には動作のトリガーとなるボタンと、データ表示の機能さえあれば良い」という点です。一般にスマートフォン向けのアプリケーションは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


試し読みはここまでです。
この続きは、製品版でお楽しみください。