Web アプリケーションを作るための手帖

Web アプリケーションを作るということは、かなり広い分野の技術が必要になってくるので、誰であっても最初は結構なハードルがあります。しかし、最近は便利なサービスが増えてきてハードルもどんどん低くなってきているので、いいアイデアがあれば苦労するけど作ってみましょう。いい経験になると思います。このサイトでは、Web アプリケーションを作るため自分でいろいろと試行錯誤したことをメモしています。また、今後は iPhpne/Android/Windows Store のネイティブアプリも実際に作っていきたいと思っています。

Web アプリケーションを作ることで一番難しいこと

Web アプリケーションを作るための技術は学ぶこともできるし、このサイトに書くこともできます。しかし、どういう Web アプリケーションを作るかということは、自分で考えるしかありません。自分の必要なもので、他の人も使いたいと思うものを実際に作ってみて、どれぐらい価値があるものかを試すしかないと思います。Web アプリケーションの世界では、人の真似をしたのでは価値はありません。

次に、何か作りたいものがあれば、それを形にしなければいけないということです。Web アプリケーションを作るには多くの技術が必要だから、それらをすべてすぐにできる人はいないので、必ず壁にあたると思います。また、できたとしてもすぐには使ってくれる人はいません。だから、実際に動作するのものを簡素でいいからできるだけ早く作って、地道にユーザーを作っていくことが重要です。

Web アプリケーションを作るための技術

Web アプリケーションを作るために必要な技術には、以下のようなものがあります。

  • サーバー・ネットワーク
  • Web アプリケーションフレームワーク
  • プログラム
  • データベース
  • フロントエンド
  • ライティング
  • マーケティング

自分の場合は、プログラム言語としては C#、Web アプリケーションフレームワークとしては ASP.NET MVC を使っています。また、このサイトで紹介している Umbraco も ASP.NET MVC と併せてフレームワークとして使っています。これらのツールに関しては、これが自分に合っているということで使っているだけなので、自分に合ったツールを選んだらいいと思います。

最近は、個人や小さな企業でも OSS のツールやクラウド等の最新のサービスを利用すれば、大企業に負けずに勝負をすることができます。ASP.NET MVC や Umbraco は、効率よく開発でき、また、共同作業がしやすいので、少人数でもレベルの高い Webアプリケーションを構築することができます。

Web アプリケーションは、いくらいいものでも作っただけでは誰も使ってくれません。やはりプロモーションが必要になります。しかし、インターネットを使えば、個人でもプロモーションはできます。

C# も悪くないよ

Web アプリケーションを作るためには、プログラムを書いてやる必要がありますが、プログラム言語の選択は結構悩ましい問題です。自分の場合は、自分でサイトを作るためだけなので、自分が最も習得しやすいと思う言語として C# を選択しました。C# のメリットは、デスクトップアプリケーションでも Web アプリケーションでも、そこそこの性能のものを効率的に作成することができます。よく似たタイプの言語としては Java がありますが、自分の場合は、Webサイト用のプログラミングだけでなく、デスクトップ用のプログラミングも必要だったので、Java は Windows のデスクトップで使うには遅いし使いずらいということで C# を選択しました。C# を選択した当初は Java が圧倒的に人気だったので Java にしておけばよかったと思ったこともありますが、Java は、Oracle が買収してから対応が悪くなっており、最近脆弱性の発覚が相次いでいる要因となっています。一方、C# の方は、Microsoft が地道に改良を重ねており、現在では、Java ではなく、C# を選択してよかったということを心からいえるようになっています。

C# といえば、Microsoft のものだという印象が強いと思いますが、Xamarin 社から、Xamarin が発売されていて、iPhone 及び Android のアプリケーションも作成することができます。また、ゲーム開発プラットフォームとして有名な Unity も言語には C# を使っています。mono を利用すれば、Linux上でも動作するし、現在では C、C++ に次いで幅広いOS で動作する言語になってきています。したがって、C#を使えば Web アプリケーションも作れるし、iPhpne/Android/Windows Store のネイティブアプリも作ることができます。PHP は Web の世界では有力ですが、それ以外の分野では非力です。

C、C#、Java、PHP は言語的にはかなり近い言語で、言語の基本だけでいいのならば全部覚えることはそれほど難しいことではありません。しかし、実際に効率よくプログラミングするためには、ライブラリにも慣れる必要があるので、自分のように、アプリケーションを作りたいためという場合には、一つに絞って慣れるのがいいと思います。

言語に C# を選択した場合、公開用の Web サービスを作るのであれば、ASP.NET MVC と Umbraco を選択するのは自然な流れです、

プログラミング言語の人気調査をしている TIOBE Programming Community Index というサイトがあります。人気言語の順では、C、Java、Objective-C、C++、C#、PHP の順になっており、C# は PHP よりも使われている言語です。

C#の学習参考資料

C#の学習用の Web サイトととしては、++C++; //未確認飛行 CC# プログラミング入門があります。これは、とても参考にになるサイトで、普通に販売している C# の本よりも、わかりやすく、内容も豊富なので、最初はこれだけで学習しても十分です。
図書については、ハーバード・シルト著「独習C#第3版」(翔泳社)がおすすめです。

Windows は、開発ツールのコストが高いのでは

遠隔操作ウイルス事件の時には、「Visual Studio は高価な専門ツールであることから、素人が購入するとは考えにくいという」コメントがだされたように、Windiows 関係の開発ツールは高いと思っている人が多いと思います。

実際は、Visual Studioには無償エディションがあり、Web サービスを開発したいのであれば Visual Studio Express 2012 for Web を無償で利用することができます。Visual Studio Express 2012 for Web では、以前の Express 版と違って、Team foundation Server を利用することもできるし、単体テストの機能も標準でついているので、Web サービスの作成ということであれば、十分な性能を持っているソフトです。

また、Visual Studio は、専門家が使うツールで、初心者が使うようなツールではないと思っている人も多いかもしれません。確かに PHP をエディターで編集するのと比較すると比べると少し取っつきにくい面はあると思います。でも実際に使ってみるとエディターで編集するより遙かに効率がいいということがわかります。だから初心者だからといって避けるのではなくどんどん使ってみてください。

Windows サーバーもよくなっているよ

もう一つの懸念は、Windows サーバーはセキュリティに問題があるのではないかということだと思います。日本では、Windows サーバーといえば Windows NT 時代の悪いイメージが残っているかと思いますが、最近では Microsoft は Windows のセキュリティの向上に努めており、Windows サーバーの性能は本当によくなっています。

このサイトを最初に作成した時点では、Windows OS を使用した Web サイト構築に関する Web サイトは殆どありませんでした。しかし、「BuiltWith.com」 をみれば、世界的には Top 100,000 Sites のようにアクセスの多い Web サイトでは Windows サーバーも結構使われているので、Windows OS で Web サーバーというのも捨てたものではないなと思っていました。職場や家庭で使っているパソコンの多くはWindowsです。それならば Windows で Web サービスを構築する方法を情報発信していくのも面白いだろうということも、このサイトを作った理由の一つでした。