Pythonを使ってアプリを動かしてみたいと思い「ほぼPythonだけでサーバーレスアプリをつくろう」という本を読み始めました。
一筋縄では行かない内容なので、少しづつ進捗をまとめておきます。
深く考えずにどんどん進めよう!
それでも時間がかかるから。
ただし、最低限 APIは知らなかったらググろう。
第1章 Pythonでサーバーレスアプリの実装をしよう
第1章の内容
Pythonとは、サーバーレスアプリとは、と基本的な内容の説明(導入)がありました。
この本では、Amazon Web Service(通称:AWS)を利用してサーバーレスを実現します。
※サーバーは作らないけど AWSのWeb APIサービスやDBサービスをうまく組み合わせてアプリを作るということです。このあたりのニュアンスは知っておくべきです。
AWSを使ったことがないという人、AWSのサービスを組み合わせてアプリを構築する経験をしたいという人には、良い機会になると思います。
加えて、「Chalice」や「Transcrypt」などのパッケージを利用することが述べられています。これらについては簡単にまとめておきます。
Chaliceとは
AWS向けのPython製サーバーレスマイクロフレームワークです。
Chaliceを利用することで、Amazon API Gateway と AWS Lambda を組み合わせたWeb APIをスピーディに開発できるとのこと。
むむっ! 「Amazon API Gateway」、「AWS Lambda」というキーワードが新たに出てきましたね。今のところここは深く考えずに、Web APIを作るためのAWSのサービスと覚えておけばよいでしょう。
Transcryptとは
Python製のJavaScriptトランスパイラで、PythonのコードをJavaScriptへ変換します。
JavaScriptは汎用的に使われているので、Pythonコードを汎用的に使えるようにするためのものと理解しました。
第2章 サーバーレスアプリ開発環境の構築をしよう
開発環境を整えるのも結構時間かかりますよ…。
第2章の内容
ひたすら必要なソフトウェアのインストール・設定です。いくつかパターンがあります。
- 開発用パソコンにインストールするもの
- 開発用パソコン内の仮想環境にインストールするもの
- AWS上で設定するもの
長いけどサクサクとやっていきましょう。
Pythonインストール
今回の主役、プログラミング言語 Pythonです。
Pythonサイトからインストーラをダウンロードしてパソコンにインストール。
今夏いは、Python3.7.4をインストールしました。
特に迷うところなし。私の開発環境はWindows10です。
OpenJDKインストール
Javaの開発環境です。
Webサービスを実現するために、Javaは出てきます。
ほぼPythonのみと言うとおり、 この本ではPython以外の言語としてJavaも使います。
OpenJDKのページからインストーラをダウンロード してパソコンにインストールします。「OpenJDK11」、「HotSpot」を選びます。
インストールはメニューに従って。ただ、JAVA_HOMEは入れておく。
Gitをインストール
プログラムソースなどのバージョン管理ソフト、それがGitです。
この本では、CI/CDの仕組みを実装する際に使います。
既にGitはインストールしていたので、今回はインストールしませんでした。
しかし、昔Gitをインストールしたけど使いこなしているわけではないのでこの機に勉強しなおそうと思っています。
HTTPieをインストール
サンプルのWeb APIに何度もアクセスすることになるので、その際に便利になるもののようです。
curlに代わる便利コマンドらしいです。
Qiita
コマンドプロンプトから、Pythonのインストール(アップデート)コマンドを実行します。
> pip install --upgrade httpie
実行したけど、Requirement already satisfied. Skipping upgrade: *** と出たので、アップデートの必要はなかったみたいです。
Web Server for Chromeをインストール
Google Chrome拡張機能の一つです。
フロントエンドのテストをする際に使うものです。
Chromeウェブストアからインストールするのみです。
AWSでIAMユーザ作成、キー取得
Amazon Web Service(AWS)を契約しよう
ここからはAWSを使う必要があるので、まずはAWSを契約する必要があります。
1年間は無料枠がありますが、メールアドレス、クレジットカードを登録する必要があるので、人によってはハードルが高いかもしれません。
私は何回か試したことがあるので、今回も新たなメールアドレスで登録しました。
Amazon
AWSでIAMユーザーを登録しよう
IAMとは、Identity and Access Managementの略で、AWSのユーザーや権限を管理するサービスです。
今回は、AWSのWeb APIやDBサービスを利用する前提なため、そのサービスにアクセスするためのユーザー登録と思っておけばよいでしょう。
AWSコンソールで 「IAM」サービスからIAMユーザを登録しました。
そして、登録したIAMユーザーのアクセスキーIDとシークレットキーIDを[.csvのダウンロード]ボタンから入手します。
AWSのコマンドラインインターフェイスをインストール
コマンドプロンプトからAWSにアクセスするためのコマンドラインツールをインストールします。
コマンドプロンプトでコマンドを入力するだけでOKです。
> pip install awscli --upgrade --user
ただ、インストールは成功とでましたが、Pythonのパスがうんたらと警告が出ました。
Pythonのプログラムフォルダが環境変数Pathに登録されていないらしく、追加しておきました。
AWS認証情報を設定する
開発用パソコンにAWSの認証情報を設定する作業です。
コマンドプロンプトから対話形式で入力すればOKです。
AWSのIAMユーザー登録で得たアクセスキーとシークレットキーを入力します。
> aws configure
AWS Access Key ID [None]: アクセスキー入力し Enter
AWS Secret Access Key [None]: シークレットキー入力し Enter
Default region name [Name]: ap-northeast-1 を入力しEnter
Default output format [None]: json を入力しEnter
ここで設定した内容は、パソコンのホームディレクトリ内の「.aws」フォルダ内に保存されます。本で説明はなかったですが、こういう裏の動作は知っておいて損はないです。
仮想環境を作成する
開発用パソコン内に、仮想的にWebサーバを実行する環境を作成します。
今回は、Pythonの標準機能である venv を使い仮想環境を実現します。
自分のパソコンのホームディレクトリの下に「hobopy」というフォルダを作って、その中に仮想環境を作っていく前提で進めました。
パソコン内にバックエンド環境を作成しよう
ここがなかなか難しかったので、何度かやり直しました。
①バックエンド環境を作るコマンドを実行します。
> python -m venv .venv/hobopy-backend
これで、hobopyフォルダの中に「.venv/hobopy-backend」という環境ができます。
②バックエンド環境にできた activate.bat を実行します。
> .venv\hobopy-backend\Scripts\activate.bat
これで、バックエンド環境が有効になります。
コマンドプロンプトの画面が、以下のようになればバックエンド環境が有効です。
(hobopy-backend) C:\Users\Moso\hobopy>
※今後、仮想環境を有効にしてテストする際は都度この操作をしましょう!
③バックエンド環境にChaliceをインストールします。インストール後はバージョン確認。
(hobopy-backend)> pip install chalice
(hobopy-backend)> chalice --version
chalice 1.14.0, python 3.7.4, windows 10
これで、Chaliceが使えるようになりました。1章ででてきた Web APIをスピーディに加発できるというやつです。
④バックエンド環境にBoto3をインストールします。
(hobopy-backend)> pip install boto3
Boto3はPythonからAWS環境を操作するために必要なライブラリです。
ホームディレクトリ配下の「.aws」フォルダ内に保存されている認証情報をBoto3が読み取ってくれるという仕組みらしいです。
パソコン内にフロントエンド環境を作成しよう
途中まではバックエンド環境作成と同じ流れです。
①フロントエンド環境を作るコマンドを実行します。
> python -m venv .venv/hobopy-frontend
これで、hobopyフォルダの中に「.venv/hobopy-frontend」という環境ができます。
②フロントエンド環境にできた activate.bat を実行します。
> .venv\hobopy-frontend\Scripts\activate.bat
これでフロントエンド環境が有効になります。
③フロントエンド環境にTranscryptをインストールします。
(hobopy-frontend)> pip install transcrypt
以上で環境構築はすべて完了です。
環境構築までの所要時間
試行錯誤して約2時間です。
本にあるとおりポチポチをコマンド実行していけば、これほどかからないと思います。
ところどころで「これは何をしてるんだろう?」と立ち止まったり、エラーでないにしろワーニングが出たりすると「この警告、何だろう?」と調べていたらこのくらいかかりました。
疑問は成長の種、と誰かが言っていました。前向きに行きましょう!
第1章、第2章を終えての感想
何らかの開発経験があるならば、ソフトのインストールや設定は感覚的にわかると思いますが、全くの初心者にはかなりハードルが高い内容ではないかと思います。AWSもいきなり使いますしね。
私は、Javaのシステム開発時にフレームワークやライブラリを触った経験があるのでそれほど難しく感じませんでした。
※むしろ、やった内容を振り返り文字に書き起こす(復習)に時間がかかりました。
自分のパソコン内に、Pythonの標準機能(venv)で仮想環境を作れるというところがなかなか興味深かったです。今はこんなの当たり前なのかな。
仮想環境を使った開発は、「今、どの環境でプログラムを動かしているか」が混乱するので、しっかり意識して進めていきたいです。
完成はいつになるのか… つづく。
コメント