2010年10月31日日曜日

CLR/H 第51回 勉強会レポート

10/23に行われた勉強会のレポートです。

1:WebMatrix についてお話しませんか?
@jsakamoto さんによる WebMatrix を早くも取り上げたセッションです。今回は Microsoft Office Live Meeting を利用し遠方からもリアルタイムに参加できるよう試みたセッションでした。

まだベータ2ながらも今までと比較してかなり簡易な web サイト開発が行える点が非常に気になるWebMatrix。セッションの中ではその簡易さから「誰が利用するのか?」と言った、LightSwitch の際にも存在した問題が同じようにあるのが印象的でした。
今までの経緯や、Web Platform Installer を利用しての環境構築、利用されるデータストアなどに重点を置きその手軽さを垣間見た面白いセッションでした。
ただ個人的な感覚として、非技術者が利用するには微妙なポジションかな、と感じています。低予算で開発するようなケースには向いていると思いますが・・・。

ただ色々な事が簡易にできるのはかなり面白いツールとなると思いました。


Ex:おやつタイム
CLR/H恒例のおやつタイム。今回はたい焼きですー。

2:It's a SmallBasic
@salvage さんによる教育用言語 Small Basic についてのセッションです。

Small Basic という開発向けではなく教育向けとしてリリースされた言語についてのセッションで、.NET アセンブリを作る機能があったり、同じく .NET アセンブリを利用する機能があったりと、丁度 BASIC からプログラムに触れることになった私としては、非常に魂揺さぶられる内容でした。

IDE がかなり作り込まれているのと、言語仕様として非常に簡潔になっている点。BASIC言語の流れを感じさせる物で、アイデア次第ではもっと色々な事ができそうでした。ただ残念ながら色々な事情が重なって、機能追加するとか行おうとすると資料がない等の憂き目にあうというのが、全く持って残念です。

意外と新人研修あたりで使わせるというのも面白いんじゃないかな、と思ったりもしました。

3:契約による設計と Code Contracts 入門
@zecl さんによるCodeContractsというプログラム設計についてのセッションです。

いかにプログラムからバグを無くすかという話が主題で、そこから単体テストツール等に繋がる・・・予定だったのですが、参加者含めていいテンションになりかなりの前半部分で終了してしまいました。

事前条件などを組み合わせることにより、できるだけコンパイル時にはバグ発生の可能性を無くしていこうという考え方なのだそうですが、「Null はない」とかかなり衝撃の強い思想だったことが印象的です。私は DB の3値思想が体にしみこんでいるので、Null がないことのほうがどうにも・・・w

ただそのあたりがあるからこそ、バグが発生する可能性も高くなるという点は非常に同意ですので、個人的にももう少し勉強してみたいな、と感じました。

終わり際には @zecl さんがこの日のために用意されていたサンプルプロジェクトが数多くあった事を見せて貰ったのもあり、是非再度セッションを行って貰いたいなぁ、と思います。

2010年10月20日水曜日

ワークステーション(デスクトップ)のロックを検知

たまーにクライアントやターミナル環境を監査するようなAPが必要になった時に、ログイン・ログアウトと同じくらいロックしたことを検知したいときがあるんだよねぇ。

マネージでやる場合、こんな感じ。

Imports Microsoft.Win32

(中略)

AddHandler SystemEvents.SessionSwitch, AddressOf SessionSwitch

(中略)

Private Sub SessionSwitch(ByVal sender As Object, ByVal e As SessionSwitchEventArgs)
    Try
        Select Case
e.Reason
             Case SessionSwitchReason.SessionLock
                Debug.WriteLine("SessionLock")
           Case SessionSwitchReason.SessionUnlock
                Debug.WriteLine("SessionUnLock")
       End Select
    Catch
ex As Exception

    End Try
End Sub

大体こんな感じで、静的クラスの Microsoft.Win32.SystemEvents クラスの SessionSwitch イベントを利用してあげればOK。

もっと楽にやろうとするなら・・・System.ServiceProcess.ServiceBase を継承して、ってトコだろうなぁ。

2010年10月9日土曜日

CLR/H #50 勉強会の追記?


これが今回のおやつタイムに提供されたものの一つ、エクレア。


