IT業界とはあまり関連がなく、プログラムにあまり馴染みがない方々を対象にPythonを使った勉強会をしています。
この一環として、仮想環境を用意することを勧めているのですが、
この意義を理解してもらうのに難儀しています。
仮想環境の利点としては下記のものあるかなと思っています。
- スクラップアンドビルドができる
- システム環境を汚さない、他の仮想環境に影響を与えない
- 複数バージョンを扱える
- 配布するためのテスト環境になる
私の力不足で上記の点をうまく伝えきれない部分があったかもしれませんが、
他にもこのような点で有効だというものがあればアドバイスいただければと思います。
そもそも仮想環境なんて必要ないというご意見でも構いません。
以下、私見的な内容になりますのでお忙しい方は読み飛ばしてください。
普段開発をされる方々にとっては、環境構築は自分の家を建てるような感覚があり、
思い入れもあることから、時には議論が活発になったり加熱するのかなと感じています。
反面、プログラムを初めてやる方々にとっては、
動くプログラム書くことが第一の関心事であり、
環境構築の重要性を認識するのはずっと後のフェーズになる気がしています。
以上のことから、まずは環境構築に対する重要性について
掘り下げていくべきかなとも考えています。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答6件
0
Pythonを教えるときに、これを知っておいたほうがいい、というものはたくさんあると思います。でも、その中には最初に教えてしまうとハードルを上げてしまうものがいくつかあるように思います。思い付く範囲で列挙します。
- Python仮想環境(virtualenv, venv)
with open(...) as f:
のwith- tuple
- range
- class
プログラミング初学者は、プログラミング経験のある特定言語初学者とは異なり、「こういう言語機能はないの?」というような経験からの発想がありません。なので、「便利な道具」をたくさん教えても「なにが便利なのか」分かりません。これは頭が悪かったり不得意だったりというよりは、単に経験不足なだけなことがほとんどだと思います。
まずは、便利な道具は学ばなくても簡単な機能の組み合わせで実現できるところから学んでもらって、不便さを経験してもらうのが良いと思います。その人が学ぶ準備ができた時に便利な道具を教えることで、学習の効率もアップしていくのではないでしょうか。
投稿2017/02/21 13:40
総合スコア1847
0
ベストアンサー
Python初心者の立場から回答します。
仮想環境を使うことの意義を説明する際に、「システム環境から作り直すというとても面倒くさい作業をある程度回避できる」ということを伝えるとよいかと思っています。
私の場合、初めてLinuxを触ったときにPython2.7しか入っていなかったため、仮想環境を使わずにPython3.5を手動インストールしました。
しかしその際に何か手順を間違えたのでしょう。その後おかしな依存関係が発生し、開発で必要になったPhantomJSが動かず、先輩とともに環境構築をやり直す羽目になりました。
ある程度のスキルがあれば環境構築も自由自在でしょうが、初心者にとって環境構築は難しくて大変な作業です。自力でできないという方も多いと思います。
これに対し仮想環境を使っていれば、失敗してもその仮想環境を破棄すれば良いだけです。
今目の前のコードが動いても、これから開発の業務を長く行うのであれば、今後のことまで考えてあらかじめリスクヘッジをしておくべき、ということが伝わるとよいですね。
投稿2017/02/21 13:39
総合スコア1524
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
プログラミングの勉強と絡めるとあまり恩恵がないように思います。利点として挙げられた1~4のいずれも入門者にとってはピンと来ないでしょうから(いずれも入門者にとって興味のある内容とは思えません)。
それと、上のコメントで「日々の作業の効率化」が目的と書かれていますが、それなら、Pythonよりもまずはシェルスクリプトのようにも思います。
もしプログラミングと絡めるなら、例えばネット通信とかリモートアクセスとかCGIとか、実行するのに複数のPCが必要な仕事が仮想環境を使えば1台のPCでできる、というような必然性があれば取っつきやすいし仮想化の意義も説明しやすいと思います。私も、仮想化に対して最初に興味を持ったことは「1台のPCで複数のPCを持つのと同じことができる」というものです。状況に応じて仮想環境を作ったり壊したりしていれば、自然と1~4の利点が理解できるようになると思います。
投稿2017/02/21 15:09
総合スコア5938
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/02/21 15:20
2017/02/21 15:36
0
普及対象はIT業界とはあまり関連がなく、プログラムにあまり馴染みがない方々です。
賛否はさておき興味をそそられた点として、その「普及対象」の方々に何をさせようとされているのですか? 言い換えると、その方々が自発的に何をするようになったら、普及作業のゴールに達したと言えるのですか?
投稿2017/02/21 13:30
総合スコア102
0
Pythonはバージョン2系と3系で大変な事になるので、
深くやるならVagrantかDockerで仮想環境作るのはマストと言って良いでしょう。
(環境が壊れたり僕の環境では再現しませんでした系もVagrantfileやDockerfile1個で対応完了なのは凄まじいですよね)
しかし、どちらも「それなりに分かって使える!」というレベルに達するには
Linuxを数年慣れ親しんだ人間が数日間触り続けてようやくといった代物です。
たかだか数十分〜数時間のハンズオンに盛り込むには明らかに無理があります。
pyenvとvirtualenvで環境構築 - Qiita
こういったツールを使ってもらうのが初期段階ではわかりやすいと思います。
私もNode.jsメインですが、メインマシンでさらっとコードを書く用にNodebrewを常備していますしね。
追記:
私が以前読んだ本に、上級者に至る為の条件が紹介されていました。
初心者は手段より、出来上がったモノ自体に興味を示します。
検索ワード例「PHP ブログ 自作」
初級者が中級者に、中級者が上級者に至る為には実際に行動に起こして様々な壁にぶつかります。
その壁を乗り越える過程で、根本の仕組みを知ることに興味がわいてきます。
検索ワード例「PHP PDO prepare」 ←PDOはPHPのデータベースを扱う標準ライブラリを指します
エンジニアならばいずれ上級者になったほうが良いので仮想環境も覚えさせるべきだと思います。
しかし、Pythonを覚える層は機械学習や統計データを解析するという面が強いのだろうと思います。
アナリストは統計や分析により出てきたデータで金儲けをすることに興味関心があり、統計データを上手に操ったり式を操る上級者を目指すと想定しています。
別にLinuxの上級者を目指す人ではないから仮想環境に対しても興味が薄いでしょうし、その必要もないでしょう。
投稿2017/02/22 01:18
編集2017/02/22 03:00総合スコア21158
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/02/22 02:04
2017/02/22 04:13
0
仮想環境の意義、という話ですが…
勉強会というレベルなら、使える環境を(用意してあれば)
コピーして読み込ませてすぐにトライできる
つまりインストールや設定など面倒なことを
すっとばして始められるのは双方にメリットが
あるんじゃないかなあ。
まあ、パソコンのスペックによっては
仮想環境が実用的ではなかったりするでしょうから
その辺が心配っていえば心配ですかねえ。
場合によっては live CD とかの方がよいかも?
投稿2017/02/21 15:11
総合スコア7458
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/02/21 13:48