LOGO

sponsor.jpg

   ホーム      
 | 
  
   イベント      
 | 
  
   コラム      
 | 
  
   連載      
 | 
  
   フォーラム      
 | 
  
   VSUG      
 | 
  
   スタッフ日記      
 | 
  
   VSUG キャスト   
会員サービス
メンバー ログイン
新規会員登録はこちら
MENU
ホーム
イベント
VSUG アカデミー
VSUG Day
その他のイベント
コラム
連載
基本
LINQ
リッチクライアント
ASP.NET
フォーラム
初心者フォーラム
Visual Studio
.NET 開発
プラットフォーム運用
フリートーク・お知らせ
フォーラムの利用案内
VSUG
VSUGとは
フォーラムリーダー紹介
ガジェット
スタッフ日記
VSUG キャスト
第 1 回 近藤 和彦 氏
第 2 回 長沢 智治 氏
インフォメーション
会員規約
会員登録
プライバシーポリシー
リンクポリシー
著作権について
スポンサーについて
お問い合わせ

teched2007

 

概要


※イベントは終了いたしました。

国内最大級の総合テクニカル コンファレンスである Microsoft Tech・Ed 2007 がパシフィコ横浜にて開催されます。VSUG では VSUG 会員 5 名様を無料でご招待(フル エクスペリエンス パッケージ)。
コミュニティとして VSUG も BOF・Street Live へ登壇予定となっております。
最新情報が知りたい、ご自身の知識を高めたいという方、ぜひご応募下さい!

詳細はこちら ⇒ < http://www.microsoft.com/japan/teched/default.mspx >



【 セッションレポート 】
中野 さんのレポート:

■T3-301 .NET における動的言語への取り組み
■T3-305 Visual Studio 2008 における Visual C# の新機能
■BOF12 Silverlight を語ろう! - Web アプリのこれから
■T3-301 .NET における動的言語への取り組み

セッション担当の荒井さんはこのセッションをどのようにするか悩まれたそうです。IronRubyはまだデモするには実装が進んでいないし、抽象構文木など、内部構造の話になると内容が細かくなってしまい、デモも地味なものになってしまうということでした。

なぜ動的言語が注目されているかについては、PCの速度が上がったため動的言語の速度の遅さが気にならなくなったという点や、コンパイルの手間がいらないためすぐに試せるといった点を上げていました。

そしてPewerShellのデモを行いながらPowerShellの特徴について説明していました。PowerShellはプロトタイプ志向の言語であり、動的に型を構築できるのが特徴です。荒井さんはPowerShellについてとっつきやすいが使いこなすのは大変と考えているようです。

次にデモしたのがIronPythonです。ファイルシステムウォッチャー、タブレットアプリ、シンセサイザーのデモなどを使ってIronPythonの特徴を紹介していました。

次にDLRの特徴について紹介していました。DLRは動的言語をより作りやすくするためのものだそうです。今までのCLRでもSystem.Refrection名前空間のEmitメソッドを使用すれば動的に型を作成していくことが可能です。しかしその方法ではILを直接記述する必要があり、私もやったことがあるのですがとても大変です。それを使いやすいレベルにしたのがDLRです。DLRはまた共通型システムを動的言語に持ち込むことができ、実際にデモでJavascriptで作成した型をPythonで利用するといったことをして言語間で型情報やインスタンスを共有できることを示しました。

またIronPythonを使って抽象構文木を見せるデモも行っていました。言語ごとに抽象構文木があり、それが実行時にDLRの抽象構文木に変換されて実行されるようです。なぜこのような仕組みがあるかというと、動的言語を効率的に実行するために必要なのだそうで、キャッシュの仕組みも用意されているようです。
IronRubyのデモもありましたが、プレアルファなためそれほど面白いデモはまだできないようで簡単な紹介程度でした。IF文のネストができないなど完成度はこれからのようです。
.NETにおける動的言語はまだ始まったばかりで今後SilverlightやASP.NETなど様々な場面で使われるようになっていくと思います。そういった動的言語の可能性を感じさせてくれるセッションでした。



■T3-305 Visual Studio 2008 における Visual C# の新機能

