Silverlight

Silverlight5アプリケーションの作り方(3)

さて。

SilverlightアプリケーションはXAMLベースだから、ほぼWPFアプリケーションなんでしょ。と、思いきや、これが結構違うということが判ってきた。.NET Frameworkと.NET Framework for Silverlightの差が、厳然たる差異として立ちはだかっているのだ。

今回は、ActiveXコントロールを使ってみたいと思う。ActiveXなど、.NET以前の20世紀のテクノロジーであるが、いまだにActiveXコントロールとして作った資産が世界中にあるのだから仕方ない。ソースが手元にあればC#に書き直すという方法もあるが、メンドクサイのである。Microsoft社純正の技術であるSilverlightから簡単にActiveXを呼び出せる方法があるはずだ。

Windows Formsの時代(.NET1.0~2.0)は、VisualStudioにtlbimp.exeというツールがあり、ActiveXコントロールのラッパークラス(AxHostクラスを継承したクラス)を自動的に生成でき、それをWindowsFormに貼り付けることで利用できた。WPF(.NET 3.0以降)では、WindowsFormコントロールを貼り付けるためのラッパー的クラス(WindowsFormsHostクラス)があり、それをWPFのGridに貼ることで、「ActiveXコントロール→AxHost→WindowsFormsHost→XAML」という流れで連携できる。詳しくはコチラ

SilverlightもXAMLベースだから、WPFアプリと同じ方法でイケるのでは。。。そんな希望は、.NET Framework for SilverlightにWindowsFormsHostクラスが無いという事実によって打ち砕かれた…

Windowsformshost
↑"WindowsFormsIntegration"アセンブリが無くて参照追加できず、狼狽するのみ。。。

とはいえ。ActiveXコントロールはもともとHTMLページに貼り付けて使えるものだから、最悪そうすればなんとかなるんです。「ActiveXコントロール→HTML→JScript→SilverlightのXAML」という連携でね。うん、確かに動くけど、これも結構メンドクサイぞ。。。

…やりたいことはできるけど、イマイチしっくりこないよな~。ActiveXなんか早く捨てろってコト。。。?大事なロジックならC#に書き直すか、C++/CLIに書き直した方がいいかもね。

| | コメント (0) | トラックバック (0)

Silverlight5アプリケーションの作り方(2)

Silverlightアプリケーションの開発方法その2。

一通りの技術的ドキュメントはMicrosoft公式の

Silverlightデベロッパーセンター

に充実していらっしゃいます。「Silverlight4」と書いてあるが、そのまま5に読み替えても、問題ないのカナ?その辺は別途調査しまーす。一緒なんだろうけど、たぶん。(と言いながらいつも罠にハマる)

.NET Framework for SilverlightやXAMLについては、.NET Framework一般の知識をそのまま適用して考えていいんじゃなかろーか。

特にSilverlight独特って点は、「ブラウザで動かす想定」だというところにあると思うぞ。たとえば、Silverlightアプリケーションを埋め込むHTMLページ内のJavaScriptとどうやりとりするか、とか、Silverlightアプリケーション起動時のスプラッシュスクリーンをどうするか、とか、セキュリティをどうするか、とか。

昔流行ったJavaアプレットみたいだな~。似たことをやろうとしているので当たり前なのだが。

「似たこと」…?って、Silverlightが何のために作られ、何に使われる想定の技術なのか、意外とわかりにくかったりする。その辺は技術ドキュメントに現れないのでプラットフォーム選定の時に結構、不適切な選択をしちゃったりする。ここらでちょっと整理しとく。

(なお、これは2012年8月時点の内容デス。未来の人はもっと新しい記事を読んでください。)

まず、マイクロソフトさんがSilverlight1.0をリリースした2007年9月の時点では、SilverlightはRIA(つまりブラウザでカッコイイアプリケーションを動かす)を実現するためのものだった。らしい。その頃はSilverlightという新しいキーワードは知ってたけど使ってなかったです。なぜか?Adobe Flash全盛だったしAJAXも簡単にできるようになってきて、あまり必要性感じなかったです。それでも、Silverlightはバージョンが上がるにつれイイ感じになりました。

