2019-11-13

zappaのインストールメモ

zappaをanacondaで作成した仮想環境にインストールした際に、zappa init でちょっと手間取ったところがあるのでメモ書きです。

AWSの環境設定
ここは大前提なので書かれてないことが多いですが、awsを使うので当然、AWS周りの環境設定は必要です。
・aws-cliをインストール
・Lambdaを動かすアカウントを作成しておき、Access Key などをメモっておく
・aws configureでAccess Key ID、Secret Access Key、region name、output formatの4つを設定する

zappa用の仮想環境の構築
仮想環境作って、下記のようにインストールしましょう。
$ pip install flask
$ pip install zappa
ネットに出てくる情報は、virtualenv を使ってってのが多いですが、Anaconda(GUI)で仮想環境作ってもOKです。ただ、Anaconda(GUI)の場合、デフォルトではzappaのインストールができなかったので、pipコマンド使いました。

AWSで権限の設定をしておく
これについての情報が非常に少なく、もしかしたら私が勘違いしているのかもしれませんが、zappaを使うということは、当然LambdaとかAPIGatewayなどをアクセスする権限(ロール)の設定が必要なはずで、このあたりの設定が不十分だと、zappa でのデプロイ時に権限がらみのエラーが出ます。とりあえず下記のロールを追加しとくとエラーはでないでしょう。
  •  AWSLambdaFullAccess
  •  IAMFullAccess
  •  AWSLambdaDynamoDBExecutionRole
  •  AmazonAPIGatewayAdministrator
  •  AWSCodeDeployRoleForLambda
  •  AWSLambdaExecute
  •  AWSCloudFormationFullAccess
なお、IAMのポリシー設定についてはGitHubで議論があります。

Zappa init で初期設定ファイルを作る

$ zappa init
このコマンドを実行することで、zappa_settings.js というファイルができます。
ここで以下のようなエラー出たときの対処法を書いておきます。

エラー:zappa init error: "Zappa requires an active virtual environment
このメッセージが出たときは、環境変数でVIRTUAL_ENV を設定してください。
(Windowsの場合)
$ set VIRTUAL_ENV=c:\users\xxxx\appdata\local\continuum\anaconda3\envs\flaskenv
エラー:zappa Init error 'utf8' codec can't decode byte 0x**
このエラーは単にディレクトリの(権限の?)問題だけのようです。(自分がこれから作成しようとしている)Pythonのプロジェクトファイルのフォルダに移動してみてから initを再度実行してみてください。

zappa_settings.jsonファイルの修正
必要に応じてファイルを修正しましょう。ここの肝は、project_nameという変数を変えることで、別プロジェクトのような扱いになります。つまり異なるLambda関数となり、APIGatewayでのURLも変わることになります。

zappaコマンド(デプロイ、更新、削除)
インストールに成功したら、あとの操作は下記のようになります。
(はじめてプロジェクトをデプロイする場合)
$ zappa deploy dev
(更新する場合)
$ zappa update dev
(削除する場合)
$zappa undeploy dev








2019-11-08

Googleシートでセルに入っている改行付きデータを行や列に分割する方法

1つのセル内に改行付き複数行データが入っている場合に、改行ごとに列や行に割り当てる関数の書き方です。

列に割り当てたい場合
split関数で改行コードごとに分割して出力すれば、各データは異なる列に反映されます
=split(join(char(10),A1),char(10))

行に割り当てたい場合
列のやり方の応用です。splitで列として出力される結果をtranspose関数を使うことで転置させることで行に反映されます
=transpose(split(join(char(10),A1),char(10)))



GAS:コピペした英文をグーグル翻訳にかける前の前処理(改行処理)

英語論文などを読むときには、なんだかんだとグーグル翻訳に頼る機会が少なくないかと思います。ただ、PDFのテキストをコピペすると、変な位置に改行が入っていたりして翻訳がおかしくなることがしばしばです。そこで、Google翻訳にかける前の改行処理を自動化するGASのスクリプトを書きました。
JavaScriptですから、いろいろ転用できるかと思います。なお、正規表現を使ってます。



2019-11-04

Flutter for Webの環境構築について

FlutterがWeb対応したようなので、その環境構築について。なお、Flutterの環境自体はできているものとします。

Flutter for Webのライブラリをとってくる
gitでとってきます。。。
$ git clone https://github.com/flutter/flutter_web.git
パッケージの更新
Githubからダウンロードしたら、そのディレクトリからexamples/hello_world/へ移動(cd)した後、下記のコマンドを実行します。
$ flutter packages upgrade
$ flutter packages pub global activate webdev
$ pub get
ここで1つ注意点が。。。 pubのコマンドを実行する前に、下記の2つについてパスを通しましょう(パスは自分の環境に合わせて下さい)。.bash_profileに書いておくといいです。

  • $ export PATH="$PATH":"$HOME/flutter/.pub-cache/bin"
  • $ export PATH="$PATH":"$HOME/flutter/bin/cache/dart-sdk/bin"
ウェブサーバーの立ち上げ
下記のコマンドでウェブサーバーを立ち上げると、http://localhost:8080 でアクセスできます。
$ webdev serve
Hello worldの文字が出てくれば成功です。




bashの設定ファイルについて

bashの設定ファイルについて超初歩ネタです。bashの初期設定ファイルは、.bashrcと.bash_profileの2種類があります。知識のアップデートのできていないオールドタイプの私としては、.bash_profileなにこれ?というか、.bashrcファイルがない!(Macの場合)と慌てたわけですが、
  • .bash_profile ・・・ログイン時に読み込まれる
  • .bashrc ・・・ シェル起動時に読み込まれる
という違いがあるようです。適材適所で使い分けましょう。