79:本番環境はシンプルな仕組みで構築する

プログラミング迷子: 多機能なツールを選んでおけば安心?

  • 後輩W:Pythonの環境作るときって、pyenv 1 と pipenv 2 のどっちを使ったらいいんですかね?

  • 先輩T:お、その2択なんだ? pyenvやpipenvが必要だと思ったのは何で?

  • 後輩W:Pythonの環境構築で調べたら、pyenvとpipenvがたくさん見つかったので。

  • 先輩T:なるほど。でも個人環境はともかく、本番環境でpyenvやpipenvを使うのは避けたほうが良いんじゃないかな。

  • 後輩W:えっ、全部の環境で同じツールが使えたほうが楽じゃないですか。

  • 先輩T:なるほど。多機能なツールはどんな問題も解決できる気がしてくるけど、ちょっとそれぞれの目的を考えてみようか。

OSの種類、Pythonの種類、Pythonのインストール方法、ライブラリのインストール方法など、Pythonを使えるように環境構築する組合せは無数にあります。そのため、選択に迷うこともあるでしょう。

選び方として良くないのは、組合せのどれかを使い慣れている、知っているから、という理由ですべての環境でツールを固定してしまうことです。 個人の開発環境で使い慣れたものが本番環境に適しているとは限りませんし、多機能なら良いわけでもありません。 逆に、機能を制約しすぎると個人の環境が使いにくくなってしまい、開発効率に影響することもあります。

便利さを高めると、シンプルから遠ざかっていきます。 pyenv 1pipenv 2virtualenvwrapper 3poetry 4 などが提供する機能が便利でも、便利な機能のために仕組みは複雑化していきます。 本番環境を複雑な仕組みで構築してしまうと、トラブル解決にその分時間がかかってしまいます。 便利な機能が本番環境にも必要かどうか、シンプルな代替手段がないかはよく検討しましょう。

1(1,2)

https://github.com/pyenv/pyenv

2(1,2)

https://pipenv.kennethreitz.org/

3

https://virtualenvwrapper.readthedocs.io/

4

https://python-poetry.org/

ベストプラクティス

本番環境は、機能をシンプルに保ち、必要最小限の仕組みで揃えましょう。 本番環境にたくさんの機能を持たせると問題発生時の切り分けが難しくなり、セキュリティー上の心配も増えていきます。

このとき、個人環境と本番環境を統一することに固執してはいけません。 本番環境や個人環境の目的に合わせて、それぞれ最適な方法を選択しましょう。

cover

(中略)詳細は書籍 自走プログラマー をご参照ください