IDLE --- Python のエディタとシェル
**********************************

**ソースコード:** Lib/idlelib/

======================================================================

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

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

* クロスプラットホーム: Windows, Unix, macOS で動作します

* コード入力、出力、エラーメッセージの色付け機能を持った Python shell
  (対話的インタプリタ) ウィンドウ

* 多段 Undo、 Python 対応の色づけ、自動的な字下げ、呼び出し情報の表示
  、自動補完、他たくさんの機能をもつマルチウィンドウ・テキストエディタ

* 任意のウィンドウ内での検索、エディタウィンドウ内での置換、複数ファイ
  ルを跨いだ検索 (grep)

* 永続的なブレイクポイント、ステップ実行、グローバルとローカル名前空間
  の視覚化機能を持ったデバッガ

* 設定、ブラウザ群、ほかダイアログ群

IDLE アプリケーションは "idlelib" パッケージで実装されています。

これは *optional module* です。 お使いの CPython に含まれていない場合
は、配布元 (Python を提供した組織や人) のドキュメントを確認してくださ
い。 配布元の方は オプションのモジュールの要件 を参照してください。


メニュー
========

IDLE には2種類のメインウィンドウ、Shell ウィンドウと Editor ウィンドウ
があります。 Editor ウィンドウは同時に複数開けます。 Windows と Linux
では、それぞれ個別のトップメニューがあります。 後で解説するそれぞれの
メニューは、ウィンドウがどちらのウィンドウタイプなのかを示しています。

Edit => Find in Files などで使われる Output ウィンドウは、Editor ウィ
ンドウのサブタイプです。 現在は同じトップメニューを持ちますが、デフォ
ルトのタイトルとコンテキストメニューが異なります。

macOS では、アプリケーションメニューが 1 つあります。 現在選択している
ウィンドウに応じて動的に変化します。 IDLE メニューがあり、以下で説明す
る一部の項目は Apple のガイドラインに合わせて別の場所に配置されていま
す。


File メニュー (Shell ウィンドウ、Editor ウィンドウ)
---------------------------------------------------

New File [新規ファイル]
   新しいファイル編集ウィンドウを作成します。

Open... [開く...]
   Open ダイアログを使って既存のファイルをオープンします。

Open Module... [モジュールを開く...]
   既存のモジュールをオープンします (sys.path を検索します)。

Recent Files [最近使ったファイル]
   最近使ったファイルのリストを開きます。ファイルを一つクリックすると
   それを開きます。

Module Browser [モジュールブラウザー]
   現在 Editor が開いているファイル内にあるクラス、関数、メソッドを木
   構造で可視化します。 Shell からの場合は、先にモジュール選択のダイア
   ログが開きます。

Path Browser [パスブラウザ]
   sys.path のディレクトリ、モジュール、関数、クラス、メソッドを木構造
   で表示します。

Save [保存]
   現在のウィンドウを対応するファイルがあればそこに保存します。開いて
   から、または最後に保存したのちに編集があった場合のウィンドウには、
   ウィンドウタイトルの前後に * が付けられます。対応するファイルがなけ
   れば代わりに Save As が実行されます。

Save As... [名前を付けて保存...]
   Save As ダイアログを使って現在のウィンドウを保存します。 保存したフ
   ァイルが、ウィンドウに対応する新しいファイルになります。 (ファイル
   マネージャーで拡張子を隠す設定にしている場合、ファイル名の入力欄で
   は現在の拡張子が省略されます。 新しいファイル名に '.' がなければ、
   Python ファイルには '.py'、テキストファイルには '.txt' を追加します
   。 ただし macOS Aqua では、すべてのファイルに '.py' を追加します。)

Save Copy As... [コピーとして保存...]
   ウィンドウに対応するファイルを変更せずに、現在のウィンドウを別のフ
   ァイルに保存します。 (拡張子については、上の Save As の注意を参照し
   てください。)

Print Window [ウィンドウを印刷]
   現在のウィンドウをデフォルトプリンタで印刷します。

Close Window [ウィンドウを閉じる]
   現在のウィンドウを閉じます (未保存の Editor なら保存するかどうかを
   、未保存の Shell なら実行を終了するかどうかを確認します)。 Shell ウ
   ィンドウで "exit()" または "close()" を呼び出しても Shell を閉じま
   す。 それが唯一のウィンドウなら、IDLE も終了します。

Exit IDLE [IDLE を終了]
   すべてのウィンドウを閉じて IDLE を終了します (未保存の編集ウィンド
   ウは保存するかどうかを確認します)。


Edit メニュー (Shell ウィンドウ、Editor ウィンドウ)
---------------------------------------------------

Undo [元に戻す]
   現在のウィンドウに対する最後の変更を Undo (取り消し) します。最大で
   1000 個の変更が Undo できます。

Redo [やり直し]
   現在のウィンドウで、最後に取り消した変更をやり直します。

Select All [全て選択]
   カレントウィンドウの内容全体を選択します。

Cut [切り取り]
   システムのクリップボードへ選択された部分をコピーします。それから選
   択された部分を削除します。

Copy [コピー]
   選択された部分をシステムのクリップボードへコピーします。

Paste [貼り付け]
   システムのクリップボードの内容をカレントウィンドウへ挿入します。

クリップボードの機能はコンテキストメニューからも使えます。

Find... [検索...]
   たくさんのオプションをもつ検索ダイアログボックスを開きます。

Find Again [再検索]
   直前の検索があれば、それを繰り返します。

