Ajaxについては以前から興味があったが、なかなか使う機会がなかった。
先月Microsoftが「ASP.NET 2.0 AJAX Extensions 1.0」を公開してようやく実際に仕事(業務)で使える状態になった。
サンプルを動かしてみてその使い勝手の良さに感心した。これからのASP.NETでは必須のツールになることは間違いないだろう。
WebアプリにWindowsアプリ(リッチクライアント)の操作性を提供するのだから、一度でも使ったら元に戻る気には到底なれないと思う。しかもこれはフレームワークでの提供なので誰でも簡単に使える。まだ詳細に使ってみた訳ではないので本当の使い勝手は未知数だが試してみる価値は大いにあろう。
ASP.NET AJAXを勉強するなら山田祥寛氏とWINGSプロジェクトのものがいい。
1.「マイクロソフトのAjax対応フレームワーク「Atlas」入門」
※AtlasというのはASP.NET 2.0 AJAX Extensionsの開発コード名
http://itpro.nikkeibp.co.jp/article/COLUMN/20061110/253333/
2.「触ってみようASP.NET 2.0 AJAX Extensions 」
http://codezine.jp/a/article/aid/799.aspx
山田氏のAjax入門書はASP.NET以外にJava,PHPも解説している。
2007年02月28日
2007年02月11日
既存アプリのVista対応・改造計画:最終回「おまけ:必殺技の紹介」
これまで5回にわたりVista対応への方法を解説してきたが、そこまで丁寧にやってられないということも実際の現場ではあるだろう。
そこで安直に既存アプリを従来通り動かす方法を最後に紹介したいと思う。
そんな方法があるのなら先に言ってよ、と思う人もいるかもしれない。だが、この方法にはそれなりの問題(代償)もあるので、正しい知識を得て、その上でどうしても必要に迫られて行う場合以外はやるべきでは無いと考えている。そこをご了解願いたい。
方法は2つある。
第1の方法:「Administratorでログオンする」
Windows Vista のBusinessとUltimateのエディションを使っている場合にのみ可能な方法である。
HomeやHome PremiumではAdministrator自体が存在しない(XP Homeではセーフモードで使えた)のでこの方法は使えない。
Administratorアカウントは初期値では無効になっているのでまず管理ツールのコンピュータの管理を開いて有効にする。
Windowsのセットアップ時やユーザーの追加で作成したAdministratorグループのアカウントと違い、ビルトインアカウントのAdministratorだけがUAC(ユーザーアカウント制御)の呪縛から開放されている。しかし、当然ながらその分セキュリティが犠牲になっていることを忘れないで欲しい。
第2の方法:「UACを無効にする」
これは正直なところ最後の奥の手で通常は薦められない。が、どうしても動かしたい(動かせねばならぬ)アプリがある場合にのみ行うべきである。
またUACを無効にするとOSがしつこく警告を出すようになる。これもかなり煩わしい。
UACの無効化はコントロールパネルをクラシック表示にしたときのユーザーアカウントで行う。(下図)


