25.5. IDLE

ソースコード: Lib/idlelib/


IDLE は Python の統合開発環境で、学習用環境です。

IDLE は次のような特徴があります:

  • tkinter GUIツールキットを使って、100% ピュア Python でコーディングされています
  • クロスプラットホーム: Windows, Unix, Mac OS X で動作します
  • コード入力、出力、エラーメッセージの色付け機能を持った Python shell (対話的インタプリタ) ウィンドウ
  • 多段 Undo、 Python 対応の色づけ、自動的な字下げ、呼び出し情報の表示、自動補完、他たくさんの機能をもつマルチウィンドウ・テキストエディタ
  • 任意のウィンドウ内での検索、エディタウィンドウ内での置換、複数ファイルを跨いだ検索 (grep)
  • 永続的なブレイクポイント、ステップ実行、グローバルとローカル名前空間の視覚化機能を持ったデバッガ
  • 設定、ブラウザ群、ほかダイアログ群

25.5.2. 編集とナビゲーション

ここでの説明で 『C』 は、Windows と Unix の場合は Control キー、Mac OSX では Command キーを示します。

  • Backspace は左側を削除し、 Del は右側を削除します。

  • C-Backspace は語単位で左側を削除、 C-Del は語単位で右側を削除します。

  • 矢印キーと Page Up/Page Down はそれぞれその通りに移動します。

  • C-LeftArrowC-RightArrow は語単位で移動します。

  • Home/End は行の始め/終わりへ移動します。

  • C-Home/C-End はファイルの始め/終わりへ移動します。

  • いくつかの有用な Emacs バインディングが Tcl/Tk から継承されています:

    • C-a で行頭へ移動。
    • C-e で行末へ移動。
    • C-k で行を削除 (ただしクリップボードには入りません)。
    • C-l で挿入ポイントをウィンドウの中心にする。
    • C-b で一文字分文字削除なしで戻る (通常、これはカーソルキーでもできます)。
    • C-f で一文字分文字削除なしで進む (通常、これはカーソルキーでもできます)。
    • C-p で一行上へ移動 (通常、これはカーソルキーでもできます)。
    • C-d で次の文字を削除。

標準的なキーバインディング (C-c がコピーで C-v がペースト、など) は機能するかもしれません。キーバインディングは Configure IDLE ダイアログで選択します。

25.5.2.1. 自動的な字下げ

ブロックの始まりの文の後、次の行は 4 つの空白 (Python Shell ウィンドウでは、一つのタブ) で字下げされます。あるキーワード (break、return など) の後では、次の行は字下げが解除 (dedent) されます。先頭の字下げでは、 Backspace は 4 つの空白があれば削除します。 Tab はインデント幅に対応する数の空白 (Python Shell ウィンドウでは一つのタブ) を挿入します。現在タブは Tcl/Tk の制約のため 4 つの空白に固定されています。

edit メニューの indent/dedent region コマンドも参照してください。

25.5.2.2. 補完 (Completions)

補完は、関数、クラス、クラスの属性について、組み込み型でもユーザ定義でも効きます。ファイル名でも使えます。

『.』 や (文字列内で) os.sep 文字をタイプすると、定義済の遅延 (デフォルトでは 2 秒) の後 AutoCompleteWindow (ACW) が開きます。それらの文字をタイプ (あるいはそれに続けて数文字タイプ) して Tab キーを押すと、入力に続けられる候補が見つかれば ACW はすぐに開きます。

入力についての補完候補がただ一つであれば、 Tab は ACW を開かずに補完します。

『Show Completions [補完候補の一覧]』 で補完候補ウィンドウを常に呼び出せます。これはデフォルトでは C-space で呼び出せます。空の文字列に対してはカレントディレクトリ内にあるファイルを一覧します。空行に対しては、現在の名前空間内の組み込み・ユーザ定義の関数やクラス、インポートされたモジュールを一覧します。何かの入力に続けた場合は ACW はもっと特定しようと頑張ります。

文字列がタイプされると ACW の選択が、それら入力に一番近いものにジャンプします。Editor ウィンドウや Shell ウィンドウでは、 tab をタイプすれば、 曖昧でない最長マッチするものを拾ってきます。現在の ACW 内の選択を確定するには、リターンキーやダブルクリックを使用してもいいですし、 tab を 2 回タイプしてもいいです。ACW 内ではカーソルキーや PgUp/PgDn 、マウス操作やスクロールバー操作も使用できます。

「隠し」 属性には 『.』 のあとで例えば 『_』 のような隠し属性名の開始文字を入力すればアクセスできます。これによって、モジュールの __all__ やクラスプライベートな属性にアクセスできます。

Completion と 『Expand Word』 機能を活用して猛烈タイピングから卒業しましょう!

