/var/log

技術ネタ多めで思ったことを書きます。※内容は個人の発言であり、所属する組織を代表するものではありません。

CloudShellでPython3をインストールしてみる。

目的

CloudShellにCodeEditorなるGUIエディタがあることを知った。 ベータ版とはいえ、Eclipseのプロジェクトが元になっているらしいので、これ使えないかな? 諸事情があってブラウザで開発が完結する環境がほしかったのでPython環境を整える。 (まずは使ってみるの精神)

手順

CloudShellは裏はおそらく何某かのコンテナだと思います。 Debianとはいえ、apt-getなどでソフトを入れると接続するたびに内容が消えてしまう。 /homeはpersistentディスクとして提供されているので、ここにインストールする必要があると考えた。

実際、StackOverFlowでも同じ話があった。

stackoverflow.com

これを参考にすると、定番のpyenvを使ってインストールするのが良さそうだったので。 pyenvを使ってPython3.7.3をインストールしてみた。 インストール手順、そのものは公式のGitに手順が乗っているのでそちらを参考にした。

https://github.com/pyenv/pyenv#installation

$ git clone https://github.com/pyenv/pyenv.git ~/.pyenv
$ echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bash_profile
$ echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bash_profile
$ echo -e 'if command -v pyenv 1>/dev/null 2>&1; then\n  eval "$(pyenv init -)"\nfi' >> ~/.bash_profile
$ source .bash_profile
$ pyenv install 3.7.3
$ pyenv global 3.7.3

なにか動かしてみる。

flaskでHello World的なものを使って動かしてみる。

pip install flask

CodeEditorを使って以下のコードを作成する。

from flask import Flask

app = Flask(__name__)

@app.route("/")
def home():
    return "Hello, World!"
    
if __name__ == "__main__":
    app.run(debug=True)

こんな感じで実行すると待受ポートがわかる。 あとは、「ウェブでプレビュー」を使って、動作確認をする。

$ python main.py                                                 
 * Serving Flask app "main" (lazy loading)
 * Environment: production
   WARNING: This is a development server. Do not use it in a production deployment.
   Use a production WSGI server instead.
 * Debug mode: on
 * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)
 * Restarting with stat
 * Debugger is active!
 * Debugger PIN: 198-418-586

まとめ

CloudShell関連の機能をつかって無料の範囲で簡単な開発はできることがわかった。

感想としては業務の基幹システムを作るわけではないので個人レベルなら、まぁありかなと思いました。 マイクロサービスアーキテクチャの考え方に従って、サービスを細かく作るなら世界観なら悪くない気がします。 あとはDBとか外部のI/Fまわりをローカルで開発するときにどうするのか?など、あるある話をどうするかですね。 クラウドの時代、それすらもOn DemandでVM作るなり、GAEのようなPaaSを使えば良いので本質ではないか。