実は勉強会の最中、札幌の空はこのように珍しい色に染まっていました。写真だと少し変わって見えますが、ピンクというか紫というかちょっと普段の夕暮れとは異なる色合いでかなり綺麗。

2010年10月6日水曜日

2010年度 無償環境でシステム作成

以前は VS2005 + VWD2005 + ReportViewer + SQL Server Express という構成で無償ながらもかなりのシステム作成ができていたんだけど、VS2010 が登場してその様子はちょっと変わったんだよね。

ネックになるのは ReportViewer での帳票作成。VWD2010 で対応しなくなったのがなぁ・・・。やるとしたら次の二通り。

  • VWD2008 + ReportViewer 2008 コントロール
  • ReportBuilder3.0で作成→名前空間の手作業による変更

このどっちかになるかな。ReportBuilderで生成した RDLC は VS で生成する RDLC とバージョンの扱いが異なる(構造はどうやら同一)なのでそこだけ対応すればOK。

2010年10月3日日曜日

CLR/H 第50回 勉強会レポート

9/25 に行われた CLR/H 第 50 回勉強会のレポートです。
1:Visual Studio 2010 で最速RIAアプリケーション作成? (スライド)
インフラジスティックスジャパン株式会社より池原さん( @Neri78 )のセッション。出だしに軽いジャブを含ませたのですが残念ながらヒットせず…。セッションの題材は現在ベータ 1 として提供されている Lightswitch でした。
最初から「 5分で作る!」というデモを用いて Lightswitch の手軽さを説明。LT 用にも見えるタイマーをあらかじめ用意した上でデモに臨みました。実際に 5分という短い時間の中、簡易なデータエントリ AP を動作するまでそれほど大した操作もせずに行えるあたり、Lightswitch といツールの可能性が見えた気がします。Azure にも対応しているという事ですので、今後 Lightswitch を利用し SQL Azure 上のデータを利用する AP を作成する事も必要になるかも知れません。
またカスタマイズ関係についても言及され、「エンティティ間での値計算などを行う際にコードでの記述が可能」「実行しながらの UI カスタマイズが楽」「検証ロジックを独自コーディング可能」というメリットと、「完全カスタマイズは難しそう」というデメリットを説明されました。ただしカスタムコントロールを利用できるので項目単位であれば色々な事ができそうだという事(勿論ベータ 1 だからまだどうなるかは分からない)で、今後も注目する点は多いように思えました。
Lightswitch 自体は Silverlight を利用しているので、NetAdvantage for Silverlight Data Visualizaion に含まれている地図コントロールを Lightswitch 上にて利用するデモも行われ、別途コントロールを利用する事により純粋に Lightswitch のみで構築するよりもかなり UX に富んだ UI を構築できる事を見せてもらえました。既に Silverlight で AP 開発を行っている場合、Lightswitch を利用する事はかなりメリットがありそうだ、と感じました。
セッションの最後では「 Lightswitch は誰が使うのでしょうか? 」という質問が投げかけられました。個人的には「非開発者であり ITPro が主ターゲット」と見ていたのですが、現時点では公式アナウンスもなく海外でも明言はされていない様子。ただカスタマイズを行うにはある程度知識が必要だという点、Visual Studio の操作を知らないと難しいのではないかという点があることより、やや開発者向けなのではないかという雰囲気が感じられました。会場であがった意見としては「 Access と同じ層を狙っているのでは?」という意見もあり、今後の方向性が注目されるところです。

2:Lightning Talks

今回は告知宣伝系と普通に LT とが混ざった形となっていました。

A) @tenki28 さんの 「SQLDO コミュニティ紹介」
B) @twit_ahf による 「伝票入力にまうわる失敗」
C) @mentaro さんの 「起業までの道のり」
D) @Tocchann さんの 「わんくま同盟紹介」
E) @fukuchima さんの「和風で行こう!」
F) @Neri78 さんの 「NetAdvantage 製品紹介」

