[MD3] PowerShellについて

MD3の説明でPowerShellの関数って、言語拡張のように見せれるので、中々おもしろいという話をしました。この説明で例題に取り上げたのが、「Windows PowerShell in Action」という書籍なのですが、この書籍で提供されるているサンプルをご紹介したいと思います。本自体は、500頁ちょっとありますので、読むのも大変なんですけど(私の堅い枕の1つです)。

Capter8のサンプルに「class.ps1」と「demo-class.ps1」というファイルがあります。詳細は「class.ps1」を見ていただく必要がありますが、「demo-class.ps1」で以下のような記述を行っています。

 CustomClass point {
    note x 0
    note y 0
    method ToString {
        "($($this.x), $($this.y))"
    }
    method scale {
        $this.x *= $args[0]
        $this.y *= $args[0]
    }
}


$p = new point

このコードの中で「CustomClass」「note」「method」「new」というキーワードが、実は関数として「class.ps1」で定義されています。クラスという定義方法をPowerShellは提供していませんが、上記のように関数を使用することで、あたかもオペレータを拡張したように見えます。個人的には、これって「おもしろいよなー」と思っています。

この面白ろさというかを皆さんにお伝えしたくて、MD3でPowerShellを取り上げました。それから、DownLoadセンターを見ていてPowerShellを利用する方にお勧めのドキュメントをみつけました。それは、PowerShell Graphical Help Fileです。PowerShellのヘルプのchm形式です。英語で記述されていますが、構文などの全体像を見るのに役立ちます。