a wandering wolf

Does a wandering wolf dreams of a wondering, sometimes programming sheep?

このエントリーをはてなブックマークに追加

PowerShell と F# の間でコードを実行しあう

はじめに

この記事は PowerShell Advent Calendar 2013 18日目の記事です。17日目は @guitarrapc_tech さんの PowerShell の ダイナミックパラメータを利用して動的にパラメータを組み立てる - tech.guitarrapc.com でした。

だいぶ前から PowerShell の存在自体は知っていたんですが、これまでのコマンドプロンプトと操作感が違って、長い間距離をおいていました…。一年ほど前に、一念発起して PowerShell やろう!と少しずつ触り始めて、ようやくコマンドプロンプト程度には扱えるようになってきたところです。昨日分担当のぎたぱそ先生をはじめ、いろんな方から勉強させてもらっていますヽ(‘ω’)ノ三ヽ(‘ω’)ノ

さて、私は「F# の方から来ました」系の人間ですので、このエントリでは PowerShell と F# の相互運用(という体の呼び出しコード)について書いてみようと思います。

From PowerShell To F#

PowerShell から F# など外部の .NET コードを実行するには、 Add-Type を使うと便利です。

これを実行してみましょう。

PS C:\home> powershell .\fsharp.ps1
../../../_images/hello_powershell.png

ちょっと残念な感じの WindowsForm が起動されましたが、ちゃんと動いてくれていますね!

From F# To PowerShell

さて、反対に F# から PowerShell のコードを実行してみましょう。

…という記事を考えていたんですが、10日目に @tanaka_733 さんが C# 版の 素晴らしい記事 を書いてくださっているんで、私はもう帰っていいでしょうか…。

い、一応コード片は置いていきますね!

これもまた実行してみます。

PS C:\home> fsi powershell.fsx
     .emacs.d   2013/12/10 10:37:22
     .ipython   2013/09/02 15:55:36
     .jenkins   2013/09/30 14:23:34
         .ssh   2013/09/04 11:23:22
         docs   2013/12/12 10:42:18
          pip   2013/09/25 15:23:36
          src   2013/12/17 22:50:00
.bash_history   2013/11/01 18:56:36
    .emacs.el   2013/12/10 10:20:46
   .emacs.elc   2013/11/29 16:09:41
   .gitconfig   2013/09/26 10:59:24
   .gitignore   2013/09/26 10:58:45
    .hgignore   2013/09/26 17:50:26
        .hgrc   2013/12/10 15:41:34
     .inputrc   2011/12/06 17:31:44
     .profile   2013/09/11 17:30:18
PS C:\home>

こちらもいい感じです。

最後に

簡単にですが、PowerShell から F# のコードを、そして F# から PowerShell のコードをそれぞれ動かしてみました。PowerShell は パイプラインの機能を持っているので、同じくパイプライン演算子を持つ F# と同じような使用感で操作ができますね。