4
10

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

再来、鋼鉄の蛇神(IronPython)。

Last updated at Posted at 2016-12-28

♯序

タイトルはネタ。CLR環境上の鋼鉄の蛇神(?)こと、IronPython。

  • ビジュアルイメージ(?):

開発が停滞していた時期もあったが、ポスト・モバイル時代にあって、
.NET/Xamarin向け環境も視野にいれてか、再度、開発が活発化している模様。

これを書いたついでに,今回は今月リリースされたIronPython2.7.7(python2.7.7相当?)を試す。私のwindows 10環境では、インストールのみで数分で使い始めることができた。

IronPython3系がリリースされたのちには、xamarinなどなどに踏み込むとして、今回は死活監視代わりに古き良き.NETの呼び出しを試す。

#.NET Framework 2.0以降のDirectory周りのメソッドを試す。

.NETな世界に生きるIronPythonは、Systemをインポートするだけで.NETのメソッドを呼び出せる。

iron1.py
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は改行に敏感な言語。、私の場合、改行はメソッド中の()の途中に入れることにしている。例えば,こんな感じに書くとエラーとならない。

.py
System.IO.DirectoryInfo("C:\\Users\kmr\Pictures"
  ).GetFiles("*png", System.IO.SearchOption.AllDirectories)

#Linq

C#で有名なLinqを試す。関数型チックな集合操作だ。
日本語が、若干変態レトロチックなこちらのサイトのコードを参考とさせていただくと:
http://ameblo.jp/pyclub/entry-11748941978.html

IronPythonからは、こんなテイストで利用できる。

linq1.py
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、これはこれで普通に便利:)

4
10
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
10

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?