自分的にはかなり良く出来たと思っている[[guash]]だが、ちょっと試すのに敷居が高すぎるよなぁ、と思っていたところ、dotnetのランタイムがhomebrewにあることに気づいたので、homebrew tapに対応してみた。

homebrew tapでのインストール方法

$ brew tap karino2/tap
$ brew install karino2/tap/guash

これでインストール出来る。 アンインストールも以下で出来る。素晴らしい。

$ brew uninstall karino2/tap/guash

guashのHello world

インストールをしたら、Hello worldしてみる。

以下のようなファイルをhello_guash.shというファイルで作って、実行属性つけて実行する。

#!/usr/bin/env guash

guash_readtext "何か言ってね!"
RES=($(guash_doquery))

echo "Hello, ${RES[0]}"

すると以下みたいな画面が出る。

guash_hello.png

もっと進んだ使い方のチュートリアルとしては以下を参考のこと。

guashで遊ぼう! - なーんだ、ただの水たまりじゃないか

F#のツールをhomebrew tapにする時の雑感

dotnetのランタイムがhomebrewに入っているのは、 dotnet系の言語でコマンドラインのツールを作る時にはすごく良いと思った。 dotnetを使わない人が何も考えずにhomebrewでインストール出来るのがいい。

dotnetのランタイムへの依存をhomebrewがちゃんと扱ってくれるので、 ツール側がdotnetのランタイムに依存していてもユーザー的には全く面倒が無い。 初回のインストールがちょっと時間がかかるが、今どきならまぁ許せる程度だろう。

これなら十分に気楽に試せるし、アップデートやアンインストールが簡単なのもいい。

今回はphotino.NETが入っていて30MBくらい。 GUIがなければもっと小さいが、 入っていてもElectronの100MBオーバーに比べればだいぶ許せるサイズに思う。

シングルバイナリーにしなければもっと小さくなる訳だけど、 nugetとかの依存とかを真面目に管理するのも面倒なので、 コマンドラインツールはシングルバイナリーでdotnetランタイムにだけ依存させて、 homebrewでインストールを管理するのが良い気がした。

以前書いたブログ記事も参照のこと: Create a single binary GUI tool with photino and F# on osx - なーんだ、ただの水たまりじゃないか