最近起業した @mentaro さんの LT は非常に濃厚な話ですが、軽快な口調でサクサクと行われたのが印象的でした。
「半年間無収入で!」というのが物凄く衝撃的です。実際に起業されている方の言葉というのもあり、物凄く説得力がありました。
@fukuchima さんの LT は Tech Ed Japan 2010 近辺で一部界隈を賑わしたキーワードが元ネタになっていた、というのを後日知りました。@fukuchima さんは自社製品である InputMan での思いやりある UX というスピーディかつテンポが良い喋りが印象的でした。ネタも適度に盛り込まれていましたし。

Bonus Stage:おやつタイム

CLR/H と SQLDO、双方のコミュニティが勉強会を行う際に「必須」であるおやつタイムは今回も万全。ドーナッツやロールケーキなどが飲み物と共に振る舞われています。

3:WiX toolset で始める WIndows Installer 開発入門(スライド)
わんくま同盟より来ていただいた高萩さん( @Tocchann )のセッション。「インストーラとはどのようなものか」に始まり実際にインストーラを作成するデモまで行われたセッションでした。
インストーラと言われるものについて、WIndows 以前から現在にいたるまでをざっと説明し、そこを踏まえた形でインストーラに求められるものを定義しました。インストーラで行うべき事、行うべきではない事を改めて押さえる事で Windows Installer で何を行うかというのを分かりやすく説明してもらえたと思います。
リレーショナルデータベースであり、作成時も実行時もデータベースとしてアクセスを行い動作するという、Windows Installer を利用した事のない方には驚かれる部分や、Product・Feature・Component と製品を構成する要素の説明。WiX toolset を利用するための環境構築など、普段インストーラに触れてない方を主軸にした貴重なセッションでした。
また現役 MVP である高萩さんが参考にされている資料についても補足説明があり、非常に有益なセッションでした。Designed for Windows XP を参考にするのが迷った際の指標となる、というのは非常にありがたい情報です。

Visual Studio 上で XML を直接編集してのインストーラ作成をライブコーディング的に行うことで、思っているよりも簡単にできるという事を目にすることができたと思います。

高萩さんのセッションで面白いと思ったのはその進め方でした。スピーカー席からの喋りだけではなく、参加者側へ視線や体を向け、「参加者達と一緒に進めている」と感じさせる方法で、これは喋る側へと回った際には是非実行してみたいと感じました。
個人的に業務としてパッケージ製品を作成しているのもあり、多少は Windows Installer と触れていたのですが、改めて体系だったセッションを行っていただけたのが非常に有難かったです。
パッケージ製品だけに限らず業務システムを作成する人にとっては、結構利用する機会が多いかと思っていたのですが、.NET になって配布が楽になったことも手伝いあまり多くないのかも知れません。ですが利用することにより、さらにしっかりとした配布が可能になる点は大きいと思います。是非利用して貰いたいものです。

4:Windows フォーム脳から WPF 脳への移行(スライド)
グレープシティ株式会社の八巻さん( @yamaki00 )のセッション。Windows Forms 時代におけるプログラミング方法から、WPF 時代における方法へどのように切り替えていくか、というセッションでした。
WPF 時代になって「データを起点に考える」という思想の変更が重要、GUI を起点とするのではなく「データをどのように視覚化するか」という、逆の発想が重要だというのが全体を通して言われたかった事と思います。
丁度 LT にて私が「データバインディング大事!」という内容を扱った事もあり、改めてデータバインディングがこれからも大きな影響を与える事が実感できたと思います。

データバインディングの基本、そしてそれを用いた画面側のロジックを変更せずに表示内容を切り替えるデモ。そして画像の一覧表示機能を持つ AP の実装デモ。余談ですが非開発者である今回のカメラマンは、このデモが一番わかりやすく興味を持った、と言っていました。
また最近話題にあがることが増えてきている、MVVM についても「重要なのは目的とその考え方」とこだわりすぎないことを言われました。セッション中に言われた最大の目的は「テストを行いやすくする」事。開発者であれば非常に納得する話です。
しかしセッションのスライドにて、某漫画のネタを随所にちりばめてきたこともあり非常にインパクトの強いセッションであったと感じます。良い意味で反則。

Extra Stage:抽選会

今回は各スピーカーの方々やスポンサー企業様から提供された品々が多く、一人一つは何かがあたるというすさまじい状態となっていました。提供してくださった皆様にはこの場を借りてお礼申し上げます。