質問: IT業界とはあまり関連がなく、プログラムにあまり馴染みがない方々を対象にPythonを使った勉強会をしています。 この一環として、仮想環境を用意することを勧めているのですが、 この意義を理解してもらうのに難儀しています。 仮想環境の利点としては下記のものあるかなと思っています。 1. スクラップアンドビルドができる 2. システム環境を汚さない、他の仮想環境に影響を与えない 3. 複数バージョンを扱える 4. 配布するためのテスト環境になる 私の力不足で上記の点をうまく伝えきれない部分があったかもしれませんが、 他にもこのような点で有効だというものがあればアドバイスいただければと思います。 そもそも仮想環境なんて必要ないというご意見でも構いません。 以下、私見的な内容になりますのでお忙しい方は読み飛ばしてください。 普段開発をされる方々にとっては、環境構築は自分の家を建てるような感覚があり、 思い入れもあることから、時には議論が活発になったり加熱するのかなと感じています。 反面、プログラムを初めてやる方々にとっては、 動くプログラム書くことが第一の関心事であり、 環境構築の重要性を認識するのはずっと後のフェーズになる気がしています。 以上のことから、まずは環境構築に対する重要性について 掘り下げていくべきかなとも考えています。
回答: Pythonを教えるときに、これを知っておいたほうがいい、というものはたくさんあると思います。でも、その中には最初に教えてしまうとハードルを上げてしまうものがいくつかあるように思います。思い付く範囲で列挙します。 * Python仮想環境(virtualenv, venv) * `with open(...) as f:` のwith * tuple * range * class プログラミング初学者は、プログラミング経験のある特定言語初学者とは異なり、「こういう言語機能はないの?」というような経験からの発想がありません。なので、「便利な道具」をたくさん教えても「なにが便利なのか」分かりません。これは頭が悪かったり不得意だったりというよりは、単に経験不足なだけなことがほとんどだと思います。 まずは、便利な道具は学ばなくても簡単な機能の組み合わせで実現できるところから学んでもらって、不便さを経験してもらうのが良いと思います。その人が学ぶ準備ができた時に便利な道具を教えることで、学習の効率もアップしていくのではないでしょうか。