先日のイベントの折、ちょっと話題に上った『スマートクライアント』について考えてみたいと思います。
そもそもスマートクライアントとは何か、ということですが、これは一言で言うと
『ファットクライアントとシンクライアント両方の利点を併せ持つクライアントアプリケーションの一種』
ということが出来ます。さて、ここで『ファットクライアント』と『シンクライアント』とはなんでしょうか。
ファットクライアントとは、クライアントアプリケーション側でデータアクセスやビジネスロジックなどを全て実装し、高機能なUIを併せ持ったクライアントアプリケーションのことを言います。ファットクライアントの利点と欠点は以下のとおりです。
対して、シンクライアントとは、データアクセスやビジネスロジックなどを扱う層(中間層)をクライアント側では無いところに用意して、極力クライアント側に機能を盛り込まないクライアントアプリケーションのことを言います。シンクライアントの利点と欠点は以下のとおりです。
スマートクライアントでは、これらのクライアントのそれぞれの利点をいいとこどりしたものになるので、
いいことづくめに見えるスマートクライアントですが、実現するためには一つだけ条件があります。それは『WEBサービス』を使うという点です。スマートクライアントと、ビジネスロジックを持つサーバーとのデータのやり取りは、通常WEBサービスを用います。これは裏を返すと、WEBサービスを提供するWEBサーバーが必要と言うことになります。
またさらに、こうした[クライアント]-[WEBサーバー]-[DBサーバー]といったスマートクライアントアプリケーションシステムの構成は、クライアントの部分をIEなどのブラウザに置き換えても同じ事だと言うことが出来てしまいます。つまり、スマートクライアントとは、ぶっちゃけ「高機能なUIを持ったブラウザ」と言っちゃってもいいかもしれません。
#これはかなり暴言かも知れませんが(;^^)
ただ、こうしてみると先ほど上げた利点に加えてさらに良いところがあります。それは、WEBサービスを使うということは、サーバーにHTTP/HTTPSでアクセスできればどこからでも使うことができる、と言うことです。例えば、販売在庫管理システムなどで利用すると、営業の人がノートパソコンを社内でLANにつないだ状態でシステムを使い、営業で外に出ているときにはモバイルアクセスでWEBアクセスさえ出来れば社内/社外の区別無く利用可能になり、営業の機動力がアップするでしょう。また、WEBサーバー側のWEBサービスのインターフェースはPCアプリに限らず、場合によってはPocketPC、携帯電話のJavaアプリからも利用可能(WEBサービスのSOAPプロトコルは今のところ万国共通)なので、サーバー側のロジックをあれこれと変更しなくても、様々なデバイスに対してシステムをサービスすることが可能です。
ここまで書くと、まさにスマートクライアントというソリューションはいい事だらけなので、Microsoftでもかなり力を入れているようです(確かに、ブラウザによるサービス提供にはそろそろ限界が見え始めているもの事実)。これからのシステム開発はこの形を取ることが多くなっていくことでしょう。
ただし、これは私個人の考えですが、真の『スマートクライアント』システムを開発するためには、ClickOnceが実装された.NET Framework 2.0 つまり Visual Studio 2005 を待たなければならないと思われます。スマートクライアントの利点である「配付が容易」「バージョンアップが容易」という部分は、現行のFrameworkでは「ノータッチデプロイメント」というソリューションで一応行うことが出来ますが、実はこれ自身にまだ制限が多少あるので、ほんとうに使いやすいとはいえません。対して次期バージョンで実現されるClickOnceはそのあたりを非常によく考えて作られているので、ある意味クライアントアプリケーションの配付に対するパラダイムシフトとなる可能性があります。
スマートクライアントに関しては、Microsoftの『Smart Client Developer Center (http://www.microsoft.com/japan/msdn/smartclient/default.aspx)』に詳しい解説とサンプルが置いてありますので、そちらを参考にされてはいかがでしょう。
さて、識者の突込みを待つかな(^^;
MSDN(R) サブスクリプション上位レベルから Microsoft(R) Visual Studio(R) 2005 Team Systemへのライセンス体系
Visual Studio 2005 の発売に合わせて、MSDNユニバーサル及びエンタープライズを、Visual Studio 2005 Team Systemを基盤にしたソフトウェアアシュアランス(L&SA)のモデルに移行するそうです。
はっきり言ってわけがわかりませんので、ここでひとつおさらいをしておきましょう。
これまでにMicrosoftが提供してきたMSDN(Microsoft Developer Network)は、開発者向けに、Visual Studioや評価目的に使うことのできるServerやクライアントOSや各種ライブラリを提供してきており、目的に合わせて以下のサブスクリプションレベルが提供されてきました。詳しくはこちら
さて、今年Visual Studio 2005 Team Systemという新しいものが登場するわけですが、いったいこれが何かというところから始めないといけません。
これまでのソフトウェア開発サイクルにおいては、一般的に
という人が登場します(あくまでも一般的には、です)。技術の進歩に伴い、ソフトウェアの開発期間はどんどんと短縮され、またソフトウェアに対する要求も高まっています。しかしいくら技術が進歩しても人はなかなか変わらないものなので、期間と費用の圧縮、機能の増大という相反する要因の中でソフトウェアの品質を高めることはかなり難しいものになっています。
Visual Studio 2005 Team Systemでは、こうしたソフトウェア開発サイクル(SDLC:Software Development Life Cycle)での、各プレイヤーの作業をサポートするための機能を盛り込んでいるそうです。
#"そうです"といったのは、私がTeam Systemに興味が無いばかりか、まだ使ったことがないからです(^^;
詳しくはこちらを見ていただければいいと思いますが、要するにTeam Systemでは、ソフトウェア開発という一つのプロジェクトにおいて、容易な進捗管理とコミュニケーションの実現、ツールの提供をするプロダクトと言うことが出来ます。
さて、Visual Studio 2005 Team System は以下のレベルが用意されています。
このように分かれているのは、Team System自体があまりに規模が大きいので、各担当者毎に最適と思われるツールを提供することで導入価格を引き下げる狙いがあると思われます。一応、これら全てのレベルを含む「Suite Edition」もあるようです。
さて、やっと本題ですが(笑)、Microsoftからの発表によれば、これまでマイクロソフトが提供してきた開発者向けソフトウェア提供サービスの名称は、MSDNサブスクリプションからVisual Studioに統一されます。簡単に言えば、「MSDNユニバーサル」という名称が「Visual Studioほにゃらら」に変わるということです。
また、提供価格も従来のモデルから、他のマイクロソフト製品と共通のライセンス及びL&SAモデルに移行します。
で、従来のMSDNを契約しているユーザーはどのようにVisual Studio 2005 Team Systemにマッピングされるかと言うと、発表のとおりであれば以下のようになります。
| Team System | MSDN | 追加費用 |
|---|---|---|
| Team Suite | ユニバーサル | 特別価格で更新可 |
| Team Architecht | ユニバーサル | 無し |
| Team Developer | ユニバーサル | 無し |
| Team Developer | エンタープライズ | 無し |
| Team Test | ユニバーサル | 無し |
MSDNプロフェッショナルとかMSDNライブラリなどのユーザーにはTeam Systemへの移行パスが用意されておらず、Team Systemが必要な場合は「MSDNユニバーサルに移行しなさい」キャンペーンが提供されているようです。
なんだかよくわからないのでまた後日時間のあるときにまとめようかと思いますが、なんか各所で波乱を起こしそうな体系に変わりますねぇ。。。
#個人的にはTeam System イラネ なのであんまり興味ないんですが。。。
Team System は、その名の通り チーム開発をするためのものなので、例えば私のようなサンデープログラマ(ぇ にとっては無理して導入するメリットは無いですね。
また、企業内の基幹システム開発とかで導入したら確かにメリットはあるかもしれませんが、これを導入したら効率が確実に良くなる、という魔法のソフトではないので注意が必要です。
導入する前に、他にやることをやってから導入しないといけないでしょうねぇ。
今回の発表内容について某筋のお話では、
「現在ライセンス形態で契約している企業向けの情報だけで、パッケージ版や個人で購入する際の形態、および価格に関しての情報はまだ発表されていない」と言うことだそうです。
Beta3やRCが出るころにはまた新たな情報が出てくるということみたいですね。
Posted by suzuki | 2005年01月24日 12:54.2005年になりました。今年はMicrosoftから巨大プロダクトが出る年でもあります。
まず一つ目はVisual Studio .NET 2005です。.NET Frameworkが2.0となり、待望の「Click Once」や「ASP.NET2.0」が使えるようになります。Visual Studio自体のIDE(統合開発環境)も、さらに熟成が進んでいるということなのでいまから楽しみです。
そして二つ目はSQL Server 2005です。ほんとにでるかどうか怪しい部分もありますが(笑、このプロダクトがリリースされると、今までのデータベースアプリケーションの作り方とはまた違ったアプリケーションの作り方になるかもしれません。
ともあれ、デベロッパー的には様々な変革が起こる年になることでしょう。
Visual Studio 2005 Beta1(以下VS2005)のインストールも終わったので、ためしに簡単なアプリケーションを作ってみることにしました。
VS2005では、最初のインストールの際、どのカテゴリの開発をするかの選択をします。例えばC#を使ってWindowsアプリケーションを作るのか、はたまたWebアプリケーションを主に作るのかということです。こうすることでWindowsアプリケーションを作るときに必要な機能だけが使えるIDEとなりますので、開発者にやさしい、ということらしいのですが、個人的には余計なお世話だと思います。
#Webサービス開発など、ASP.NETとWinアプリを同一ソリューションで開発する場合どうするんじゃ、とか。
一応、そうした環境の切り替えや、全てを使える環境というのも準備されていますが、そもそもそういうくくりになること自体要らないような気がします。
さて、話がそれましたがコンソールアプリケーションのプロジェクトを「Sample1」というプロジェクト名で新規に作成すると、デフォルトで以下のコードが書かれた「Program.cs」というファイルと、その中にmainメソッドを持つ「Program」クラスが作成されます。
#region Using directives
using System;
using System.Collections.Generic;
using System.Text;
#endregion
namespace Sample1
{
class Program
{
static void Main(string[] args)
{
}
}
}
参考までに、Visual Studio 2003では、同じように作ると以下のコードが自動生成されます。
using System;
namespace Sample1
{
///
/// Class1 の概要の説明です。
///
class Class1
{
///
/// アプリケーションのメイン エントリ ポイントです。
///
[STAThread]
static void Main(string[] args)
{
//
// TODO: アプリケーションを開始するコードをここに追加してください。
//
}
}
}
まだβ版なのでなんともいえないのですが、なんとなく生成されるものが違っています。とくにusingディレクティブのあたりと、mainメソッドのあたりに違いが見受けられます。
さて、このままプログラムを作り始めるのはアレなので、まず、自動で生成された「Program.cs」のファイル名を変更してみます。右のソリューションエクスプローラでファイル名を「Program.cs」から「main.cs」にへんこうします。すると、左のコードのクラス名が、「Program」から「main」に自動で変わります。
これはVS2005の新機能(改善点)のひとつではないでしょうか。VS2003では、ファイル名を変更しても、自動で生成されたクラス名は変更されませんでしたが、VS2005ではこのようにファイル名にあわせてクラス名が変更されます。これは裏を返せば、VS2005からは「1クラス1ファイルにしなさい」というMicrosoftのメッセージとも受け取れます。人によってはクラスごとにファイルを分けるのは面倒だと思われるかもしれませんが私はその方が見通しがよくなるのでいいと思います。
また、クラスに関連して、VS2005のIDEには"リファクタ"というメニューがあります。これはクラスのリファクタリングをするためのメニューです。私はリファクタリングって何?という人なので使うことはないでしょうが(^^;オブジェクト指向な人には待望の機能らしいです。
Console.Writeで適当な文字を出力するコードを書き、メニューの"デバッグ"⇒"ウィンドウ"⇒"コンソール"とすると実行結果がIDE内のコンソールウィンドウに表示されるようになります。これもVS2003には無かった機能で、単純なコンソールアプリを作る際はいちいち結果を確認するためにブレークポイントをつけなくていいのでとても楽です。
以上、画面キャプチャも無く簡単な説明だけしましたが、VS2005には、VS2003までには無かったさまざまな便利な機能が追加されているようです。日本語β版はWEBや書籍で手に入るので、興味のある方は一度試してみてはいかがでしょう。
必要な機能だけになるというより、メインになるであろうと思われる機能が目に付くようになっているという感じです。ただ、初期表示(ソリューションとかを開いてない)のときに表示されるメニューの違いが雑誌や書籍の説明と違う場合があるので注意が必要ですね。とりあえず「設定のインポートとエクスポート」で初期設定をしなおせるので初回起動時に設定したのが馴染まなかったら他の設定を試してみるといいですね。
リファクタリング関連でファイル名変更ですが注意というか好みによっては使えなくなります。主にASP.NETの方なのですがWebフォーム(コードは別ファイル)を追加してファイル名を変更してみてください。クラス名はファイル名に追従しません。理由は今ひとつはっきりしませんがaspxファイルが別にあるためなのかPartialのためなのか。。。
あ、適当にクラスのメソッドとかプロパティを作っていて「う~ん、名前の統一性が崩れてきた」というときなどにリファクタリング使うと気持ちよく作業できますよ。個人的には「メソッド抽出」や「メソッドの移動」なんかあると嬉しいんだけどね。
ちなみに、エディタのとこで[Ctrl]+K+X [Tab] P [Tab]という感じでキー操作するとプロパティの雛形が挿入されます。動かしてみると「なるほど!」と思うことしかり。
1クラス複数ファイル、がVS2005のデフォルトであ?
Partialで。
#さすがにコンソールアプリは1ファイルなのかな?
Posted by 小野@どっとねっとふぁん | 2004年10月18日 12:38.Visual Studio 2005 Beta1 日本語版をVAIO Type U にインストールしてみました(^^;
TypeU のHDD容量は20GB(10GB+10GB)で、リカバリ用領域が3GBほど取られているのでこんな巨大なアプリケーションをインストールするとアップアップです。おまけにVisual Studio 2003 Enterprise Archtectをインストールしていたので入る余地がありません。
ということで、Visual Studio 2003 をアンインストールし、またその他の使わないであろうアプリも極力削ってなんとかスペースを確保、インストールしました。
SBS2003にまったく入らなかった過去があるのでどうかな、と思いましたが、一応XP Proということもあってすんなり導入できました。TypeUでVisual Studioなんかどうするの?という話はありますが、とりあえずこれでなんとか評価できる環境は整いましたので、会議前の待ち時間など、ちょっと空いた時間にいろいろと触ってみたいと思います。
Yukonは入るかな(ぼそ
そろそろちゃんと評価しないといけない時期にきたWhidbeyなんですが、手元にまともに評価できそうな端末がなかったので、自宅サーバー(SBS2003)にインストールしてみることにしました。
ただ、このマシンは手違いで光学ドライブがついてないので(^^; "DAEMON Tool"で仮想光学ドライブをマウントして、MSDN Subscriber Downloadから落としたDVD isoイメージをマウントしてインストールしてみました。
しかし、なんどやってもインストールの最初で失敗してしまいます。DAEMON Toolが原因か、そもそもSBS2003が原因かということがちとわからないのですが、今度はちゃんと物理的に光学ドライブをつけてから(^^;試そうかな、と思います。
#TypeUにも入れてみるべきなんだろうな・・・(ぼそ
308909 - [HOW TO] Visual C# .NET で DataRow オブジェクトを別の DataTable にコピーする方法
案外、使う場面が多い方法ですね。こういうアルゴリズムが最適かどうか、という問題はありますけど。
エラーでおぼえる!? SQL Server 2000 管理運用術 ~ 第2回 ディスクの空き容量がなくなる?
SQL Serverを運用するなら、PASSJのサイトは要チェックです。
例えば、プログラムを書いていて以下の文を書いたとします
for ( int i = 0; i < 100; i++)
さて、上記の for 文の"("と")"ですが、皆さんはどういった順番で入力(タイプ)しますでしょうか。
ものの本によると、括弧は連続して入力するのが望ましいとなっています。つまり例の場合、まず
for ()
と書いてから、カーソルを一つ戻し、残りの条件を書くのが望ましいそうです。
確かに"()"がたくさんネストするプログラム文だと括弧の閉じ忘れというよくあるプログラムミスを防ぐことが出来るので『先に括弧を入力』するのは非常にお勧めですが、世のプログラマーの人たちはどっち派(『先に括弧を入力派』 or 『後から括弧を入力派』)が多いんでしょうねぇ。ふと気になりました。
ちなみに私は左から順番に入力する癖がついちゃってます(^^; いわゆる『後から括弧を入力派』ということになりますねぇ。
if じゃなくて for でそ?w
僕は元々「括弧が先」派でしたが、Visual Studio を使うようになって、キーカスタマイズしないと Ctrl+B でカーソルを1つ前に戻せなくなって以来、頻度が大分低下してます;-p
for に直しました(笑
#適当に書いてるとあかんですな。
VS使うと『後から括弧派』が育ちやすいのでしょうかねぇ。
Emacsで育つと括弧先、な人が多いような気もしています。
Web developer 2005 で HTMLタグを打ち込んでいると、勝手に閉じタグも出力してくれます。
これって最初に()を書くってのに準じてるのかな?
VS2003でもHTMLの閉じタグを出力してくれますね。
#個人的にはアレ、余計なお世話だったりします(^^;
でも『あるべき作法はまず閉じてからだ』というVSチームのメッセージと受け取れないこともないですねぇ。
コーディングって頭の中にあるものを転記する作業だから左から順番にだなぁ。
MSDN .NET Framework Developer Center: Contents of .NET Framework 1.1 Service Pack 1
.NET Framework 1.1 Service Pack1 がTPとなっています。あわせて.NET Framework 1.0 Service Pack3もTPだそうで、これはいろいろと試さないとなぁ、と思いつつ、本業が噴火してしまったのでそんな時間ぜんぜんありません。。。
つか、一人で数千万オーダーのDBシステムの仕様書&提案書を五日間で二つあげなきゃいけない状況ってどうよ。ヽ(´ー`)ノ 開発真っ只中のDBシステムのマネジメントもしないとあかんのに。
そろそろ遭難するかも。
Linux上での.NET開発をするためのフレームワーク"Mono 1.0"がリリースされたようです。Windows Formはありませんが、ASP.NET、ADO.NETなどが使えるようになっているとのことです。
ふーむ。ちと使ってみるかな。
Visual Studio 2005 Express Beta Products
なんだこりゃ?廉価版Visual Studio.NETっていうことなのかな。
うーん。「業務向けじゃなくてもっと気軽に」という感じのものみたいですねえl。
@IT:Visioで始めるUMLモデリング 第1回 「習うより慣れよ」方式で学ぶUMLモデリング
最近ちょっとUMLモデリングに興味がありますφ(.. )
D3 では、既に UML の限界(主に適用範囲の限界)について、2・3のエバンジェリストの方が公演中にさらっと語ってました (^^;
適用範囲については、僕の仕事の範囲ではあまり問題にならないんですが、イベントが表現できないのは辛いなぁ>UML
同感>イベントが表現できない
少なくともUMLで書く事は抽象度が高い事なので、UMLの図形を見ながら考えを検証してコードに落とす段階の参考資料にするぐらいにしかならないのではないでしょうか。
UMLは落書きにはいいけど仕様書には使うなという格言もあります。
whitehorseよろしくって言う感じで(^^
そろそろUML神話も終わりに近づいてきた?
UML自体はコミュニケーションを主体としたドキュメントの位置付けにありますがUMLで会話できる範囲ってどこまででしょうか?そして、UMLとソースのやり取りはなんとか実装されてますが正直なとこクラス図までという認識です。シーケンス図とかまで自動では反映されませんよね。となると、ドキュメントとソースの最新版の維持というのがやはり問題になってきます。
まぁ、根本的にクラス図を使うとして抽象化しちゃうとあまり意味が無いし詳細にすれば記述量が増える。この辺のバランスがどうもとりにくい。
そういった意味で「デスマーチよ!さようなら!」のスタイルは外部設計でドキュメントは止めちゃうあたりの割りきり具合が素敵ですね。ISOとか絡むととても割り切れなくなるんですけど。。。
最近買ったUML入門(ぉぃ を読んでいて思うのは、なんつーかこう、「直感的じゃない」というか「こりゃUML図を書くことにこだわりすぎる人が出てきてるんじゃないか」ということ。
やりたいことは、システムという漠然としたものを、以下に簡潔に表して認識の際をなくすこと、というのは分かるんですけど「UML言語」とか言われちゃうとちょっとなぁ、と。
Java屋さんなんかが「U・M・L!U・M・L!」と騒いでいるのをよく見かけますが(気のせい?)、皆さんのコメントを見ているとほんとのところは、やはり手段であって目的ではないということをきちんと認識した上で「それが全てでは無いナリよ」ということなんでしょうねぇ。
自分で書いててわけがわからんコメントだ↑(w
Posted by suzuki | 2004年06月08日 20:16.UML関係の書籍とか読んでていっつもおいらが漠然と思うオブジェクト構造と違うんですよね。おかげで「なんでこういった構造になってるんだ?」とぜんぜん違う部分が気になって集中できません。。。ついつい、「オブジェクトの構造ありきでUML書いてないか?」と思うわけです。それはそれで間違ってはいないんだけど。。。
Improving .NET Application Performance and Scalability (PAG Documentation)
DDDで紹介されていた資料らしい。φ(.. )メモメモ
調子に乗ってAmazonで2万円ほど本を買っちゃいました。
・UML入門
・Visual C#.NET 実践講座 Vol.1 基礎編
・Visual C#.NET 実践講座 Vol.2 活用編
・C#によるプログラミングWindows 上
・C#によるプログラミングWindows 下
Let's 自己投資(涙
いや、最近各所のDeveloper's Blog見ていて鬱になりそうだったんで本格的に勉強しようかな、と。
#ええ、あたしゃどちらかというと Developer じゃなくて Administrator なんですよね。
#↑ "Visual Developer"の称号が面映いこと。。。
Web Services Developer Center: Web Services Enhancements (WSE)
これもTechEdでの発表ですが、Web Serviceのセキュリティを強化するものがリリースの運びとなったようです。
LonghornのIndigoに向けて、というところでしょうか。理論や概念ばかりが先走ってる感のあるXML WebServiceですが、これ、ほんとに今後普及するんでしょうかねぇ。。。
Visual Studio 2005 Team System
TechEdにて発表がありました。何するものかよく分かっていないのですが、「That's cool stuff!」と各blogで騒がれているところを見ると、よいものなのかな?
ざっくりまとめると設計からテストまでの一連のソフトウェア開発の流れをサポートするツールがそろったものだと言うことみたいですけど実際のところはどうなんでしょう。ほんとに有用なものなのかな。
おしえて偉い人(笑
Visual Studio 2005 Team System: Overview
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnvsent/html/vsts-over.asp
Tech Ed の発表に合わせて、日本のMSDN にも日本語訳が上がっています。
私からは "とにかくすごい" としか言えません。どうぞご確認ください。
http://www.microsoft.com/japan/msdn/vstudio/teamsystem/overview/
ちょっと意地悪してみようかな(^^;
・「とにかくすごい」って何がすごいの?
・カタカナ英語が乱発されてるけどほんとに意味分かって訳してる?
・今現在SDLCツール(もどきを含む)を使っている顧客に対して、VSTSの方がこれだけいいんだよ、という明確な指標はだせるの?
・日本的な開発に果たして適合するの?
・これが必要になるほどの開発をするようなところではないところでも果たして導入メリットはあるのかしら?
などなど、このあたりがきちんと説明できないと絵に書いた餅になりかねないような気がするのです。
まあ、まだPressReleaseレベルなので酷だとは思いますが、"大規模開発をしない"私のファーストインプレッションはこんなものです。UMLな大規模開発をしているような人にとっては「こいつぁありがてぇや」なのかしら。
ともあれ、今後「目から鱗」な展開になることを期待(^^;
#ところでVisualSourceSafeの立場は・・・(;_;
心配性なものでどうしてもこういうの気になります。伝票発行システムなどでは、当然伝票番号をシステムで管理発行しなければならないのですが、その性質上、どんなタイミングでも絶対に番号がかぶらないようにしなければなりません。その場合、トラックバック先のように連番管理テーブルなどを用いて、番号の整合性を取る必要があるというわけです。GUIDとか使えれば間違いないんですがあれは長すぎるし、IDENTITY列を使えればそれに越したことは無いんですが往々にしてナンバリングというのはオリジナル性にこだわるところがほとんどでして(^^;
てなわけで、いろいろ工夫しなければならないということです。ちなみに、トランザクション中にあるレコードにロックをかけるには
SELECT * FROM T WITH(XLOCK,ROWLOCK) WHERE X=1
でいいそうです。
842037 - [PRB] Visual Studio .NET 上でソース管理を行うと Unicode ファイルおよび UTF-8 ファイルが破損することがある
完全に見落としていたのですがこんな話があったのですね。特にデータベースプロジェクトでSQL Server相手にストアドプロシージャなんかを書いていると、これはUTF-8で記述されているので見事にこの事例に当てはまります。
またWEBプロジェクトでも、Web.configとかUTF-8なので注意が必要ですね。
問題:以下のテーブルAをテーブルBのように抽出するSQL文は?
テーブルA
| ID | data1 | data2 | data3 | data4 |
|---|---|---|---|---|
| 1 | a1 | b1 | c1 | d1 |
| 2 | a2 | b2 | c2 | d2 |
| 3 | a3 | b3 | c3 | d3 |
| 4 | a4 | b4 | c4 | d4 |
| 5 | a5 | b5 | c5 | d5 |
テーブルB
| 1 | 2 | 3 | 4 | 5 |
|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 |
| a1 | a2 | a3 | a4 | a5 |
| b1 | b2 | b3 | b4 | b5 |
| c1 | c2 | c3 | c4 | c5 |
| d1 | d2 | d3 | d4 | d5 |
Excelにコピーして(略 というのは無しの方向で。
正解:
SELECT DISTINCT
CAST((SELECT T1.ID FROM TABLEA T1 WHERE ID='1') AS varchar) AS '1',
CAST((SELECT T1.ID FROM TABLEA T1 WHERE ID='2') AS varchar) AS '2',
CAST((SELECT T1.ID FROM TABLEA T1 WHERE ID='3') AS varchar) AS '3',
CAST((SELECT T1.ID FROM TABLEA T1 WHERE ID='4') AS varchar) AS '4',
CAST((SELECT T1.ID FROM TABLEA T1 WHERE ID='5') AS varchar) AS '5'
FROM TABLEA T
UNION ALL
SELECT DISTINCT
(SELECT T1.data1 FROM TABLEA T1 WHERE ID='1') ,
(SELECT T1.data1 FROM TABLEA T1 WHERE ID='2') ,
(SELECT T1.data1 FROM TABLEA T1 WHERE ID='3') ,
(SELECT T1.data1 FROM TABLEA T1 WHERE ID='4') ,
(SELECT T1.data1 FROM TABLEA T1 WHERE ID='5') ,
FROM TABLEA T
UNION ALL
SELECT DISTINCT
(SELECT T1.data2 FROM TABLEA T1 WHERE ID='1') ,
(SELECT T1.data2 FROM TABLEA T1 WHERE ID='2') ,
(SELECT T1.data2 FROM TABLEA T1 WHERE ID='3') ,
(SELECT T1.data2 FROM TABLEA T1 WHERE ID='4') ,
(SELECT T1.data2 FROM TABLEA T1 WHERE ID='5') ,
FROM TABLEA T
UNION ALL
SELECT DISTINCT
(SELECT T1.data3 FROM TABLEA T1 WHERE ID='1') ,
(SELECT T1.data3 FROM TABLEA T1 WHERE ID='2') ,
(SELECT T1.data3 FROM TABLEA T1 WHERE ID='3') ,
(SELECT T1.data3 FROM TABLEA T1 WHERE ID='4') ,
(SELECT T1.data3 FROM TABLEA T1 WHERE ID='5') ,
FROM TABLEA T
UNION ALL
SELECT DISTINCT
(SELECT T1.data4 FROM TABLEA T1 WHERE ID='1') ,
(SELECT T1.data4 FROM TABLEA T1 WHERE ID='2') ,
(SELECT T1.data4 FROM TABLEA T1 WHERE ID='3') ,
(SELECT T1.data4 FROM TABLEA T1 WHERE ID='4') ,
(SELECT T1.data4 FROM TABLEA T1 WHERE ID='5') ,
FROM TABLEA T
UNION ALL と CAST が 肝かな
Posted by suzuki | 2004年05月14日 10:35.って、一応正解だけどほんとにこれがBESTなのかな。
教えてえらい人(^^;
WinFormから外部EXEを起動するとき、例えば以下のようにします。
条件:WinForm上に貼り付けられたButton1をClickするとNotePad.exeが立ち上がる
コード例:VB.NET
Imports System.Threading
Imports System.Diagnostics
~中略~
Friend WithEvents noteProcess As System.Diagnostics.Process
~中略~
Me.noteProcess = New System.Diagnostics.Process
Me.noteProcess.StartInfo.FileName = "notepad.exe"
Me.noteProcess.SynchronizingObject = Me
~中略~
Private Sub Button1_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) _
Handles Button1.Click
noteProcess.Start()
End Sub
Visual Studioの入門書なんかみるとこんな感じでかかれていることが多いんですけど、別に別スレッドにする必要は無い場合はどうするんでしょうね。
別プロセスで起動するなら、Process.Start(アプリ名)を
呼び出すだけでOK。
http://homepage3.nifty.com/dotnetfan/console/console16.html
外部EXEがマネージドなアプリケーションだったら、リフレクションを
利用して別スレッドで起動するとか、別AppDomainで起動するとか
同一AppDomainで起動するとかできる。
でも、マネージドじゃないアプリケーションは、別プロセスで
起動するしかできないんじゃないかな?
ふーむ。
例えば業務系アプリをチームで開発しているとき、メインパネルから各種業務機能のフォームを呼び出すものを想定します。
このとき、各業務機能フォームを「単体EXE」として作成し、最終的にメインパネルのEXEからそれぞれの各業務機能EXEを呼び出すようにすれば開発が楽かなー、というのが発端。
それぞれをプロジェクトにしてソリューションでまとめて、ソースコードはVSSで管理して、というのが普通だとは思うのですが、案外、そうしたことについてのドキュメントやらケーススタディって無いんですよね。MicrosoftのVSSのページ見ても「?」だし。
いままで自分は「一人で開発一人でデバッグ一人でリリース一人で使用する」というとってもアローンな環境(笑)しか経験がないもんですから、.NET系の大規模開発をしているところはいったいどういう手法で取り組んでいるのかに興味があるのです。
先のVB.NETのプログラムも、どうしたらそういう開発で楽できるかなぁ、というのを考えてるときにふと思いついたプログラムをメモしたのでした。
Posted by suzuki | 2004年05月13日 18:36.うにょうにょ日記 - How do you design new features for C#?
Channnel9 の Eric のインタビューが文字に起こされてます。必見。
TというテーブルにFieldという順列のつけられる一意なデータを持つ列があったとして。
SELECT * FROM (SELECT Count(*) AS NO FROM T AS T11,T AS T12 WHERE T12.Field <= T11.Field Group by T11.Field) AS T13 WHERE T13.NO Between 10 and 20 Order by T13.NO
これで、10番目から20番目のレコードを抽出できますがコスト高っ(w
#まぁ100件くらいならなんとか。。。
ちなみに、Pentium4 3.06GHz RAM 1GB Windows2000Pro SP4 SQL Dev SP3 、6万行のテーブル(インデックスなし)相手に大体30秒の実行時間がかかりました
またはこんな方法も
SELECT TOP 10 * FROM T WHERE Field NOT IN (SELECT TOP 10 Field FROM T) ORDER BY Field
こちらは、SELECT上位10を除いたSELECT結果から上位10個ということで、11番目から20番目を抽出することが出来ます。こっちのほうが素直かも。
841226 - [HOWTO] Visual Studio .NET 2003 で初歩的な C アプリケーションを作成する方法
ことさらKBにするまでも無い内容だと思うのだけどどうなんだろう。確かに、基礎的CプログラムをVS.NETのIDEで書くのは抵抗があったりしますけどね。
「Cはviとgccでやらなければならない(瞳孔開」
というつもりもさらさら無いですが(^^;
Anatoly Lubarsky っつーのがなにやら吼えてますな。自分のBlogでも吼えてるみたいで。あれかなー、自分の尺度でしか物事を捉えようとしない人なのかな。
The Code Project - Blog Reader Add-In for Visual Studio .NET - .NET
というのがあるそうです。MSDN Blogより。
832679 - Visual Basic .NET を使用して FTP サイトにアクセスする方法
φ(.. )暇なときにでもためそう
Developerと言われても恥ずかしくないようにいろいろお勉強中なのですが
(私の本職はAdministrator)、その中で『ジャグ配列』というものに出くわしました。
どうもこのジャグ配列というものは、配列の中に、配列を持つというような感じの配列みたいです。・・・・・自分で言ってて意味が分からんのですが(笑
というわけで簡単なサンプルプログラムを。
using System;
public class JagArray
{
public static void Main()
{
// Jagged array
byte[][] scores = new byte[5][];
// Initialized the jagged array
for (int i = 0; i < scores.Length; i++)
{
scores[i] = new byte[i+3];
}
// Print length of each row
for (int i = 0; i < scores.Length; i++)
{
Console.WriteLine("Length of row {0} is {1}", i, scores[i].Length);
}
}
}
こいつの出力結果は下記のようになります。
Length of row 0 is 3 Length of row 1 is 4 Length of row 2 is 5 Length of row 3 is 6 Length of row 4 is 7
イメージできますでしょうか。一つ目の配列変数の中には3つの要素をもつ配列変数が、二つ目の配列変数の中には4つの要素を持つ配列変数がといったような感じとなります。
あまり使わない種類の配列だと思いますが、状況によっては便利に使える配列だと思います。ちなみに、C#では配列も"オブジェクト"ですのでご注意を。
Microsoft SQL Server - 技術情報 - SQL Server 2000 評価ガイド - SQL Server 2000 自習書シリーズ
さて、そろそろちゃんと読み始めるかな。いままで感覚的に使ってたからきっと間違って覚えているところがあるだろうし(^^;
Visual Studio .NET と Visual SourceSafe を使用したチーム開発
今度、チームでアプリ開発をすることになりそうなので(本業じゃないのに)、このページを見ながらVisual SourceSafeの可能性について調べてみましたが・・・さっぱりわけわかりません。もうちょっと調べたり使ったりしないとだめみたいですわ。しかし、なんとなくVisual SourceSafeの話って表に出てこないのはなぜ?Windowsプログラマって一匹狼な人ばかりではないだろうし。以前聞いた話では、VSSでは機能が足らんということで皆結局使わなくなってしまうということもあるみたいですけど果たして。
using (Class class = new Class())
{
// class に対する処理
class.Close();
}
どもども (^^;
興味が沸いた所で、GDNJ の大長編スレッド
http://www.gdncom.jp/general/bbs/ShowPost.aspx?PostID=4718
のサマリをまとめてみませんか? (^^;;;
ひええええ
Posted by Szk | 2004年04月14日 11:00.最初の1ページで遭難しました(笑
カタカナ英語や(私にとっての)新語が山盛りなのでもう少し修行してから出直さないとだめっぽいです。
#いままでCloseもDisposeも気にかけたことがなかったりするし(^^;
##「このクラスはこうする」くらいしかしてない。
http://www.microsoft.com/japan/msdn/net/bda/daag.asp より引用:
『メソッドから戻る前に接続が閉じられることを保証するために、以下の 2 つのコード サンプルで例示されているアプローチのいずれかを考慮してください。最初のコードは、finally ブロックを使用します。 2 番目のコードは、C# using ステートメントを使用します。これは、オブジェクトの Dispose メソッドが確実に呼び出されるようにします。』
この言葉の裏には、ConnectionオブジェクトはCloseではなく、Disposeを呼ぶのが望ましい(呼ばなければならない?)という思惑が見え隠れしますね。WhidbeyからはVB.NETでもusingステートメントが使えるようになるという噂を耳にしましたが、今現在で言うとtry~catch~finallyを使え、というのが共通解になるでしょうか。
#でも、あの超長大スレッドの落としどころにはならんか・・・。
まぁ、中途半端にCloseされるよりDisposeしちゃえ。
そういうことではないでしょうか。
速いぞ! VMware Workstastion 4.5.1
あおりに負けて買っちゃいました(笑)。もともとVMWare Workstation 3.xを持っていたので、Upgrade版をご購入。最近使っていたVirtualPCと比較すると、確かに動きが速いです。OSのインストール時間とか段違い。これなら実験or評価環境としてサクサク環境を作ることが出来ます。
というわけでVMWareに英語版Windows Server 2003 Standard Edition と Visual Studio 2005 (Whidbey) をインストールしてみました。ぼちぼち評価していこうと思います。
【Web.config】
<authentication mode="Forms">
<forms loginUrl="login.aspx" />
</authentication>
【login.aspx.cs】
private void OnLogin_Click(object sender, System.EventArgs e)
{
if (CustomAuthentication(UserID.Text,Password.Text))
{
FormsAuthentication.RedirectFromLoginPage (UserID.Text,false);
}
else
{
Label3.Text = "Invalid Login";
}
}
private bool CustomAuthentication (string username,string password)
{
SqlConnection conn = new SqlConnection("server=localhost;database=dbname;uid=uid;pwd=password");
try
{
conn.Open();
StringBuilder strB = new StringBuilder();
strB.Append("Select count(*) from users where username=\'");
strB.Append(username);
strB.Append("\' and cast(rtrim(password) as varbinary) = cast(\'");
strB.Append(password);
strB.Append("\' as varbinary)");
SqlCommand command = new SqlCommand(strB.ToString(),conn);
int count = (int)command.ExecuteScalar();
return(count > 0);
}
catch
{
return false;
}
finally
{
conn.Close();
}
}
他にもGlobal.asaxを使う方法もありかと。
オープンソースな.NET Frameworkだそうで。なんて素敵な人たち(^^;
今のところ、WebformsとWebServicesが動くそうで、C#コンパイラもあるとか。いやはやすごいですねぇ。
Weblogs @ ASP.NET や、SQLPASSJブログ(ベータ)やUSERS GROUP 日記 などで使われている.TextというBLogツール(?)をインストールして見ました。が、
めっちゃはまりました。
結局は「なんじゃこらぁあああっ!(@p@ (C)ジーパン」という現象ではまったのですが、まあそれを除けば何とか動かすことができました。
サンプルはこちらです。近いうちにインストール記録でも公開しようと思います。
Visual Studio .NET 2003 Bootstrapper Plug-in 日本語版 (製品版)
φ(.. ) 使うし。
ADのGPO使えばアプリを自動配布可能か?
315158 - [FIX] ドメイン コントローラでデフォルトの ASPNET アカウントを使用すると ASP.NET が動作しない
通常、(Active Directory)ドメインコントローラ上でIISをホストするということはしないほうがいいのですが、予算削減のあおりを受けて、満足にサーバーを買ってもらえないIT部門(涙)であるとか、最近大バーゲンしているSmall Business Server 2003とかだとそうはいきません。
で、基本的な考え方として、IISのプロセスを動作させるアカウントには、IISにしかアクセス権を持たないくらい低い権限しか与えていないアカウントを用いるべきで、そうしたアカウントをドメイン上に作成し、そのアカウントをIISのMachine.configに記述して運用するのがスマートです。
ASP.NETからSQLサーバーとかネットワークドライブなどのネットワークリソースが使いたい場合はどうするねん、という話はありますが、そのときにはアカウントの偽装というテクを使えば無問題。"偽装"というとなにやら難しそうですが、ようはプログラムの中で別の権限をもつアカウントに"なりすます"ということです。
Windows開発者はアカウントの権限に弱いとよく言われますが今後は必要なときに必要な権限を取得するプログラミングというのが必須となるでしょう。
ちなみに、ASP.NETのバージョン毎のASPNETプロセスのIDは以下のようになっているみたいです。
ASP.NET 1.0:localmachinename\ASPNET
ASP.NET 1.1:IWAM_MachineName
あり、いつの間に変わってたんだっけ(^^; <ぉぃ
参考:ASP.NETのプロセスIDと要求ID
818368 - [HOWTO] Visual Studio .NET を使用して Visual SourceSafe に SQL Server 2000 ストアド プロシージャを追加する方法
Visual SourceSafeが何者かというと、まあ要するにソースコード管理をするためのものということが出来ます。オープンソースな世界だとCVSツリーがこれにあたりますかね。
チームでプログラミング開発をしていると、いつ誰がどこを変更したかというのが非常に重要で、かつ同じソースを別々の人間が更新してしまって不幸になることを防ぐ意味でもこうしたソースコード管理システムというのは重要になってきます。
私は今までどちらかというと一匹狼でアプリを開発することが多かったのでこうしたシステムを使う機会はあまりなかったのですが今後は共同作業でアプリを開発することが多そうなのでそろそろVisual SourceSafeを使ったソースコード(のバージョン)管理もしなければならないでしょう。
そしてこのKBではWindowsアプリのソースコードのみならず、SQL Serverのストアドプロシージャも管理するための方法が記載されているので要チェックですね。
ちなみに、アプリ開発にまつわるドキュメント(仕様書とか)もVisual SourceSafeで簡単に管理できたらいいなーと思ったりするのですがそれはできるのかな。そしてことのついでにMicrosoft Project Serverとも連携できたりしないのかな。 ちと調べてみよう。
Web Applications: URL Rewriting in ASP.NET (ASP.NET Technical Articles)
こりゃまた。。。今度じっくり腰をすえて読もうかな。。。
FreeTextBox というASP.NET用のサーバーコントロールがあります。
このコントロールを使いたいページの先頭に
<%@ Register TagPrefix="FTB" Namespace="FreeTextBoxControls" Assembly="FreeTextBox" %>
と書いて、HTML文中に、
<FTB:FreeTextBox id="ftb1" runat="Server">
とでも書けば使えます。現在はそのままでは日本語は使えないようですが、きっと誰かが日本語化してくれることでしょう。
#ていうか日本語リソースファイルをLanguagesにぶち込むだけのような気が。
ちなみに、Visual Studio.NETで使う分にはあまり気にしなくてもいいのですが、WebMatrixで使う場合、WebMatrixのデバッグ用WEBはProgram Files\ASP.NETフォルダをルートに持つみたいなので、そこにFreeTextBoxの配布ファイルを予めコピーしておかないとデバッグできないみたいです。他にいいやり方があるかもしれませんけど。
.NET フィールドエバンジェリスト チーム コラム : DB 設計者のための明解 ADO.NET
この手の解説記事は、長々と書くのではなくポイントだけをずばっと書くのが好ましい。このくらいでもちょっと長いかなぁと思うのですがいかがでしょうか。
ただ、悲観的同時実行制御と楽観的同時実効制御は意見の分かれるところではありますなぁ。
ASP.NET Web Matrix Project 日本語版
こういうツールが無償で提供されるのは嬉しいんだけど・・・。
結局、Microsoftからでているこの手のツールって、プログラマー向けなんですよね。間違ってもWEBデザイナー向けではない。Visual Studio.NETなんて言わずもがなだし、ここに至って非常に中途半端なプロダクトになってしまったMicrosoft Office FrontPageとかね。
WEBというのは、確かにあれこれしようとするとプログラミングは必須なのですが、やはり元が「閲覧」というビジュアルに類する仕組みということで、デザイナーが主体であるところは無視できないと思うんですよ。実際プログラマーって「動くこと」を重視していわゆるUIのデザインをおざなりにする部分が往々にしてあるし(ここで言うデザインとは、見た目だけではなくてボタンの配置などの人の感覚により近い部分での設計力を指します)。WEBだとやはり見た目のインパクトとか直感的にわかる配置とかが大事なのでそういうところはデザイナーさんに任せたほうがよいものが出来上がるし。そういう意味ではMacromediaのDreamweaverやIBMのHomepage Builder、AdobeのGo Live!のようなWEBオーサリングツールと、WebMatrixやVisual Studio.NETが協調できるといいんですけどね。
某MVPな集まりでも、「Visual Studio.NETだけで今のMicrosoftのWEBサイトを一から十まで全部作ってみろや」見たいな話も出てましたね(これはおそらく不可能^_^;)。
UNIXベースのApacheサイトもVisual Studio.NETだけで作れると私的には楽になるなーと思いつつ。
あら、ASP.NETリソースキットなんてあったんですね。
使用するにはユーザー登録してLicenceKeyを取得
する必要があるみたいですけど。
MSDNに収録してくれないかな。
ASP.NET Web Matrix Project 日本語版
日本語版でました。ASP.NETで開発をしてみたいけどIISも無いしVisual Studio.NETもないから無理、と思っていた人はぜひ試して見ましょう。
Windows認証の場合のユーザIDを取得する方法[USERS.GR.JP SQL-ML:09572より]
CREATE TABLE #login(spid SMALLINT,ecid SMALLINT, status NCHAR(30),loginname NCHAR(128),hostname NCHAR(128),blk CHAR(5), dbname NCHAR(128), cmd NCHAR(16))
INSERT INTO #login
EXEC sp_who @@spid
SELECT loginname FROM #login
GO
sp_whoは、現在のSQL Serverのユーザおよびプロセスに関する情報を返すストアドプロシージャです。@@spidは現在のユーザープロセスのサーバープロセス識別子(ID)を返します。
"#login"は一時テーブルで、テーブル名の先頭に"#"が一つついていることによって、ローカル一時テーブルとして作成されます。ローカル一時テーブルはテーブルを作成したユーザーの現在の接続においてのみ可視であり、そのユーザーがSQL Serverのインスタンスとの接続を切断すると削除されるタイプの一時テーブルです。逆にテーブル名の先頭に"##"とつけるとグローバル一時テーブルというものになります。これはどのユーザーにも可視で、このテーブルを参照するすべてのユーザーがSQL Serverとの接続を切断した時点で削除されます。一時テーブルを作成するときの場面に応じて適切な一時テーブルにすればよいでしょう。
ちなみにこうした一時テーブルはtempdbというSQL Serverの一時テーブル格納領域に作成されます。一時テーブル作成しまくりデータベースシステムの場合、tempdbをRAID0かつ高速ハードディスク上に物理的に配置すると速くなるかも?(なーんてね)
というわけでおがわ大先生勉強させていただきましたm(__)m
神に問い合わせたら、なぜかたどりついちゃいました。(^_^;)
で、システムテーブル直接見る方法もありましたね。
たとえば、ユーザ定義関数でこれをやる場合は一時テーブルが使えませんね。
やるとしたらこんな感じ。
CREATE FUNCTION fnGetUserName()
RETURNS NCHAR(128)
AS
BEGIN
DECLARE @login NCHAR(128)
SELECT
@login = master.dbo.sysprocesses.loginame
FROM
master.dbo.sysprocesses
WHERE
spid = (SELECT @@spid)
RETURN @login
END
ダウンロードの詳細 : .NET Framework Software Development Kit Version 1.1
φ(..)メモメモ
たとえばWindowsXPをクリーンインストールして、そこに.NET Framework SDK 1.1をインストールする場合は、先に.NET Framework 1.1ランタイムをインストールしておく必要があります。
ASP.NET と Struts : Web アプリケーションのアーキテクチャ
φ(.. )
http://unimaru.mydns.jp/FlexWiki/default.aspx/MyWiki.FrontContoler
ここにこれ関連でメモ置いてあります。
追記、修正があったらよろぴく(w。
φ(.. )メモメモ。今度じっくり時間をかけて読もう。
.NET Framework のための安全なコーディング ガイドライン
エビデンスベースセキュリティですか。世の中には「エビデンスってなんや?」って人も多いんだから中途半端な和製英語を使わずに、きちんと日本語に訳せばいいのに。
#エビデンス=証拠、成果物 って程度に理解すればいいんだけど。
横文字を日本語にきちんと訳せないのが情報格差を生む一端だと思う今日この頃。
それはともかくとして、安全なコーディングのガイドラインというのは開発者はよく読んでおいたほうがいいですね。世の中まだまだ[ピー]や[ピー]なものが転がっているから。
例えば、
http://localhost/test.aspx?q=テスト
とすると、Request.QueryString[0]の値が化けてしまいます。
これの対策のひとつは、Web.configにおいて、<globalization>属性を
<globalization
requestEncoding="shift-jis"
responseEncoding="shift-jis"
/>
等とすると解決したりします。
ただし、この対策が正しいのかどうかということは分かりません(爆
327283 - [BUG] Windows Server 2003 で Web プロジェクトを作成できない
IIS6.0はデフォルトでは堅いですからねぇ。φ(.. )メモメモ
Windows XP Service Pack 2: 開発者向け情報 (Windows XP 技術情報)
φ(..)メモメモ。でもなぁ、XP SP2になるとMovableTypeが使いにくくなるんだよなぁ(ぼそ。
316383 - [WD2003] [HOWTO] Visual Basic .NET からオートメーションを使用して、Word で新しい文書を作成する方法
メモメモφ(.. )
同じことが他のOffice製品でも言えるし。これを使えばhogeからhogeできるな、と。
821758 - [FIX] .NET Framework 1.1 で Server.Transfer メソッドが IsPostBack プロパティを呼び出さない
メモメモ、、、ってこれどこがFIXやねん。
Server.Transferを使っている人は要注意。
Whidbeyをぼちぼちと触り始めているのですが、こいつはすごい開発環境です。こいつさえリリースされてしまえばWinアプリの開発・配布がどれだけ簡単になるか(これはClickOnceという新.NET Frameworkの機能を使った新しい仕組みです)。
また、WEBアプリ開発においてもmasterファイルを使うことでサイトデザインを簡単に統一できたり、また開発のためだけにIISをインストールしなくても動作確認はできてしまうという簡易WEBサーバーが搭載されていたり(これはデバッグや動作確認のときだけ、ローカルからのみアクセス可能になるWEBサーバー)、一般のWEBサーバーでもつかえるようにFTPに対応していたりともう、すごさは枚挙に暇がありません。
Whidbeyの特集ページでも作ろうかな。あ、でも画面キャプチャって勝手に自分のサイトに張っていいんだっけか←EULAちゃんと読んでないのがバレバレ。
友人に貸していたVAIO Z505 C/BPが帰ってきたので、さっくりフォーマットして、そこにWindows Server 2003のEnglishバージョンを入れてから設定を調整し、先日の.NET Developer ConferenceでもらったVisual Studio "Whidbey"をインストールして見ました。
が
さすがにZ505 C/BPでは非力すぎてインストールに時間がかかるかかる(^^;(Z505 C/BPはCPUがCeleron550MHzで、メモリは192MBしかありません)。まあ、使って見ること、が目的なので、年末年始にかけてのんびり評価しようと思います。
・・・って、年末年始は引越しでそれどころじゃないじゃん(w
一言。
楽しかった。。。
ほんと新物好きかつテクノロジ大好き人間の私にとって最高の二日間。こういうイベントには以前から行きたかったんですが仕事で行くには会社の理解がまったく得られず(いったい誰の努力のおかげで会社のシステムがう動いとるとおもっとんねん)、かといって自費で行くにはちょっと、という状態だったのでこういう機会を提供してくれたMSの皆さんに感謝。
そしてかばんの中にはWhidbeyが。。。。うれしー(笑。さあ、早くインストールしなければ。
今日は.NET Developers Conferenceに参加するために有給をとって上京。そのため朝早くの新幹線に乗るために朝5時に目覚ましをかけたのですが、起きたら6時。
寝坊してるー!!Σ(゜∇゜;
ていうか新幹線7時発だしっ!家から駅まで1時間ぐらいかかるしっ!
というわけで人生最速の身支度を整えてあわてて出発。朝早いせいか思いのほか早くつくことができ、ギリギリセーフで新幹線に乗ることができました・・・あー、危ない危ない。やっぱり私の場合、こういうイベントのときは前ノリしといたほうがいいかもしれません。
車中、天気がよくて富士山がとっても綺麗に見えたのが何よりでした。
さて、.NET DCの会場は台場のグランパシフィックメリディアン。セッション内容は省きますが、まあ、一言で言うなら
早く出せ>Whidbey&Yukon
いやもう、待てないって実際。これらがあればどれだけ楽に開発できるか。Whidbeyがあれば、このtankmage.comも、ASP.NETサイトも同じ環境の中で作ることが可能になるし。
ということで早く出してね、ということは偉い人にお願いしておきました。また明日もあるのですが、明日配られる予定のWhidbeyやらYukonは、早速自宅の開発環境に入れてあれこれ楽しみたいと思います。よければそのまま仕事先で使ってしまおうっと。
気が早いですか?いえいえ、それぐらいインパクトがあるってことです。
Blogにしてから記事引用はどんどん延びるんだけど・・・ま、いっか。それがそもそものBlogだし、というのはおいといて、今日は書くことも注目した記事もないので最近思っていることでも書こう。何をいまさら、という話ではあるのですが、先日東京に行って町をテクテク歩いていたときに痛烈に感じたので、自分の考えをまとめるベースとするためにも書いておきます。
最近、『これからはCell Phoneの時代』だと強く感じました。現在の姿のPCは再びマニアの手に戻り、一般の人(ユーザー)はCell PhoneやPDAといったスマートクライアントを使ってネットワークを利用することになるだろうと。これはBillGやSteveBも力説していますね。
最近家や仕事場に引きこもりがちで通勤時間や休みの日はもっぱら睡眠時間というDeveloperの皆さん、町へ繰り出して人間ウォッチングしてみてください。どうでしょうか。道行く人、特に若年層のほとんどが携帯電話を拝みながら歩いているとは思いませんか?
そして彼らが何を拝んでいるかといえば、『メール』です。PCの世界で『キラーアプリケーション』といわれて久しいものです。そして『WEB』です。これもPCの世界では『キラーアプリケーション』などといわれてきましたね。つまり彼らは歩きながら携帯電話で『ネットしている』のです。
#あんたは歩きながらNotePCでCHATしとるやんけ、という突っ込みは無しの方向で。
最近では、携帯電話から参加するオークションサイトやショッピングサイトなどなど、携帯電話ならではの使われ方を想定したサイトが続々と登場しています。
こうしたシステムを構築する場合に開発者の頭痛の種となるのが
『どこからどのようなデバイスがアクセスしてくるのかわからない。しかし、表示できる内容に差があってはならない。』
というものです。日本の携帯電話のキャリア間で使われているマークアップ言語の仕様が違うというのは携帯電話向けサイトを構築したことがある人ならよく知っていると思います。それらすべてに対応するようなシステムを作るということは同じものを複数作らなくてはならなくなることと等しいので開発コスト(手間、技術、時間)がかなり高くなります。こういう開発案件って開発者の人は受注してしまうとまず真っ先に「うぇぇ、めんどくさいなぁ」と思うのではないでしょうか。
しかし、こうした案件は増加する一方で、いつまでも面倒がっていては始まりません。そこで、携帯電話のキャリア間での差異を気にせずにすむようなアプリケーションフレームワークが登場することとなりました。Javaの世界は知りませんが、WindowsのIISの世界では、Visual Studio.NETで使用できる『Mobile Internet ToolKit(以下MIT)』というものがあります。このKitを使ってASP.NETのサイトを一つ作ると、Kitが持つDLLが、どのキャリアからのアクセスであるかを判断し、適切な応答を自動で返してくれるので、開発者がいちいちキャリアごとのページやそこへのジャンプを作る必要がありません。せいぜい、「PCかスマートデバイスか」ということを考えればよいだけです。私自身も簡単なページを作成してみましたが、携帯電話用のマークアップ言語を知らなくても簡単に作成することができました(私が使っている携帯電話はvodafoneなのですが、これってcHTMLでしたっけ?WXLでしたっけ?というレベルの私でも作成可能)。
今後のアプリケーション開発では、そのアプリケーションが動作するターゲットとして携帯電話やPDA、カーナビといったスマートクライアントはとても重要なものとなるでしょう。しかし、従来のアプリケーション作成方法では各デバイスごとのアプリケーションを記述しなくてはならず、大変な開発工数がかかっていました。その状況を改善すべく、ベンダー各社もそうしたアプリケーションフレームワークを充実させてきているように思います。
今の若年層が大人になったときにいったいどのようなコンピューティング環境になっているのかとても想像できませんが、今私がNoteパソコンを持ち歩いているように、彼らは携帯電話やPDAを持ち歩いて今の私のようにいつでもどこでも情報を得られる環境になっていることは間違いないかもしれませんね。そういう世界になることを想定して、いまからそうしたデバイス向けのWEBアプリケーション構築のTipsをいろいろ集めておこうかなぁ、と思っています。
以上、独り言でした。
Bill Gates' Web Site - Speech Transcript, COMDEX Las Vegas 2003
シームレスコンピューティング。今、まさに私が一番興味ある(というか興味がでてきた)分野です。私なりの意見ですが、今後PCはまた10年以上前のようにマニアや好き者、企業だけのものになり、一般ユーザーはシン・クライアントやセットトップボックス、携帯電話で情報を受け取るようになるでしょう。しかし、そうした状況にあっても、雑多なデバイスからアクセスできる情報はすべて同じものになるのではないでしょうか。すべてのデバイスがすべてのソフトウェアからすべての情報に"同じようにアクセスできる"、まさにシームレス(垣根のない)な状態。また、個人が所有するデータが、どのデバイスからも同じようにアクセスできる状態。
そこには、やれLinuxだのWindowsだのAIXだのCellだのといった種類はなく、ただ単に『データおよびそれにアクセスするソフトウェア』があるだけです。そうした世界に今後なっていくだろうと語っています。
また、Microsoftの取り組みとして
Security
reliability
manageability
についても語っています。
そして、"Longhorn"、"Stuff I've Seen"についても語っていますが、この"Stuff I've Seen"って、Googleのあれじゃぁ。。。と思ったのは秘密です。
ZDNN:MS、Office 2003のXMLスキーマを無償ライセンス
Microsoftの今後は、こうした「業界標準準拠」にまっしぐらになります。「もう、独自路線の時代じゃない」ということですから。
しかし、このXMLスキーマ、かなり複雑なんだろうなぁー(笑
次期ASP.NETの足音が聞こえてきました。コードネーム『ASP.NET "Whidbey"』はおそらくリリース時(Yukonと同時期?Visual Studio .NET "Whidbey"と同時期?)には『ASP.NET 2.0』という名前になると思われます。ASP.NETのメジャーバージョンアップなので、様々な機能追加がされる予定ですが、その内容は大きく3つの部分に分かれているようです。その3つとは、
Developer Productivity
Administration and Management
Speed and Performance
であり、『更なる開発工数(手間)の削減』、『更なる管理運用のしやすさの追求』、『更なる実行速度の向上』ということみたいです。確かにASP.NETとかで開発していると、いわゆる定型的なコードやフォームを何回も書いたりしなくてはならないのですが、これらを全て基本部品として用意することで、開発者に対して「ほら、手間を省いてあげたからもっと他の真に考えなければならないロジック部分にもっと時間を割けるでしょ」といったメッセージも感じますし、「管理運用で一番手間になっていたあの部分をすっきりさせたから導入やメンテナンスが楽になりまっせ」といったメッセージが感じられますね。
実際のリリースは来年の第2四半期くらいかな?と思いますがなかなかに楽しみだと思います。
@IT:Visual Studio .NETによるチーム開発事始め Visual SourceSafeによるソース管理(準備編)
やはり、チームで開発するとソースのリビジョン管理というのは大切ですからねぇ。自分ひとりで開発しててもそうだし。というわけで私もVisual SourceSafeを入れてテストしてみるかな。知っておいて損はないし、会社でもきっと役に立つだろう。
個人的にちょっと思ってるのは、なにもソースコードだけに限った話じゃなくてPCで扱うあらゆるドキュメントやCADデータなんかにも応用できるんじゃないかな、と。
UNIXベースでいうとCVSツリーがそれにあたるのかな。
When will Microsoft take Asp.Net Security seriously?
『いつになったら真剣にASP.NETのSecurity Vulnに取り組んでくれるの?>Microsoft』 とでも訳すのでしょうか。私は英語が大変苦手なので中身は斜め読みですが、どうもこのスレッドの元の人、ちょっと痛い人にしか見えないんですけど気のせいでしょうか。
そら、"Full Trust"なんかに設定したらなんでもし放題なんてのは当たり前だと思うのですがなんか私の認識って間違ってますかねぇ。。。
『"Full Trust"にすると誰でも改変できてしまう!バグだ!スグにアナウンスしてパッチをだせっ!』
・・・なにかがおかしいような気がする今日この頃。どなたか英語に堪能な方、私の認識違いを指摘してください。
Visual Studio ロードマップ 2004-2005にて、Visual Studioの今後のロードマップ(リリース計画)が示されています。ことしVisual Studio .NET 2003になったと思ったらもう来年には"Whidbey"、さらにLonghornがリリースされるという2005年には"Orcas"ですか。こりゃ毎年毎年大変そうです。2004年の新SQL Server "Yukon"は、おそらく来年最も重要なリリースになるのですが、果たして今の私についていけるのだろうか。・・・転職でもしない限り無理なような気がしていたりもしますけどね。。。
あ、ちなみにこのエントリーはMovableTypeのBOOKMARKLETという機能を使って書き込んで見ています。
Re:「MSDNユニバーサルに移行しなさい」キャンペーン
MSDN-Pro更新でVS2005Proが手に入るならTSは静観予定...
Posted by Moo | 2005年01月21日 17:21.格差が激しすぎる気がします。