ASP.NET を初体験

投稿者: | 2014年3月25日

Web アプリケーションといえばもっぱら Perl, Ruby, Python あと少しだけ PHP な自分なのですが、仕事でちょっとした ASP ベースの API を書かなければならなくなりました。うちは90年代に育った小さな会社ということもあり、ネットワークは Windows ドメインネットワーク、Web サーバーも IIS ベースという(自分にとっては)息が詰まるような環境です。

ASP が書けるプログラマーがほとんどいない状況で、ASP ベースの API を担当していた先輩が事故で入院してしまい、その後釜を任された同僚のサポートという形で扱うことになりました。元々の API は無印の ASP ですので、いわゆる Visual Basic 6 的な構文。仕事の内容なので、あまり具体的には書きませんが、90年代半ばの機能を駆使してわざわざ面倒かつ煩雑なシステムにしてしまっているように思えて仕方ありません。UNIX における枯れた技術と Microsoft の政略が絡んだ枯れた技術では意味が違うと思いました・・・。

IIS の意味が分からない

Apache, lighttpd, nginx などの Web サーバーの考え方がベースになっている自分にとって、Microsoft の Web サーバー Internet Information Service の意味が分かりませんでした。実装した API の不具合がスクリプトサイドにあるのか、Web サーバーにあるのか、DB サーバーにあるのか、構造から理解するのに苦しみました。UNIX 生まれのインターネット技術をパクった挙句、ユーザーのためではなく自分らのために無駄なものをたくさん乗っけて、挙句、複雑怪奇な環境を提供しているようにしか思えません。Microsoft が出している開発環境をお金を出して買えば、トータルで面倒を見てくれるように商売戦略上設計されているんでしょうが、非 Web 環境で毎日 Visual Studio を使っている UNIX ユーザーとしてみれば、それも眉唾ものだと思いました。

Visual Studio の意味が分からない

Microsoft が提供している環境というのは往々にして、「ユーザーが自分でモノを考えて何かをやろうとすると墓穴を掘る」みたいなので、大人しく Visual Studio の Web デベロッパーツールを使用することにしました。うちは VS2008 ベースですので必然的に ASP.NET になります。Microsoft の技術にコードを投入してしまうと、過去の遺産とかそういうものは諦めないといけません。 VS2008 をインストールした時点で、まさか ASP.NET をすることになるとは思ってもいなかったので、追加インストールが必要になりました。追加インストールのためインストーラを起動してみると、嫌がらせのようにインストーラがエラーで落ちます。私の環境には、VS2010 と 2013 も入っているのですが、それが影響しているんでしょうか・・・。調べる手口もありません。 オープンソースなソフトウェアならば、調べてバグレポートのひとつも送らねば!と思うのですが、お金を払った上にこれだとそんなにマゾにもなれません。さっさと諦めてしまいました。

オープンソースの .NET 環境 Mono が素晴しい

平日、家に帰った後と休日はもっぱら Linux ベースで作業しています。職場では Windows と Visual Studio を使っています。どちらも時間的には半々なので、自身では盲目的な信者のつもりはないのですが、やっぱりオープンソースの方がユーザーフレンドリーです。

自宅の Linux 環境にも Mono を入れているので、もしかしたら ASP.NET も Linux 上で上手い具合に開発ができるのかなーなんて思って調べてみると、やはりありました。オープンソース万歳!信者とでも何とでも言ってくれ!

aspnet_on_monodevelop

Mono Develop にも最初から ASP.NET ソリューションを作成するのがついてました。もう「これでいいじゃん」感がハンパないです。さて、実際に開発をするには ASP.NET を動かすための Web サーバーを導入する必要がありますが、これも Mono 開発環境の一つとして XPS サーバーが準備されています。こいつも例のごとく、コマンド一つで導入できるのがクールです。

sudo aptitude install mono-xsp

Mono Develop のサンプルの ASP.NET ソリューションをデバッグ実行すると、次のようにちゃんと動きました。ハラショー。

asp_net_running

互換性についても C# は確か ECMA だか ISO だかで規格化されていますし、Visual Studio や IIS といった環境に左右されまくる Windows ベースでの開発よりもよっぽど安心して出来そうです。ちなみに、うちの環境では .NET は 4.0、C# は ISO-2 までサポートされています。

mono40

MonoDevelop が Vi キーバインドできるようになって、C++/CLI を使わずに済むプロジェクトをやるようになったら、本気で MonoDevelop で仕事しようと思いました。

追記

デフォルトで Vi キーバインドできました。快適すぎて涙が出てきそうです。

コメントを残す

メールアドレスが公開されることはありません。