Find Selection [現在の選択を検索]
   現在選択された文字列があれば、それを検索します。

Find in Files... [ファイルから検索...]
   ファイル検索ダイアログを開きます。結果を新しい出力ウィンドウに出力
   します。

Replace... [置換...]
   検索と置換ダイアログを開きます。

Go to Line [指定行へジャンプ]
   指定された行の先頭にカーソルを移動し、その行を表示します。 ファイル
   の末尾より後の行を指定すると、末尾に移動します。 選択を解除し、行番
   号と列番号のステータス表示を更新します。

Show Completions [補完候補の一覧]
   既存の名前を選べるスクロール可能な一覧を開きます。 下の「編集とナビ
   ゲーション」の節にある 補完 を参照してください。

Expand Word [語の展開]
   先頭だけタイプしたものを、同一ウィンドウ内の完全な語と合致するもの
   に展開します。異なる展開を得るためには繰り返します。

Show Call Tip [呼び出しヒントを表示]
   関数の開き括弧の後で、括弧が閉じられていなければ、引数のヒントを小
   さなウィンドウに表示します。 下の「編集とナビゲーション」の節にある
   呼び出しヒント を参照してください。

Show Surrounding Parens [囲んでいる括弧を表示]
   囲んでいる括弧をハイライトします。


Format メニュー (Editor ウィンドウのみ)
---------------------------------------

Format Paragraph [パラグラフのフォーマット]
   文字の挿入カーソルがあるテキストブロックの折り返しを整えます。 コー
   ド行には使わないでください。 下の「編集とナビゲーション」の節にある
   ブロックの整形 を参照してください。

Indent Region [領域をインデント]
   選択された行を右へインデント幅分シフトします (デフォルトは空白 4 個
   )。

Dedent Region [領域をインデント解除]
   選択された行を左へインデント幅分シフトします (デフォルトは空白 4 個
   )。

Comment Out Region [領域をコメントアウト]
   選択された行の先頭に ## を挿入します。

Uncomment Region [領域のコメントを解除]
   選択された行から先頭の # あるいは ## を取り除きます。

Tabify Region [領域のタブ化]
   *先頭* の一続きの空白をタブに置き換えます (注意: Python コードのイ
   ンデントには 4 つの空白を使うことをお勧めします)。

Untabify Region [領域の非タブ化]
   *すべての* タブを適切な数の空白に置き換えます。

Toggle Tabs [タブの切り替え]
   字下げのために空白を使うかタブを使うかを切り替えるダイアログを開き
   ます。

New Indent Width [新しいインデント幅]
   インデント幅を変更するダイアログを開きます。Python コミュニティによ
   って受け容れられているデフォルトは空白 4 個です。

Strip Trailing Whitespace [行末の空白を削除]
   複数行文字列内の行も含め、各行に "str.rstrip()" を適用して、最後の
   空白以外の文字より後にあるスペースや他の空白文字を削除します。
   Shell ウィンドウ以外では、ファイル末尾の余分な改行も削除します。


Run メニュー (Editor ウィンドウのみ)
------------------------------------

Run Module [モジュールの実行]
   Check Module を実行します。エラーがなければ Shell の環境をクリーン
   にして再スタートした上で、モジュールを実行します。出力は Shell ウィ
   ンドウに表示されます。"print" や "write" しない限り、この出力はされ
   ません。モジュール実行が完了すると Shell はフォーカスされた状態のま
   まで、プロンプトを表示します。これにより対話的に実行結果を調べるこ
   とができます。この機能は、コマンドラインからファイルを "python -i
   file" で実行することに相当します。

Run... Customized [設定を指定して実行...]
   Run Module と同じですが、設定を指定してモジュールを実行します。
   *Command Line Arguments* で指定した引数は、コマンドラインから渡した
   かのように "sys.argv" に追加されます。 Shell を再起動せずにモジュー
   ルを実行することもできます。

Check Module [モジュールのチェック]
   Editor ウィンドウでいま開いているモジュールを構文チェックします。モ
   ジュールが未保存の場合、 Options -> Configure IDLE -> General の
   "Autosave Preferences" の設定にもとづき、確認を求められるか自動的に
   保存します。構文エラーが見つかると Editor ウィンドウでそのおよその
   位置に移動します。

Python Shell [Python シェル]
   Python Shell ウィンドウを開くか、起こします。


Shell メニュー (Shell ウィンドウのみ)
-------------------------------------

View Last Restart [最後のリスタートを表示する]
   最後に Shell のリスタートを行った場所まで Shell ウインドウをスクロ
   ールします。

Restart Shell [Shell のリスタート]
   Shell を再起動して環境を初期化し、表示と例外処理をリセットします。

Previous History [前の履歴]
   現在の入力に一致する、履歴内の以前のコマンドを順に呼び出します。

Next History [次の履歴]
   現在の入力に一致する、履歴内の後のコマンドを順に呼び出します。

Interrupt Execution [実行の中断]
   プログラムの実行を停止します。


Debug メニュー (Shell ウィンドウのみ)
-------------------------------------

Go to File/Line [ファイル/行へ移動]
   カーソルのある現在行とその上の行から、ファイル名と行番号を探します
   。 見つかったファイルがまだ開かれていなければ開き、その行を表示しま
   す。 例外のトレースバックが参照するソース行や、Find in Files で見つ
   かった行を見るために使います。 Shell ウィンドウと Output ウィンドウ
   のコンテキストメニューからも利用できます。

