2011年2月17日木曜日

MSI における [WINDOWSVOLUME] の挙動?

自社パッケージ製品のインストーラを VS2005 でせっせと作っていた時。

インストール時に表示される初期フォルダを変更しようと思って、ファイルシステムを表示させてからアプリケーションフォルダのプロパティで DefaultLocation があるのでそこを

[WINDOWSVOLUME][PRODUCTNAME]

と設定して、例えば C:\(製品名) みたいに初期表示しようと思ったんだけど、なぜかこう設定した場合、インストーラ起動時に「 ネットワーク上の [PRODUCTNAME] にアクセスできません」なんてエラーが発生するようになったんだよね。

これが [WINDOWSVOLUME] だけとかだと問題なく動作するんだけど、他を絡めた場合にこういうエラーがでるっぽい。

とりあえずの逃げとして C:\[ProductName] と設定したんだけど、ちゃんとした設定方法は知りたいところだわぁ。

2011年2月13日日曜日

[レビュー] JavaScript 本格入門

Amazon:JavaScript本格入門 ~モダンスタイルによる基礎からAjax・jQueryまで [大型本]

ひょんな事から拝見させてもらったこの本。元々仕事としてはほとんど JavaScript には関われていないのもあり、非常にためになりました。

タイトルにもあるとおり、JavaScript について基本をしっかりと押さえようというのがメインとなっていて、紙面の半分以上があてられています。Ajax や JSON については今でこそ花形というか有名になっていますが、あえてそこを重視するのではなく初心者の入門書というのを貫いた姿勢は非常にありがたいと感じます。

面白いのは入門書となっていますが決して入り口に留まった内容だけではなく、ある程度熟練した方にとっても手元に置いておきたい参考書として役に立つ内容となっているように思えます。適度にサンプルソースも含まれているので、人に教える場面でも役に立ちそうです。

文面が理解しやすいというのも入門書としてありがたいと思います。

正直に言えば自分用が一冊欲しいな・・・w
本当にわかりやすく、自分みたいに殆ど触れていない人間には物凄くありがたいのです。

P.S.
P.268「7-3.属性値を取得/設定する」の中段、
CSS クラスを表す属性は「class」ですが、これに対応する DOM プロパティは「cssClass」です・・・とあるのですが、これは className プロパティの誤りでしょうか?

2011年2月7日月曜日

第55回 CLR/H 勉強会~雪祭りスペシャル~ レポート

2/5 に行われた CLR/H 第55回勉強会についてのレポートです。
今回は非常に多彩な、そして多量な内容のため複数記事に分割しての更新となります。

レポート #1
ASP.NET MVC3 ハンズオン
「デザイナーって普段何やってるの?」
「ASP.NET MVC3 オーバービュー」

レポート #2
「Windows Phone 7 は Silverlight 4 の夢を見るか」
「ライトニングトーク」

レポート #3
「Internet Explorer 9 + HTML5」
「Azure 開発の極意」
「とある普通の HTML 5 を使ったサイトを作ったお話」

レポート #4:懇親会・アイスブレーク

利用したスライドなど

第55回 CLR/H 勉強会~雪祭りスペシャル~ レポート #4

2/5 に行われた CLR/H 第55回勉強会のレポート 第4部です。

懇親会+アイスブレークセッション

