始めに
半年前にプログラマー転職した者です。
備忘録を残す、初心者が読んでも理解出来る文章を書く練習、個人的に有益そうな情報を残す事を目的に記事作成をしております。間違いや改善出来る事があれば教えて頂ければと思います🙇♂️
開発の背景と目的
私はPythonを使用する機会が多く、ふいにこう書いたらどうなるんだっけ?となる事があり、都度ググりながらvenv環境構築⇒パッケージインストール⇒サーバ立ち上げする作業をしていました。初めはこれも学習だ~と思いつつ作業していましたが、環境構築の理解が進むに連れてめんどくささを感じて自動化しようと考えました。また、最近シェルスクリプトに触れておりコマンド叩くルーチン作業なら実現出来るかもと思い簡単なツールですが開発してみる事にしました。
機能(実現したい要件)
- コマンドは最低限のみたたく
- Django rest framework 又は fastapi、フレームワーク無しの環境構築出来る
- オプションでサーバ立ち上げ出来る ※追加でパッケージインストールしたい場合がある
コード
#!/bin/bash
# コマンド実行時に引数を3つ持つのでチェック
if [ -z "$2" ] || [ -z "$3" ]; then
echo "error: missing input."
echo " good command -> sh ./setup.sh <virtual_env_name> <project_name> <application_name>"
exit 1
# 実行時の引数に入力した仮想環境の重複チェック
elif [ -d ./created/"$1" ]; then
echo " error: virtual_env_name alreadly exist."
exit 1
fi
# フレームワークを選択するコードで1~3を入力して選択
echo ""
echo "----- SELECT FRAMEWORK -----"
select framework in "fastapi" "django" "no_framework"; do
[ -n "$framework" ] && break
done
# サーバ立ち上げオプション
echo ""
echo "----- SERVER START ? -----"
select server_start_flag in "YES" "NO"; do
[ -n "$server_start_flag" ] && break
done
# 作業ディレクトリを作成して仮想環境を構築
echo "--- $framework setup start ---"
mkdir -p "created/$1" && cd "created/$1" || exit
python -m venv venv
mkdir "$2" && cd "../../"
# 仮想環境をアクティブ化してフレームワークに合うパッケージインストール開始
# サーバ立ち上げオプションに応じて実行
source ./created/$1/venv/Scripts/activate
if [ "$framework" = "django" ]; then
cd ./created/"$1"/"$2" || exit
pip install django djangorestframework
django-admin startproject config .
python manage.py startapp "$3"
elif [ "$framework" = "fastapi" ]; then
cd ./created/"$1"/"$2" || exit
pip install fastapi "uvicorn[standard]"
touch main.py
fi
if [ "$server_start_flag" = "YES" ]; then
if [ "$framework" = "django" ]; then
python manage.py runserver
elif [ "$framework" = "fastapi" ]; then
uvicorn main:app --reload
fi
fi
使い方
1. ファイル実行時に3つの引数を入力します。
$ sh ./setup.sh <virtual_env_name> <project_name> <application_name>"
2. フレームワーク選択
該当の番号を入力してください。
3. 環境構築後サーバ立ち上げオプション
該当の番号を入力してください。
前提条件: pythonのインストールをしてください。
今後の改善
- VScodeの立ち上げサポート
- フレームワーク追加
- フレームワーク毎に公式ドキュメントに書かれているようなテンプレート(とりま動かす最低限くらい)のコード書き込み
- ユーザビリティ向上の為インターフェース考える
⇒デスクトップアプリで操作できるなら作ってみたい
最後に
もともとIT業界とは異なるお仕事でめんどくさいと思う事はあったけど改善してきませんでした。しかし、ちょっとググれば同じような事で困っている人や改善した人が見つかります。今何かで困っている事があればまずは少し調べてみる事は大事じゃないかな~と思う今日この頃です。出来る出来ないは置いて改善する為の方法が分かれば職場で共有して解決出来るかもしれません。と過去の自分に言い聞かせておきます。
最後まで読んで頂いた方ありがとうございました。