Monoを使ってOSXでC#

Unityを触っています

言語はJSとC#に対応しているワンソースで色々なプロットフォームに対応してくれるすぐれもので、手元ではC#で書いています

Unity上でプロジェクトをビルドして再生ってのが正当な開発方法のようですが、一旦ターミナルから手が離れてしまうこともあって少々辛いことになっています。

ターミナル上でシンタックスチェックやコンパイルした方が非常に捗るなぁと思っていたわけです。

Mono

Windows以外でも.Net Framework環境を実現するためのMonoプロジェクトがあります。 C#コンパイラが含まれていて、これを使うとターミナルからコンパイルが行えるようです。

Hello World

Hello Worldをやってみましょう

using System;
 
namespace HelloWorld
{
    class Hello 
    {
        static void Main() 
        {
            System.Console.WriteLine("Hello World!");
        }
    }
}

C#コンパイラはバージョンごとに幾つか(mcs,gmcs,dmcs)用意されています。 dmcsのバージョン4.0を使います

$ dmcs hello_world.cs

hello_world.exe ができている事を確認しmonoで実行してみましょう

$ mono hello_world.exe 
Hello World!

郵便番号住所検索

これだけだとつまらないので郵便番号から住所を検索できるプログラムを書いてみました 初心者の勉強がてらの遠回りなコードになっていますが、そこは勘弁

やっていることは

  • 郵便番号住所CSVを読み込む( http://www.post.japanpost.jp/zipcode/dl/roman.html )
  • ハッシュテーブル(Dictionary)に郵便番号をキーにして、値に住所を入れる
  • 第一引数に渡された郵便番号をキーにしてハッシュテーブルから住所を検索

これだけです。

さっそく実行してみましょう

// 複数ファイルのコンパイルは列挙すれば良い模様 
$ dmcs main.cs Zipcode.cs -out:zipcode.exe

// 郵便番号 4200838 を渡して実行
$ mono zipcode.exe 4200838
Read.search Hit !! zipcode:4200838 local:AIOICHOAOI-KU SHIZUOKA-SHI

Unityでは使えるライブラリに制限があるようですが、UIと絡まないビジネスロジックや サーバとの連携を作る際にはMonoを使って作成していくのがいいのではないかと思っています。