IMG_9281
今回は懇親会の最中、アイスブレークということで @SQLAzureJP さん、@normalian さん、@kamebuchi さん、@naoki0311 さんがそれぞれ事前に準備(または当日の無茶ぶりにより)餅ネタを披露していました。
IMGP3435
最初は @SQLAzureJP さん。懇親会で話し相手が見つからないことがありませんか?、とかなり身に覚えがある部分について話されました。私も人見知りの気がかなりあるので、こういうきっかけがあると助かるなぁ、などと思ったり。
個人的な話ですが、@SQLAzureJP さんの勤務先は私の今の勤務先、前の勤務先それぞれでお世話になっている企業で、かなり驚きましたw
IMG_9295
続いては @normalian さん。これからの開発環境は・・・という内容ですが、あまりにも流石な内容でありましたw 本領発揮ですw
IMG_9331
@kamebuchi さんは 2 連続での発表。最初は TechEd 2010 の際に行われた独自認証プロバイダについて。扱っているネタは非常に価値のある内容ですが、発言内容がまたも流石としか言えない内容であり、ここから @kamebuchi さん伝説が始まったと言わざるを得ませんw
IMG_9349
2 発目は同じく TechEd 2010 の船上パーティにて行われたもの。内容は別として見た目についてはグレーというか真っ黒でして、かろうじてこの写真を含む数枚が掲載可能という荒技を披露していましたw 「諸君、Azure は好きか?」ネタでどれだけの反応があったか非常に気になりますw
IMG_9392
そして @naoki0311 さん。まずは TechEd 船上パーティにて披露されたもの。それまでは北海道でしか通用しなかった「夜のクラウド」を一気に広めた犯人ですw
IMG_9426
そしてトリとして放ったのは伝説の LT
「家庭円満を保つためのセキュリティ活用術!(奥様コーディネート編)」!
北兄者を北兄者たらしめた内容が満載でした。久々に聞きましたがやはり面白いw
このような感じでハンズオン、セッション、懇親会と非常に濃い時間を過ごすことが出来ました。スピーカーの皆さん、参加された皆さん、スタッフの皆さん、大変お疲れさまでした。
そして、ありがとうございます!

第55回 CLR/H 勉強会~雪祭りスペシャル~ レポート #3

2/5 に行われた CLR/H 第55回勉強会のレポート 第3部です。

セッション4

Internet Explorer 9 + HTML5~ Web 開発はさらに次のステップへ! ~

IMGP3224
おなじみ @GeniusHirai による IE9 と HTML 5・CSS 3 についてのセッション。現在ベータとして提供されている IE9。前バージョンと比較してかなりの高速化が行われている点、内部構造の再設計、UIの 見直しなど大きなバージョンアップとなる事から始まりました。Windows7向けの機能も搭載されており、ジャンプリスト等が HTML 上の META として記載できるなど「おっ」と思わせる話題が多いのは流石です。
会場で「利用しているブラウザは?」とアンケートを取ったところ、意外にも IE より Chrome が多いという結果にw コメントの難しい状況になりましたw まぁこれは開発者が多いからであり、非開発者の割合が多くなると IE が一番多くなるのではないかな、と思います。
IMGP3260
中盤からは HTML 5 と CSS 3 について。HTML 5 登場の経緯から簡略化された文法、追加された UI 周りの機能をざっととは言え、殆どの項目について実際のデモを交えての説明で非常に明快で分かりやすかったです。
ブラウザ側が出そろうまでもう少しの時間がかかるでしょうが、HTML 5 や CSS 3 を利用してさらに Web アプリや Web サイトを発展させてみたい、そう思わせるセッションでした。

セッション5

Azure開発の極意(に至るまでの道のり)

IMGP3306
Azure MVP である @harutama さんと @normalian さんによる Windows Azure についてのセッションです。今回は Ustream 中継を行わないためなのか、色々な意味で全力を感じさせるセッションでした。
IMGP3355
Azure 登場までの流れや Windows Azure Platform と Windows Azure では指し示す範囲が異なる、昨今の追加機能など基本を含めた形で非常にわかりやすく面白いセッションであったと思います。途中で実際の事例として紹介された MSN 産経フォト では Azure + SIlverlight での例として良いインパクトがあったと感じます。この日撮影を担当してもらった私の奥さんも「こういうWebアプリが欲しい!」と感心していました。
私もようやく仕事として Azureに 関わっていける状態になったこともあり、MVP のお二人の話は非常に面白かったと感じています。勿論内容だけでなく、違うところでも非常に面白かったです。待ち受け画像とかにしてみたくなる写真があったりします(謎)