このセッションは波村さんの担当です。波村さんはアメリカのMS本社でC#のテストエンジニアをされている方で、C#0.8の頃入社したそうです。
ブログ(http://blogs.msdn.com/daigoh/)でC#のDLINQ、ExpressionTreeなどについてわかりやすく解説されているのを見ていたので今日のセッションは前から楽しみにしていました。
最初に驚いたのがセッション資料の薄さです。資料はパワーポイント数枚くらいで後はデモでコードを記述していきながら新機能について解説するというスタイルでした。デモはスピードが速く追いつけなかった方もいるかもしれません。デモで書いたコードはブログ(http://blogs.msdn.com/lukeH/)に掲載されているとのことなので、ついて行けなかった方はそちらを参考にするとよいと思います。

まず最初のデモはC#3.0の新機能についてです。プロパティの記述を今までより簡単に記述できる機能、オブジェクトの初期化を今までのコンストラクタを使うのではなく簡潔に書くことができる機能、オブジェクトの初期化をネストしてコレクションの初期化を1行でできる機能、ローカル変数の型推論などが紹介されました。

次にC#3.0最大の変更点であるLinqのデモに入りました。LinqはSQLと違いFROM句から記述するようになっていますが、これにより型が最初に決まり、Intellisenseを利用することができるようになっているとのことです。IntellisenseをLinqで使えるようにするために設計、実装で2年もの時間がかかったともいっていました。

そしてこのデモで面白かったのはLinq名前空間の参照をコメントアウトしてLinqがどのように実装されているのかを実際に実装していくことで解き明かしていくところでした。WhereメソッドやSelectメソッドをC#2.0の構文で記述すると、多少冗長ですが同じ処理をするコードを書くことができます。それをラムダ式を使用したり、拡張メソッドで書き直すことでどんどん本来のLinqの簡潔な記述スタイルに近づいていく様がわかりました。

また、Linq To SQLのデモも行われました。データベースに実際に投げられるSQL文をコンソールに出力してLinqがどのようなSQLに変換されるのかをみることができました。Linq To SQLで使用されるExpression Treeについても解説がありました。Expression Treeについては難しいのですが、LinqのコードをSQL文に変換する際に必要な機能です。波村さんはメタプログラミングのようなものだとも言っていました。Expression Treeは以下のようなコードを記述して、デバッガでexpression変数を参照することで実際に中の構造を確かめることができます。

var query = from c in db.Customers
where c.City == "London"
select c;

var expression = query.Expression;

Expression Treeを参照するのに必要なExpression Tree Visualizerは以下のサイトからダウンロードできます。
「http://blogs.msdn.com/charlie/archive/2007/03/04/samples-update.aspx」

セッション終了後のAskTheSpeakerコーナーでは人だかりができており、
・C#でのマルチコア対応はF#のFeatureではなく、もっとCLRを含めた自然なものになっていく。
・C#の関数型言語の要素を発展させていけばAOPも実現できるのではないか。
・==とequalsの挙動の違いについて。
・C#という言語の将来について
などいろいろな話を聞くことができました。
C#を知り尽くした波村さんならではのデモ主体で大変面白いセッションでした。



■BOF12 Silverlight を語ろう! - Web アプリのこれから

セッションはまず挙手によるアンケートから始まりました。最初の質問はSilverlightを知っているかというもので、これはほとんどの人が手を挙げました。次にSilverlightのコードを書いたことがあるかという質問。これに手を挙げたのは10人くらいでした。

次にSilverlightの簡単な説明に入りました。
・Silverlightは.NET Frameworkに非依存なため.NET Frameworkをインストールしなくても動作する。
・1.1にはminiDLRが搭載されており、C#やVBで記述が可能であり、DLRも搭載しているため動的言語も使用することができる。
・SilverlightはXAML+Javascriptで記述する。プログラムを記述する場合はコードビハインドで書くことができる。
・開発環境については1.0がVS2005、1.1がVS2008。
・Expression Blend2でSilverlightアプリケーションが作成できる。
以上のような説明がありました。

その後はMSが運営しているサイト(silverlight.net)のサンプルが紹介されました。キーノートスピーチで近藤さんがデモをしていた動画が見れるアプリケーションもこのサイトにありました。Flashと同様にHTMLの一部分にSilverlightを使用したアプリケーションを混在させることもできるそうです。

また、別のサイトではSilverlightでVistaのデスクトップを再現したページを公開していました。そこでは3Dを駆使したウィンドウが表示されており、青柳さんの話ではSilverlightには3Dを表示する機能はないため、プログラムですべて実装されているそうです。
次に紹介したサイトではSilverlightのパフォーマンス計測ができるようになっていました。1.1は1.0と比較して3倍以上描画が早くなっているのが画面上でわかりました。同じようにFlashのパフォーマンスもそのサイトでみれるのですが、Flashは1.0の半分の早さしか出ていませんでした。

ここで参加者の方から質問があり、Flashなどでは脆弱性が発見されたときにユーザーにどうやってアップデートを促すのかといったことに苦労している。Silverlightでは脆弱性が発見されたときに自動でアップデートする機能はあるのかといった内容の質問でした。青柳さんの答えによるとSilverlightには自動アップデート機能があり、右クリックのコンフィグでアップデートの設定もできるようになっているとのこと。すでに1.0ではアップデートのテストが行われており、すでにバージョンが何回かかわっているようです。またSilverlightはWindows以外のプラットフォームもサポートするため、WindowsアップデートからのアップデートではなくSilverlight自身が自動アップデートする機能を持っているそうです。

次に別の参加者の方から日本語フォント、日本語入力についての質問がありました。青柳さんの答えによると1.0では日本語フォントが入っておらず、日本語表示ができない。Glyphsを使用してフォントをダウンロードさせるようにすれば日本語表示をすることができるようになるそうです。ただ日本語入力に関しては現時点では不可能だそうです。なのでHTMLの入力コントロールをページに用意し、そこで入力された日本語をJavascript経由でSilverlightアプリケーションに取り込むなどの工夫が必要になるとのことでした。
次に青柳さんから1.1から使えるようになるクラスライブラリについて解説がありました。

・ファイルアクセス
・XML
・ネットワーク
・スレッド
・エンコーディング
・正規表現
などのクラスライブラリが用意されているそうです。

1.1ではまたボタンやテキストボックスなどのコントロールが提供されるそうです。コントロールはXAMLで書かれた部品として提供されているため、プラットフォームに依存することはないだろうとのことでした。

また実際にSilverlightを業務で使用しようとした参加者の方からデザイナと開発者の分業は難しいとの意見が出されました。VisualStudioでもデザイナと開発者の分業は宣伝としてよく使われていますが、Silverlightに関する限りデザイナと開発者の分業はかなり難しいようです。

このせっしょんでは実際にSilverlightを業務に導入しようとされている方からの興味深い話が聞けて非常に参考になりました。


平山 さんのレポート:

■T1-306 Windows Communication Foundation による Web 2.0 的 "Web スタイル" サービスの開発
  - REST、POX、JSON と RSS / Atom
■T3-404 Windows Presentation Foundation アプリケーションの最適
■Usergroup Street Live! わんくま同盟  わんくまストリート ライブ ダイナミック言語のおもしろさ
■T1-306 Windows Communication Foundation による Web 2.0 的 "Web スタイル" サービスの開発
  - REST、POX、JSON と RSS / Atom

本セッションでは、Windows Server 2008のリリースと共にますます着目されてきているWCF(Windows Communication Foundation)の、.NET Framework 3.5で追加される新機能「"Webスタイル"サービス開発機能」についての解説が行われました。まだまだ実践的なノウハウのつかみづらいWCFの実装ですが、新機能のデモを含めわかりやすく説明された大変有効なセッションとなりました。セッションでは、まずWCFにおける"Webスタイル"サービスサポートの概要について説明され、その後それら新機能を利用した3つのデモが紹介されました。

セッションでは、次のような情報が提供されました。
■1.WCFでの"Webスタイル"サービスサポートの概要
.NET Framework 3.0のWCFでは、Webサービスの利用といえば基本的にSOAP/WSDLベースのみがサポート
.NET Framework 3.5のWCFでは、よりWebフレンドリーなサービスがサポートされる("Webスタイル"サービスとここでは定義)。
具体的な新機能の内容としては次のようなものがある
> RESTスタイルサービスのサポート
> メッセージフォーマットとして、POX、JSON、RSS/ATOM、その他バイナリがサポート

■2.WCFでの"Webスタイル"サービスサポートの詳細
新アセンブリとしてSystem.ServiceModel.Webが追加
[WebGet]/[WebInvoke]属性の追加:サービスコンストラクトに付与して利用
バインディング種別としてwebHttpBindingが追加
サービスホスティングのクラスとしてWebServiceHost、WebScriptHostが追加
エンドポイントのビヘイビアとしてWebHttpBehavior、WevScriptBehaviorが追加
UriTemplateクラスの追加([WebGet][WevInvoke]属性と合わせての利用がメイン)

■3.各種デモの紹介
新機能を利用した3つのデモの紹介
> Ajaxサービス、画像サービス、RSS/ATOMフィードサービス
Ajaxサービスのデモでは、Ajax Webアプリケーションとの対話サービスとしてJSONフォーマットでメッセージングを行うサービスを実装するデモが行われた。コード例は下記の通り。

■A.Ajaxサービスデモ:参考コード
下記コードはデモを基に筆者が実装したもので、Visual Studio 2008 beta2にてWCF Service Applicationのテンプレートをもとに作成。開発サーバ上でホスティングした場合にはエラーが発生するというバグが存在するため、IIS上にホストする必要があるようです(参考[1])。

◇ サービスインタフェースと実装


img01


◇ コンフィグファイル


img02


◇ サービスホスト(.svc)


img03

 

◆ 実行結果
  上までで実装したサービスに対して下記クエリーを発行するとJSONフォーマットのデータが返答される。実際のサービス利用時にはプロキシを生成することになるが、JavaScript用のプロキシを生成することも可能。

img04

 まだまだ、業務利用としての実例をあまり耳にしないWCF、WF、CardSpaceですが(WPFは目にするようになってきましたね)、これらは単独利用はもちろんのこと相互連携も合わせてとても強力なフレームワークだと思います。しかし、これら強力なフレームワークを使いこなすノウハウはまだまだ普及しきれていないと感じます。今回のようなセッションを通じ、皆さんが情報を共有し合って.NET3.0そして.NET3.5の新機能のパワーを存分に活用できるようなスキルを習得していきたいものですね。

参考資料
[1] Configuration Free JSON with WCF and AJAX in Visual Studio 2008 Beta 2
http://odetocode.com/Blogs/scott/archive/2007/07/30/11171.aspx



■T3-404 Windows Presentation Foundation アプリケーションの最適
本セッションでは、WPF(Windows Presentation Foundation)アプリケーションの最適化ということで、性能劣化の発生しやすいWPFアプリケーションの実装時の留意点についての解説が行われました。
また、サンプルとして最適化されていないWPFアプリケーションを用意し、最適化ツール(Perforator)を使用して改善していくというデモも行われました。書き方一つで大きく性能の変化するWPFアプリケーションのチューニングポイントを学べたということで大変有効なセッションであったと思います。

最適化のポイントとしては次のようなものが紹介されました。

ハードウェアレンダリング
> ソフトウェアレンダリングではなく、ハードウェアレンダリングをするAPIを利用する
> BitmapEffect、TileBrushなどはソフトウェアレンダリングされるため性能劣化が発生する可能性が高い
? Rendering Tier(ハードウェア環境)に応じてハードウェアレンダリングされない機能もあるので注意が必要
レイアウトコントロール
> 不要なパネルは利用せず、できるだけ単純なレイアウトコントロール(Canvas)を利用する。
> Expression BlendはGridが多用されるので注意が必要。
リソース
> 共通コントロールはなるべくリソース化する(DynamicResourceではなく、StaticResourceを利用する)
各種エフェクト
> Opacityは限定的に使う(要素のOpacityよりそれを塗りつぶすBrushのOpacityを使う)
> ビデオをBrushとして使う場合は、MediaElementではなくMediaPlayerを使う
3Dコントロール
> ヒットテストが不要な場合は、IsHitTestVisibleをFalseと指定する
> VisualBrushやDrawingBrushを使ったText描画は非常に遅いので、RenderTargetBitmapを利用してImageBrushに変換して利用する

img05上記以外にも様々なノウハウが紹介されましたので(上はほんの一部です)、TechEdに参加された方はポストカンファレンスDVDの方を、残念ながら参加できなかった方は同様な情報がMSDNライブラリの方(参考資料[1])にもまとめられていますので、そちらをどうぞ参照してみてください。

実際のWPFアプリケーションの開発となると、Expression Studio(Blend、Design)、Visual StudioのCider、ZAM3Dなどをはじめ様々なオーサリングツールを駆使してデザインを行っていくことになりますが、これらが常に最適化されたコードを出力してくれるとは限りません。
また、まだまだ普及しきれていないWPFという技術ですので、業務利用の場合には特に性能面を気にかけるお客様も多くいると思われます。いざという場合には出力されたWPFコードを解析し、自分なりにチューニングする必要がでてくるかも知れません。その時のためにもやはり、このWPFの最適化のノウハウはぜひとも抑えておくべきかもしれませんね。

参考資料
[1] WPFアプリケーションのパフォーマンスの最適化
http://msdn2.microsoft.com/ja-jp/library/aa970683(VS.80).aspx
[2]川西裕幸のブログ
  http://blogs.msdn.com/hiroyuk/default.aspx



■わんくま同盟  わんくまストリート ライブ ダイナミック言語のおもしろさ

本ライブセッションでは、Silverlightにおける動的言語の利用についてを中心に、20分という短い時間の中盛りだくさんな情報が紹介されました。セッションスピーカーはMS MVPでもある中博俊氏。
  セッションでは、まず動的言語、Silverlightの概要の説明がされ、その後Silverlight 1.1における動的言語利用についてのデモが行われました。デモでは、Silverlight 1.1 Alpha refreshを利用し、コードビハインドとしてPythonとJavaScriptを併用する電卓プログラムが紹介されました。なお、デモで使用された電卓プログラムのソースコードは同氏ブログの中で公開されているようです(参考[2])。コードを見てみるとJavaScriptで定義された関数をPythonからコールしていたりと、確かに異言語間で各種オブジェクトの相互利用が可能であることがわかります。

img11

 またセッション最後には、PowerShellに関するデモも実施され、PowerShellはテキストベースではなくオブジェクトベースのシェルであることの説明が行われました(下図はPowerShellにて"get-date | get-member"を実行した時の出力例。Get-memberに渡されるのはSystem.DateTimeクラスのオブジェクトであることがわかる)。

img12

本セッションはお昼時間中にも関わらず多くの方が参加しており、皆さんの動的言語への関心の高さを実感することができました。DLRに関してはまだまだ情報が少ないですが、VSUGをはじめわんくま同盟でも様々な話題が提供されていますので、ぜひ勉強していきたいものです。DLRに関するより詳細な情報はマイクロソフト荒井さんのブログ(参考[3])で多く紹介されていますのでそちらも一度見てみてはいかがでしょうか。

img13

参考資料
[1] 中の技術日誌
http://blogs.wankuma.com/naka/
[2] 電卓プログラムサンプル(「中の技術日誌」より)
http://blogs.wankuma.com/naka/archive/2007/07/06/84173.aspx
[3] 荒井省三Blog
http://blogs.msdn.com/shozoa/default.aspx


井上 さんのレポート:

■T3-307 .NET Framework 3.5 概要
■T3-405 AJAX に対応した ASP.NET アプリケーション開発
■BOF17 VSUG オフライン フォーラム
■T3-307 .NET Framework 3.5 概要

img06今年からマイクロソフトの社員となられた新村氏のセッションです。いきなりルームAということもありかなり緊張しているかなと思いましたが、まったくそんなそぶりは見せずに堂々とした話しぶりに、安心して聴講することが出来ました。

Visual Studio 2008と共にリリースされる.NET Framework 3.5の新機能について、.NET Framework 3.0の機能を振り返りつつポイントを簡潔にまとめていて、.NET Framework 3.5の概要を知るには大変良いセッションだったと思います。

まず、.NET Framework 3.5におけるコア機能の強化点として、BCLやCLRでの変更点を簡潔に解説し、ハイパフォーマンスHashSetやDateTimeOffsetとTimeZoneInfoクラスのデモがおこなわれました。また、Garbage Collectionの改善や64bit環境でのパフォーマンスやThreadPoolパフォーマンスの改善が行われているとのことで、コア機能だけを見ても期待できるものになっているのではないでしょうか。

その後、主に.NET Framework 3.0の機能強化として、WPF,WF,WCF関連の解説、そして後半は.NET Framework 3.5の新機能として、LINQとASP.NET AJAXについて解説がおこなわれました。

特にWCF関連に関しては、RESTへの対応やJSONをはじめとするさまざまなフォーマットへの対応があげられ、最近のWebサービスとしてのトレンドをしっかりとカバーしている印象を受けました。またその一方では、SOAP対応もさらに強化され、WS-*標準仕様への対応強化もおこなわれているそうです。.NET Framework 3.0ではあまり注目されていなかったようにも感じるWCFですが、.NET Framework 3.5以降、その動向がかなり気になるところであります。

LINQに関しては、今回のTech・Edでの中心的なテクノロジとしてさまざまなところで語られていましたが、初日のセッションとして、その概略を知るという点においてはほどよい内容でした。VB特有の機能としてXML Literalの紹介もありました。このXML Literalは、使い方によっては大変面白い機能だと思っています。LINQ to XMLとの連携でその威力を発揮するのではないでしょうか。

最後にASP.NET AJAXの解説がおこなわれましたが、ポイントは.NET Framework 3.5に標準搭載されるということではないでしょうか。ASP.NET AJAXは.NET Framework 2.0/3.0ベースでも追加コンポーネントとして利用可能となっており、.NET Framework 3.5での大きな変更点もほとんどないようですので、個人的には新機能という印象は薄れていて、セッションも復習的な意識で聞いていました。ただ、Visual Studio 2008と.NET Framework 3.5を使うことで、すぐにでもAJAX Webアプリケーション開発に取りかかれるようになるということは十分なメリットとなるでしょう。

セッション全体を通して感じたのは、.NET Framework 3.5を使用するメリットは十分にあるということです。ただ、.NET Framework 2.0/3.0から3.5への移行のキーポイントはやはりVisual Studio 2008の普及にあると言えるのではないでしょうか。Visual Studio 2008の正式リリースが待ち遠しく感じられる今日この頃です。



■T3-405 AJAX に対応した ASP.NET アプリケーション開発

スピーカーの矢嶋氏は、今年でTech・Edスピーカー7年目だそうです。私は2000年から(2005年を除いて)ほぼ毎回Tech・Edに参加しており、記憶が確かなら矢嶋氏のセッションのほとんどを受講している気がします(趣味趣向が似ているのでしょうか?)。

今年は、ASP.NET AJAXのセッションを矢嶋氏が担当するとのことで、いま個人的に注目しているASP.NET AJAXということもあり、かなり期待してお話しをきいてきました。Room Bでしたが、やはり注目度は高いのか多くの人が来ていたように思います。

現在、ASP.NET AJAX関連の日本語の技術情報はまだ少ないですが、Visual Studio 2008(.NET Framework 3.5)では標準で利用できるようにもなるため、今後は日本語の情報も充実してくるでしょう。また、それによりさらにASP.NET AJAXに興味を持ち、実際にASP.NET Webアプリケーションの開発に利用する開発者の方も増えてくると思います。いずれは、AJAXというテクノロジーを使用しているなんてまったく意識しないで、Webアプリケーションを開発する時代が来るのでしょうか。

さて、ASP.NET AJAXの関連テクノロジーには主に以下の3つがあります。

・ASP.NET 2.0 AJAX Extensions 1.0(Microsoft AJAX Libraryを含む)
・AJAX Control Toolkit
・Microsoft ASP.NET Futures (July 2007)

このセッションでは、最も基本となるASP.NET 2.0 AJAX Extensions 1.0の各種サーバコントロールの使用方法をはじめ、ASP.NET AJAXのためのWebサービスの実装と利用、そして、クライアントスクリプトによる非同期ポストバックによるページの部分更新のカスタマイズ方法などが紹介されました。

個人的にASP.NET AJAXについて調べていると、意外というかやはりというかAJAX Control Toolkitに含まれるさまざまなAJAXコントロールに興味を持たれ、実際に使用している方が多いように感じます。しかし、ASP.NET AJAXの基礎となるASP.NET AJAX Extensionsを語らないで済むわけにはいきません。そういった点でも、このセッションで取り上げられた内容は、ASP.NET AJAXの基礎を学ぶという目的においては非常に良くまとまっていた内容だったと思います。

ASP.NET AJAX Extensionsに含まれる代表的なサーバコントロールであるUpdatePanelは、非常に容易にWebページの部分更新を実現してくれますが、UpdatePanelによる非同期処理のエラー処理やキャンセル処理をおこなうにはJavaScriptの記述が必要になります。そういった応用的な手法も簡潔にわかりやすく解説されていたあたりは、さすが矢嶋さんといったところでしょうか。ただ、ASP.NET AJAX Webアプリケーションの最適化、つまり、いかにトラフィックを少なくしてパフォーマンスを改善するかなどの視点で、詳しいデモを交えた解説がされるとさらに充実した内容になったと思います。

全体的に見れば、セッション自体の内容は要点を押さえていてよくまとまっていたと思います。しかし、セッションレベルが400番台にしては若干物足りなさを感じてしまったのも正直な感想です。ASP.NET AJAXのすべてを語るには、75分という時間では短すぎるでしょう。先にも述べましたが、ASP.NET AJAXの日本語の技術情報が少ない現在、もう少しじっくりと時間をかけてASP.NET AJAXに関する詳しい内容のセミナーなどが開催されることを期待します。


■BOF17 VSUG オフライン フォーラム

VSUG(Visual Studio ユーザーグループ)の運営委員やフォーラムリーダーが一堂に会するということで、大変期待して参加しました。「VSUG オフライン フォーラム in Tech・Ed 2007 Yokohama ~この世で最もぐだぐだな BOF~」というセッションタイトルが示すように、ほんとうにぐだぐだになるかと思いきや、なかなか興味深いお話しも聴くことができ、参加して良かったと思っています。

朝9:30から開始のBoF(Birds of a Feather)はこのVSUGオフラインフォーラムだけでしたので人が集まるか心配でしたが、思った以上に参加者も多く安心しました。集まった面々も大御所が多く盛り上がっていたように思います。MSの波村さんも参加されていて、なんかちょっと嬉しくなりました。

img07VSUGの奥津さん、藤城さん、社本さん、小野さんを中心に進められ、まずは「The 質問」と題した大質問大会から始まりました。質問した方全員に「Visual Studio 2005 による Web アプリケーション構築技法」(赤間本)プレゼント!というなんとも太っ腹なおまけ付きで、多くの人が質問しまくっていました(その中の一人に私も含まれますが…)。

記憶している範囲では次のような質問があがっていました。

・Visual Studio 2008についての新機能
・VSUGホームページで、Visual Studioの情報をまとめて発信して欲しい
・ClickOnceの電子署名について
・VSUGの今後のイベントの予定は?
・VSUGホームページのBlogウォッチャーってなに?
・今後、Native Codeはどうなる?VSUG的見解は?

等々・・・

中でも私が一番興味を持って聞いたのが、今後のネイティブコードの質疑応答でした。Visual Studio 2008ではC++/MFCにも新機能が加わっているのですが、今年のTech・Edではそのあたりのセッションがなく寂しく感じていました。この質問についてはVSUGを代表して社本さんが回答され、「.NET(マネージコード)に移行する流れはあるが、過去の資産にはネイティブコードが多くあるのでC++/CLRを使うことになるのでは?」とのことでした。また、ネイティブコードでは直接使用できないWPF/WCFなどのテクノロジが必要になったときに、自然と.NETに移行する流れになるとも話されていました。
私個人としても、ネイティブコードは既存資産や今後新たに書かれるコードも含めて、しばらくはなくならないと思っています。業務アプリケーションなどでは.NET Frameworkベースで開発されるものが多いとは思いますが、パッケージソフトやドライバなどの開発では、まだしばらくはネイティブコード(C/C++)が使われることでしょう。

大質問大会のあとは「超ライトニングトークス」と題して、VSUGのフォーラムリーダーの方々が思うことを短時間ですが自由に話す時間が設けられました。奥津さんの「Webアプリケーション簡単チューニング」の中で話されていたHTTP1.1の圧縮については、私も大変興味を持ちました。圧縮率を確認できるPort80 Software(http://www.port80software.com/)サイトの紹介もあり、さっそく自分のサイトで確認してみましたが、効果絶大のようで、すぐにでも利用を検討したくなりました。

最後に「海外を目指す開発者」と題して、社本@ネオニートさんのお話しがありました。現在、会社を辞め語学の勉強中とのことで、近くアメリカへ語学留学しそのまま就職もしたいとのことでした。このお話しを聞き、大変羨ましく思いました。実は私も英語(とくに英会話)をマスターしたいと思っていて、短期でいいから語学留学してみたいと思っていたのです。ただ、仕事やら家庭のこと、そして自分の年齢のことを考えるとなかなか実行に移せずにいたのですが、社本さんのお話しを聞き、私ももう一度海外留学について検討してみようと思わせてくれました(社本さんと同じ年齢と聞き、かなり刺激を受けています)。

という感じで、あっという間に75分が過ぎ去り、朝一から充実した時間を過ごすことができました。VSUGもオンライン・オフラインともに、これからもさまざまなイベントを計画しているとのことですので期待しています。


小林 さんのレポート:

■T3-302 Visual Studio 2008 概要
■T3-305 Visual Studio 2008におけるVisual C#の新機能
■Usergroup Street Live! ガジェットで VSUG しよう! ~<VSUG Watcher>ガジェットのご紹介~
■T3-302 Visual Studio 2008 概要

img08「Visual Studio 2008 概要」ということで、マイクロソフト近藤 和彦さんによる講演でした。
基調講演の後の午後最初のセッションとして、一番大きな会場であるAルームで行われたこともあり、注目されたセッションとなりました。

講演の冒頭では、製品開発時点における情報をもとにしており、製品出荷までに機能や仕様が変更となる可能性があることが説明されました。

(1).NET FrameworkとVisual Studioの歴史
2002年に「Visual Studio .NET 2002」が登場してから5年、.NETの進化と共に普及も急速に進んできた。
昨年はWindows Vistaや2007 Office Systemが登場し、プラットフォームが刷新された。しかし、開発環境であるVisual Studioは2005のままであり、新プラットフォームの機能を最大限に引き出すには至っていなかった。
来年の第一四半期で登場予定のVisual Studio 2008はこれらプラットフォームに完全に対応する。

(2)Visual Studio 2008の3つのポイント
・最新プラットフォーム(Windows Vista/2007 Office System/Windows Server 2008)の機能を最大限に引き出す。
・開発生産性の向上として統合開発環境、開発言語、データアクセステクノロジーを強化。
・アプリケーション ライフサイクル マネジメント(ALM)の強化。

(3)各機能での強化点や新機能について

■WPFアプリケーション開発の強化(Windows Presentation Foundation)
開発面ではデザイナの強化を挙げられており、分割ビューによりXAMLのコード部分とデザイン部分を同時に表示できるようになったのはありがたいと思いました。
また、現実として全てのアプリケーションをWPFに移行するのは不可能と思われるが、Windowsフォームとの相互連携が可能となっており、ユーザへのリッチなアプリケーションの提供が一部機能単位でできることになりそう。

■クライアントアプリケーションサービス
WEBアプリケーションの特徴である「どのコンピュータからアクセスしても同じ設定で使用可能」をWindowsアプリケーションでも実現可能になる。認証やプロファイリング情報をWEBとWindowsアプリケーションで共有利用することができる。

■ローカルデータキャッシング
ローカルでデータベースのデータをキャッシュすることでオフライン動作を可能とする。
クライアント側にはSQL Server Compact Edition3.5が、サーバー側には.NETマネージプロバイダ対応データベースが必要となる。
情報を検索する形の参照系のシステムであれば非常に有効であると感じた。しかし、情報の登録・更新を行うシステムに対しては、データ同期の面で注意しなければならないと思う。

■モバイルアプリケーション開発の強化
開発環境の強化ということで、以下へ対応
・Windows Mobile SDK 5.0
・Device Emulator 3.0
サーバーサイド連携の強化や、単体テスト機能による品質向上も強化された点とのこと。

img09■OFFICEアプリケーション開発の強化
Visual Studio 2008 Professional EditionにVSTO(Visual Studio Tools for Office System)が完全に統合される。
VSTOを利用してExcelやWordだけでなく、ProjectやVisio、PowerPointなど様々なOfficeアプリケーションをカスタマイズすることが可能となる。また、Officeリボンのカスタマイズをサポートし、新しくリボンの作成や既存リボンのカスタマイズが可能となる。
その他、Officeアプリケーションの配置の改善として、ClickOnceへ対応が行われた。これによりアプリケーションの配布が容易になると思われる。

■ASP.NET AJAX
ASP.NET AJAXのコア機能であるASP.NET AJAX ExtentionsやASP.NET AJAX Control Toolkitが統合され、プロジェクトテンプレートやコントロールなど開発に必要なツールがサポートされる
また、ASP.NET AJAXの強化点として、JavaScriptのインテリセンスとデバッグ対応は開発者としては非常にうれしい機能だと思う。

■WEBブラウザアプリケーション開発機能の強化
・デザイン部分とソース部分の同時表示に対応し、リアルタイムに同期する。
・CSSデザインの強化。
・マスタページのネスト可能。
・WEBサーバコントロールの追加。

■次世代WEBプラットフォームの実現
WCF(Windows Communication Foundation)およびWF(Windows Workflow Foundation)への対応が強化されており、WCFのテスト時にテストツールの自動起動などが挙げられていた。
また、ルール機能が強化されており、命名ルールを設定しておくことで制限をかけることができる。

■データアクセスの強化
統一的なプログラミングモデルとしてLINQ(言語統合クエリ : Language INtegrated Query)を提供。
SQL Server/XML/Objects/DataSetなどの様々なデータソースに対して統一アクセスが可能となる。
興味深い技術ではあるが、開発で実際に使われるかを考えると暫くは静観の様相が強いのではないか。やはり、SQLで蓄積されたノウハウや、パフォーマンスにおいて未知の部分があることを考えると、なかなか採用しづらい。
また、開発言語の強化も行われており、C#3.0やVB9.0のバージョンとなっている。

■アプリケーションライフサイクルマネジメントの強化
チームコラボレーションの強化と、テスト及び品質の確保を目的とした機能を提供。
・複雑性の数値化(コードメトリクス)。
・一度取得したパフォーマンスを基準値として指定し、比較を行う。
・ソースのチェックイン時に自動ビルドを実行。
・ソースコードの行単位で変更管理を実施。
・フォルダ単位でファイル比較
・AJAX アプリケーションのWeb テストが実施可能
・.NET Frameworkの複数バージョンに対応

 Visual Studio 2008はβ2版が既にリリースされており、誰でも評価することが可能となっている。
ダウンロードはhttp://www.microsoft.com/japan/msdn/vstudio/future/download.aspxから可能で、TeamSuite版で試用ができる。
最新の開発環境に触れるチャンスでもあるので、ぜひダウンロードして試用してみたい。


■Visual Studio 2008におけるVisual C#の新機能

Microsoft CorporationのC#テストチームに参加されている波村 大悟さんがスピーカーのセッションでした。
とにかくデモ!デモ!デモ!という感じで進んでいき、終了予定よりも20分以上も早く終わった
のが印象的でした。このセッションの対象者は、ある程度C#3.0について知ってはいるけど実際にコードで書くと何がどう変わるの?コードから動作を見てみたいという人向けでした。
  また、レポートとしてはセッションがデモを基にした説明が多かった為、解説された機能のまとめ
とさせて頂きます。

(1)C#2.0からの改良点
  C#が世の中に出て5年、「コードがきれいに書ける」「コーディングが楽しい」を目指して改良を行っている。(デモで各機能を紹介)

■自動実装プロパティ
get/setの中身の省略ができるようになる。

public string CustomerID { get; set; }

とコードを記述するだけで、

private string __CustomerID;
public string CustomerID
{
get { return this.__CustomerID; }
set { this.__CustomerID = value; }
}
のコードに相当するものが自動的に生成される。

■オブジェクトイニシャライザ
オブジェクトの初期化を以下の記述でできるようになる。

Customer cust1 = new Customer() { City = "Tokyo" , ContactName = "Moge Foo" , CustomerID = "Foo" };

これまでの以下のコードと同じ

Customer cust1 = new Customer();
cust1.City = "Tokyo";
cust1.ContactName = "Moge Foo";
cust1.CustomerID = "Foo";

■コレクション初期化子
コレクションの初期化を以下の記述でできるようになる。

Dictionary<string, int> dic = new Dictionary<string, int>() { {"hoge",1} , {"Foo",2} };

上記記述でコンパイラは以下のように解釈する。

string X = "hoge";
int Y = 1;

■ローカル変数の型推論
明確な型をしなくても、代入する値の型から変数の型を決定する。

var X = "hoge";
var Y = 5;

■クエリ式
SQL文のような問い合わせ構文が記述できる。
var query = from c in list
where c.City == "London"
select new
{
ContactName = c.ContactName ,
CustomerID = c.CustomerID
};

■匿名型
匿名型(Anonymous Type)が作成できる。その場限りの使い捨てクラスのようなもの。
select new
{
ContactName = c.ContactName ,
CustomerID = c.CustomerID
};

■ラムダ式
C#2.0で導入された匿名デリゲートよりも型推論の分コードを簡潔に書ける。
ラムダ式はデリゲートとは異なり、式のツリー構造を保持する。

■拡張メソッド
既存のクラスに変更を加えることなく新たにメソッドを追加できる。

■パーシャルメソッド
partial class内限定でメソッドにpartialをつけることができる。
これによって宣言と定義を分けることができる。

■暗黙的に型指定された配列
配列初期化子で指定された要素から型が推測される。

(2)言語統合クエリ(LINQ)
  LINQでのデータアクセスはC#3.0 / VB9.0 その他の言語で可能。
  LINQ to Objects / LINQ to DataSets / LINQ to XML などが用意されている。
  また、LINQ to ActiveDirectoryなども計画されている。

 セッションでは、LINQ to Objectsのデモを実施

(3)100%下位互換
  LINQを実装しつつ100%下位互換を保つことが非常に難しかったとのこと。確かにLINQを導入しつつ、互換を保つのは大変だったと思う。言語仕様で追加ではなく変更があると、開発が終わって保守に入っているプロジェクトがプラットフォームを刷新したいと思った時に意外と大変な思いをすることになってしまう。
  下位互換に関してはこれからも意識して保ち続けてもらいたい。

※C#3.0の言語概要は以下のURLからダウンロード可能となっている。
http://download.microsoft.com/download/B/6/C/B6C2DA74-08F9-4B18-BB10-CF6DB1A5CFE2/csharp_30_specification.doc


■ガジェットで VSUG しよう! ~<VSUG Watcher>ガジェットのご紹介~

Visual Studio User Groupのスタッフである井上 章氏によるストリートライブで、約15分という短い時間でしたが、コミュニティの紹介、ガジェットの紹介と技術説明からVisual Studioでの開発やデバッグに仕方まで、非常に内容は濃かったと思います。

1.まずはコミュニティの紹介。
Visual Studio User Group(VSUG:ブイサグ)とは、Visual Studioを取り巻く環境の向上を目指しているメーカー、スポンサー、ユーザーが集まるユーザーコミュニティと説明があり、VSUGの5カ条が紹介されました。
1. Give & Give
2. コードの下に平等
3. 少しずつでも形を残そう
4. 顔のみえるコミュニケーション
5. 「和・話・輪」3つの"わ"を大切に
どなたでも参加可能で、http://vsug.jp/から登録可能とのことです。

img102.次にいよいよVSUGガジェットの紹介。
VSUGガジェットとは、VSUGのニュース、フォーラム、スタッフ日記で更新されたコンテンツをちらっと確認できるガジェットツール。
(1)入手方法の説明。
Windows Vistaのガジェットの一覧を右クリックして、「ガジェットの追加」をクリックし、出てきたウィンドウの右下にある「オンラインで追加のガジェットを取得」を押下。表示されたページの一覧の「テクノロジー好き」を選択すると、現在(2007/8/24時点)は1つVSUG Watcherが登録されているので、ここから取得が可能。
http://vista.gallery.microsoft.com/vista/SideBar.aspx?mkt=ja-jp



(2)機能の紹介。
VSUG Watcherはサイドバーガジェットとして常駐し、ニュース、フォーラム、スタッフ日記の3つのカテゴリの最新情報を表示する。また、必要なカテゴリのみを表示することも可能で、例えばスタッフ日記を外すことなども可能。
そして、Windows Vistaを使用していない人の為に、VSUG Watcher for Googleも用意されているとのこと。

(3)開発者から見たサイドバーガジェット。
サイドバーガジェットの構成としてはHTML JavaScript CSS 画像コンテンツ ガジェットのAPIで、拡張子は「.gadget」となっている。しかし実際は、「cab」や「zip」形式で圧縮されているだけな為、拡張子を変更して解凍することが可能。

既にインストールしているガジェットは以下に保存されている。
標準ガジェット : C:\Program Files\Windows Sidebar\Gadgets
ユーザが追加  : C:\Users\[ユーザ]\AppData\Local\Microsoft\Windows Sidebar
これらに展開されているソースなどを簡単に見ることが可能。

サイドバーガジェットの開発としては、統合開発環境というものは現在のところ無い。
JavaScriptのアラート関数は無視されてしまう。GetElementbyIdを使用するにしてもUIのデザインを変えるのは面倒など、デバッグが非常にしにくい。
そこでVisual Studioの出番です。実はVisual Studioでデバッグを行うことが可能なのです。

準備としてインターネットオプションの設定が必要。
(1)Internet Explorer起動。
(2)[ツール]メニューの[インターネット オプション]を選択。
(3)[詳細設定]タブで、[ブラウズ]の[スクリプトのデバッグを使用しない]チェックボックスをオフにする。
その後、デバッグを行うJavaScriptに「debugger」ステートメントを埋め込み、実行することでその位置でVisual Studioへアタッチすることができ、JavaScriptのデバッグが可能となる。

今回のTech-Edではサイドバーガジェットに関するセッションは無く、取り上げているのはこのストリートライブだけでした。
内容にしても、コミュニティやガジェットの機能の紹介に止まらず、開発者としても収穫があったと思う内容で、とても面白かったと思います。


長南 さんのレポート:

■T1-403 Windows Communication Foundation のアーキテクチャと基本的な拡張手法
■T3-312 .NET Framework 3.0 によるアプリケーション構築
■Usergroup Street Live! XPJUG  ソフトウェア開発の自働化について
■T1-403 Windows Communication Foundation のアーキテクチャと基本的な拡張手法

会場は朝一番のセッションにも関わらず満員の状態で、WCFへの関心の大きさを感じました。スピーカーの福井さんが登場し、自己紹介で会場の雰囲気を和ませセッションがスタートしました。

このようなセッションでは、割と話し手と聞き手の境界がはっきりしていて、聞く側がリアクションなく聞いていることが多いと思いますが、始めに雰囲気が和むことで聞く側もリラックスして臨めたのではないかと思います。いくつかのセッションを受けましたが、会場が大きいにもかかわらず、このような始まりのセッションは少なく印象に残りました。

さて、このセッションの内容についてですが、
・ WCFのプログラミングアプローチ
・ WCFにおけるセキュリティの実装
・ WCFによるリライアブルメッセージング
・ WCFにおけるトランザクションの利用
・ WCFの相互運用性
・ まとめ

というアジェンダで進んでいきました。

まず、始めのプログラミングアプローチについては、シンプルなWCFホストのデモを交えながら3つのアプローチについて紹介されました。今までは使ったことがなく、敷居が高い感じがしていましたが、実際にホストのインスタンス化、クライアントコードは自動生成で動いているのをみると、意外に簡単に実装できるのがわかりました。また、アプローチが3つあることから、いろいろなケースに対応できるのではないかと感じました。

ただ、特に注意しなければならないのが、設定の適用順序で属性→構成ファイル→コードの順で適用されていくことです。WCFでは、さまざまな分散テクノロジごとに多様なプログラミング・モデルを、単一のプログラミング・モデルに統一しているため、設定が大事になってくると思います。この辺りは、何回か話にも出ていたのでいざ実装する時に困らないように忘れないようにしたいと思いました。

セキュリティについては、主に構成ファイルの設定の仕方がメインでした。設定自体は同じような感じで混同しそうでしたが、レジュメ資料に各特徴がまとめてあり、大事なところは太字で見易く書かれていたのでわかりやすかったです。

また、私にとってはWCFの相互運用性でCOM+がWCFサービスとして実行できることが驚きでした。実際にデモを見て、実行していることが確認でき、実業務でも適用できるのではないかという期待ができました。

全体を通して感じたことは、各アジェンダに対してまずその種類の特徴をみて、詳細、デモという順序で話が進んだので、聞きやすく理解しやすかったです。業務で使用していないこともあり、まだ理解し切れていない部分もありましたが、WCFを用いることで、プログラミング・モデルを統一できること、統一しても拡張性を備えているため様々な対応ができること、COM+との相互運用性もあることから既存のプログラムも無駄にしないことがこのセッションを通じて理解できました。

特に、文書を読むだけでは理解しにくいところを、デモを通じて視覚的に見られたことが有意義でした。デモ自体も、どれもシンプルで派手さはないものでしたが、その分何をデモしているかが際立って良かったと思いました。



■T3-312 .NET Framework 3.0 によるアプリケーション構築

全体の流れとしては、.NET Framework 3.0の解説、特に.NET Framework 2.0から強化した部分の解説を行い、その後、サンプルアプリケーションとしてDinnerNow.Net アプリケーションを使って.NET Framework 3.0によるアプリケーション構築の解説でした。

まず、.NET Framework 3.0の開発実行基盤として、「デベロッパーが新技術やハードウェアの進歩を透過的に利用可能とする」「.NET Framework 3.0による.Netベースのプログラミング・モデル」であることが説明されました。前者については、セキュリティ・管理の向上、開発者の生産性の向上・ノウハウの継承が出来るものということで、ますます便利なものが提供されることがうれしく感じ、開発の現場でもそれを充分に活かせるように環境を作りたいと思いました。

後者については、.NET Frameworkが3.0に上がることで結局何が変わるのだろうということが、基本的にはWPF・WCF・WF・CardSpaceの4つ機能が追加され、プラスしてASP.Net AJAXに対応していると明確にわかりました。それぞれの機能についても、開発がしやすくなる機能ばかりで早く現場で導入したくなるものでした。プレゼンテーションテクノロジとしてWPFでは、今まで出来ても実装が面倒だったメディアが簡単に組み込めるようになり、ユーザーが直接見るプレゼンテーションの部分で見栄えのするシステムを作れることはすごいと思いましたし、XAMLを使うことでデザインとロジックを分離できることは開発者にもメリットがあると感じました。

通信部分のWCFでは、今まで.Net RemotingやWebサービスなど様々な分散テクノロジが統一されることで組み込みやすくなると思います。WFではビジネスプロセスが可視化され、処理フローのデザイナが提供され、プロジェクト内でもビジネスプロセスが統一できます。CardSpaceではセキュアで使いやすい認証の仕組みが提供されます。どれもすぐに使いたくなるものばかりでした。また、AJAXについては、VisualStudio2008からは別途インストールしなくてもすぐに使えるというのも魅力でした。

サンプルアプリケーションのDinner Now .Netを使ってのアプリケーション構築でも、サンプル自体がしっかりしていて、実際に動きを見ながら各機能のソースコードを見れたことが今後の業務に役立てそうな気がしました。アーキテクチャのガイドラインもあり、ソースコード自体もダウンロードできるので、.NET Framework 3.0の機能の確認だけでなく、全体の学習にも役立つと思いました。このセッションでは、.NET Framework 3.0の全体を知ることができ、これからの開発にいろいろな可能性を感じることが出来ました。


■XPJUG

オープンステージの周りに人だかりが出来、皆、興味津々で話を聞いていました。20分という短い時間ではありましたが、その中でトヨタ生産方式をソフトウェア開発に適用していくというテーマで話が進められていきました。

構成としては、トヨタ生産方式の紹介、それを踏まえてリーンソフトウェア開発とは、自動化と自働化の違いといった構成でした。

まず、トヨタ生産方式とは何かという話では、トヨタ自動車の強さを支える工場における生産活動の運用方式の考え方が紹介されました。ここでは、無駄を「付加価値を高めない結果」として定義して無駄をなくすという考え方で生産していることがトヨタ式であるという話でした。

その考え方を適用していくことが、リーンソフトウェア開発であり、その中でも特に自働化について解説されました。「じどうか」と言っても、「自動化」と人偏の付く「自働化」では意味合いが異なり、闇雲に自動化するのではなく、無駄を作らない自働化が大事であるといった話でした。

テーマとしては興味深く、リーンソフトウェア開発がトヨタ生産方式に基づいていることを知ることができました。ただ、時間が短いため概念の解説で終わってしまったことが残念に感じました。私自身も開発に関わっているため、自働化の必要性は感じていますが、どのようなことをすればいいのか悩むところがあるので、取り組みとしてどういったことを業務に適用しているのかをもう少し具体的に知りたいと思いました。

しかし、まだまだ無駄の多い開発は存在するので、無駄をなくす開発をしていこうという呼びかけは有意義で、このオープンステージで共感する人が増えていって欲しいと思います。普段はなかなか参加できなかったいろいろなコミュニティーの話をオープンステージで聞くことができて、いろいろな取り組みを知ることができて視野が広がりました。


参加登録
参加登録するにはログインする必要があります。
まだ会員登録がお済みでない方は先に会員登録を行ってください。
ログイン | © 2005-2008 Visual Studio User Group. All rights reserved. 著作権について | プライバシーポリシー | リンクポリシー | お問合せ