書籍「サーバーレスシングルページアプリケーション」をWindows環境で実行する(sspaコマンド)

オライリーから出版されている書籍、サーバーレスシングルページアプリケーションでは、単体テストやサーバへのアクセスなどをsspaというコマンド経由で操作するように説明されています。

sspaコマンドな本書専用のコマンドですが、シンプルな内容で見れば何を行っているか直ぐに理解できるような内容です。ですが、基本的にLinuxやMacOS環境などbashが動く環境で実行するように説明が行われています。

今回は、サーバーレスシングルページアプリケーションの書籍の内容をWindows環境で動作させたのでその時の手順をメモしておきます。Windows10 Professionalが入ったPCで動作確認を行っています。



bashが動く環境の構築


Windows10の場合、2016年にリリースされたAnniversary Update以降、”Bash on Ubuntu on Windows”というbash環境(Linuxサブシステム)が提供されているので、これをインストールします。

※手順は簡単で、ネットにも沢山の情報があるので省略します。

Pythonのインストール


sspaコマンドの内部でpythonを使用しているため、pyhonが動く環境をインストールします。

Windowsでのpython実行環境はAnacondaというものが有名です。これは、python本体であるpython.exeに加えて、よく利用されているライブラリが一緒に同梱されたパッケージ(ディストリビューション)です。機械学習のライブラリで有名なTensorFlowなどでもAnacondaを使った場合のセットアップが掲載されているくらい、有名な物なので、これを入れておけば安心です。

下記のサイトからダウンロードしてインストールします。
https://www.continuum.io/downloads

手元の環境は、下記のバージョンが入っていますが、Python3.x系の最新のものを入れておけば良いです。

> python --version
Python 3.5.2 :: Anaconda 4.2.0 (64-bit)

gitのインストール


本書に沿って実習するのに、gitは必須ではありませんが、使用したことがなければgit for Windows(https://git-for-windows.github.io/)を入れておくと良いです。

gitを使いたくない場合、p11のgit cloneコマンドで”benrady/learnjs”をフォークする部分は、下記の流れでファイルを取得できます。

・下記のページにアクセスする
https://github.com/benrady/learnjs

・Clone or downloadボタンから”download ZIP”をクリックし、取得したzipファイルを展開すれば良いです。


sspaコマンドの実行


ここまで準備したら、Windowsのコマンドプロンプトからsspaコマンドを実行可能です。

sspaコマンドがあるフォルダに移動して、下記のコマンドを順に打てば、sspaコマンドのヘルプが表示されます。

bash
./sspa

“./sspa server”コマンドを実行すると、ファイアーウォールの警告ダイアログが出るかもしれませんが、”アクセスを許可する”をクリックすれば良いです。


その後自動でブラウザが開き、http://localhost:9292/のアドレスでIt worksが表示されればOKです。


P16のAWS CLIをセットアップ


P16では、下記のコマンドを実行するよう指示されます

$ sudo easy_install pip 
$ sudo pip install awscli

Windows10 + anaconda環境だと、下記の作業で対応できます。

  1. コマンドプロンプトを、管理者として実行(bash環境でなくて良い)
  2. 下記のコマンドを入力

> pip install awscli

その後の’aws configure’を実行するところでは、コマンドプロンプトから下記のコマンドを入力します。
(bash環境だとエラーが出ます)

> "C:\Program Files\Anaconda3\Scripts\aws" configure

作成したcredentialsファイルは下記の場所に作成されます。

C:\Users\%USERNAME%\.aws\credentials





サーバーレスシングルページアプリケーション

[Python]PHPのimplode, explodeに相当する関数

PythonでPHPのimplodeやexplodeに相当する処理を行う方法です。

それぞれjoinと、split関数を使用することで同等の処理が行えます。

implode相当の処理

s = ['a', 'b', 'c']
out_data =  ' '.join(s)

print( out_data )     # 'a b c'

explode相当の処理

s = "a,b,c"
out_data = s.split(',')

print( out_data )     # ['a', 'b', 'c']

vagrant up実行で,SYSTEM_SERVICE_EXCEPTIONでブルースクリーンになる時

Vagrantを使用しているときvagrant upコマンドを実行するとにWindowsがSYSTEM_SERVICE_EXCEPTIONブルースクリーンになる場合があります。このときの可能性の一つとして、Hyper-Vとの設定が競合している(Hyper-Vが有効化されている)可能性があります。

Hyper-V機能の無効化方法


Hyper-V機能は、以下の手順で無効化できます。

  • コントロールパネルから、”プログラムと機能”を選択します。
  • メニューの”Hyper-V”にチェックが入っていたら、チェックを外します。
  • PCを再起動します。
  • Hyper-V機能が問題だった場合、再度vagrant upコマンドを実行すれば、正しく起動してくれます。

次回起動時にVagrant corrupted index… エラーが出る時の対処


ブルースクリーンで異常終了した場合、次回vagrant upした時に下記のエラーが出る場合があります。

The machine index which stores all required information about
running Vagrant environments has become corrupt. This is usually
caused by external tampering of the Vagrant data folder.

Vagrant cannot manage any Vagrant environments if the index is
corrupt. Please attempt to manually correct it. If you are unable
to manually correct it, then remove the data file at the path below.
This will leave all existing Vagrant environments "orphaned" and
they'll have to be destroyed manually.

Path: C:/Users/xxx/.vagrant.d/data/machine-index/index

これは、前回起動に失敗したときに、ロックファイルが残っているためです。

PCの再起動直後など、vagrantが起動していないことが明らかな場合は、指定されたフォルダ(C:/Users/xxx/.vagrant.d/data/machine-index/index)の下にある、indexとindex.lockファイルを削除してから、再度vagrant upすればOKです。

[cmder]右クリックメニューに”Cmder Here”を追加する方法

Windowで使用できる便利なコマンドラインツールであるcmderがあります。
cmd.exeだとShift+右クリックで、”コマンドラインをここで開く”メニューが出るのですが、Cmderで同様に右クリックメニューにCmder Hereを追加する方法を説明します。

Cmderで右クリックメニューに”Cmder Here”を追加する


コマンドラインを、管理者モードで起動します。

cmder.exeがあるフォルダに移動します。

下記のコマンドで登録します。

.\cmder.exe /REGISTER ALL

コマンドを実行しても、以下のように何も出力されませんが…


右クリックメニューには、たしかにCmder Hereが追加されています。


元に戻したい場合は、下記のコマンドで削除可能です。

.\cmder.exe /UNREGISTER ALL