Debugger [デバッガ] (トグル切り替え)
   アクティブにすると、Shell または Editor に入力したコードをデバッガ
   のもとで実行します。Editor ではコンテキストメニューからブレイクポイ
   ントをセット出来ます。この機能はまだ不完全で、少々実験的です。

Stack Viewer [スタックビューア]
   最後の例外のスタックトレースと locals 辞書、 globals 辞書をツリーウ
   ィジットで表示します。

Auto-open Stack Viewer [スタックビューアの自動オープン]
   未捕捉の例外時にスタックビューアを自動的に開くかどうかを切り替えま
   す。


Options メニュー (Shell ウィンドウ、Editor ウィンドウ)
------------------------------------------------------

Configure IDLE [IDLE の設定]
   設定ダイアログを開き、フォント、インデント、キーバインディング、テ
   キストの配色、起動時のウィンドウとサイズ、追加のヘルプソース、拡張
   機能の設定を変更します。 macOS では、アプリケーションメニューの
   Preferences を選んで設定ダイアログを開きます。 詳しくは「ヘルプと設
   定」の 設定の変更 を参照してください。

ほとんどの設定項目は、すべてのウィンドウ、または今後開くすべてのウィン
ドウに適用されます。 以下の項目は、アクティブなウィンドウにだけ適用さ
れます。

Show/Hide Code Context [コードコンテキストを表示/非表示] (Editor ウィ
ンドウのみ)
   Editor ウィンドウの上部にペインを開き、スクロールによってウィンドウ
   の上端より上に隠れたコードのブロックコンテキストを表示します。 下の
   編集とナビゲーションの節にある コードコンテキスト を参照してくださ
   い。

Show/Hide Line Numbers [行番号を表示/非表示] (Editor ウィンドウのみ)
   編集ウィンドウの左に、各行の番号を表示する列を開きます。 デフォルト
   では無効ですが、設定で変更できます (設定の変更 を参照)。

Zoom/Restore Height [高さを最大化/復元]
   ウィンドウを通常のサイズと最大の高さとの間で切り替えます。 初期サイ
   ズは、Configure IDLE ダイアログの General タブで変更しない限り、40
   行 × 80 文字です。 画面上で初めて高さを最大化するときにウィンドウを
   一時的に最大化して、その画面での最大の高さを調べます。 画面の設定を
   変更すると、保存された高さが使えなくなる場合があります。 ウィンドウ
   が最大化されているときは、この切り替えは何もしません。


Window メニュー (Shell ウィンドウ、Editor ウィンドウ)
-----------------------------------------------------

開いているすべてのウィンドウの名前を一覧表示します。 選択したウィンド
ウを前面に表示します (必要なら最小化を解除します)。


Help メニュー (Shell ウィンドウ、Editor ウィンドウ)
---------------------------------------------------

About IDLE [IDLE について]
   バージョン、コピーライト、ライセンス、クレジット、その他を表示しま
   す。

IDLE Help [IDLE ヘルプ]
   メニューオプション、基本的な編集やナビゲーションその他チップスを詳
   しく書いた IDLE のドキュメントを表示します。

Python Docs [Python ドキュメント]
   Python ドキュメントがローカルにインストールされていればそれを開きま
   す。もしくはウェブブラウザで最新の Python ドキュメント
   (https://docs.python.org) を開きます。(訳注: いずれも何もしていなけ
   れば英語。下記参照。)

Turtle Demo [Turtle デモ]
   Python コード例とタートルによる描画を使って turtledemo モジュールを
   実行します。

Configure IDLE ダイアログの General タブで、追加のヘルプソースをここに
加えられます。 Help メニューの項目について詳しくは、下の ヘルプソース
を参照してください。


コンテキストメニュー
--------------------

ウィンドウ内で右クリック (macOS では Control-クリック) でコンテキスト
メニューが開きます。コンテキストメニューには Edit メニューにもある標準
的なクリップボード機能が含まれています。

Cut [切り取り]
   システムのクリップボードへ選択された部分をコピーします。それから選
   択された部分を削除します。

Copy [コピー]
   選択された部分をシステムのクリップボードへコピーします。

Paste [貼り付け]
   システムのクリップボードの内容をカレントウィンドウへ挿入します。

Editor ウィンドウではさらにブレイクポイント機能が使えます。ブレイクポ
イントがセットされた行には、特別に印がつきます。ブレイクポイントはデバ
ッガのもとでの実行にだけ影響します。ファイルに付けたブレイクポイントは
ユーザの ".idlerc" ディレクトリに保存されます。

Set Breakpoint [ブレークポイントのセット]
   現在行にブレークポイントをセットします。

Clear Breakpoint [ブレークポイントのクリア]
   その行のブレークポイントをクリアします。

Shell ウィンドウや Output ウィンドウには次のメニューもあります。

Go to file/line [ファイル/行へ移動]
   Debug メニューと同じものです。

Shell ウィンドウには、下の「Python Shell ウィンドウ」で説明する、出力
を折りたたむ機能もあります。

Squeeze [折りたたむ]
   カーソルが出力行の上にある場合、その上のコードと下のプロンプトの間
   にある出力全体を「Squeezed text」ラベルに折りたたみます。


編集とナビゲーション
====================


Editor ウィンドウ
-----------------

設定や起動方法によっては、IDLE の起動時に Editor ウィンドウが開きます
。 その後は File メニューを使ってください。 同じファイルを開ける
Editor ウィンドウは 1 つだけです。