無効になった途端に警告が出る。
そこで安直に既存アプリを従来通り動かす方法を最後に紹介したいと思う。
そんな方法があるのなら先に言ってよ、と思う人もいるかもしれない。だが、この方法にはそれなりの問題(代償)もあるので、正しい知識を得て、その上でどうしても必要に迫られて行う場合以外はやるべきでは無いと考えている。そこをご了解願いたい。
方法は2つある。
第1の方法:「Administratorでログオンする」
Windows Vista のBusinessとUltimateのエディションを使っている場合にのみ可能な方法である。
HomeやHome PremiumではAdministrator自体が存在しない(XP Homeではセーフモードで使えた)のでこの方法は使えない。
Administratorアカウントは初期値では無効になっているのでまず管理ツールのコンピュータの管理を開いて有効にする。
Windowsのセットアップ時やユーザーの追加で作成したAdministratorグループのアカウントと違い、ビルトインアカウントのAdministratorだけがUAC(ユーザーアカウント制御)の呪縛から開放されている。しかし、当然ながらその分セキュリティが犠牲になっていることを忘れないで欲しい。
第2の方法:「UACを無効にする」
これは正直なところ最後の奥の手で通常は薦められない。が、どうしても動かしたい(動かせねばならぬ)アプリがある場合にのみ行うべきである。
またUACを無効にするとOSがしつこく警告を出すようになる。これもかなり煩わしい。
UACの無効化はコントロールパネルをクラシック表示にしたときのユーザーアカウントで行う。(下図)
無効になった途端に警告が出る。
2007年02月10日
既存アプリのVista対応・改造計画:5回目「改造方法」
UAC(ユーザーアカウント制御)のダイアログで止まらずに自動起動させる必要のあるプログラムはどうすれば良いのだろうか。
結論を言えば、そのようなプログラムには管理者権限を必要としない処理だけをさせるようにするしかない。
書き込みは禁止されるが読み込みは問題なくできるのでレジストリに書き込まれた環境設定を読むだけなら管理者権限は必要ないのが幸いだ。
そして、環境を変更する時だけ、つまり環境設定画面で値を修正し「登録」ボタンを押したときにレジストリ等の管理者権限を必要とする書き込み処理を別プログラムに分離し、それにマニフェスト
を付けるのである。ユーザーインターフェースを持たないので、ユーザーからみれば保存時に確認ダイアログがでたような印象を受けるだろう。こうすることで煩わしいダイアログを必要最低限に抑えることができる。下図はこのモデルを表現したものだ。

あと、インストーラーによるプログラムの保存場所は管理者権限を必要とするProgram Filesフォルダではなく、ドライブのルートを使うように変更させるようにする。Oracleなどは以前からドライブのルートにフォルダを作成してそこに一式インストールするがそれと同じである。
これで通常の作業でファイルを書き出す必要がある場合でも問題なく行うことでき、外部プログラムから参照しても問題なくアクセスできる。
※VB6のSetup.Lstファイルを次のようにするとインストールフォルダの初期値が変更できる。
通常の場合
[Setup]
Title=HOGE Ver.1.0.0
DefaultDir=$(ProgramFiles)\hoge
AppExe=hoge.exe
AppToUninstall=hoge.exe
Cドライブのルートに作成する場合、DefaultDirを変更する。
DefaultDir=C:\hoge
結論を言えば、そのようなプログラムには管理者権限を必要としない処理だけをさせるようにするしかない。
書き込みは禁止されるが読み込みは問題なくできるのでレジストリに書き込まれた環境設定を読むだけなら管理者権限は必要ないのが幸いだ。
そして、環境を変更する時だけ、つまり環境設定画面で値を修正し「登録」ボタンを押したときにレジストリ等の管理者権限を必要とする書き込み処理を別プログラムに分離し、それにマニフェスト
を付けるのである。ユーザーインターフェースを持たないので、ユーザーからみれば保存時に確認ダイアログがでたような印象を受けるだろう。こうすることで煩わしいダイアログを必要最低限に抑えることができる。下図はこのモデルを表現したものだ。
あと、インストーラーによるプログラムの保存場所は管理者権限を必要とするProgram Filesフォルダではなく、ドライブのルートを使うように変更させるようにする。Oracleなどは以前からドライブのルートにフォルダを作成してそこに一式インストールするがそれと同じである。
これで通常の作業でファイルを書き出す必要がある場合でも問題なく行うことでき、外部プログラムから参照しても問題なくアクセスできる。
※VB6のSetup.Lstファイルを次のようにするとインストールフォルダの初期値が変更できる。
通常の場合
[Setup]
Title=HOGE Ver.1.0.0
DefaultDir=$(ProgramFiles)\hoge
AppExe=hoge.exe
AppToUninstall=hoge.exe
Cドライブのルートに作成する場合、DefaultDirを変更する。
DefaultDir=C:\hoge
2007年02月02日
既存アプリのVista対応・改造計画:4回目「何が問題なのか:その2」
前回、既存アプリが受ける代表的な問題点をあげた。それに対する一般的な対応策を紹介しつつ、実はそれでも問題が残ることを今回は取り上げる。
マシン固有の情報(HKEY_LOCAL_MACHINEレジストリとProgram Filesフォルダ、他にWindowsフォルダも同様)への書き込み制限を解除して書き込み可能にする方法は2つある。
一つはプログラムの互換性プロパティを開いて管理者権限を付与するもの。(下図参照)