ところが、時代が変わりました。2010年になって、HTML5が俄然人気。もう、これからの時代、ブラウザで動くアプリケーションはHTML5ですよ、と皆が言い始めた。「たしかに。だけど、SilverlightやFlashはどうなるんでしょ?」となるわけで。そんで、

マイクロソフトが戦略変更

となりました。Silverlightはクロスプラットフォーム(WindowsでもMacでもスマホでも動くよ)にはならないので、ほかのマイクロソフト製品との連携やWindows Phoneのプラットフォームと位置づけますわ、となったわけです。

HTML5とSilverlight

PCやAndroidやiPhone、iPad等でも動くカッコイイWebアプリケーションを作るためのプラットフォームはHTML5で決まり。マイクロソフトさんもそう言っているわけです。周りからは「Silverlightはバージョン5で終わりなのかもね」と思われている有様です。動画を表示するのに何のプラグインもプログラミングも要らないHTML5には敵わないわけです。

そうはいっても、2012年8月時点では、IEの最新バージョンである9においてもHTML5のサポートは限定的だし、Silverlightアプリケーションはすでにネット上にたくさんあって、Silverlight5自体もあと9年ほどサポートされるので、「あと2年程は」Silverlightが選択されるべきRIAプラットフォームじゃないかと思う。HTML5の勢いが今のペースでいけばね。

んじゃあHTML5アプリケーションはどう作るの?…今後調べマス。。。

| | コメント (0) | トラックバック (0)

Silverlight5アプリケーションの作り方(1)

Visual Studio 2010 SP1で新規Silverlightアプリケーションを作成しようとすると、 Photo

Silverlight


「最新のSilverlightが必要です。」のようなメッセージが表示される。そのダイアログにあるリンクをクリックするとSilverlight_Developer.exeがダウンロードできるのだが、それをインストールしても、新しいSilverlightアプリケーションの作成ウィザードでSilverlight5が選択できない(リストに現れない)。

5

↓これをダウンロードしてインストールする必要があるぞ!

Microsoft® Silverlight® 5 Tools for Visual Studio® 2010 SP1

Silverlight5toolsforvs2010

インストール完了後、Visual Studioを起動してSilverlightアプリケーション作成の手順をもう一度やると、

5_2

↑やっと「Silverlight 5」が選択肢に出てきた。

★"WCF RIAサービス"が何なのかはまた今度。。。

Photo_2
さて、[新しいSilverlightアプリケーション]のウィザードが終わったら、こんな画面が出たぞ。

Photo_3
ツールボックスを表示させて

Gui
デザインの画面にドラッグ&ドロップするわけですな。
こうして真っ白なキャンバス(Grid)にお絵描きします。

Photo_4
Gridをクリックして、プロパティ一覧でBackgroundの▼ボタンをクリックすると、Gridの背景色を変えられるぞ。他にもいろいろなプロパティがある。
同様に、貼り付けたボタンなどのプロパティも変えられる。

こうやってマウス操作とプロパティの入力でいとも簡単にGUIのデザインができてしまうのがVisualStudioのいいところ。そうしてデザインしたGUIレイアウトの情報はどこに保存されるかというと、デザインペインの下に表示されているXAMLペインに表示されているこの情報、これです。今、配置したボタンやテキストボックスのレイアウト、Gridの背景色なんかが自動的にXAMLに反映されていますね。XAMLは初心者にとってはHTMLのように見えますが、同じようなものだと理解していいでしょう。XAMLを直接書いても、マウスでデザインした時と全く同じGUIができます。

さぁ、Gridに配置したボタンをダブルクリックします。
Onclick
予想通り、クリックイベントのハンドラコードが表示されました。
ここに

textBox1.Text = "Hello!";

と入力します。

[デバッグ開始]ボタン押しま~す。
Photo_5

ブラウザが起動して…
Photo_6
おおお!Silverlightアプリケーションが動きました!

<今日のまとめ>
Silverlight特有の話がまだこれから出てくるわけですが、
とりあえずアプリケーションの新規作成、GUIデザイン、コーディング、デバッグ実行の方法は、簡単だということがわかりました。普通のexe形式のアプリケーション(Windows Formsアプリケーション)やWebアプリケーションと、全く同じ方法ですね。GUIのデザイン画面の初期画面の見た目がちょっと違うぐらいで。

(2)へつづく。。

| | コメント (0) | トラックバック (0)