タイトルバーには、ファイル名、フルパス、およびそのウィンドウを実行して
いる Python と IDLE のバージョンを表示します。 ステータスバーには行番
号 ('Ln') と列番号 ('Col') を表示します。 行番号は 1 から、列番号は 0
から始まります。

IDLE は、既知の .py* 拡張子を持つファイルを Python コードとして扱い、
他のファイルはそうではないとみなします。 Python コードは Run メニュー
で実行します。


キーバインディング
------------------

IDLE の挿入カーソルは、文字と文字の間にある細い縦棒です。 文字を入力す
ると、挿入カーソルとその右にあるものすべてが 1 文字分右に移動し、空い
た場所に新しい文字が入ります。

文字以外のいくつかのキーは、カーソルを移動し、場合によっては文字を削除
します。 削除したテキストはクリップボードに入りませんが、IDLE には取り
消しの履歴があります。 このドキュメントのキーの説明では、'C' は
Windows と Unix では "Control" キー、macOS では "Command" キーを指しま
す。 (これらの説明はすべて、キーの割り当てを変更していないことを前提と
しています。)

* 矢印キーは、カーソルを 1 文字または 1 行移動します。

* "C"-"LeftArrow" と "C"-"RightArrow" は、1 単語分左または右に移動しま
  す。

* "Home" と "End" は、行の先頭または末尾に移動します。

* "Page Up" と "Page Down" は、1 画面分上または下に移動します。

* "C"-"Home" と "C"-"End" は、ファイルの先頭または末尾に移動します。

* "Backspace" と "Del" (または "C"-"d") は、前または後の 1 文字を削除
  します。

* "C"-"Backspace" と "C"-"Del" は、左または右の 1 単語を削除します。

* "C"-"k" は、カーソルより右側にあるものをすべて削除 (kill) します。

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


自動的な字下げ
--------------

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

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


検索と置換
----------

選択範囲があれば、そのテキストが検索対象になります。 ただし、検索は行
末の改行を除いた各行の中でだけ行うため、1 行内の選択範囲だけが使えます
。 "[x] Regular expression" にチェックを入れると、検索対象を Python の
re モジュールの規則に従って解釈します。


補完 (Completions)
------------------

要求があり、候補が利用できる場合は、モジュール名、クラスや関数の属性、
ファイル名を補完します。 どの方法で要求しても、既存の名前を含む補完ボ
ックスが表示されます (例外は下の Tab による補完を参照)。 ボックスの表
示中は、文字の入力や削除、"Up"、"Down"、"PageUp"、"PageDown"、"Home"、
"End" キー、 またはボックス内のシングルクリックによって、補完する名前
とハイライトされる項目を変更できます。 "Escape"、"Enter"、"Tab" の 2
回押し、またはボックスの外のクリックでボックスを閉じます。 ボックス内
でダブルクリックすると、項目を選択して閉じます。

ボックスを開く方法の 1 つは、きっかけとなる文字を入力して所定の時間待
つことです。 デフォルトは 2 秒で、設定ダイアログで変更できます。 (自動
表示を防ぐには、待ち時間を 100000000 ミリ秒などの大きな値に設定します
。) インポート済みのモジュール名やクラス・関数の属性では、'.' を入力し
ます。 ルートディレクトリ内のファイル名では、開き引用符の直後に
"os.sep" または "os.altsep" を入力します。 (Windows では、その前にドラ
イブを指定できます。) ディレクトリ名と区切り文字を入力すると、サブディ
レクトリに進みます。

待たずに開きたい場合や一度ボックスを閉じた後は、Edit メニューの Show
Completions で補完ボックスをすぐに開けます。 デフォルトのショートカッ
トキーは "C"-"space" です。 開く前に目的の名前の先頭部分を入力すると、
最初に一致する候補、または近い候補を表示します。 ボックスを表示した後
に先頭部分を入力しても同じ結果になります。 引用符の後で Show
Completions を使うと、ルートディレクトリではなく現在のディレクトリのフ
ァイル名を補完します。

先頭部分を入力してから "Tab" を押すと、通常は Show Completions と同じ
動作になります (先頭部分がなければインデントします)。 ただし、一致する
候補が 1 つだけの場合は、ボックスを開かずにその候補を編集テキストに挿
入します。

文字列の外で、前に '.' がない状態で Show Completions を実行するか、先
頭部分を入力して "Tab" を押すと、 キーワード、組み込みの名前、利用可能
なモジュールレベルの名前を含むボックスを開きます。

Shell ではなく Editor でコードを編集している場合、コードを実行してその
後 Shell を再起動しなければ、利用可能なモジュールレベルの名前を増やせ
ます。 これは、ファイルの先頭に import 文を追加した後で特に便利です。
属性の補完候補も増えます。

補完ボックスは最初、'_' で始まる名前や、モジュールの場合は '__all__'
に含まれない名前を表示しません。 ボックスを開く前でも後でも、'.' の後
に '_' を入力すると、隠れている名前にアクセスできます。


呼び出しヒント (Calltips)
-------------------------

*アクセス可能な* 関数の名前の後に "(" を入力すると、呼び出しヒントを自
動で表示します。 関数名を表す式には、ドットや添字を含められます。 ヒン
トをクリックするか、カーソルを引数の範囲外へ移動するか、")" を入力する
まで表示されます。 カーソルが定義の引数部分にあるときは、Edit メニュー
の Show Call Tip を選ぶか、そのショートカットを入力して呼び出しヒント
を表示できます。

