ASP.NET 3.5開発ノウハウ集


ASP.NET 3.5ならphpの3倍ぐらい速く作れる」という知人の言葉にそそのかされてやり始めたASP.NET 3.5での開発。
書籍も少なく、資料も少ない。途方に暮れる毎日であった。


しかし慣れてくると、LINQO/Rマッピングはなかなか便利で、初期段階でDB設計なんかせずに思いつくままテーブルを追加したりしてもまあ、なんとかなる。(よい子は真似しないように!) 確かにこれはphpの数倍速いわ。


LINQを覚えたおかげで、「SQL Server Compact Edition 3.5の使い方」(→http://d.hatena.ne.jp/yaneurao/20081124)なんかも自動的に学習できて、一粒で二度おいしかった。


そこで、「ASP.NETはもっと活用されるべき!」と思ったのであとから学ぶ人のために参考になればと思い、ざっと道しるべを書いておくことにする。


書きかけの部分は、素直に「かきかけ」としてある。この部分には、あとで追記するつもりだが、いつになったら追記できるかわからないし、いつまでも「かきかけ」のままかも知れない。「かきかけ」のところがあるとblogでは公開しにくい。記事として未完成に見えるからだ。


でもいつまでも公開しなければ内容自体が古くなってしまうし、中途半端ながら公開して悩んでいる人の役に立ててもらったほうが良いと思った。
「かきかけ」と書いてあるところには、半年ぐらいかけて順番に追記していくつもりである。ときどきこのページを思い出してもらえれば幸いである。


■ ASP.NET3.5の利点


ASP.NET3.5の利点


C#/VB.NETで書ける。すでにC#/VB.NET.NET Frameworkでのプログラミング経験がある人はあらたにPHPPerlなどを覚える必要がない。
・VisualStudioでデバッグできる。あらたにデバッグ環境を構築したり覚えたりする必要がない。
・VisualStudioでコードを書ける。もちろん、IntelliSenseがコード入力を強力にサポートしてくれる。
・VisualStudioのデザイナを使ってWebページをデザインできる。
ASP.NETフレームワークがコードを書く量を減らしてくれる。
・Web Serviceを簡単に作れるフレームワークが用意されている。
・テーブルデザイナで書いたものが自動的にクラス化され、LINQ to Entitiesを用いて簡単にクエリが書ける。SQLを覚える必要すらない。
・画像を処理する場合など、使い慣れた(?)、.NET Framework 3.5のクラスがすべて使える。
C#を使うならばC# 3.0で開発できる。型推論genericsなども使えるし、それなりの実行速度も期待できる。
ASP.NETフレームワークを作っているのがMicrosoftなので、(PHP用のOpenSourceのフレームワークと違い)数年で廃れるということはたぶんない。


まあ、標準的なWebサイトならば、PHP/Perlで書くよりは数段早いと思う。特に、既にVisualStudioでのプログラミングに慣れている人にとって、新たに開発環境を構築したり習得したりする必要がないのも大きなメリットだと思う。


■ C#を学ぶ


まず、C#VB.NETを学ぶ。私はC#がお勧め。C#は、LINQを使うので少なくともC#3.0対応の記事を読む。
これは、本を買わなくとも@ITの記事で十分。


 連載:C# 3.0 入門
 http://www.atmarkit.co.jp/fdotnet/csharp30/index/index.html


LINQ以前に、C#自体知らないよ!と言う人は、@ITC#1.0/2.0用の記事なんかもおさらい。


 連載  改訂版 C#入門
 http://www.atmarkit.co.jp/fdotnet/csharp_abc2/index/index.html


 C# 2.0 入門
 http://www.atmarkit.co.jp/fdotnet/csharp20/index/index.html


あと、以下のITProの連載も参考になる。


 ピンポイントで速習!Visual Studio 2008
 http://itpro.nikkeibp.co.jp/article/COLUMN/20080113/291005/?ST=develop


■ ASP.NETの学習


@ITにはASP.NETの連載が複数ある。これはためになる。


 @IT ASP.NETの連載一覧
 http://www.atmarkit.co.jp/fdotnet/index/all/category.html#prog_aspnet


特に参考になった@ITの連載をいくつか挙げる。


 Visual Studio 2005でいってみよう DBプログラミング
 http://www.atmarkit.co.jp/fdotnet/vs2005db/index/index.html


かきかけ : その他、参考になるリンクを紹介。


MSDNのVisual Web Developerの説明も一通り読んでおこう


 Visual Web Developer
 http://msdn.microsoft.com/ja-jp/library/ms178093.aspx


Do-It-Yourselfシリーズは .NET Framework 関連のテクノロジを実際に触りながら概要を学んでいくMicrosoft公式のコンテンツ。ASP.NET Do-It-Yourself シリーズの連載が始まったので要チェック!


 http://www.microsoft.com/japan/msdn/vstudio/using/do-it-yourself.aspx


かきかけ : ASP.NETの学習ができるサイトを追加予定。


プログラミングMicrosoft ASP.NET 3.5 (マイクロソフト公式解説書 Microsoft Visual Studi)
Dino Esposito
日経BPソフトプレス
売り上げランキング: 24685
おすすめ度の平均: 4.0
4 総合的解説書としてはお勧め

あまり役には立たないかも知れないが、ASP.NET 3.5の解説書籍としてはこれくらいしかない。
特にお勧めはしないが網羅的に書かれているのでASP.NET 2.0に触れてなかった人は手元においてあるといいと思う。


踏み込んだ内容については、この本があっても解決しないことのほうが多く、そのへんは、MSDNを見るなり、オンラインで情報を探すなりしないとどうしようもない。


すぐに使える実例で学ぶLINQ実践サンプル集―ASP.NET3.5対応
薬師寺 国安 薬師寺
カットシステム
売り上げランキング: 246027

LINQを使って、ASP.NET 3.5用のサイトを作っていく本。LINQの使い方から、簡単なWebサイトをASP.NETで構築するところまでしか載っていないが、実例が詳しく書かれているので、わかりやすいし、この手順通りに操作すれば使い方が学習できるという点は評価できる。


言語が、C#ではなくVB.NETで書かれているのがちょっと残念。あと、内容的にもっと踏み込んでも良かったような気はするが、そうするとページ数が増えるのか…。


実例に基づくので、LINQの他の入門書よりは圧倒的に読みやすいので、VB.NETの表記でも苦にならないという人で、いまからLINQを勉強したい人には悪くない本だとは思う。


■ LINQ to SQLの記事からLINQ to Entitiesを学ぼう


LINQの概要がわかったところで、LINQ to Entitiesを学ぶ。とは言っても、LINQ to SQLとほとんど同じなので特に学ばなくて済むはず。


ちなみにLINQ to SQLは今後消えていくらしいのでLINQ to SQLは使わないこと。LINQ to Entitiesの記事はまだ少なく、検索してもなかなか見つからない。無理に探さず、LINQ to SQLの記事で我慢しよう。


 LINQ to SQL
 http://ufcpp.net/study/csharp/sp3_linqtosql.html


■ Visual Web Developer 2008 Express Editionで始めよう。


Visual Studio 2008を持っていないなら、以下のサイトから
 Visual Web Developer 2008 Express Edition
がダウンロードできるので、まずはこれを使うと良い。


 Visual Web Developer 2008 Express Edition
 http://www.microsoft.com/japan/msdn/vstudio/Express/


Microsoftのオンライン教材として次のものがある。
これが操作が大変わかりやすいのでこれを一読することをお勧めする。


 プログラミング チャレンジ スクエア 第 2 弾
 http://www.microsoft.com/japan/msdn/student/challengev2/


 プログラミング チャレンジ スクエア 第 1 弾
 http://www.microsoft.com/japan/msdn/student/challenge/default.aspx



■ Expression Studio2 を買おう



ASP.NETで本格的なサイトを作るときは、Visual Studio 2008と連携性の良いデザインツールが必要である。


選択肢は、DreamweaverかExpression Studio。Dreamweaverは、Adobe製で現在最新版はDreamweaver CS4。Dreamweaver MXのころから使っていた人はとっつきやすいだろう。


Expression Studio2はMicrosoftのデザインツール。Expression Web2 , Expression Design2 , Expression Media2などExpressionシリーズが一式入っている。サイトデザインだけなら、Expression Web2だけでも良いとは思う。詳しくは以下のURLのビデオツアーを。


http://www.microsoft.com/japan/products/expression/products/Overview.aspx?key=studio

■ Visual Studio 2008 / ASP.NET 3.5関連ノウハウ


Webユーザーコントロールとは、.NET FrameworkのUserControlのWeb版。これをうまく使うと生産性があがる。


 10 行でズバリ !! Web ユーザー コントロールの作成 (C#)
 http://www.microsoft.com/japan/msdn/thisweek/300x10/phase2/usercontrol_build/cs.aspx


Visual Studio 2008の新機能。2005までしか使ってなかった人はざっと目を通そう。


 ASP.NETアプリ開発者のためのVisual Studio 2008新機能
 http://www.atmarkit.co.jp/fdotnet/special/vs2008aspnet01/vs2008aspnet01_01.html


■ ASP.NET MVC Framework関連


CUTTING EDGE ASP.NET のプレゼンテーション パターン
http://msdn.microsoft.com/ja-jp/magazine/dd252940.aspx?rss_fdn=MSDNTopNewInfo


Microsoft.NET FrameworkのプロダクトマネージャのScott Guthrieさんの文章の日本語訳。
http://www.chicasharp.net/ScottGu/


■ ASP.NETmod_rewriteみたいなことをする


 ASP.NET での URL 書き換え
 http://msdn.microsoft.com/ja-jp/library/ms972974.aspx


 すてきな ASP.NET ASP.NET Web フォームによるルーティング
http://msdn.microsoft.com/ja-jp/magazine/2009.01.extremeaspnet.aspx?rss_fdn=MSDNTopNewInfo


■ SQL Server 2008 関連


 SQL Server 2008 自習書
 http://www.microsoft.com/japan/sqlserver/2008/bible/default.mspx


無料なので是非読むべし。


■ ASP.NET サンプルプログラム


他人の書いたプログラムから学ぶのが一番速い


以下のものはMicrosoftの公式サンプルだけあって、よく出来ている…が、.NET Framework1.1用。古すぎる。雰囲気はつかめるか?


 ASP.NET スタート キット
 http://msdn.microsoft.com/ja-jp/asp.net/cc671363.aspx


以下は、Microsoftの公式サイト。Learn ASP.NETの「Starter Kit Web Sites」のところにサンプルを掲載しているサイトへのリンクがたくさんある。


 ASP.NET公式
 http://www.asp.net/


こちらもMicrosoft公式。こちらはLINQ to Entitiesのサンプルもあるので、これがお勧め。


 ADO.NET Entity Framework & LINQ to Relational Data
 http://code.msdn.microsoft.com/adonetefx


かきかけ : サンプルを公開しているサイトを随時追加する。


■ 個々のノウハウ


 正直、ASP.NETとその周辺はどうなのよ
 http://d.hatena.ne.jp/yaneurao/20090304

 私の記事だが、知っておいて欲しいこと満載。



 プログラマのためのセキュリティ対策テクニック 第13章 安全な.NETプログラム
 http://msdn.microsoft.com/ja-jp/library/dd297677.aspx


ASP.NET開発の必須アイテム?「Web Development Helper」
http://blogs.wankuma.com/tatsumihr/articles/78475.aspx

 ViewStateの表示などが出来るのでデバッグの時に役に立つ。


 SQL実践講座
 http://www.atmarkit.co.jp/fnetwork/index/index_sql.html

 LINQだけではどうしようもないことがあるので、SQLやストアドについては覚えておこう。


かきかけ : ASP.NETを使っていく上で実際に躓きやすい事項をとりあげる。フレームワークの作り方や、Repeaterクラス、データバインドの注意点など。



■ ASP.NET AJAX


ASP.NETなら、少しの手間でAjaxを使った開発が簡単に出来る。
主な利点は、ブラウザでユーザーが入力したことなどに対して、画面をまるごと更新せずに部分的に更新することが出来るということだ。
これならユーザーが入力したときに画面がちらつくことも少なくなる。今後、Webサイトを構築していくならASP.NET AJAXは必須だと感じる。


ASP.NETAjaxを使う仕組みとしてASP.NET AJAXという仕組みが用意されている。
JavaScriptのコードはほとんどこのフレームワークが書いてくれるので、ボタンを押したときにテキストラベルをAjaxで更新するだとかは、自分でJavaScriptのコードを一切書かなくても済む。


ただし、何かコードが期待通りに動かないときにデバッグするにはhtmlに出力されているJavaScriptを読めたほうが良いのでJavaScriptの知識はあったほうが良いし、ASP.NET AJAXで用意されている機能以上のことをやろうと思うと、JavaScriptが書ける必要がある。JavaScriptは是非とも覚えておきたい。


JavaScriptの入門書をお探しの人は、とてもいい本があるので次の記事を読まれたい。


 JavaScriptの入門書
 http://d.hatena.ne.jp/yaneurao/20081202


私がJavaScriptでハマったのは、VisualStudio2005用の説明動画(以下の「ここが知りたい!ASP.NET AJAX」)を見ているとJavaScript側で「SimpleService.SayHello.…」と入力していたのだけど、VisualStudio2008のASP.NET AJAXでは「WebApplication1.SimpleService.SayHello」のようにプロジェクト名を名前空間として最初に指定しないといけないことだ。くだらないことだけど、VisualStudio2005と2008とでこういう差があって、いまちまたにある動画は2005用のものなのでときどき躓く。そういうときにJavaScriptの本が手元にあると心強い。


ASP.NET AJAX および ASP.NET AJAX Control Toolkit を用いた Web 開発について動画で説明がある。これを見ながら自分で試すとASP.NET AJAXについてはすぐに使えるようになる。


 ここが知りたい!ASP.NET AJAX
 http://msdn.microsoft.com/ja-jp/asp.net/cc671362.aspx?ppud=4


ITProの連載がASP.NET AJAXを理解する上で参考になった。


 マイクロソフトAjax対応フレームワーク「Atlas」入門
 http://itpro.nikkeibp.co.jp/article/COLUMN/20061110/253333/?ST=swd-tech


 .NETでWebサービスを始めてみよう
 http://itpro.nikkeibp.co.jp/article/COLUMN/20061215/257092/?ST=system


ASP.NET AJAXに関するMicrosoftの公式サイト。ここは英語だが資料は一番豊富にある。


 ASP.NET AJAX
 http://www.asp.net/ajax/


かきかけ : ASP.NET AJAXのノウハウを書く。


■ ASP.NET用WebControl


グラフ表示のWebControlなどは有償でも買ったほうが開発コスト的に安く仕上がることが多いので商用開発なら、その手のWebControlの購入も視野に入れたほうがいいと思う。


ASP.NETで使える有償のWebControlには以下のような製品がある。


 Telerik RadControls
 http://demos.telerik.com/aspnet-ajax/controls/examples/default/defaultcs.aspx
 これは、かなりいい。私は愛用している。


 Infragistics ASP.NET controls
 http://jp.infragistics.com/dotnet/netadvantage/aspnet.aspx#Overview
 これも似たような感じ。


 ComponentArt WebUI
 http://www.componentart.com/charting/
 チャート系に力が入っている


 Dundas .NET product
 http://www.dundas.com/Products/Map/NET/index.aspx
 地図とか。


 ASPxGridView
 http://demos.devexpress.com/ASPxGridViewDemos/Default.aspx


 SIGMAWIDGETS.COM
 http://www.sigmawidgets.com/


かきかけ : その他のWebControlを紹介する


■ ASP.NETでモバイルサイトの開発


ASP.NETでモバイルサイトの開発は、結構、茨の道。情報が少なすぎるし、Microsoftの力の入れ具合もなんだかションボリな感じ。まあ、今後携帯もフルブラウザが増えてくるだろうから、ガラパゴス携帯の専用ブラウザなんか相手にしても仕方ないのかも知れない。かと言って商用サイトでは携帯ユーザーを全く無視するわけにもいかないのが実状で…。


 .NETでモバイル・サイト開発を始めよう
 http://www.atmarkit.co.jp/fdotnet/aspnetmobile/index/index.html


機種の判別は上の方法でやるのは手間がかかりすぎる。モバイル対応が日本の携帯のみなら↓の情報をもとに振り分けたほうがいいように思う。(もちろん、各キャリアのIPの範囲と一致していることは確認しないとなりすましが出来てしまってまずいが。)


 携帯の端末IDとCookieのまとめ
 http://ueblog.natural-wave.com/2008/04/20/mobile-id/


あと、ASP.NETで携帯向けサイトを開発する辛さは以下の連載が参考になると思う。


 ASP.NET Webアプリ開発の裏事情
 http://www.atmarkit.co.jp/fdotnet/aspdevura/index/index.html


日本の携帯はいまだにshiftjisだったりしてとても大変です。


 ASP.NETでケータイ絵文字
http://blog.asura.co.jp/takehara/a35b6ffa7cff4c609a3c960638d86199/entry.aspx


かきかけ : 実際にASP.NETで携帯向けサイトを構築するためのノウハウをいくつか書く。


■ レンタルサーバ


それほど大規模なサイトではないのならレンタルサーバーを借りたほうがメンテナンスコストは安くで済む。


Windows Serverのレンタルサーバーは以前はずいぶん割高だったが、最近ではLinuxレンタルサーバーとそんなに値段は変わらないと思う。


 ASP.NET ホスティングサービス情報
 http://www.microsoft.com/japan/msdn/nextweb/hosting/default.aspx


サーバー容量をそんなに必要としないなら、↓のWILL@NETでは月額840円というプランもあるようだ。(私はここを使ったことはないので使い心地とかは私は知らないが。)


WILL@NET
http://www.willnet.ad.jp/plan_win.html



■ LAMP系とWISAとの比較


LAMP(Linux + Apache + MySQL + PHP)とWISA(WindowsServer + IIS + SQL + ASP.NET)との比較。


半年ぐらいの経験を積めば、開発にかかる時間は、ASP.NETなら、LAMP系の半分以下で済むと思う。


常識的には、ホスティングにかかる経費の増加より、開発時間の短縮(人件費の圧縮)による効果のほうが遙かに大きく、よほど小規模サイトでない限りは、ASP.NETのほうが安くで済むということは言えると思う。


ただし大規模のサイトの場合、普通冗長化や負荷分散のために何台ものマシンを用意するのが(2008年現在のソリューションとしては)一般的で、そのため、WindowsServerのライセンス料が馬鹿にならない。


2008年11月現在、Windows Server 2003 Web Editionは42,000円で購入できるが、サーバー台数が多いとこのライセンス料だけでも大変だから、サーバーが何百台も必要となるサイトでWISAはあまり現実的ではないと思う。そういう特殊なケースを除けば(サーバー台数が10台ぐらいまでならば)、WISAでやることをお勧めしたい。必ず元はとれると思う。



■ Windows Server 2005/2008関連のノウハウ


開発環境と本番環境とDBが異なると結構面倒なので、開発時に本番環境のDBにアタッチして開発したいということがある。このとき、SQL Serverでネットワーク接続を有効にする必要がある。以下の説明が詳しい。


 SQL Server 2005でネットワーク接続を有効にするには?
 http://www.atmarkit.co.jp/fdotnet/dotnettips/545sqlsvrnet/sqlsvrnet.html