♯序
タイトルはネタ。CLR環境上の鋼鉄の蛇神(?)こと、IronPython。
開発が停滞していた時期もあったが、ポスト・モバイル時代にあって、
.NET/Xamarin向け環境も視野にいれてか、再度、開発が活発化している模様。
これを書いたついでに,今回は今月リリースされたIronPython2.7.7(python2.7.7相当?)を試す。私のwindows 10環境では、インストールのみで数分で使い始めることができた。
IronPython3系がリリースされたのちには、xamarinなどなどに踏み込むとして、今回は死活監視代わりに古き良き.NETの呼び出しを試す。
#.NET Framework 2.0以降のDirectory周りのメソッドを試す。
.NETな世界に生きるIronPythonは、Systemをインポートするだけで.NETのメソッドを呼び出せる。
import System
files = System.IO.DirectoryInfo("C:\\Users\kmr\Pictures").GetFiles("*png", System.IO.SearchOption.AllDirectories)
for fi in files :
print(fi.FullName)
ベタな実行結果はこんな風になる。
IronPython 2.7.7 (2.7.7.0) on .NET 4.0.30319.42000 (64-bit)
Type "help", "copyright", "credits" or "license" for more information.
>>> import System
>>> import System
>>> files = System.IO.DirectoryInfo("C:\\Users\kmr\\Pictures").GetFiles("*png", System.IO.SearchOption.AllDirectories)
>>>
`>>> for fi in files :
... print(fi.FullName)
...
C:\Users\kmr\Pictures\py36-1.PNG
C:\Users\kmr\Pictures\py36.PNG
C:\Users\kmr\Pictures\py361.PNG
C:\Users\kmr\Pictures\py362.PNG
C:\Users\kmr\Pictures\キャプチャ.PNG
C:\Users\kmr\Pictures\キャプチャ2.PNG
C:\Users\kmr\Pictures\キャプチャ3.PNG
IronPythonではメソッドの命名規則はC#/.NETの流儀に従うのが吉のようだ。
ここで、System.IO関連のメソッドが長くなってしまっているため2行に分けたくなるかもしれないが、pythonは改行に敏感な言語。、私の場合、改行はメソッド中の()の途中に入れることにしている。例えば,こんな感じに書くとエラーとならない。
System.IO.DirectoryInfo("C:\\Users\kmr\Pictures"
).GetFiles("*png", System.IO.SearchOption.AllDirectories)
#Linq
C#で有名なLinqを試す。関数型チックな集合操作だ。
日本語が、若干変態レトロチックなこちらのサイトのコードを参考とさせていただくと:
http://ameblo.jp/pyclub/entry-11748941978.html
IronPythonからは、こんなテイストで利用できる。
import clr
clr.AddReference ("System.Core")
from System import Console
import System
clr.ImportExtensions (System.Linq)
def wari100(a) :
if a.All (lambda c: True if 0 != c else False):
Console.WriteLine ("ここまではセーフ:")
for item in a:
Console.WriteLine (100/item)
else:
Console.WriteLine ("もしかして、変態さんですかぁ?")
この安直なwari100メソッドは以下のように実行できる(テーマ曲)。
>>> wari100([2, 1, 0, -1, 2]) もしかして、変態さんですかぁ?
>>> wari100([2, 1, 3, 4, -1, 2])
ここまではセーフ:
50
100
33
25
-100
50
#OfficeやVSが入っていれば、Excel操作なども簡単にできる。
このあたりは、dll次第。IronPython自体も数年更新がほぼ止まっていたわけで、数年前の情報を参照しながら、取り組めばそんなに難しくなさそう。
#改めて使いはじめるのはあり。
昔のwebを見るに、IronPythonはmonoでも動いていた模様だが、
monoベースのxamarin経由でiOSやandroidでも動作とは簡単にはいかないだろう。
とはいえ、普通に便利なので、windowsでちょっとしたコードを書くことがある人は、選択肢に入れておいても良いのでは,と。
将来のブーム再来も念頭にしつつ.NETでpython、これはこれで普通に便利:)