呼び出しヒントには、関数のシグネチャと docstring を表示します。
docstring は最初の空行、または空行以外の 5 行目までを表示します。 (一
部の組み込み関数には、取得できるシグネチャがありません。) シグネチャ内
の '/' はその前の引数を位置だけで渡すことを、'*' はその後の引数を名前
(キーワード) だけで渡すことを示します。 詳細は変更されることがあります
。

Shell でアクセスできる関数は、最後の再起動以降にユーザープロセスにイン
ポートしたモジュール (IDLE 自身がインポートしたものも含みます) と、実
行した定義によって決まります。

例えば、Shell を再起動して "itertools.count(" と入力してください。
IDLE が自分で使うためにユーザープロセスに itertools をインポートしてい
るので、呼び出しヒントが表示されます (この動作は変更される可能性があり
ます)。 "turtle.write(" と入力しても、何も表示されません。 IDLE 自身は
turtle をインポートしないからです。 メニュー項目やショートカットでも何
も起こりません。 "import turtle" と入力してください。 それ以降は、
"turtle.write(" で呼び出しヒントを表示できます。

Editor では、ファイルを実行するまで import 文は効果を持ちません。
import 文を書いた後、関数定義を追加した後、あるいは既存のファイルを開
いた後に、ファイルを実行するとよいでしょう。


ブロックの整形
--------------

Reformat Paragraph は、同じインデントで連続した空行でないコメントのブ
ロック (「段落」)、複数行文字列内の同様のテキストブロック、またはその
一部として選択した範囲の折り返しを整えます。 必要に応じて空行を追加し
、文字列とコードを分離してください。 選択範囲に行の一部が含まれる場合
は、その行全体に範囲を広げます。 整形後の行は元と同じインデントを持ち
、全体の長さは最大 N 列 (文字) になります。 N のデフォルト値 72 は、
IDLE Settings の Window タブで変更できます。


コードコンテキスト
------------------

Python コードを含む Editor ウィンドウでは、コードコンテキストの表示を
切り替えて、ウィンドウ上部のペインを表示または非表示にできます。 この
ペインを表示すると、"class"、"def"、"if" などのキーワードで始まるブロ
ックの開始行のうち、スクロールによって見えなくなったものを固定して表示
します。 ペインのサイズは、現在のすべての階層のコンテキストを表示する
ために必要に応じて伸縮します。 最大行数は Configure IDLE ダイアログで
設定し、デフォルトは 15 行です。 表示するコンテキスト行がない状態で機
能を有効にすると、空行を 1 行表示します。 コンテキストペインの行をクリ
ックすると、その行を Editor の先頭に移動します。

コンテキストペインの文字色と背景色は、Configure IDLE ダイアログの
Highlights タブで設定できます。


Shell ウィンドウ
----------------

IDLE の Shell では、文全体を入力、編集し、履歴から呼び出せます。 (ほと
んどのコンソールや端末では、一度に扱えるのは 1 つの物理行だけです。)

