Home

技術日記
PHPからの乗り換え先を検討する その1Edit

なんだかんだでここ数年サーバーサイドの開発環境としては、PHP/Zend Frameworkをメインに使い続けてきた。けど、これから数年先を見据えた上で、これからもメインで使い続ける気がなくなったんで、乗り換え先を探すことにした。もちろん仕事ではまだまだ使うだろうけど。

まずはスクリプト言語の仲間である、Ruby/Python/Perlあたりを考えてみた。けれども、これらだと言語環境としてはPHPとそれほど大きな違いはないし、フレームワークや周辺ライブラリまで入れればそれなりに差が出るが、今からどれかに移行するほどのモチベーションがわかなかった。なんだかんだいって実用上は大きな差にならないし。

試す前は、Ruby/Ruby On Railsにかなり期待していたんだけど、この組み合わせは、お気軽に試しに採用してみるという感じではなさそう。これに決めたら深みにはまることを恐れずに心中する覚悟で使わないと、そのメリットを享受することができないように思える。まあ、高機能なフレームワークはどれもそういう傾向はあるんだけど。

あと、RubyもRuby On Railsもバージョン互換性を気にしなきゃいけない部分が目について、それが個人的には一番ネックに感じた。PHPを使い続けるのがいやになった理由の半分くらいは、最近&これからのPHPの言語仕様・環境レベルのアップデート状況にあるんで、移行してもバージョン間の非互換地獄にはまりたくない。ドキュメントの検索性の悪さもかなり悪印象。

JavaScriptは、どうせブラウザベースのクライアント向け言語としてこれからも使わなければならないから、サーバーサイドもJavaScriptにするのが言語環境の統一性があっていいかな、というのがあって、候補として非常に大きな存在。JITコンパイラが標準である分、実行速度も他のスクリプト言語より有利になりがちってところも魅力。ActionScriptと言語仕様が同じ分、Flashとライブラリとかある程度共有できたりするかもしれない、とか夢を見たり。

現状では、特にサーバーサイド開発言語としては、発展途上度が半端ない状態だけど、Node.js/WebSocketやjQuery、HTML5など、これからしばらくの間主流になりそうな技術がJavaScriptの周辺にはたくさんあるだけに、言語環境、関連ライブラリ、ドキュメントなどの開発・充実速度が非常に高そう。今から追いかけておけば、数年後の安定期にはだいぶ楽ができそうな気もする。

最初はそれほどでもなかったんだけど、調べ始めたらかなり有望に思えて来たのがC#/Monoもしくは.NET Framework。MSプロダクトを他OS環境に移植してバイナリ互換で動かせるようにしようなんて、所詮は絵に描いた餅のようなものだと思ってたんだけど、最近のMonoを使ってみたらなんだかちゃんと動いているっぽいじゃん。サーバーサイドでの実績はよくわからないけど、Linuxデスクトップ向けでは結構使われているらしいし。

C#/Monoも、JITで高速に動作するし、言語仕様的にもかなりわかりやすくて使いやすいし、ライブラリは充実しているし、VisualStudioというとても使いやすい開発環境もあるし(Windows環境ではね。他のOS環境ではMonoDevelopがあるけど、VSに比べるとだいぶ落ちるな。Eclipse+プラグインよりはましだけど)、仕事ではMS系の仕事はC#/.NET Frameworkがメインになるから、これでLinuxベースのサーバーサイドも開発できるなら非常にうれしい。

.NET FrameworkのWebアプリケーションフレームワークであるASP.NETは、初期の頃は仕事でやっていた。あれでちゃんと動くところはすごいけど、Web標準からみるときしょい仕組みだしサーバーがIISだしで、できれば使いたくない代物だった。今ならASP.NET MVCというきしょくないフレームワークがあるみたいだし、ApacheでASP.NETを動かすmod_monoなんてものも出ているみたいだし、Webアプリ開発も結構やりやすそう。

あと、MonoTouchを使うと、C#/.NET Frameworkを使ってiOSアプリとかAndriodアプリとかを作れるところもうれしい。ちょっとだけ試してみた感じでは、Xcode/Objective-Cで書くよりもかなり生産性が上がりそうだった。

UIViewController *controler = [[UIViewController alloc] init];
みたいなコードが
UIViewController controller = new UIViewController();
とか普通に書けるようになるし、UIデザインツール(Interface Builder)との連携も普通にイベントハンドラーを追加する感じで書けるし、一度こうやって書けることを知ってしまうと、Objective-Cで書く行為が今までよりも苦痛に感じてしまうようになる。あと、Cocoaのよくわからないクラスライブラリをあさらずに、.NET Fraemworkのクラスライブラリを使っていろいろ書けるのもとても楽。特にドキュメントの検索性的に。

ただ、MonoTouchは基本有償だし、iOSのアップデートにどこまで追随できるのかとか、いろいろ不安点はあるんだけど。

だいぶ話が逸れた。ともかくMonoはものすごく好印象だったのだが、サーバーサイド開発言語環境として考えると、マイクロソフト純正プロダクト以外での実績があまりにも少ないのが、かなり怖い。mod_monoなんかプロダクションレベルで使った実績ってあるんだろうか? 実際、MS環境で開発したASP.NETアプリをMonoで動かそうとして苦しんだ事例は見かけたけど、それ以外にMonoをサーバーサイド開発言語として使うような事例はほとんど見かけなかった。これは自分で茨の道を切り開いていかなければならない予感がする。

ただ、Monoの言語環境自体はそれなりに安定してそうだし、変にMS互換にしようと思わず、Mono環境で使える部分に絞って開発すれば、それなりに使い物になりそうな感触はある。あるいはASP.NETとかは使わず、HttpListnerを使ったAPIサーバーアプリとかを作る分には安定して使えそう。あと、個人的にはそれほど好きじゃないんだけど、使おうとすれば結構使えるSiliverlightも.NET Framework仲間だよね。

といった感じで、今のところJavaScript/Node.jsとC#/Monoが一歩ぬきんでている感じなんで、この二つを本格的に試してみるつもり。個人的なWebアプリをこの二つで作ってみて、どのくらい使えるかを検証してみる予定。

Published At2011-08-24 14:37Updated At2019-12-30 15:30