アラタナエンジニアブログ

aratana Engineer's Blog

Mac OS X Yosemite に dir コマンドつくってみた

サクラも散り、初夏の兆候が見えてきた今日このごろ
みなさまいかがお過ごしでしょうか。

開発チームの後藤です。

普段の業務ではWindowsを利用していますが個人PCはMacを利用しています。
私だけかもしれませんが、Macのターミナル上で dir コマンドを実行してしまうことがよくあります。

業務中は基本的にコマンドプロンプトでファイル操作を行うためdirコマンドを利用しますが、Macにはdirコマンドが存在しません。

Macでdirコマンドを実行しても当然怒られるのと、タイポでslコマンドを実行してしまいSLが走ったりするので、この際Macにdirコマンドを作っちゃえと思い自作しました。


この世に開発言語は数多ありますが、今回は以下の三段論法によりC#を採用します。

dirコマンドといえばWindowsでしょう
Windowsといえば。。。C#です(VB知りません)
dirコマンドといえばC#です

今回は開発環境と実行環境にMacを想定しています。
みなさんご存知かと思われますが、MacでもC#の開発・実行環境は作成できます。


その名も mono

消しゴムではありません。



念のため現時点のMacC#コンパイラが無いことを確認

$ cs dir.cs
bash: cs: command not found


早速、以下からmonoをダウンロード・インストールします。

Download | Mono


親切なことにサンプルまで用意されていました。
Mono Basics | Mono

以下のソース作成

// hello.cs
using System;

public class HelloWorld
{
    static public void Main()
    {
        Console.WriteLine("Hello Mono World!");
    }
}

ファイルを保存して、以下コマンドでコンパイルします。

$ mcs hello.cs

何もメッセージが表示されない場合はコンパイルに成功しています。
コンパイルに成功すると、同パスに hello.exe ファイルが作成されます。

exeを以下のコマンドで実行すると動作することが確認できます。

$ mono hello.exe
$ Hello Mono World!

簡単ですね。
C#の開発環境がWindows以外でこんなに簡単にできるとは便利な世の中になりました。
これを機にmono projectに参加して少しは貢献してみようかなと思ったり思わなかったり。


とりあえずC#の開発・実行環境が作成されたのでこれからdirコマンドを作成します。

事前に用意していた以下のソースをコンパイルして実行します。

実行結果

$ mono dir.exe
/Users/user/work/ のディレクトリ

2015/04/07 1:22:05	<DIR>	WorkDirectory

2015/04/08 2:04:34	1702	dir.cs
2015/04/08 1:49:05	4096	dir.exe
2015/04/07 1:30:16	133	hello.cs
2015/04/07 1:31:47	3072	hello.exe

簡単にdirコマンドの出来上がり!!

あとは任意の場所にexeを保存してパスを通せば。。あれっ!?これ頭にmonoが必要だな。
とりあえず、まずはMacの環境でC#動作させたことで良しとします。
残りは、dir.exeをmonoコマンド無しで動作させれば意図せずSLを走らせずに済みそうです。

感想

基本的な.NET Frameworkのライブラリは利用できそうでうれしいです。
あとはviで書くのが辛いですね。Vimプラグイン OmniSharp で補完を強力にできるらしいですが時間の都合上利用していません。
結果的にやっぱりC#Visual Studioで書くべき言語だと感じました。
Visual Studioの補完があってこそのクラス名・メッソド名の長さに付き合える言語という感じです。