1 行の文を実行するには、行内のどこかにカーソルを置いて "Return" を押し
ます。 バックスラッシュ ("\") で行を継続している場合は、最後の物理行に
カーソルを置く必要があります。 複数行の複合文を実行するには、文の後に
空行を入力します。

Shell にコードを貼り付けても、上記のように "Return" を押すまでコンパイ
ルも実行も行いません。 実行前に貼り付けたコードを編集できます。 複数の
文を Shell に貼り付けると、それらを 1 つの文としてコンパイルしようとし
て "SyntaxError" になります。

"RESTART" を含む行は、ユーザーコードの実行プロセスが再起動されたことを
意味します。 これは、実行プロセスがクラッシュしたとき、Shell メニュー
から再起動を要求したとき、または Editor ウィンドウのコードを実行したと
きに起こります。

前の各節で説明した編集機能は、対話的にコードを入力するときにも使えます
。 IDLE の Shell ウィンドウでは、さらに次の操作ができます。

* "C"-"c" は文の実行の中断を試みます (失敗することもあります)。

* ">>>" プロンプトで "C"-"d" を入力すると、Shell を閉じます。

* "Alt"-"p" と "Alt"-"n" (macOS では "C"-"p" と "C"-"n") は、入力済み
  のテキストに一致する以前の文のうち、前または次のものを現在のプロンプ
  トに呼び出します。

* 以前の文の上にカーソルを置いて "Return" を押すと、その文をプロンプト
  に入力済みのテキストの後に追加します。


テキストの色
------------

IDLE のデフォルトは白地に黒い文字ですが、特別な意味を持つテキストには
色を付けます。 Shell では、Shell の出力、Shell のエラー、ユーザーの出
力、ユーザーのエラーが対象です。 Shell のプロンプトや Editor 内の
Python コードでは、キーワード、組み込みクラスと関数の名前、"class" と
"def" の後の名前、文字列、コメントが対象です。 すべてのテキストウィン
ドウでは、カーソル (ある場合)、検索で見つかったテキスト (可能な場合)、
選択されたテキストが対象です。

IDLE は、パターンマッチング文の ソフトキーワード "match"、"case"、"_"
もハイライトします。 ただし、このハイライトは完全ではなく、"case" パタ
ーンの一部の "_" など、まれな場合に誤って表示します。

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


起動とコードの実行
==================

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

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


コマンドラインでの使用
----------------------

IDLE は、さまざまなオプションを指定してコマンドラインから起動できます
。 一般的な構文は次のとおりです。

   python -m idlelib [options] [file ...]

以下のオプションを使えます。

-c <command>

   指定した Python コマンドを Shell ウィンドウで実行します。 例えば
   "-c "print('Hello, World!')"" を渡します。 Windows では、例のように
   外側の引用符をダブルクォートにする必要があります。

-d

   デバッガを有効にし、Shell ウィンドウを開きます。

-e

   Editor ウィンドウを開きます。

-h

   有効なオプションの組み合わせを示すヘルプメッセージを表示して終了し
   ます。

-i

   Shell ウィンドウを開きます。

-r <file>

   指定したファイルを Shell ウィンドウで実行します。

-s

   Shell ウィンドウを開く前に、環境変数 "IDLESTARTUP" または
   "PYTHONSTARTUP" で指定した起動ファイルを実行します。

-t <title>

   Shell ウィンドウのタイトルを設定します。

-

   Shell ウィンドウで標準入力を読み込んで実行します。 このオプションは
   、引数より前の最後のオプションとして指定する必要があります。

引数を指定した場合:

* If "-", "-c", or "-r" is used, all arguments are placed in
  "sys.argv[1:]", and "sys.argv[0]" is set to "''", "'-c'", or "'-r'"
  respectively. No editor window is opened, even if that is the
  default set in the *Options* dialog.

* それ以外の場合、引数は編集のために開くファイルとして扱われ、
  "sys.argv" には IDLE 自身に渡した引数が反映されます。


起動の失敗
----------

IDLE は、IDLE の GUI プロセスとユーザーコードの実行プロセスとの通信に
ソケットを使います。 Shell の起動時と再起動時には、接続を確立する必要
があります (再起動時は「RESTART」という区切り行が表示されます)。 ユー
ザープロセスが GUI プロセスへの接続に失敗すると、通常は「cannot
connect」メッセージを含む "Tk" のエラーボックスが表示され、この節を参
照するよう案内します。 その後、プロセスは終了します。

Unix システムでの接続失敗の原因の 1 つは、ネットワーク設定内のマスカレ
ード規則の誤りです。 端末から IDLE を起動すると、"** Invalid host:" で
始まるメッセージが表示されます。 有効な値は "127.0.0.1
(idlelib.rpc.LOCALHOST)" です。 一方の端末ウィンドウで "tcpconnect
-irv 127.0.0.1 6543" を、別のウィンドウで "tcplisten <same args>" を実
行して診断できます。

よくある失敗の原因は、*random.py* や *tkinter.py* など、標準ライブラリ
のモジュールと同じ名前を持つ利用者作成のファイルです。 実行しようとし
ているファイルと同じディレクトリにそのようなファイルがあると、IDLE は
標準ライブラリのファイルをインポートできません。 現在の対処方法は、利
用者が作成したファイルの名前を変更することです。

以前ほど多くはありませんが、ウイルス対策やファイアウォールのプログラム
が接続を妨げることがあります。 そのプログラムで接続を許可する設定がで
きない場合は、IDLE を動作させるために無効にする必要があります。 この内
部接続のデータは外部ポートから見えないため、許可しても安全です。 同様
に、ネットワークの設定ミスが接続を妨げる場合もあります。

Python installation issues occasionally stop IDLE: multiple versions
can clash, or a single installation might need admin access.  If one
undo the clash, or cannot or does not want to run as admin, it might
be easiest to completely remove Python and start over.

残存する pythonw.exe プロセスが問題になる場合があります。 Windows では
、タスクマネージャーでそのようなプロセスがないか確認し、あれば停止して
ください。 プログラムのクラッシュや Keyboard Interrupt (control-C) に
よる再起動で、接続に失敗することがあります。 一時的な問題なら、エラー
ボックスを閉じるか、Shell メニューの Restart Shell を使うと解決する場
合があります。

IDLE は最初の起動時に、"~/.idlerc/" (~ はユーザーのホームディレクトリ)
のユーザー設定ファイルを読み込もうとします。 問題があれば、エラーメッ
セージが表示されるはずです。 偶発的なディスク障害を除けば、ファイルを
手で編集しないことでこの問題を防げます。 代わりに、Options の設定ダイ
アログを使ってください。 ユーザー設定ファイルにエラーが起きた場合は、
そのファイルを削除して設定ダイアログで設定し直すのが最善の場合がありま
す。

IDLE がメッセージを表示せずに終了し、コンソールから起動していなかった
場合は、コンソールや端末から "python -m idlelib" で起動し、エラーメッ
セージが表示されるか確認してください。

"8.6.11" より古い tcl/tk を使う Unix 系システム ("About IDLE" で確認で
きます) では、特定のフォントの特定の文字が原因で tk が異常終了し、端末
にメッセージを表示する場合があります。 そのような文字を含むファイルを
編集するために IDLE を起動したときにも、後からその文字を入力したときに
も起こりえます。 tcl/tk を更新できない場合は、より適切に動作するフォン
トを使うよう IDLE を設定し直してください。


ユーザーコードの実行
--------------------

まれな例外を除き、IDLE で Python コードを実行した結果は、標準的な方法
、つまりテキストモードのシステムコンソールや端末ウィンドウから Python
で直接実行した結果と同じになるようにしています。 ただし、インターフェ
ースや動作の違いが、目に見える結果に影響することがあります。 例えば、
"sys.modules" は最初からより多くの項目を含み、
"threading.active_count()" は 1 ではなく 2 を返します。

デフォルトでは、IDLE は Shell や Editor を動かすユーザーインターフェー
スのプロセスとは別の OS プロセスで、ユーザーコードを実行します。 実行
プロセスでは、"sys.stdin"、"sys.stdout"、"sys.stderr" を、Shell ウィン
ドウから入力を受け取り、そこへ出力を送るオブジェクトに置き換えます。
"sys.__stdin__"、"sys.__stdout__"、"sys.__stderr__" に保存された元の値
は変更しませんが、"None" の場合もあります。

あるプロセスから別のプロセスのテキストウィジェットへ表示出力を送る処理
は、同じプロセスでシステム端末へ出力するより遅くなります。 特に複数の
引数を表示する場合は、各引数の文字列、各区切り文字、改行を別々に送るた
め、影響が大きくなります。 開発中は通常問題になりませんが、IDLE でより
速く表示したい場合は、まとめて表示したいものをすべて書式化して連結し、
1 つの文字列として出力してください。 書式文字列と "str.join()" は、フ
ィールドや行をまとめるのに役立ちます。

実行プロセス内で作成したサブプロセスは、ユーザーコードが直接作成したも
のでも multiprocessing などのモジュールが作成したものでも、IDLE が置き
換えた標準ストリームを引き継ぎません。 このようなサブプロセスが
sys.stdin からの "input" や、sys.stdout または sys.stderr への "print"
、"write" を使う場合は、コマンドラインウィンドウで IDLE を起動してくだ
さい。 (Windows では "pythonw" や "pyw" ではなく "python" や "py" を使
います。) これにより、さらに作られたサブプロセスは、そのウィンドウを入
出力に使います。

ユーザーコードが "importlib.reload(sys)" などで "sys" をリセットすると
、IDLE による変更が失われ、キーボードからの入力と画面への出力が正しく
動作しなくなります。

Shell がフォーカスを持つときは、Shell がキーボードと画面を制御します。
通常はこの違いを意識する必要はありませんが、キーボードや画面に直接アク
セスする関数は動作しません。 キーが押されたかどうかや、押されたキーを
調べるシステム固有の関数などが該当します。

実行プロセスで動く IDLE のコードは、通常なら存在しないフレームを呼び出
しスタックに追加します。 追加のスタックフレームの影響を減らすため、
IDLE は "sys.getrecursionlimit" と "sys.setrecursionlimit" をラップし
ます。

ユーザーコードが直接、または sys.exit の呼び出しで SystemExit を送出す
ると、IDLE は終了せずに Shell のプロンプトに戻ります。


Shell でのユーザー出力
----------------------

プログラムがテキストを出力したときの結果は、対応する出力デバイスによっ
て決まります。 IDLE がユーザーコードを実行する場合、"sys.stdout" と
"sys.stderr" は IDLE の Shell の表示領域につながっています。 その機能
の一部は、内部で使う Tk の Text ウィジェットを引き継いだものです。 そ
の他はプログラムで追加したものです。 違いが重要になる場面では、Shell
は本番での実行より開発に適した設計になっています。

例えば、Shell は出力を捨てません。 無制限に Shell へ出力するプログラム
は、最終的にメモリを使い切り、メモリエラーになります。 一方、システム
のテキストウィンドウには、出力の最後の n 行だけを保持するものがありま
す。 例えば Windows のコンソールは、ユーザーが設定できる 1 ～ 9999 行
を保持し、デフォルトは 300 行です。

Tk の Text ウィジェット、したがって IDLE の Shell は、Unicode の BMP (
基本多言語面) に含まれる文字 (コードポイント) を表示します。 どの文字
を正しい字形で表示し、どの文字を代替の四角で表示するかは、OS とインス
トールされたフォントによって決まります。 タブ文字の後のテキストは、次
のタブ位置から始まります (タブ位置は 8「文字」ごとにあります)。 改行文
字の後のテキストは、新しい行に表示されます。 その他の制御文字は、OS と
フォントに応じて無視されるか、空白、四角、その他の形で表示されます。 (
このような出力の中で矢印キーを使ってテキストカーソルを動かすと、間隔が
予想外の動きをする場合があります。)

   >>> s = 'a\tb\a<\x02><\r>\bc\nd'  # 22 文字を入力します。
   >>> len(s)
   14
   >>> s  # repr(s) を表示
   'a\tb\x07<\x02><\r>\x08c\nd'
   >>> print(s, end='')  # s をそのまま表示します。
   # 結果は OS とフォントによって異なります。
   # 試してみてください。

The "repr" function is used for interactive echo of expression values.
It returns an altered version of the input string in which control
codes, some BMP codepoints, and all non-BMP codepoints are replaced
with escape codes. As demonstrated above, it allows one to identify
the characters in a string, regardless of how they are displayed.

通常の出力とエラー出力は、一般にコード入力からも互いからも分離され、別
々の行に表示されます。 それぞれに異なるハイライト色を付けます。

SyntaxError のトレースバックでは、エラーを検出した場所を示す通常の '^'
の代わりに、テキストをエラーのハイライト色で表示します。 ファイルから
実行したコードが他の例外を起こした場合は、トレースバックの行を右クリッ
クして IDLE の Editor の対応する行へ移動できます。 必要ならファイルを
開きます。

Shell には、出力行を「Squeezed text」ラベルに折りたたむ特別な機能があ
ります。 N 行 (デフォルトは 50 行) を超える出力は自動で折りたたみます
。 N は Settings ダイアログの General ページの PyShell セクションで変
更できます。 それより少ない行の出力も、右クリックで折りたためます。 ス
クロールが遅くなるほど長い行に対して便利です。

折りたたんだ出力は、ラベルをダブルクリックするとその場で展開します。
ラベルを右クリックして、クリップボードに送ったり、別の表示ウィンドウに
開いたりすることもできます。


tkinter アプリケーションの開発
------------------------------

tkinter プログラムを開発しやすくするため、IDLE は意図的に標準の Python
と異なる動作をします。 標準の Python で "import tkinter as tk; root =
tk.Tk()" と入力しても、何も表示されません。 IDLE で同じことを入力する
と、tk ウィンドウが表示されます。 標準の Python では、ウィンドウを見る
ために "root.update()" も入力する必要があります。 IDLE は、同じ処理を
バックグラウンドで 1 秒あたり約 20 回、つまり約 50 ミリ秒ごとに行いま
す。 次に "b = tk.Button(root, text='button'); b.pack()" と入力してく
ださい。 この場合も、標準の Python では "root.update()" と入力するまで
見た目は変わりません。

ほとんどの tkinter プログラムは "root.mainloop()" を実行します。 この
呼び出しは通常、tk アプリケーションが破棄されるまで戻りません。
"python -i" または IDLE の Editor からプログラムを実行した場合、
"mainloop()" が戻るまで ">>>" の Shell プロンプトは表示されず、 戻った
時点では対話的に操作する対象が残っていません。

IDLE の Editor から tkinter プログラムを実行する場合は、mainloop の呼
び出しをコメントアウトできます。 そうすると Shell プロンプトがすぐに表
示され、動作中のアプリケーションを対話的に操作できます。 標準の Python
で実行するときは、mainloop の呼び出しを忘れずに有効に戻してください。


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

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

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

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

バージョン 3.4 で非推奨.


ヘルプと設定
============


ヘルプソース
------------

Help メニューの「IDLE Help」は、ライブラリリファレンスの IDLE の章を整
形された HTML として表示します。 読み取り専用の tkinter テキストウィン
ドウに表示される内容は、ウェブブラウザーで見たものに近い形です。 マウ
スホイール、スクロールバー、または上下の矢印キーの長押しで移動できます
。 TOC (目次) ボタンをクリックし、開いたボックスから節の見出しを選ぶこ
ともできます。

Help メニューの「Python Docs」は、チュートリアルを含む豊富なヘルプを
"docs.python.org/x.y" で開きます。 'x.y' は、現在実行している Python
のバージョンです。 システムにオフラインのドキュメントがあれば (インス
トール時の選択肢となっている場合があります)、代わりにそれを開きます。

Configure IDLE ダイアログの General タブを使って、任意の URL をいつで
もヘルプメニューに追加したり、そこから削除したりできます。


Setting preferences [お好み設定]
--------------------------------

フォント、ハイライト、キー、全般の設定は、Options メニューの Configure
IDLE で変更できます。 デフォルトと異なるユーザー設定は、ユーザーのホー
ムディレクトリにある ".idlerc" ディレクトリに保存されます。 不正なユー
ザー設定ファイルによる問題は、".idlerc" 内のファイルを 1 つ以上編集ま
たは削除して解決できます。

Font タブのテキストサンプルでは、複数の言語のさまざまな文字について、
フォントの種類とサイズによる表示の違いを確認できます。 サンプルを編集
して、確認したい他の文字を追加してください。 サンプルを使って等幅フォ
ントを選択できます。 Shell や Editor で特定の文字に問題がある場合は、
サンプルの先頭にその文字を追加し、まずサイズを、次にフォントを変えてみ
てください。

Highlights タブと Keys タブで、組み込みまたは独自の配色テーマとキー設
定を選びます。 新しい組み込みの配色テーマやキー設定を古い IDLE で使う
には、新しい独自のテーマやキー設定として保存してください。 そうすると
、古い IDLE からも使えるようになります。


macOS での IDLE
---------------

System Preferences の Dock で、「Prefer tabs when opening documents」
を「Always」に設定できます。 この設定は IDLE が使う tk/tkinter GUI フ
レームワークと互換性がなく、IDLE の一部の機能が動作しなくなります。


Extensions [拡張]
-----------------

IDLE には拡張機能の仕組みがあります。 拡張機能の設定は、設定ダイアログ
の Extensions タブで変更できます。 詳しくは idlelib ディレクトリ内の
config-extensions.def の先頭を参照してください。 現在、デフォルトの拡
張機能は、テストにも使われるサンプルの zzdummy だけです。


idlelib --- IDLE アプリケーションの実装
=======================================

**ソースコード:** Lib/idlelib

======================================================================

Lib/idlelib パッケージは IDLE アプリケーションを実装しています。 IDLE
の使い方については、このページの他の節を参照してください。

idlelib 内のファイルについては、idlelib/README.txt に説明があります。
idlelib 内でファイルを開くか、IDLE のメニューで Help => About IDLE を
クリックして参照してください。 このファイルには、IDLE のメニュー項目と
、それを実装するコードとの対応も記載されています。 「Startup」に挙げら
れたファイルを除き、idlelib のコードは、機能変更がバックポートされうる
という意味で「非公開」です (**PEP 434** を参照)。