セッション6

とある普通のHTML5を使ったサイトを作ったおはなし。

IMGP3370
The Syodo というサイトを作られた @mayuki さんによるセッション。機器設定の問題もあり最終セッションへとなりました。IE 9 + HTML 5 のキャンペーンの一環として作成されたこのサイト、既に触られている方も多いと思います。このサイトは Windows Azure + ASP.NET MVC3 + HTML 5 + CSS 3 で作成されており、プロトタイプはなんと 1 日 2 日程度で作り上げたという事です。凄まじい!
IMGP3390
いかにして色々な技術を組み合わせたか、作っているうちに判明した問題点、実際に描かれている筆の軌跡は 1 種類の画像で構成している、等々恐らく今回参加された方々全員がすごい衝撃を受けた事と思います。感心しきり、と言うかなんというか。
言葉では表せないのですが、良い刺激を受けまくった感じがあります。ここまでできるように、というよりもこれを越えるものを作り上げてみたいな、と感じました。

第55回 CLR/H 勉強会~雪祭りスペシャル~ レポート #2

2/5 に行われた CLR/H 第55回勉強会のレポート 第2部です。

セッション3

Windows Phone 7 は Silverlight 4 の夢を見るか

IMGP3056
@shibayan さんによる Windows Phone 7 のセッション。全体を通して笑いを盛り込みながらも、Windows Phone 7 における開発についてを話してもらいました。
PC 版 Silverlight 3 のサブセット相当を搭載している、でもブラウザ上では動作しない、MVVM が(有志によるライブラリを利用しない限り)使えない、携帯の機能が呼び出せないものがある、等々実際に利用した開発を行う上での注意点や不満を軽妙なトークで行う楽しいセッションとなりました。
IMGP3062
全体を通して感じたのは、まだまだ発展途上というイメージでした。恐らくは次のバージョンアップにて色々と追加されることもあると思いますので、そこからが勝負かと。呼び出せない本体の機能がある、というのは人によってなかなか厳しそうです。
ですが、VS 上で開発ができるというのはやはり大きなメリットだと思います。理想は Silverlight 4 以降を搭載してくれる事ですが、今後どうなるかは注目かと思います。

ライトニングトーク

今回は総勢 7 名による LT でした。

LT-1:NuGet パッケージを作ってみよう(@jsakamoto さん)

IMGP3091
QR Code Helper を作成し Nuget を通じ全世界に公開するにあたり体験されたことを交えた内容で、ところどころに潜む落とし穴についても話されました。承認申請を Twitter で送る必要があるとは・・・。また最後に話された「英語については支離滅裂かどうかもわからないので恥ずかしくありませんでした!」が非常になるほどと思いましたw 私も英語は全然ダメダメですので全く気にする必要はないというのが。

LT-2:ワークステーションロック?(@twit_ahf)

IMGP3118
私のLTでは、ワークステーションのロックを検知するのに ServiceBase クラスでなく SystemEvent クラスでやりましょう、という内容を話しました。後半では追加要素として WCF 名前付きパイプでプロセス間通信するのは非常に楽、という点を話させてもらいました。今回も反省しきり。

LT-3:5 分で分かった気になるかもしれない Kerberos 認証(@kamebuchi さん)

IMGP3124
@kamebuchi さんは得意分野である認証回りについての LT でした。普通に話すと 2 時間とかもっと時間を必要とする内容を LT で行うあたり、流石としか言いようがありません。そして驚くのは、本当に分かった気になってしまった事ですw これは何の魔法なのでしょうかw

LT-4:夕方ぐらいのクラウド(@mentaro さん)

IMGP3157
個人的に大ファンな @mentaro 社長の LT。自己紹介で「真面目なビジネスの話です」と言った直後からかましてくれたり、「某北兄者がシバかれる理論値は毎月 80 回!」と今回は中盤までにかなりの仕込みを感じました。締めでは真面目に「ゲームのクラウド対応」という点について話され、そのアンバランスさが面白かったです。

