IPythonの概要
Pythonのもっとも便利な特徴の一つはインタラクティブなインタプリタであることです。このシステムは、他のプログラム言語のようにいちいちテスト用のファイルを作成することをせずに、アイデアをすぐさま試すことができます。しかし、通常のPythonが備えるインタプリタは、インタラクティブな使い方を広げることにいくらか制限があります。
Ipythonはフリーソフトウェア(GNU LGPLでリリースされています)プロジェクトであり、以下のことをやってみようというものです:
- Pythonの標準シェルよりインタラクティブなシェル。IPythonはインタラクティブに動かす時に、オブジェクトを調べることやシステムシェルへのアクセス、機能追加のための独自の特別なコマンドシステムなどのインタラクティブに動かす時のための多くの特徴を持つ。これはPythonのコード開発またはPythonオブジェクトを使った問題の調査(データ分析など)の両方において効果的な環境であるようにするものである。
- 組み込み可能として提供し、あなたの作成したプログラムにインタプリタを使えるようにする。IPythonは他のプログラム内からシングルコールを使って起動でき、現在の名前空間へのアクセスを提供する。これはデバッグ用としても、バッチ処理とインタラクティブな調査が必要という状況下でも非常に便利。
- フレキシブルなフレームワークの提供。これは他のシステムのために、Pythonを基盤の言語として(組み込み)、これをベース環境として使うことができる。特に、Mathmatica、IDLやMathcadのような科学的な環境がこのフレームワークにインスパイアされたが、似たようなアイデアは多くの分野で有効でしょう。
主な特徴
- 動的オブジェクトの調査。これはドキュメントストリング、関数定義されたプロトタイプ、ソースコード、ソースファイル、そして「?」キーを一回押してインタプリタにアクセスできるオブジェクトの詳細にアクセスすることができます。
- コマンド履歴(セッションをまたいて持続します)が使えるナンバリングされた出力/入力プロンプト。これは、履歴の検索ができ、入力と出力の全てを捕捉できます。
- 以前シングルネームで入力した複数の行を繰り返しすぐに実行できるマクロシステム
- セッションのログを取る(そうしてあなたは後でこれらのログをプログラムのコードとして使うことができます)
- セッションのレストア:保存したログはあなたが以前そのままにしておいた状態にセッションを戻すために再実行することができます。
- ユーザーが拡張できるマジックコマンド。「@」が前に付くコマンドのセットは、IPythonそのもののコントロール、ディレクトリのコントロール、名前空間の情報、そして通常のシステムシェル命令へのたくさんのエイリアスとして使う事ができます。
- エイリアスはあなたのシステムのエイリアスを定義を容易にします。
- システムシェルへの完全なアクセス。「!」で始まる行はシステムシェルに直接通されます。
- プロンプトでTABキーを押すことにより、ローカルな名前空間の補完をします。これはキーワード、メソッド、変数、カレントディレクトリのファイルで有効です。これはreadlineライブラリによってサポートされていて、readlineが提供する振舞い全てについての設定にアクセスすることができます。
- (readlineライブラリを通して)あなたがタイプしたコードを自動的にインデントします(オプション)。
- 冗長で色付きのトレースバックのプリントアウト。視覚的により読み取りやすく、そして冗長モードではこれらは多くの役に立つデバッグ情報を生成します(基本的にcgitbモジュールのターミナルバージョンになります)。
- 自動的に括弧をつけてくれます:呼び出すことができるオブジェクトを括弧なしで実行した時:「sin 3」に自動的に「sin(3)」と変換されます。
- 自動的にクォートを付けてくれます:「,」を1文字目に使えばその行の残りを自動的にクォートさせます。「,my_function a b」は自動的に「my_function("a", "b")となります。
- 拡張可能な入力のシンタックス。あなたは特別な状況の中で入力を簡単にするために、ユーザーの入力をする前にフィルターを定義することができます。これは例えば、他のPythonのセッションや標準Pythonから「>>>」や「...」で始まる複数行のコードをペーストする、ということができます。
- 柔軟なシステム設定。コマンドラインオプション、読み込んでいるモジュール、コードそして実行ファイルなどの設定を永続化できる設定ファイルを使うことができます。このシステムはファイルを何度も読み込むことが可能です。よって、あなたはデフォルト設定となるベースファイルと、各プロジェクト用にカスタマイズした物を切り離してファイルにすることができます。
- 組み込み可能。あなたはIPythonを、あなたが作成したPythonのプログラムの中に、Pythonのシェルとして呼び出すことができます。これはコードのデバッグとして使えますし、もしくはローカルの名前空間についてわかる、ということを利用してインタラクティブにできるようにする(例えばデータの分析といったことにとても便利)ということにも使えます。
- 簡単なデバッガへのアクセス。あなたはIpythonを設定して、捕捉できなかった例外がでる度にPythonのデバッガ(pdb)を呼び出すということができます。これは、全てのデータが生きている状態のまま例外をトリガしたコード内を探ることができ、バグの元を素早く切り離すためにスタックを探索できるということです。
- プロファイラのサポート。あなたは1行のコード(profile.run()に似たもの)もしくはプログラム全体をプロファイラのコントロール下に置くことができます。
各OSへの移植とPythonの必要環境
Linuxで開発しましたので、たいていのunixで動くと思います(SolarisもOKなのを確かめました)。
Mac OS X:見ている限りでは特に問題なく動くようです。
Cygwin:IPythonを何か変更せずとも動くには十分なUnix環境だと思いますけど。
Windows:おそらくWindowsXPではきちんと動くと思いますし、NTやWin2000でも同じように動くのでは。Windos 9xサポートは追加されてますが、わずかなテストしかしていません。
しかしながら、私はWindows上の開発についてそんなに経験がありません。このため、Windows特有のバグは直そうと思ってもなかなかできません。また、満足しうる解決方法を見付けることができません。もしWindowユーザーが開発の助けに参加したと思っていただけるなら、全ての助けはいつでも歓迎します。
MacOS Classic:動くんじゃないかな(見当がつきません)。もし動かなくても移植は簡単でしょう。しかし私はMacintoshにアクセスしないので、他の誰かが移植をする必要があります。
IpythonはPython v2.1以上を必要とします。Python2.2でテストされましたが何も問題は出ていませんでした。
配布場所
Ipythonは通常http://ipython.scipy.orgにおいてSciPyプロジェクトによって置かれています。このサイトでは、ダウンロード、CVSアクセス、メーリングリスト、バグトラッキングシステムを提供します。私はこれらの貢献に対し、SciPyチームにとても感謝します。