管理者権限でログインしている筈なのに何故また管理者権限を付与する必要があるのかと思うかもしれない。UAC(ユーザーアカウント制御)では管理者でも通常は一般ユーザ(Usersグループ)で動いているのである。
Vistaでは下図のようなダイアログを頻繁に見るようになるが、これこそ管理者権限に格上げする表明なのである。

もう一つは、上記プロパティの代わりにマニフェストとよばれる外部ファイルを配置するものだ。
hoge.exeというプログラムがあるとしたら、マニフェストはhoge.exe.manifestという名前になる。(プログラムファイル名).manifestが命名規則になっている。これをプログラムと同じフォルダに配置する。
内容は以下の通り。ファイル名のところを変更するだけで他は共通で使える。(※注)

※requireAdministrator が管理者権限で実行することを要求する。
この処置を施すことで従来通りの動きが保証される。だが、これがまた別の問題を生むのである。
管理者モードに格上げされるのは自動ではない。必ず前述したダイアログで待ったが掛かる。
前回紹介した私のオンラインソフトのExit-WinやメルプリTなどは、Windows起動時に自動で起動し常駐するのが通常の使い方である。それなのに人手を介さないと先へ進まないのでは全く使い物にならない。
そこでどうするか。私の考えた一つの方法を次回紹介したいと思う。
※注:VB6のプログラムでもマニフェストは使えるが、ネイティブコンパイルしたEXEでないと使えないので注意。私のオンライソフトでネイティブコンパイルしたのは実は一つもない。というのもVB6のネイティブコンパイルはほとんど効果(速度)が期待できない中途半端なものだからだ。むしろファイルサイズが大きくなって起動に時間が掛かるマイナス面の方が大きいとさえ言える。(これはVB5が出た当時からの私の認識である)
マシン固有の情報(HKEY_LOCAL_MACHINEレジストリとProgram Filesフォルダ、他にWindowsフォルダも同様)への書き込み制限を解除して書き込み可能にする方法は2つある。
一つはプログラムの互換性プロパティを開いて管理者権限を付与するもの。(下図参照)
管理者権限でログインしている筈なのに何故また管理者権限を付与する必要があるのかと思うかもしれない。UAC(ユーザーアカウント制御)では管理者でも通常は一般ユーザ(Usersグループ)で動いているのである。
Vistaでは下図のようなダイアログを頻繁に見るようになるが、これこそ管理者権限に格上げする表明なのである。
もう一つは、上記プロパティの代わりにマニフェストとよばれる外部ファイルを配置するものだ。
hoge.exeというプログラムがあるとしたら、マニフェストはhoge.exe.manifestという名前になる。(プログラムファイル名).manifestが命名規則になっている。これをプログラムと同じフォルダに配置する。
内容は以下の通り。ファイル名のところを変更するだけで他は共通で使える。(※注)
※requireAdministrator が管理者権限で実行することを要求する。
この処置を施すことで従来通りの動きが保証される。だが、これがまた別の問題を生むのである。
管理者モードに格上げされるのは自動ではない。必ず前述したダイアログで待ったが掛かる。
前回紹介した私のオンラインソフトのExit-WinやメルプリTなどは、Windows起動時に自動で起動し常駐するのが通常の使い方である。それなのに人手を介さないと先へ進まないのでは全く使い物にならない。
そこでどうするか。私の考えた一つの方法を次回紹介したいと思う。
※注:VB6のプログラムでもマニフェストは使えるが、ネイティブコンパイルしたEXEでないと使えないので注意。私のオンライソフトでネイティブコンパイルしたのは実は一つもない。というのもVB6のネイティブコンパイルはほとんど効果(速度)が期待できない中途半端なものだからだ。むしろファイルサイズが大きくなって起動に時間が掛かるマイナス面の方が大きいとさえ言える。(これはVB5が出た当時からの私の認識である)