補完は現在のところ、名前空間内のものに制限されています。 __main__ を介さない Editor ウィンドウ内や sys.modules 内の名前は見つけられません。あなたのインポートとともにモジュールを一度実行すれば、この状況は正せます。なお、IDLE 自身は sys.modules 内のモジュールのかなりの数を使う (re モジュールなど) ため、デフォルトでかなりの数が見つかります (訳注: 動かしてみるとこの表現がわかりにくかったりします。 import とタイプしたときに候補モジュールに re が出てくるわけではないので)。

ACW の招かれざるポップアップ表示がイヤならば、設定で delay を長くするか、拡張自体を無効にしてしまいましょう。

25.5.2.3. 呼び出しヒント (Calltips)

calltip は、 アクセス可能な 関数名に続けて ( をタイプすると表示されます。名前の式ではドットや添え字を含んでいても構いません。calltip は、それをクリックするか、カーソルが引数のエリアから外れるか、 ) をタイプするまでは表示されたままとなります。カーソルが引数部分にあれば、メニューやショートカットで calltip を表示できます。

calltip では関数シグニチャとドキュメンテーション文字列の最初の行を表示します。アクセスできるシグニチャがない組み込み関数の場合は、ドキュメンテーション文字列から、5 行目までの全行か最初の空行までの全行を表示します。いまのところは上記の通りですが、この詳細は変更される場合があります。

アクセス可能な 関数の集合は IDLE 自身がインポートしたものも含め、最後に IDLE を再スタートしてから既にユーザプロセス内で何がインポートされたのか、どの定義が実行されたのかに拠ります。