LT-5:netduino (@ishisaka さん)

IMGP3183
netduino というオープンソースアードウェアについての LT でした。個人的にこういった機械を操るとか信号を送るとかは非常に好きなのもあり、かなり興味津々で見させてもらいました。.NET Micro Framework を利用しているというのも驚きで、これは機会を用意して触れてみたいと思いました。機械いじりとか好きな人は大体興味を示すのではないかな、とも思ったり。

LT-6:フリーソフトを公開すると言う・・(@furuya02 さん)

IMGP3195
自分の中ではかなり著名な BlackJumboDog を作成した @furuya02 さんは、BJD を作り公開した事にまつわる色々を話してもらいました。ソフトを公開すると著名な方からメールが届くとか某巨大掲示板にスレが立つとか嬉しいことも多い反面、電波なメールが来る、脅迫ぽいメールも来る、悪徳業者に利用されるなどデメリットもあるとのことで、聞いているだけで「これは大変だ…」と言わざるをえないというかなんというか。でも「褒め殺し」が可能というのが面白かったです。それと @furuya02 さんだけが「自動スライド」で行われていました。これってかなりスゴイことだと思います。私はかなりその場で話す内容が変化するというか、ちゃんと考え切れていないので同じスライドで話してもタイミングはバラバラなのです…。

LT-Ex:MVP Award Program (@yukihs さん)

IMGP3218
最後に MS MVP 事務局の @yukihs さんによる MVP アワードプログラムのご紹介。今回の勉強会には MVP の方が 4 名集まったという事もあり、MVP に興味を持たれた方もいるかと思います。オンライン、オフラインでの活動を審査するとのことで、興味のある方は是非!という内容でした。

おやつタイム

今日のおやつはケーキです!
IMG_9270

第55回 CLR/H 勉強会~雪祭りスペシャル~ レポート #1

P2050383
2/5 に行われた CLR/H 第55回勉強会レポートです。今回はボリュームがありすぎるので、三部構成にてレポートします。

ハンズオン1
ASP.NET MVC3 & jQuery ”超”入門ハンズオン
~Ezotter を作ろう~

P2050376
MS エバンジェリスト @chack411 さんによるハンズオン。最近リリースされたばかりの ASP.NET MVC3 と jQuery を利用して Twitter っぽい何かを作ろう、というハンズオンです。事前にしっかりとしたテキストが用意されていたこともあり、非常に理解しやすい内容だったと感じました。この場で発覚した悲しい事実、VB と C# ではプロジェクトテンプレートの内容が微妙に異なっていて VB 側は最新の記述になっていない、というのも判明w
実際に受けてみて思うのは MVC3 ではかなり楽にサイト構築ができる点。VS でのサポートがかなりよくできているのもあるので、一度触ってみるとその良さがわかる気がします。そして今回の資料は、社内教育とかで利用したいくらい素晴らしくわかりやすい!
P2050381
jQuery によって簡単にエフェクトなどが行える事も体感でき、色々な事が実体験できた非常にありがたいハンズオンだと思いました。

セッション1

デザイナーって普段何やってるの?

~とある駆け出し UX デザイナーの場合~

P2050391
@coddledegg さんによる CLR/H にしては珍しいデザイナー側からのセッション。UX の単語を聞く機会も増えている今、開発側な自分としても UI デザインについては「どうすればセンスいい画面が作れるのだろう?」と考えていますので、実際のところ凄く気になっていたセッションでした。
開発側としては中々お目にかかる事のない、デザイナー側はどのようにして仕事を行っているか、という内容を @coddledegg さんの立場に合わせて説明していただきました。
一番心に残ったのは「デザイナーもプログラマと同じく良い作品を数多く見る事でセンスが養われる」という言葉でした。私はそれまで、デザインセンスというのをどこか先天的な才能ととらえていたので半ばあきらめていたところもある(w)のですが、この言葉でかなり救われたところがあります。
P2050414
理論的要素もあり才能だけではない、やり続ければある程度まではできるようになる。言われてみると当たり前なのかも知れませんが、非常に勇気づけられました。@coddledegg さんの Blog においても参考にするとよい記事へのリンクが用意されていますので、このあたりからまずは勉強してみようかと思いました。

