# 11.1 `webbrowser` -- 便利なウェブブラウザコントローラー

`webbrowser`モジュールにはウェブベースのドキュメントを表示するための、とてもハイレベルなインターフェースが定義されています。 このコントローラーオブジェクトは使い易く、プラットフォーム非依存です。 たいていの環境では、このモジュールの`open()`を呼び出すだけで正しく 動作します。

Unixでは、X11上でグラフィカルなブラウザが選択されますが、グラフィカルなブ ラウザが利用できなかったり、X11が利用できない場合はテキストモードのブラウザ が使われます。 もしテキストモードのブラウザが使われたら、ユーザがブラウザから抜け出すまでプ ロセスの呼び出しはブロックされます。

Unixでは、環境変数BROWSERが存在するならプラットフォームのデフォ ルトであるブラウザのリストをオーバーライドし、コロンで区切られたリストの順に ブラウザの起動を試みます。 リストの中の値に`%s`が含まれていたら、テキストモードのブラウザのコマン ドラインとして`%s`の代わりにURLが引数として解釈されます； もし`%s`が含まれなければ、起動するブラウザの名前として単純に解釈されま す。

非UnixプラットフォームあるいはUnix上でX11ブラウザが利用可能な場合、制 御プロセスはユーザがブラウザを終了するのを待ちませんが、ディスプレイにブラウ ザのウィンドウを表示させたままにします。

以下の例外が定義されています：

exception `Error`
  ブラウザのコントロールエラーが起こると発生する例外。

以下の関数が定義されています：

`open`( | url[, new=0][, autoraise=1])

  デフォルトのブラウザでurlを表示します。 newがtrueなら、可能であればブラウザの新しいウィンドウが開きます。 autoraiseがtrueなら、可能であればウィンドウが前面に表示されます（多く のウィンドウマネージャではこの変数の設定に関わらず、前面に表示されます）。

`open_new`( | url)

  可能であれば、デフォルトブラウザの新しいウィンドウでurlを開きますが、 そうでない場合はブラウザのただ１つのウィンドウでurlを開きます。

`get`( | [name])

  ブラウザの種類nameのコントローラーオブジェクトを返します。 もしnameが空文字列なら、呼び出した環境に適したデフォルトブラウザのコン トローラーを返します。

`register`( | name, constructor[, instance])

  ブラウザの種類nameを登録します。 ブラウザの種類が登録されたら、`get()`でそのブラウザのコントローラー を呼び出すことができます。 instanceが指定されなかったり、`None`なら、インスタンスが必要な時 にはconstructorがパラメータなしに呼び出されて作られます。 instanceが指定されたら、constructorは呼び出されないので、 `None`でかまいません。

  この登録は、変数BROWSERを設定するか、`get`を空文字列でな く、宣言したハンドラの名前と一致する引数とともに呼び出すときだけ、役に立ちま す。

いくつかの種類のブラウザがあらかじめ定義されています。 このモジュールで定義されている、関数`get()`に与えるブラウザの名前 と、それぞれのコントローラークラスのインスタンスを以下の表に示します。

Type Name | Class Name | Notes
--- | --- | ---
`'mozilla'` | `Netscape('mozilla')` |
`'netscape'` | `Netscape('netscape')` |
`'mosaic'` | `GenericBrowser('mosaic %s &')` |
`'kfm'` | `Konqueror()` | (1)
`'grail'` | `Grail()` |
`'links'` | `GenericBrowser('links %s')` |
`'lynx'` | `GenericBrowser('lynx %s')` |
`'w3m'` | `GenericBrowser('w3m %s')` |
`'windows-default'` | `WindowsDefault` | (2)
`'internet-config'` | `InternetConfig` | (3)

Notes:

(1)
  ``Konqueror''はUnixのKDEデスクトップ環境のファイルマネージャで、KDEが動作 している時にだけ意味を持ちます。 何か信頼できる方法でKDEを検出するのがいいでしょう；変数KDEDIRでは十 分ではありません。 また、KDE 2でkonquerorコマンドを使うときにも、``kfm''が使われます -- Konquerorを動作させるのに最も良い方法が実装によって選択されます。

(2)
  Windowsプラットフォームのみ；標準拡張モジュール`win32api`と `win32con`を必要とします。

(3)
  MacOSプラットフォームのみ；Macintosh Library Modulesマニュアルに解説されている標準MacPythonモジュール`ic` を必要とします。