.NET Frameworkを使うための準備
さてやっとIron Pythonの醍醐味。.NET Frameworkの使い方を説明します。.NET Frameworkとは
".NET Frameworkとは"でWebで検索すると正しい答えは調べられますので、ここでは私の知見で説明します。
前に説明した"Pythonの標準モジュール"というのは、決まりきったことをプログラマ各々で作っていたのでは大変だから、importして使ってくださいという意味と同時に、一般的なPythonプログラマだったら、"標準モジュール"を使ってください。ということになります。
つまり、みんな同じように書けばスクリプトファイルは読みやすくなるので、スクリプトファイルの再利用とかが行い易くなるからです。
では".NET Framework"は何かというと、Windows用のプログラムを打つ人は、標準で使ってくださいというモジュールになります。だからIron
Pythonを使う人だけでなく、C#やVisual BASICを使う人たちにも推奨されているモジュールです。
"標準モジュール"と同じようにIron Pythonで使うために、.NET Frameworkもモジュールという形で提供されています。しかし、同じ.NET
Frameworkのモジュールでも簡単に使えるモジュールと、簡単には使えないモジュールがあります。そこらへんから説明したいと思います。
簡単に使える/使えない.NET Frameworkモジュール
簡単に使える.NET Frameworkモジュール
インタラクティブ・シェルで次のように入力してみてください。
>>> import System
>>> dir(System)
['AccessViolationException', 'Action', 'ActivationContext', 'Activator',
'AppDomain', 'AppDomainInitializer',・・・続く
この"dir(System)"で表示されるモジュールは簡単にimportで使用可能になります。
つまり、
import System.Action
import System.ActivationContext
と入力することが可能です。
簡単に使えない.NET Frameworkモジュール
では簡単に使えないものってどんなモジュールかというと例えば、"System.Windows.Forms"です。インタラクティブ・シェルを使って試してみましょう。
>>> import System.Windows.Forms
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: No module named Windows
Iron Pythonにそんなモジュールは知らないと言われてしまいましたね。使えるモジュールと使えないモジュールの違いは何かというと、モジュールのライブラリ参照(簡単にいうと、こんなモジュールがありますよというモジュール集)が登録されているか、されていないかに違いになります。
使えるモジュール(例えばSystem)は、"mscorlib.dll"というファイルに書かれています。この"mscorlib.dll"はIron Python起動時に自動的に読み込まれるので、Iron Pythonは"System"とわかっただけでそれがどんなものなのかわかっている。
なので、"System.Windows.Forms"もどこに書いてあるか教えてあげればIron Pythonも使えます。Iron Pythonへの教え方を説明します。
1.まず"System.Windows.Forms"モジュールがどこに書かれているか調べる必要があります。Windowsより、Cドライブ全体の領域でファイル名に"System.Windows.Forms"が含まれているものを検索してみてください。
"System.Windows.Forms.dll"というファイルが見つかりましたね
2.ではIron Pythonに教えてあげましょう。Iron Pythonに教えるにはclrモジュールのAddReference関数を使います。ということで、clrモジュールをimportしてから、AddReference関数を使ってみましょう。インタラクティブ・シェルでやるとこんな感じになります。
>>> import clr
>>> clr.AddReference('System.Windows.Forms') ←拡張子"dll"を抜いて
>>> import System.Windows.Forms 教えます。
>>>
今度はIron Pythonに怒られませんでしたね。こんな感じで".NET Framework"モジュールには2種類あって、簡単に使えるモジュールと簡単には使えないモジュールがあります。使えるモジュールなのか、使えないモジュールなのかは、import文を実行してみて、Iron Pythonに怒られるかどうかで分かります。
使えないモジュールでもclrモジュールのAddReference関数を使ってIron Pythonに教えてあげればOKです。