要件定義の不安をなくす。要件定義の不安をなくす。ユニファのバックエンド分割に学ぶイノベーションメタバース開発に必要な技術の基本知識をおさらい。Boost」など、さまざまなカンファレンスを企画・運営しています。BOOKS(コードジン・ブックス)は、CodeZineの連載からカットアップした、開発現場の課題解決に役立つ書籍シリーズです。11:00ツイート日本語の書籍も増えてきて、裾野が広がっているDjango。frameworkを用いたプロダクト開発の手法を、実務に使える形でお伝えしていきます。今回は環境変数についてと、Angularを用いたフロントエンドの実装を紹介します。前回はDjangoの実践的なテストの書き方と、CircleCIを使った継続的インテグレーションについて解説しました。前回までのコードは以下から取得できます。volume3第4回となる今回は、まず環境変数について取り上げます。異なる値としては、データベースの接続に必要な情報やTwitterなど外部サービスの認証情報等が思い浮かぶと思います。これらの設定を定数としてコード上で管理することはもちろん可能ですが、セキュリティと保守性の観点から推奨されません。App」の教えにのっとり、設定は環境変数から渡すようにしましょう。App」とは、Heroku創業メンバーの一人が書いた、WebアプリケーションやSaaSを作り上げるための方法論です。日本語訳もあるので、ご存じない方はぜひ一度目を通してみてください。Django-environDjangoで環境変数を扱うには、Django-environというサードパーティ製パッケージが便利です。Django-environは、.envファイルのサポートや簡潔なファイルパス指定といったメリットがあり、cookiecutter-djangoでも使われています。それでは、Django-environをインストールします。requirements/base.txtDjango==2.0.2django-environ==0.4.5django-model-utils==3.1.1djangorestframework==3.7.7インストールが無事済んだら、config/settings/base.pyの先頭に以下のコードを追加しましょう。env.read_env(str(ROOT_DIR.path('.env')))ここで記述したif文は、「環境変数でDJANGO_READ_ENV_FILEをTrueに設定している場合のみ、.envファイルの値を読み込む」ということを意味しています。このおかげで開発環境での環境変数の管理が楽にできます。3のようにファイルパスの扱いが直感的にできるようになっているのもDjango-environの特徴のひとつです。それでは次に、DEBUGとSECRET_KEYをそれぞれ環境変数から読み込むように修正してみましょう。現在のコードでは、SECRET_KEYにはプロジェクト作成時にそれぞれ異なるランダムな文字列が、DEBUGにはTrueが設定されています。それをDjango-environを利用して、以下のように書き直します。False)は、変数DEBUGがbool型であり、環境変数DEBUGが設定されていない場合にはFalseがデフォルト値として使われるということを意味しています。env.bool()がTrueとして評価する環境変数の値は以下の6パターンです(大文字と小文字は区別されません)。'true''on''ok''y''yes''1'.envファイルも用意しておきましょう。リポジトリ直下に.envファイルを作成します。.envDEBUG=TrueSECRET_KEY=<config/settings/base.pyに記述されていたランダムな文字列>.envファイルには認証情報などを記載する場合もあるので、リポジトリにpushしないために.gitignoreに.envを追加してください。https://github.com/massa142/modern-django/blob/master/.gitignoreまた.envファイルのひな型として、.env.exampleファイルを用意しておくことをお勧めします。.env.exampleファイルを用意することにより、.envファイルにどういった値を設定すればよいかわかりやすくなるだけでなく、.gitignoreに追加されている.envファイルの存在を見落とさなくなるメリットがあります。.env.exampleDEBUG=TrueSECRET_KEY=your-secret-keyこの状態で開発サーバーを起動すると、環境変数にSECRET_KEYが見当たらないというエラー(KeyError)が発生します。'SECRET_KEY'手元の環境で動かすためには、最後に環境変数DJANGO_READ_DOT_ENV_FILEに値Trueをセットしましょう。これで先ほど用意した.envファイルの値が環境変数として読み込まれます。CONTROL-C.継続的な開発をしていく際には、以下のように各自お使いのシェルにあわせて環境変数を設定しておくのがよいでしょう。~/.bash_profileDjango-environにはまだ便利な機能が備わっています。適切に環境変数を登録しておくとenv.db()でデータベースの設定を済ませることができます。Django-environについて他にも詳しく知りたい方は公式ドキュメントを参照してください。設定ファイルの切り替え第3回では環境毎に設定ファイルの切り替えを行う方法として、manage.pyコマンドの--settingsオプションを紹介しました。--settings=config.settings.baseというコードがその一例です。--settingsオプションについての詳細は前回の記事を確認してください。(4/5):CodeZine(コードジン)--settingsオプションを都度指定するのが面倒だと感じたり、環境毎にsettingsファイルを分割して管理するのは煩雑だという場合は、1つのsettingsファイルで管理するアプローチを検討しましょう。ここまで説明してきた環境変数とif文を用いることによって、settings.pyひとつで複数の環境に対応できます。FeedHQというDjango製プロダクトのsettingsファイルの書き方が参考になるので、ぜひ確認してみてください。アライドアーキテクツ株式会社にて勤務。2016年4月、株式会社SQUEEZEに入社。スタッフ、Pythonもくもく会の主催を行う。趣味はラクロスとPerfume。3.12」の最初のベータ版がリリース新着記事一覧を見るイベント今後の予定を見るCodeZineは、株式会社翔泳社が運営するソフトウェア開発者向けのWebメディアです。「デベロッパーの成長と課題解決に貢献するメディア」をコンセプトに、現場で役立つ最新情報を日々お届けします。イラストの無断転載を禁じます。記載されているロゴ、システム名、製品名は各社及び商標権者の登録商標あるいは商標です。