9/13に開催されたtechbank.jp & Visual Basic 中学校 & HIRO's.NET 合同勉強会に参加してきました!
techbank.jp &Visual Basic 中学校 & HIRO's.NET 合同勉強会参加者、スピーカー、スタッフの皆様お疲れさまでした。
以前、わんくまメンバーでいらっしゃったHIRO's.NETの管理人のHIROさんにやっとオフラインでお会いできました。岩手県からはるばる来られたそうです。
わんくま勉強会とはまたかなり違う雰囲気でした。参加申し込み100人ということで、(実際来場したのは86名だったそうです!)
最初のセッションはHIROさんの「PowerShell入門 」です。
PowerShellとは、コマンドプロンプトにかわる新しいコマンド ライン シェルです。
# Live Searchで[PowerShell]を[Microsoft.com]の中から検索してみると..
#公式なPowerShellのトップページはどこなんだろう・・・ここなのかな・・・?→「Windows PowerShell でのスクリプティング」
HIROさんによる「従来のコマンドプロンプトのコマンド名とは違い、PowerShellのコマンド名は“動詞-名詞”というように、命名に一貫性がある」というご説明がとても説得力がありました。
まず、「まずは、Get-CommandとGet-Helpを覚えればいい。」という解説は印象に残りました。これらを覚えれば、いろいろ独習できますね!
Get-Commandは使用できるコマンドを確認できるコマンドレット。
[使用例]
get-command | more
Get-Helpはコマンドの詳細を確認できるコマンドレット。
[使用例]
get-help get-help -detailed | more
次に、
- ショートカットキー[↑][↓]コマンド履歴捜査、[Tab]による自動補完、[Ctrl]+[C]で中断の様な入力支援機能について。(コマンドプロンプトのよい部分は引き継がれているんですね!)
- 戻り値はあくまでも「オブジェクト」であり、(コマンドレット).メンバ名で各メンバにアクセスできること。(表示は.ToString()した結果ってことですね。)
- パイプ(|)で左のコマンドの出力であるオブジェクトを、右のコマンドの入力にできること。
[使用例]
Get-Date | Get-Member
などのご説明されていました。
次にSort-Objectや、Where-Objectの使い方を実際に実行しながらのご解説されていました。
そして、PowerShellのスクリプトの作成について、変数は名前の先頭に'$'をつけること(例:$a=1)型は代入時に右辺から自動で決定されること、配列は右辺をカンマで区切りの列にすればいいこと(例:$a=1,2,3,4)制御構造の説明、スクリプトファイル(.ps1)の実行のためのセキュリティ確認・設定について解説、
関数の定義や実行をデモを交えながら解説されていました。
とても、参考になりました。
詳細はHIROさん運営の↓で勉強しましょう!
PowerShell from Japan!!
http://powershell.hiros-dot.net/
次は
techbank.jp管理人
けろさんの「パフォーマンスチューニング術ASP.NET+SQL Server編」でした。
ASP.NETの仕組みの観点からみたパフォーマンスチューニング方法や
やSQL Serverのパフォーマンスのボトルネックのみつけ方のご解説でした。
けろさんが冒頭でVB使いかC#使いなのか、受講者に挙手してもらったのですが、
僕ととっちゃん(?)以外、VBerでした。この点もわんくま勉強会とは違います。
C#erがアウェイ感を感じてしまうとは!
このあとのデモで、けろさんが会場から実際に操作して見たい人を募ったのですが、手を上げたのはかるあさんぐらいで、かるあさんが登場w(仕込みじゃないよね?w)
けろさんの指示に従い、かるあさんがPCを操作、かるあさんの出番が終わり、けろさん操作にもどって、けろさんのマシンが非常に重くなってしまい(原因不明)セッションは中断、急きょとっちゃんのセッションになりました・・・私も携帯Twitterやめて、ビデオ係りに…
さて、われらが(?)とっちゃんの「Windows Installer概要」です。(とっちゃんもアウェイ感を感じてたに違いないw、もちろん、スライドわんくまのテンプレでした・・・だって、昨年大阪で…)
まず、そもそもインストーラとはなんなのか。
「install」「installation」という言葉は辞書にもあって、「installer」なる言葉は辞書にないそうです。つまり造語だそうです。
Windowsにおけるインストーラの役割の変遷。
「(ソフトの立場で)自分が動けばそれでいい→アンインストールも…→アップデートも…→安心して使える、他のソフト共存、使いたいときに使える、ユーザーのミスをフォローする、アップデートに耐えられる仕組みへ(←今ここ)」だそうです。
従来のインストーラとの違い、メリット・デメリットの解説。
デメリットのところで「日本語資料が少ないない!」というのは盛り上がっていましたw
バージョンアップするデモなどがあり、また解説に戻って、ファイルの種類(msi,msp,mst,msm,idt,pcp,cub)、じつはこれら中身はRDBであり、実行ロジックと構成データに分かれていて…(略)…これらが、ソフトウェアの何のプロパティに対応しているかの解説などがありました。
インストーラ開発上の注意(「ガイドラインに目を通せ」、「Componentは不変でなければならないなど」)やバージョンアップについての解説がありました。
ツール(Install Shield,Visual Studio, WiX, ORCA)の紹介や、技術情報のリンクの紹介がありました。
[関連リンク(とっちゃん資料からパクパク)]
[ツール]
InstallShield、InstallShield Express
http://www.networld.co.jp/is/
Visual Studio
http://www.microsoft.com/japan/msdn/vstudio/
Windows Installer XML (WiX) toolset
http://wix.sourceforge.net/
[資料]
Windows Insatller SDK
http://msdn.microsoft.com/en-us/library/cc185688(VS.85).aspx
Role-based Guide to Windows Installer Documentation
http://msdn.microsoft.com/en-us/library/aa371367(VS.85).aspx
InstallSite
http://www.installsite.org/
Designed for Windows ロゴガイド(XP)
http://www.microsoft.com/japan/winlogo/default.mspx
DOBON.NET
http://dobon.net/vb/dotnet/index.html#deployment
@IT(Web記事)とっちゃんの記事「あなたのアプリにはどのインストーラが最適?」
http://www.atmarkit.co.jp/fdotnet/vblab/compareinstaller/compareinstaller_01.html
[Blog]
Windows Installer Team Blog
http://blogs.msdn.com/windows_installer_team/
InstallSite Blog
http://msmvps.com/blogs/installsite/
社本@ネオニート Blog
http://www.ailight.jp/blog/sha256/
とっちゃん’s Blog
http://blogs.wankuma.com/tocchann/
http://tocchan.cocolog-nifty.com/blog/ (旧館)
[コミュニティ]
Windows Installer/WiX/InstallShield メーリングリスト
http://www.freeml.com/msi
InstallShield ユーザ ML
http://groups.yahoo.co.jp/group/is-user/
MSDN フォーラム
http://forums.microsoft.com/msdn-ja/default.aspx?SiteID=7
つづいて、Visual Basic 中学校 の管理人、るきおさんのセッションです。るきおさんは貴重な(?)MSMVP for VBな方です!
- GDI+による描画機能はお遊びではなく業務にも使えること。
- 3Dだとか、高速描画はできないが、2Dなら高機能であること。
をうったられていました。
- コーディングと実行のデモを交えながらの「GDI+でこんなこともできる」ことの解説でした。
- Paintイベントハンドラで描画するデモ
- ListBoxの項目ごとに書式を変える:項目データのによって文字色を変更するデモ
- さらに、文字ではなく矩形を描画することによって棒グラフを表示するデモ(そのアイディアすばらしいですね。これには会場にいらした小高さんも参考になったとおっしゃっていました。)
- 四角くないフォーム
- 印刷(PrintPageイベントハンドラ)
- ASP.NETでグラフを表示するでも、DBから取得したデータによって、動的にGIFを生成、保存、イメージコントロールに設定する方法、
ジェネリックハンドラ(.ashx)を使って応答ストリームに直接保存する方法(サーバーにファイルを作らなくてよい)の2つのデモ。
聴衆が無理なく聞いてわかるペースでお話しされていました。
最後に、けろさんのセッションの続きです。(結局、マシントラブル原因は不明で再起動したらしいw)
パフォーマンスを確認・向上のためにまずはtrace.axdでHTTPの要求・応答の所要時間を確認すること。(事前にweb.config ののenable="true"その他の設定をしておく。)
応答HTMLのサイズを減らすためにコントロールのIDを長くしない、ネスト階層を深くしない、表示のみ(サーバに値を返す必要のない)コントロールViewStateは無効にすること、特に繰り返し系のコントロールでこれらの対応をとること。
…を説明されていました。
またViewStateをセッションステートに保持させる方法(SessionPageStateAdapter)の紹介とデモをされていました。
また、ASP.NETでは状態保存場所として、InProc(同一プロセスのメモリ)、StateServer(ASP.NET 状態サービス),SQLServer,Custom(自分で実装)があり、どれも一長一短があるがとりあえずはStateServerがおススメだそうです。ただしSession_OnEnd イベントが走らない、第3者がデータを取得可能などのデメリットもあります。
そのほかのASP.NETチューニングとして、更新頻度が少ないキャッシュかできるものはキャッシュする。不要な例外を発生・処理させない。1つのページでWebPartsを多用しない。…ことを解説されていました。
そしてSQL Serverのボトルネックの発見方法について、「まずは実行プランを確認する」こと。
#この辺でとっちゃんが時間心配し始めましたw18時に会場を出なければならないので、おしてたのでw
テーブル構成によるボトルネックの場合には「SQL Proilerとチューニングアドバイザ」が役にたつこと。
…などを説明されていました。
SQL Proilerとチューニングアドバイザ、実行プランのデモをされてました。
まとめとして、パフォーマンスの問題が起きたときには「計測する癖をつけること」を強調されていました。
[関連リンク(けろさん資料からパクパク、以下の記事は書かれた時期は古いですが今でも参考になります。)]
サイトの動きをスムーズに保つために気を付けたい ASP.NET の注意点トップ 10
http://www.microsoft.com/japan/msdn/msdnmag/issues/06/07/WebAppFollies/
Pattern&Practices “ASP.NET パフォーマンスの向上”
http://www.microsoft.com/japan/msdn/enterprise/pag/scalenetchapt06.aspx
その後の懇親会もかなり盛り上がっていました。わんくまとは参加者層がまた違ってこれもまた面白かったです。
豪華景品(書籍、けろさんのサイン入り著書、アレなど)があたるじゃんけんでは、けろさんが強すぎて、何回も最初からやり直しとなり、5回目ぐらいで最終的にはあいこだった人に決まったという一幕もありましたw
景品にご当選された方おめでとうございます。
楽しみました!勉強になりました!元気でました!
今回3つのコミュニティともオフライン勉強会は初めてだったそうですが、大成功だと思います。
ぜひ近いうちに2回目やってください。けろさんに聞いたら1年後とおっしゃっていましたが、とっちゃんは年に2回ぐらいがいいんじゃないかとおっしゃっていたような・・・