Pythonを使う上で、実際に開発するのに使用している環境と、
調査するための環境は切り分けています。
特に自分の場合、ブログのための調査などもあり、
これは開発の合間に必要になってするリサーチとは結構違うと思います。
その辺の環境に関して今回は書きました。
何を使っているか
- IPython
- Vim
- virutalenv
1.初期調査
webで今回使うモジュールについて簡単な初期調査をします。
依存モジュールは何か、どんな機能を持っているのかの簡単な調査です。
検索エンジンでちょっと検索するくらい。
2.検証用の環境をつくる
基本的にはデスクトップに検証用のディレクトリを作ります。
バージョン依存を破壊したり、挙動の怪しいモジュールを追加すると困るため、
専用の環境を作ります。
自分の場合はvirtualenvで仮想環境を作っています。
mkdir module_test cd module_test virutalenv env source env/bin/activate
virtualenvを使っているのはディレクトリ単位の切り分けができるためです。
pyenvとかanacondaよりもそこは視覚的でよい。
3.いろいろ試してみる
先ほど作った環境に試したいモジュールなんかを入れて、いろいろ試します。
たいていは、1で調べた手順を一通り試す感じですね。
基本的にはIPythonを使用します。
IPythonを使う理由は
%pdb
でデバッガーが使える%time
などで速度計測ができる%run
でスクリプトが使える- !でシェルが使える
という感じで、作業の大半をターミナルで完結できるためです。
記録を残すのであれば、IPythonNotebookのほうが良いかもしれませんが、
なんだかんだ言って対話型で使い捨てでもいい場合が多いのでIPythonで満足しています。
特に、メモを作ったりスクリプトを書くなら、!vim
でvimを起動できるので、
今のところはこのままでいいかなあ、という感じです。
(vimもpython,markdownチューンしてありますし)
またinspectモジュールを使うことで、
モジュールの中身なども見つつ、
いろいろ検証している感じです。
おまけ
ちなみにモジュールの整理をするときなんかは、
以下の質問にこたえるようにしています。
- そのモジュールのメイン機能は何か?
- 同様の機能を持つモジュールはあるか?
- 同種のモジュールと比べて、特徴は何か?
- メイン機能を補助するサブ機能は何か?
- サブ機能と同様の機能を持つモジュールはあるか?
- それと比べて特徴は何か?
これで大枠を押さえて、
プロセスの中で関数などを確認していく感じです。
特徴は比較軸になるので、後々生きてきますね。