たとえば Shell を再スタートして (訳注: itertools をインポートせずに) itertools.count( とタイプしてみてください。 IDLE が itertools を自身の使用のためにユーザプロセス内にインポートするので、calltip が表示されます。 (これは変更されるかもしれません)。 turtle.write( と入力しても、何も表示されないでしょう。これは、IDLE は turtle をインポートしないためです。メニューやショートカットを使用しても、何も起こりません。 import turtle と入力した後なら、 turtle.write( で calltip が表示されるようになります。

Editor 内では import 文そのものだけでは、一度でもそのファイルを実行しない限り calltip に影響しません。ファイルの上の方でインポート文を書いたら実行するとか、あるいは既存のものは編集前に実行してしまえ、というのも良いかもしれませんね。

25.5.2.4. Python Shell ウィンドウ

  • C-c で実行中のコマンドを中断します。

  • C-d でファイル終端 (end-of-file) を送り、 >>> プロンプトでタイプしていた場合はウィンドウを閉じます。

  • Alt-/ (語を展開します) もタイピングを減らすのに便利です。

    コマンド履歴

    • Alt-p は、以前のコマンドから検索します。OS X では C-p を使ってください。
    • Alt-n は、次を取り出します。OS X では C-n を使ってください。
    • Return は、以前のコマンドを取り出しているときは、そのコマンドを取り出します。

25.5.2.5. テキストの色

IDLE の表示はデフォルトで白背景に黒字ですが、以下のような特別な意味を持ったテキストには色が付きす。Shell では shell 出力、 shell エラー、ユーザエラー。Python コードでは Shell プロンプト内や Editor でのキーワード、組み込みクラスや組み込み関数の名前、 classdef に続く名前、文字列、そしてコメント。どんなテキストウィンドウでも、カーソル (あれば)、検索で合致したテキスト (あれば)、そして選択されているテキストには色が付きます。

このテキストの色付けはバックグラウンドで行われるため、たまに色が付いてない状態が見えてしまいます。カラースキームは、 Configure IDLE [IDLE の設定] ダイアログの Highlighting タブで変更できます。ただし、エディタ内のデバッガブレークポイント行のマーキングと、ポップアップとダイアログないのテキストの色は、ユーザーにより変更することはできません。

25.5.3. スタートアップとコードの実行

-s オプションとともに起動すると、IDLE は環境変数 IDLESTARTUPPYTHONSTARTUP で参照されているファイルを実行します。 IDLE はまず IDLESTARTUP をチェックし、あれば参照しているファイルを実行します。 IDLESTARTUP が無ければ、IDLE は PYTHONSTARTUP をチェックします。これらの環境変数で参照されているファイルは、IDLE シェルでよく使う関数を置いたり、一般的なモジュールの import 文を実行するのに便利です。

加えて、Tk もスタートアップファイルがあればそれをロードします。その Tk のファイルは無条件にロードされることに注意してください。このファイルは .Idle.py で、ユーザーのホームディレクトリから探されます。このファイルの中の文は Tk の名前空間で実行されるので、IDLE の Python シェルで使う関数を import するのには便利ではありません。

25.5.3.1. コマンドラインの使い方

idle.py [-c command] [-d] [-e] [-h] [-i] [-r file] [-s] [-t title] [-] [arg] ...

-c command  run command in the shell window
-d          enable debugger and open shell window
-e          open editor window
-h          print help message with legal combinations and exit
-i          open shell window
-r file     run file in shell window
-s          run $IDLESTARTUP or $PYTHONSTARTUP first, in shell window
-t title    set title of shell window
-           run stdin in shell (- must be last option before args)

引数がある場合 (訳注: 以下の説明、たぶん実情に反してますが一応訳しています):

  • -, -c, -r のどれかを使う場合、全ての引数は sys.argv[1:...] に入り、 sys.argv[0] には '', '-c', '-r' の、与えたものが入ります。 Options ダイアログでデフォルトだったとしても Editor ウィンドウが開くことはありません。
  • これ以外の場合は引数は編集対象のファイルとして開かれて、 sys.argv には IDLE そのものに渡された引数が反映されます。

25.5.3.2. IDLE とコンソールの違い

可能な限り、IDLE で Python コードを実行するのとコンソールから実行するのとでは同じ結果になるようにしています。しかし、インターフェイスと操作が異なるため、目に見える結果として違いが現れることがあります。例えば、 sys.modules はより多くのエントリで始まります。

IDLE はまた、 sys.stdin, sys.stdout, sys.stderr を、シェルウィンドウから入力を受け取り、また出力をシェルウィンドウに送るオブジェクトと置き換えます。このウィンドウは、フォーカスを持っている間キーボードと画面をコントロールします。これは通常透過的ですが、キーボードと画面に直接アクセスする機能は動きません。もし sysimportlib.reload(sys) によってリセットされたら、 IDLE の変更が失われて、 input, raw_input, print のようなものは正しく動きません。

IDLE の Shell では、ユーザーは完全な文を入力し、編集し、呼び戻すことができます。一度に一つきりの物理行でしか動作しないコンソールもありますが、IDLE は、 exec を使用してそれぞれの文 (statement) を実行します。その結果、それぞれの文に対して毎回 '__builtins__' が定義されます。

25.5.3.3. サブプロセスを起こさずに起動する

デフォルトでは、IDLE でのユーザコードの実行は、内部的なループバックインターフェイスを使用する、ソケット経由の分離されたサブプロセスで行われます。この接続は外部からは見えませんし、インターネットとのデータの送受信は行われません。ファイアウォールソフトウェアの警告が発生しても、無視して構いません。

ソケット接続の確立を試みて失敗した場合、IDLE によって通知されます。このような失敗は一過性の場合もありますが、永続的に失敗する場合は、ファイアウォールが接続をブロックしているか、特定のシステムの設定が誤っていることが原因かもしれません。問題が解決するまでは、 IDLE をコマンドラインオプション -n で起動することもできます。

IDLE を -n コマンドラインスイッチを使って開始した場合、IDLE は単一のプロセス内で動作し、RPC Python 実行サーバを走らせるサブプロセスを作りません。これは、プラットフォーム上で Python がサブプロセスや RPC ソケットインターフェイスを作れない場合に有用かもしれません。ただし、このモードではユーザコードが IDLE 自身から隔離されませんし、Run/Run Module (F5) 選択時に環境が再起動されてまっさらな状態になることもありません。コードを変更した場合、影響するモジュールを reload() しないといけませんし、変更を反映するには、すべての特定の項目 (from foo import baz など) を再インポートしないといけません。これらの理由から、可能なら常にデフォルトのサブプロセスを起こすモードで IDLE を起動するのが吉です。

バージョン 3.4 で撤廃.

25.5.4. ヘルプとお好み設定

25.5.4.1. Additional help sources [ヘルプ参照先の追加]

IDLE には 「Python Docs」 なるメニューエントリがあります。これを選択すると、https://docs.python.org にある、チュートリアルを含む大掛かりなヘルプが開きます。Configure IDLE [IDLE の設定] ダイアログでいつでもヘルプメニューにヘルプ参照先の URL を追加したり削除したりできます。詳しくは Help メニューの IDLE ヘルプオプションを参照してください。

25.5.4.2. Setting preferences [お好み設定]

フォント、ハイライト、キーバインドの設定、一般設定は Option メニューの Configure IDLE [IDLE の設定] から変更できます。ユーザー定義のキーも作成できます。IDLE では 4 つの組み込みのキーバインドを用意していますが、Configure IDLE ダイアログの keys タブで、カスタムなキーセットも作成できます。

25.5.4.3. Extensions [拡張]

IDLE には拡張 (extension) 機能があります。拡張の設定は Options -> Configure IDLE -> Extensions で変更出来ます。さらに詳しく知りたければ idlelib/ ディレクトリ内にあるファイル config-extensions.def の最初の方をみてください。デフォルトの拡張は今のところ以下です:

  • FormatParagraph
  • AutoExpand
  • ZoomHeight
  • ScriptBinding
  • CallTips
  • ParenMatch
  • AutoComplete
  • CodeContext
  • RstripExtension