セッション2

ASP.NET MVC3 オーバービュー

IMGP2951
午後に入って最初のセッションは @chack411@naoki0311 による ASP.NET MVC3 を紹介するセッションです。ASP.NET についての復習から始まり、ASP.NET AJAX と動的データについてをがさっとスルーし、MVC3 についてのみに集中したセッション・・・の予定でした。セッション途中では「ここで○○時○○分の予定」とスライドを出すか所があったのですが、そこで既に 10 分押しになっており、以後はやや駆け足に。
途中 MVC モデルや、jQuery についても説明を挟み、Razor や @naoki0311 さんお勧めの機能などなど盛りだくさんに説明が行われました。ヘルパー周り、そして Nuget については興味を持たれた方も多いのではないでしょうか。その中で、 @jsakamoto さん作成の QRCode Helper を紹介していました。
IMGP3034
午前中のハンズオンを受けているので尚更 MVC3 の良さが感じられたように思えます。これまでの Webフ ォームを用いた開発と、MVC を利用した開発の違いを説明し、どちらかを選択するのではなく適材適所によって使い分けるのが大事というのが、まさにその通りだと感じました。

第55回 CLR/H 勉強会にて利用したスライド等

2/5 に行われた CLR/H 第55回勉強会にてLTを行いました。その際のスライドをアップしておきます。
ダウンロードはここから(SkyDrive)
また @stknohg さんがまとめてくれた Togetter はこちら
さらに @stknohg さんのサイトでも記載されている他の方々の資料についても転載しておきます。
セッションにて利用された資料
ASP.NET MVC3 ハンズオン資料@chack411 さん
Internet Explorer 9 & HTML 5@GeniusHirai さん
Azure 開発の極意(に至るまでの道のり)@harutama さん @normalian さん
LTにて利用された資料
netduino@ishisaka さん
5分で分かった気になるかもしれない Kerberos 認証@kamebuchi さん

2011年2月2日水曜日

VIsta 環境以降での SendKey 代替案

VB6 製な AP で Vista 環境以降に限定して起きる問題として、MS-IME の挙動がおかしくなるというのがあるんだよね。勤務先では IME 2007 をやめて ATOK を購入させることで対応させていたけど、根本的な問題は恐らく Sendkey Win32 API を利用しているからという気がする。

自分のPJではSendkeyを利用せずにKeybdEvent API を利用してEnterキーとかの制御をしているんだけど、こっちでは同様の問題は発生していないんだよね。定義はこんなの。

Private Declare Sub KeybdEvent Lib "user32" Alias "keybd_event"
(ByVal bVk As Byte, ByVal bScan As Byte,
ByVal dwFlags As Long, ByVal dwExtraInfo As Long)

利用するときはこんな感じ

Private Const KEYEVENTF_EXTENDEDKEY = &H1
Private Const KEYEVENTF_KEYUP = &H2
Private Const VK_TAB = &H9 '[TAB]
Private Const VK_SHIFT = &H10 '[Shift]

Call KeybdEvent(VK_TAB, 0, 0, 0)
Call KeybdEvent(VK_TAB, 0, KEYEVENTF_KEYUP, 0)

こんな感じで使ってあげればTABを押して離したというのをSendkeyと同じように実現してくれる。で、使っている感想としてはSendkeyであった動作不具合がこっちだと再現できないので、結構Vista Windows 7 とかでも対応としてやっていいような気がする。