<?xml version="1.0" encoding="utf-8" ?>
<feed version="0.3" xml:lang="ja" xmlns="http://purl.org/atom/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/"><title>LightSwitch Developer</title><link rel="alternate" type="text/html" href="http://lightswitch.jp/" /><modified>2012-05-18T11:28:16+09:00</modified><tagline>Visual Studio LightSwitchは、データ主体のビジネス アプリケーションを迅速に開発するためのソフトウェアです。
このWebサイトは、LightSwitch開発に関する情報を提供するサイトです。</tagline><generator url="http://jugem.jp/">JUGEM</generator><entry><title>散在するユーザーアプリケーションの管理・移行</title><link rel="alternate" type="text/html" href="http://lightswitch.jp/?eid=41" /><id>http://lightswitch.jp/?eid=41</id><issued>2011-11-29T12:05:00+09:00</issued><modified>2011-11-29T03:09:49Z</modified><created>2011-11-29T03:05:00Z</created><summary>EUC/EUDの拡がり
Microsoft Excelや Microsoft AccessなどのOfficeソフトの利用が拡がり、EUC(エンドユーザーコンピューティング)、EUD(エンドユーザー開発）も盛んになりました。

もともと Excelは表計算ソフトなのですが、文書作成(本来は Microsoft Wordの領域)や ...</summary><author><name>lightswitch</name></author><dc:subject>LightSwitch製品紹介</dc:subject><content mode="escaped" type="text/html" xml:lang="ja"><![CDATA[<h3>EUC/EUDの拡がり</h3>
Microsoft Excelや Microsoft AccessなどのOfficeソフトの利用が拡がり、EUC(エンドユーザーコンピューティング)、EUD(エンドユーザー開発）も盛んになりました。<br />
<br />
もともと Excelは表計算ソフトなのですが、文書作成(本来は Microsoft Wordの領域)や スケジュール管理(本来は Microsoft Project)などにも利用され、資産管理台帳やスケジュール管理表やToDoリストなど様々な用途で活用されています。<br />
<br />
また、Lookupなどの関数やマクロやVBAといった プログラミング寄りの機能を活用して、集計のみならず グラフ作成や 帳票表示・出力にも活用されています。<br />
<br />
Accessは簡易データベースソフトなのですが、こちらも単純・小規模なデータベースシステムにとどまらず...データ入力・表示や帳票表示・出力機能を備えた 見積管理や資産管理などのシステムで、活用されています。<br />
<br />
<img src="http://img.lightswitch.jp/20111129_1729377.png" alt="散在するユーザーアプリケーション" width="478" height="312" class="pict" /><br />
<br />

<h3>ユーザーアプリケーションの長所・短所</h3>
Excel VBAや Access MDBで作成したユーザーアプリケーションは、基幹系システムなどの業務システムがカバーしていない機能を実現するため 手作業で行った場合と比較した「作業時間の短縮」「業務効率の向上」などのメリットがあります。<br />
<br />
しかし、ローカルPCに機密情報や個人情報を保存するなどの「ISMS,プライバシー」などのセキュリティ上のリスク、クライアントOS・Officeバージョンに依存しているリスク、作成者から引き継げないなどの保守の面でのリスクがあります。<br />
<br />
このため、企業内では エンドユーザー任せではなく 情報システム部門が適切に管理(保守、移行など)する必要があります。<br />
<br />

<h3>ユーザーアプリケーションの移行</h3>
ユーザーアプリケーションのリスクを回避するには 様々な方法がありますが、そのうち「移行」する方法の候補となるのが LightSwitchアプリケーションです。<br />
<br />
LightSwitchアプリケーションには <a href="/?eid=31">アクセスユーザーの管理、アクセス権限管理</a>などの機能が標準であります。この機能を利用すれば セキュリティ上のリスクは軽減されます。<br />
<br />
LightSwitchアプリケーションは Accessアプリケーションのように データ中心のアプリケーションですが、Webサーバーで動作するWebアプリケーションです。このため クライアントOS・Officeバージョンへの依存リスクが解消されます。<br />
<br />
LightSwitchアプリケーションは ほぼプログラミングなしでアプリケーションが開発できます。つまり 標準化された状態ですので アプリケーションの保守効率は向上します。<br />
<br />
LightSwitchの「良い事」ばかり述べましたが...<br />
LightSwitchアプリケーションだけでなく Webアプリケーション全般に言えますが Webブラウザの種類／バージョンが変更された際に 再評価が必要となるリスクがあります。<br />
<br />
LightSwitchアプリケーションは 標準では レポート(帳票)がありません。現時点では <a href="/?eid=23">拡張製品XtraReports for LightSwitch</a>を購入すれば 帳票が実現できます。早く、別の多くのソフトウェアベンダーが LightSwitch用の帳票ソフトをリリースしてくれることを祈りましょう。<br />
<br />
LightSwitchアプリケーションでは 複雑なアプリケーションを開発するのに 時間がかかります。複雑なアプリケーションは SilverlightやWPFなどで しっかりと予算をかけて 開発しましょう。<br />
<br />
]]></content></entry><entry><title>LightSwitchのCSVインポート</title><link rel="alternate" type="text/html" href="http://lightswitch.jp/?eid=40" /><id>http://lightswitch.jp/?eid=40</id><issued>2011-10-27T17:13:00+09:00</issued><modified>2011-10-27T08:14:39Z</modified><created>2011-10-27T08:13:00Z</created><summary>業務アプリケーションでは CSVファイルからデータ登録というニーズもあるかと思いまして、CSVファイルを読み込み、テーブルにインポートするサンプルを作ってみました。

1) Visual Studioで LightSwitchアプリケーションのプロジェクトを作成し、データ・画面などを準...</summary><author><name>lightswitch</name></author><dc:subject>LightSwitch開発</dc:subject><content mode="escaped" type="text/html" xml:lang="ja"><![CDATA[業務アプリケーションでは CSVファイルからデータ登録というニーズもあるかと思いまして、CSVファイルを読み込み、テーブルにインポートするサンプルを作ってみました。<br />
<br />
1) Visual Studioで LightSwitchアプリケーションのプロジェクトを作成し、データ・画面などを準備<br />
<br />
2) プロジェクトプロパティのアプリケーションの種類で、クライアントに「デスクトップ」を選択<br />
<br />
3) ソリューションエクスプローラ（論理ビュー）で 「画面」を右クリックし、[画面の追加]をクリック<br />
<br />
4) 画面テンプレートに「データ検索画面」を選択し、画面データには「インポートしたいテーブル」を指定して、画面名（例：ImportAgents）を入力し、[OK]をクリック<br />
<br />
5) まず、CSVファイル名を入力するテキストボックスの元となるローカルプロパティを作成します。<br />手順4)で追加した画面をデザイナーで開き、[データ項目の追加]をクリック<br />
<br />
6) データ項目の追加ダイアログで メンバーの種類に「ローカルプロパティ」「String」を選択し、名前に「CsvFileName」と入力し、[OK]をクリック<br />
<br />
7) 画面デザイナ中央で「行のレイアウト」を追加 （※既存のデータグリッドは削除してください）<br />
<br />
8) 画面デザイナ左側の一覧で 手順6)で作成したローカルプロパティ CsvFileNameをドラッグし、画面中央の手順7)で作成した行のレイアウトの下にドロップ<br />
<br />
9) 画面デザイナ中央の手順8)で追加したテキストボックスを右クリックし、[ボタンの追加]をクリックすると メソッド名を聞かれるので「ImportCsv」と入力し [OK]をクリック<br />
<br />
ここまでの画面は、下図の通りです。<br />
<img src="http://img.lightswitch.jp/20111027_1655536.png" alt="LightSwitchインポート・画面デザイン" width="463" height="394" class="pict" /><br />
<br />
次に「CSV入力ボタンをクリックした時のコード」を記述します。<br />
<br />
10) 画面デザイナ中央で 手順9)で作成した「CSV入力ボタン」を右クリックし、[Executeコードの編集]をクリック<br />
<br />
11) (画面名).csが開き、(ボタン名)_Executeメソッドのコードが表示されたら、以下のコードを入力します。<br />
<textarea rows="72" cols="65" name="ta1" align="right">
using System;
using System.Text;
using System.Linq;
using System.IO;
using System.IO.IsolatedStorage;
using System.Collections.Generic;
using Microsoft.LightSwitch;
using Microsoft.LightSwitch.Framework.Client;
using Microsoft.LightSwitch.Presentation;
using Microsoft.LightSwitch.Presentation.Extensions;
namespace LightSwitchApplication
&#123;
    public partial class ImportAgents
    &#123;
        partial void ImportCsv_Execute()
        &#123;
            if (this.CsvFileName == null)
            &#123;
                this.ShowMessageBox("CSVファイル名を入力してください。");
                return;
            &#125;
            if(this.CsvFileName.Length <= 0)
            &#123;
                this.ShowMessageBox("CSVファイル名を入力してください。");
                return;
            &#125;
            if (!File.Exists(this.CsvFileName)) 
            &#123;
                this.ShowMessageBox("CSVファイルが存在しません。" + this.CsvFileName);
                return;
            &#125;

            // UTF-8コードでファイル読み込み
            string csvData = "";
            using (System.IO.StreamReader reader = new System.IO.StreamReader(
                this.CsvFileName,
                System.Text.Encoding.GetEncoding("utf-8")))
            &#123;
                csvData = reader.ReadToEnd();
                reader.Close();
            &#125;
            
            // CSVデータを行に分離
            string[] lineCsvData = csvData.Split('&yen;n');
            for (int i = 0; i < lineCsvData.Length - 1; i++) 
            &#123; 
                // １行のCSVデータを カンマで分離
                string[] itemCsv = lineCsvData[i].Split(',');
                if( itemCsv.Length < 2 )
                &#123;
                    break;
                &#125;

                // 氏名を取得
                string firstName = itemCsv[0];
                string lastName = itemCsv[1].Trim(new char[] &#123; '&yen;r', '&yen;n' &#125;);

                // テーブルに追加
                Agent record = new Agent();
                record.FirstName = firstName;
                record.LastName = lastName;
                this.DataWorkspace.ApplicationData.SaveChanges();
            &#125;
        &#125;
    &#125;
&#125;
</textarea><br />
<br />
データランタイムオブジェクトモデルを使用して、テーブルデータを追加しています。<br />
this.DataWorkspaceまでは同じで、<br />
その後に「ソリューションエクスプローラ 論理ビュー・データソースの下の名前」<br />
(内部データベースの場合 ApplicationData)<br />
最後にテーブル名を指定します。<br />
<br />
データ追加の場合、テーブルレコードのクラス(例：Agent)をインスタンス化して、値をセットして、データベースのSaveChangesメソッドを呼び出すっという...ちょっと変わった感じのコードになります。<br />
<br />
インポートするCSVファイルはメモ帳などで作成してください。注意点としては、保存するときに Shift_Jisではなく「UTF-8」で保存することです。<br />
<img src="http://img.lightswitch.jp/20111027_1655537.png" alt="LightSwitchインポート・CSVデータ" width="330" height="158" class="pict" /><br />
<br />
12) VisualStudioの[ファイル]メニューで[すべてを保存]をクリックし、ソリューションのビルド、実行(F5)<br />
<br />
13) 作成した画面を表示すると、ウィンドウ上にCSVファイル名を入力するテキストボックスと、[CSV入力]ボタンが表示されます。<br />
<img src="http://img.lightswitch.jp/20111027_1655538.png" alt="LightSwitchインポート・実行前" width="485" height="322" class="pict" /><br />
<br />
14) CSVファイル名を入力し、[CSV入力]ボタンをクリックすると、CSVファイルが読み込まれ、テーブルにデータが登録されます。テーブルの確認は 他の管理画面などでおこなってください。<br />
<img src="http://img.lightswitch.jp/20111027_1655539.png" alt="LightSwitchインポート・実行後の確認" width="485" height="322" class="pict" /><br />
<br />
]]></content></entry><entry><title>LightSwitchのCSVエクスポート</title><link rel="alternate" type="text/html" href="http://lightswitch.jp/?eid=39" /><id>http://lightswitch.jp/?eid=39</id><issued>2011-10-27T15:48:00+09:00</issued><modified>2011-10-27T06:49:34Z</modified><created>2011-10-27T06:48:00Z</created><summary>LightSwitch Webアプリケーションでは、セキュリティの関係で Excelなどの外部プログラムなどが実行できません。
デスクトップアプリケーション(ClickOnceアプリケーション)ならば、Excelエクスポートボタンが表示されて、簡単に出力できるのに．．．。
落ち込んでいて...</summary><author><name>lightswitch</name></author><dc:subject>LightSwitch開発</dc:subject><content mode="escaped" type="text/html" xml:lang="ja"><![CDATA[LightSwitch Webアプリケーションでは、セキュリティの関係で Excelなどの外部プログラムなどが実行できません。<br />
デスクトップアプリケーション(ClickOnceアプリケーション)ならば、Excelエクスポートボタンが表示されて、簡単に出力できるのに．．．。<br />
落ち込んでいても仕方ありませんので、テーブルの全データをCSV形式に出力する機能を作ってみました。<br />
<br />
1) Visual Studioで LightSwitchアプリケーションのプロジェクトを作成し、データ・画面などを準備<br />
<br />
2) プロジェクトプロパティのアプリケーションの種類で、クライアントに「Web」を選択<br />
<br />
3) ソリューションエクスプローラ（論理ビュー）で 「画面」を右クリックし、[画面の追加]をクリック<br />
<br />
4) 画面テンプレートに「データ検索画面」を選択し、画面データには「エクスポートしたいテーブル」を指定して、画面名（例：ExportCustomers）を入力し、[OK]をクリック<br />
<br />
5) まず、CSVデータを表示するテキストボックスの元となるローカルプロパティを作成します。<br />手順4)で追加した画面をデザイナーで開き、[データ項目の追加]をクリック<br />
<br />
6) データ項目の追加ダイアログで メンバーの種類に「ローカルプロパティ」「String」を選択し、名前に「CsvOutput」と入力し、[OK]をクリック<br />
<br />
7) 画面デザイナ中央で「行のレイアウト」を追加<br />
<br />
8) 画面デザイナ左側の一覧で 手順6)で作成したローカルプロパティ CsvOutputをドラッグし、画面中央の手順7)で作成した行のレイアウトの下にドロップ<br />
<br />
9) 画面デザイナ中央の「画面コマンドバー」の 標準ボタン（保存、最新の情報に更新）の下に CSV出力ボタンを追加<br />
<br />
ここまでの画面は、下図の通りです。<br />
<img src="http://img.lightswitch.jp/20111027_1655354.png" alt="LightSwitchエクスポート・画面デザイン" width="480" height="349" class="pict" /><br />
<br />
次に「CSV出力ボタンをクリックした時のコード」を記述します。<br />
<br />
10) 画面デザイナ中央で 手順9)で作成した「CSV出力ボタン」を右クリックし、[Executeコードの編集]をクリック<br />
<br />
11) (画面名).csが開き、(ボタン名)_Executeメソッドのコードが表示されたら、以下のコードを入力します。<br />
<textarea rows="40" cols="65" name="ta1" align="right">
using System;
using System.Linq;
using System.IO;
using System.IO.IsolatedStorage;
using System.Collections.Generic;
using Microsoft.LightSwitch;
using Microsoft.LightSwitch.Framework.Client;
using Microsoft.LightSwitch.Presentation;
using Microsoft.LightSwitch.Presentation.Extensions;
namespace LightSwitchApplication
&#123;
    public partial class ExportCustomers
    &#123;
        partial void CsvOutputExecute_Execute()
        &#123;
            // CSVデータ保存エリアを初期化
            string csvData = "";

            // Customersテーブルのすべてのレコードに対する処理
            foreach (Customer customer in this.DataWorkspace.ApplicationData.Customers)
            &#123;
                // CustomersテーブルのレコードデータをCSV形式に
                string record = "&yen;""
                    + customer.Name + "&yen;",&yen;"" 
                    + customer.Contact + "&yen;",&yen;"" 
                    + customer.Phone + "&yen;",&yen;"" 
                    + customer.Zip + "&yen;",&yen;"" 
                    + customer.State + "&yen;",&yen;"" 
                    + customer.City + "&yen;",&yen;"" 
                    + customer.Address + "&yen;"";

                csvData += record + "&yen;n";
            &#125;
            // テキストボックスにCSVデータを表示
            this.CsvOutput = csvData;
        &#125;
    &#125;
&#125;
</textarea><br />
<br />
データランタイムオブジェクトモデルを使用して、テーブルデータを取得しています。<br />
this.DataWorkspaceまでは同じで、<br />
その後に「ソリューションエクスプローラ 論理ビュー・データソースの下の名前」<br />
(内部データベースの場合 ApplicationData)<br />
最後にテーブル名を指定します。<br />
<br />
12) VisualStudioの[ファイル]メニューで[すべてを保存]をクリックし、ソリューションのビルド、実行(F5)<br />
<br />
13) 作成した画面を表示すると、標準ボタン（保存、最新の情報に更新）の右側に「CSV出力」ボタンが表示され、ウィンドウには 複数行表示できるテキストボックスが表示されます。<br />
<img src="http://img.lightswitch.jp/20111027_1655358.png" alt="LightSwitchエクスポート・実行前" width="454" height="438" class="pict" /><br />
<br />
14) CSV出力ボタンをクリックすると、画面右下ウィンドウのテキストボックスに テーブルデータがCSV形式で表示されます。<br />
<img src="http://img.lightswitch.jp/20111027_1655359.png" alt="LightSwitchエクスポート・実行後" width="454" height="438" class="pict" /><br />
<br />
あとは、テキストボックスで [Ctrl]+[A]→[Ctrl]+[C]して、メモ帳で[Ctrl]+[V]すれば．．．<br />
<small>え”っ？これなら データグリッドをコピペすればいいって？．．．まぁそんなことは言わないで。</small><br />
<br />

]]></content></entry><entry><title>LightSwitchのトレース</title><link rel="alternate" type="text/html" href="http://lightswitch.jp/?eid=38" /><id>http://lightswitch.jp/?eid=38</id><issued>2011-10-27T11:56:08+09:00</issued><modified>2011-10-27T02:56:08Z</modified><created>2011-10-27T02:56:08Z</created><summary>実運用時のトラブル調査
業務アプリケーションの開発・テストが完了し、実運用を開始すると「普段は問題ないが まれに問題が起きる」「操作方法はわからないが データが保存されない」などのエラーなどが起きる場合があります。
このような場合、実運用環境で Visual St...</summary><author><name>lightswitch</name></author><dc:subject>LightSwitch開発</dc:subject><content mode="escaped" type="text/html" xml:lang="ja"><![CDATA[<strong>実運用時のトラブル調査</strong><br />
業務アプリケーションの開発・テストが完了し、実運用を開始すると「普段は問題ないが まれに問題が起きる」「操作方法はわからないが データが保存されない」などのエラーなどが起きる場合があります。<br />
このような場合、実運用環境で Visual Studioデバッグする訳にもいかず、デバッグ用の出力を入れた実行ファイルを作ったり、ユーザーの操作を控えてもらったりして、原因調査から解決に時間がかかったりします。<br />
そんな時に 使えるのが トレース(Trace) です。<br />
<br />
<strong>LightSwitchのトレース(Trace)</strong><br />
LightSwitchには 2種類のトレース(Trace)があります。<br />
1つは .NET Frameworkのクラス(System.Diagnostics.Trace)です。
こちらは ASP.NET Webアプリケーション開発ではお馴染みですが、
Web.ConfigのTraceタグのenable要素をtrueにして、
Webブラウザで Webアプリケーション(例： http://ServerName/AppName/)の後に「Trace.axd」(トレース・ビューア)をつけて表示します。<br />
<img src="http://img.lightswitch.jp/20111027_1654977.png" alt="LightSwitchトレース・.NET" width="493" height="367" class="pict" /><br />
（IISサーバーにホストされた）Webアプリケーションが受けたリクエストが一覧表示され、[詳細の表示]リンクをクリックすると HTTPヘッダー、Queryストリング、サーバー変数などが表示されます。<br />
<br />

もう1つのトレースは LightSwitch独自のクラス(Microsoft.LightSwitch.Trace)です。Microsoft.LightSwitch.Traceは .NET Frameworkのクラス(System.Diagnostics.Trace)をラップしている感じなので どちらのTrace機能も Web.ConfigでトレースON/OFF、トレースレベルが設定できます。<br />
具体的には Web.Config内の configurationタグ・appSettingsタグ内に Microsoft.LightSwitch.Traceの設定があります。<br />
<textarea rows="13" cols="65" name="ta1" align="right">
    <!-- A value of true will enable diagnostic logging on the server -->
    <add key="Microsoft.LightSwitch.Trace.Enabled" value="false" />
    <!-- A value of true only lets local access to Trace.axd -->
    <add key="Microsoft.LightSwitch.Trace.LocalOnly" value="true" />
    <!-- The valid values for the trace level are: None, Error, Warning, Information, Verbose -->
    <add key="Microsoft.LightSwitch.Trace.Level" value="Information" />
    <!-- A value of true will indicate that logging sensitive information is okay -->
    <add key="Microsoft.LightSwitch.Trace.Sensitive" value="false" />
    <!-- The semi-colon separated list of categories that will be enabled at the specifed trace level -->
    <add key="Microsoft.LightSwitch.Trace.Categories" value="Microsoft.LightSwitch" />
</textarea><br />
<br />
Web.Configの設定は IISマネージャでWebアプリケーションを選択し、[アプリケーションの設定]をダブルクリックすると 表示・変更ができます。こちらの方が 解りやすいのと 入力ミスが減るのでIISマネージャでのメンテナンスをお勧めします。<br />
<img src="http://img.lightswitch.jp/20111027_1654978.png" alt="LightSwitchトレース・IISマネージャ設定" width="496" height="285" class="pict" /><br />
<br />
Microsoft.LightSwitch.Traceのキー(Microsoft.LightSwitch.Trace以下のキー名)と説明を下表に示します。<br />
<table border="0">
<tr><td bgcolor="#C0C0C0" align="center">キー</td><td bgcolor="#C0C0C0" align="center">説明</td><td bgcolor="#C0C0C0" align="center">初期値</td></tr>
<tr valign="top"><td>Enabled</td><td>trueに設定するとサーバー上のログ出力が有効になります。</td><td>false<br /><br /></td></tr>
<tr valign="top"><td>LocalOnly</td><td>trueに設定するとローカルアクセスのみをTrace.axd(トレース・ビューア)に出力します。</td><td>true<br /><br /></td></tr>
<tr valign="top"><td>Level</td><td>トレースレベルを指定します。None, Error, Warning, Information, Verboseが指定できます。</td><td>Information<br /><br /></td></tr>
<tr valign="top"><td>Sensitive</td><td>trueを設定すると 機密情報を記録しても問題ないことを意味します。</td><td>false<br /><br /></td></tr>
<tr valign="top"><td>Categories</td><td>トレースカテゴリを指定します。カテゴリ名はセミコロンで区切ります。</td><td>Microsoft.LightSwitch<br /><br /></td></tr>
</table>
<br />

トレースレベルの値と意味を下表に示します。<br />
<table border="0">
<tr><td bgcolor="#C0C0C0" align="center">トレースレベル</td><td bgcolor="#C0C0C0" align="center">値</td><td bgcolor="#C0C0C0" align="center">説明</td></tr>
<tr valign="top"><td>Off</td><td>0</td><td>トレース メッセージおよびデバッグ メッセージの出力なし<br /><br /></td></tr>
<tr valign="top"><td>Error</td><td>1</td><td>エラーメッセージの出力あり<br /><br /></td></tr>
<tr valign="top"><td>Warning</td><td>2</td><td>エラー、警告メッセージの出力あり<br /><br /></td></tr>
<tr valign="top"><td>Information</td><td>3</td><td>エラー、警告、情報メッセージの出力あり<br /><br /></td></tr>
<tr valign="top"><td>Verbose</td><td>4</td><td>すべてのトレース メッセージおよびデバッグ メッセージの出力あり<br /><br /></td></tr>
</table>
<br />

<strong>LightSwitch既定のトレース出力</strong><br />
LightSwitchアプリケーションには 既定でトレース出力が含まれています。<br />
まずは Visual Studioで LightSwitchアプリケーションを実行して、確認してみましょう。<br />
<br />
1. Visual Studioで 既存のLightSwitch・Webアプリケーションを開き、実行(F5)<br />
<br />
2. Internet Explorerが表示され、Webアプリケーションが起動されたら Internet Explorerのアドレスの末尾に「&amp;LC=Microsoft.LightSwitch,I」を付加し、再表示<br />
<br />
3. Webアプリケーションが再表示されたら、画面オープン、データ追加などの操作を実施<br />
<br />
4. Visual Studio 出力ウィンドウで トレース出力を確認<br />
<textarea rows="25" cols="65" name="ta2" align="right">
[Microsoft.LightSwitch.UserCode][Application:Information][Application:LoggedIn] Invoking user method: Application.Application_LoggedIn 
[Microsoft.LightSwitch.UserCode][Application:Information][Application:LoggedIn] Execution completed.
[Microsoft.LightSwitch.Application][Application:Information][LightSwitchApplication:ShowScreen] Loading 'Home' screen
[Microsoft.LightSwitch.Application][Application:Information][LightSwitchApplication:ShowScreen] Launch mode = Single
[Microsoft.LightSwitch.Application][Application:Information][LightSwitchApplication:ShowScreen] Looking for an already existing instance of the screen with matching parameters
[Microsoft.LightSwitch.Application][Application:Information][LightSwitchApplication:ShowScreen] Did not find an existing instance
[Microsoft.LightSwitch.Application][Application:Information][LightSwitchApplication:CreateScreen] Creating screen object
[Microsoft.LightSwitch.Screens][Application:Information][LightSwitchApplication:Home:Open] No save context specified in the model.
[Microsoft.LightSwitch.UserCode][Application:Information][LightSwitchApplication:Home:Open] Invoking user method: Home.Home_InitializeDataWorkspace 
[Microsoft.LightSwitch.Application][Application:Information][LightSwitchApplication:CreateScreen] Loading the screen UI
[Microsoft.LightSwitch.UserCode][Application:Information][LightSwitchApplication:Home:Open] Execution completed.
[Microsoft.LightSwitch.Screens][Application:Information][LightSwitchApplication:Home:Open] After initialization, the save contexts are:
[Microsoft.LightSwitch.UserCode][Application:Information][CreateNewCustomer:Execute] Invoking user method: Home.CreateNewCustomer_Execute 
[Microsoft.LightSwitch.Application][Application:Information][LightSwitchApplication:ShowScreen] Loading 'CreateNewCustomer' screen
[Microsoft.LightSwitch.Application][Application:Information][LightSwitchApplication:ShowScreen] Launch mode = Multiple
[Microsoft.LightSwitch.Application][Application:Information][LightSwitchApplication:CreateScreen] Creating screen object
[Microsoft.LightSwitch.Screens][Application:Information][LightSwitchApplication:CreateNewCustomer:Open] The model specifies the save context to be the 'ApplicationData' data service.
[Microsoft.LightSwitch.Application][Application:Information][LightSwitchApplication:CreateScreen] Loading the screen UI
[Microsoft.LightSwitch.UserCode][Application:Information][CreateNewCustomer:Execute] Execution completed.
[Microsoft.LightSwitch.UserCode][Application:Information][LightSwitchApplication:CreateNewCustomer:Open] Invoking user method: CreateNewCustomer.CreateNewCustomer_InitializeDataWorkspace 
[Microsoft.LightSwitch.Screens][Application:Information][LightSwitchApplication:CreateNewCustomer:Search] Initiating a search with no search terms (may simply be a reset or initialization of the control).
[Microsoft.LightSwitch.UserCode][Application:Information][LightSwitchApplication:CreateNewCustomer:Open] Execution completed.
[Microsoft.LightSwitch.Screens][Application:Information][LightSwitchApplication:CreateNewCustomer:Open] After initialization, the save contexts are:
    ApplicationData
</textarea><br />
<br />
出力ウィンドウには ビルド情報、アプリケーション起動時のライブラリ(DLL)ロード情報なども表示されますが、それらに混ざってトレースが出力されます。<br />
<br />
先頭のカッコ内は クラス、２番目のカッコ内は トレースレベル、３番目のカッコ内は イベントハンドラ名で、そのあとにメッセージが付加されています。<br />
Application_LoggedInイベントハンドラの入口、出口で 「Execution completed.」などのメッセージだけで...ログイン処理の開始なら ログインユーザー名があればいいのに...少し惜しい感じですね。<br />
個々の画面オープン・クローズタイミングでも トレース出力されるので、通ったか 通っていないかならば 解るというレベルでしょうか。<br />
<br />
LightSwitchアプリケーションで、入力エラー(Validation Error)などを起こすと 下記のように プロパティ(テーブルのフィールド名)まで出力されます。カスタム検証を使っているプログラムのデバッグには使えると思います。<br />
<textarea rows="20" cols="65" name="ta3" align="right">
[Microsoft.LightSwitch.UserCode][Application:Error][Save:Execute] An exception has occurred:  Microsoft.LightSwitch.ValidationException: データ エントリのエラーを修正し、もう一度保存してください。
   場所 Microsoft.LightSwitch.Details.Framework.Client.ScreenDetails`2.SaveImpl()
   場所 Microsoft.LightSwitch.Details.Framework.Client.ScreenDetails`2.MethodSetProperties.<.cctor>b__b0(TDetails d, ReadOnlyCollection`1 args)
   場所 Microsoft.LightSwitch.Details.Framework.Internal.BusinessMethodImplementation`2.<TryInvokeMethod>b__5()
   場所 Microsoft.LightSwitch.Utilities.Internal.UserCodeHelper.CallUserCode(Type sourceType, String methodName, String instance, String operation, ILoggingContext context, Action action, String additionalText, Func`1 getCompletedMessage, Boolean tryHandleException, Boolean swallowException, Exception& exception)
Validation Error: Microsoft.LightSwitch.StructuralValidator.NullRequiredValue
    Message: 値が必要です。
    Target: LightSwitchApplication.Agent
    Property: FirstName

Validation Error: Microsoft.LightSwitch.StructuralValidator.NullRequiredValue
    Message: 値が必要です。
    Target: LightSwitchApplication.Agent
    Property: LastName

System.Windows.Data エラー: BindingExpression パス エラー: 'Title' プロパティが 'Microsoft.LightSwitch.Runtime.Shell.Implementation.Standard.RunningScreen' 'Microsoft.LightSwitch.Runtime.Shell.Implementation.Standard.RunningScreen' (HashCode=63901930) に見つかりませんでした。BindingExpression: Path='Title' DataItem='Microsoft.LightSwitch.Runtime.Shell.Implementation.Standard.RunningScreen' (HashCode=63901930); ターゲット要素は 'Microsoft.LightSwitch.Runtime.Shell.Framework.ScreenChildWindow' (Name=''); ターゲット プロパティは 'AutomationProperties.Name' (型 'System.String') です。.
</textarea><br />
<br />

（説明が前後しましたが...）手順2．で指定した「&amp;LC=Microsoft.LightSwitch,I」は、トレースカテゴリ名とトレースレベルの指定です。<br />
トレースカテゴリ名は LightSwitchアプリケーションでは 既定で「Microsoft.LightSwitch」がWeb.Configに定義されます。<br />
トレースレベルは 情報はI、警告はW、エラーはEです。エラーだけをトレースする場合は 「&amp;LC=Microsoft.LightSwitch,E」となります。<br />
<br />
Visual Studioデバッガでのアプリケーション実行では、URLに 「?IsLaunchedByVS=True」が付加されますので、トレース指定は「&amp;LC=Microsoft.LightSwitch,I」のように &amp;で始まる文字列になります。<br />
Internet Explorerでのアプリケーション実行では、URLが「http://ServerName/AppName/」のように ?がないので、トレース指定は「?LC=Microsoft.LightSwitch,I」のように ?で始まる文字列になります。<br />
<br />

<strong>独自のトレース出力</strong><br />
LightSwitch既定のトレースでは 不十分な場合には、プログラムコードを書いて トレースが追加できます。<br />
<br />
例えば、前述のログインでユーザー名をトレース出力する場合、Application.csにコードを記述します。<br />
<textarea rows="25" cols="65" name="ta4" align="right">
using System;
using System.Linq;
using System.IO;
using System.IO.IsolatedStorage;
using System.Collections.Generic;
using Microsoft.LightSwitch;
using Microsoft.LightSwitch.Framework.Client;
using Microsoft.LightSwitch.Presentation;
using Microsoft.LightSwitch.Presentation.Extensions;
namespace LightSwitchApplication
&#123;
    public partial class Application
    &#123;
        partial void Application_LoggedIn() 
        &#123;
            Trace.TraceInformation(
                "Application_LoggedIn:" + Application.Current.User.FullName);
        &#125;
    &#125;
&#125;
</textarea><br />
<br />
Trace.TraceInformationは Microsoft.LightSwitchクラスのメソッドで、情報メッセージを出力します。<br />
警告メッセージを出力する Trace.TraceWarningメソッド、<br />
エラーメッセージを出力する Trace.TraceErrorメソッドもあります。<br />
<br />

<strong>LightSwitchのイベントハンドラ</strong><br />
LightSwitchアプリケーションでは、Application.csにアプリケーション全体のイベントハンドラ、(画面名).csに画面ごとのイベントハンドラなどが定義できます。<br />
Application.csには、ログイン時に呼び出される Application_LoggedIn、各画面オープン時に呼び出される (画面名)_Runイベントハンドラが定義できますが ログアウトやアプリケーション終了時や画面クローズ時などのイベントハンドラはありません。<br />
(画面名).csには、画面起動時に呼び出される (画面名)_InitializeDataWorkspace、画面終了時(保存時)に呼び出される (画面名)_Savedなどのイベントハンドラが定義できます。<br />
<br />
上記のイベントハンドラにコードを書けば、業務アプリケーションで独自の「操作ログ(どのユーザーがログインし、どの画面をオープン/クローズしたか)」がとれます。<br />
<br />

]]></content></entry><entry><title>LightSwitchのデジタル署名</title><link rel="alternate" type="text/html" href="http://lightswitch.jp/?eid=37" /><id>http://lightswitch.jp/?eid=37</id><issued>2011-10-25T17:28:38+09:00</issued><modified>2011-10-25T08:28:38Z</modified><created>2011-10-25T08:28:38Z</created><summary>利便性(機能)を重視するか、セキュリティを重視するかという問題は難しいのですが．．．企業内で利用するアプリケーションの場合、過剰なセキュリティはPassして(?) 利便性を高めたいものです。
LightSwitchアプリケーションの実行ファイル(*.xap)に対して、アプリケーシ...</summary><author><name>lightswitch</name></author><dc:subject>LightSwitch開発</dc:subject><content mode="escaped" type="text/html" xml:lang="ja"><![CDATA[利便性(機能)を重視するか、セキュリティを重視するかという問題は難しいのですが．．．企業内で利用するアプリケーションの場合、過剰なセキュリティはPassして(?) 利便性を高めたいものです。<br />
LightSwitchアプリケーションの実行ファイル(*.xap)に対して、アプリケーションの発行元を明示できるように デジタル証明書が付加できます。<br />
デジタル証明書の指定は、プロジェクトプロパティの[アプリケーションの種類]で [発行]をクリックして表示される 「発行ウィザード」でおこないます。<br />
<img src="http://img.lightswitch.jp/20111025_1651138.png" alt="LightSwitch証明書・証明書の指定" width="488" height="348" class="pict" /><br />
<br />
正式な証明書がある場合、[このコンピュータのストアから証明書を選択...]か、[証明書の参照...]で証明書を指定できます。<br />
証明書といわれても...急には準備できません...という方は [テスト証明書の作成]をクリックして、暫定的な証明書が作成され、付加できます。<br />
<img src="http://img.lightswitch.jp/20111025_1651137.png" alt="LightSwitch証明書・証明書" width="339" height="341" class="pict" /><br />
<br />
テスト証明書は 発行先、発行元が 現在ログイン中のユーザー名で、有効期限が約1年となっています。<br />
それでは 少しカッコがつかないし、１年は短いので困るな．．．という方には makecert.exeというコマンドツールがあります。<br />
makecert.exeは、以下のフォルダにあります。<br />
C:￥Program Files￥Microsoft SDKs￥Windows￥v7.0A￥bin<br />
<br />

<strong>makecertで証明書を作成</strong><br />
1) ルート証明書の作成<br />
<textarea rows="4" cols="65" name="ta1" align="right">
C:&yen;Program Files&yen;Microsoft SDKs&yen;Windows&yen;v7.0A&yen;bin>makecert -n "CN=SDK-LTD" -r -a
 sha1 -sv d:&yen;cert&yen;SDK.pvk d:&yen;cert&yen;SDK.cer -sr LocalMachine -sky signature
</textarea>
<br />
・ダイアログが表示されたら、パスワードを入力します。<br />
・d:&yen;cert&yen;SDK.pvk と d:&yen;cert&yen;SDK.cer の２ファイルができます。<br />
・CNで指定した文字列が証明書の発行元に表示されます。<br />
<br />

2) コード署名用の証明書の作成<br />
<textarea rows="4" cols="65" name="ta2" align="right">
C:&yen;Program Files&yen;Microsoft SDKs&yen;Windows&yen;v7.0A&yen;bin>makecert -sv d:&yen;cert&yen;SDK_LTD.p
vk -iv d:&yen;cert&yen;SDK.pvk -n "CN=SDK-LTD" -ic d:&yen;cert&yen;SDK.cer d:&yen;cert&yen;SDK_LTD.cer
</textarea>
<br />
・ダイアログが表示されたら、パスワードを入力します。<br />
・d:&yen;cert&yen;SDK_LTD.pvk と d:&yen;cert&yen;SDK_LTD.cer の２ファイルができます。<br />
・CNで指定した文字列が証明書の発行先に表示されます。<br />
<br />

3) PFXファイルの作成<br />
<textarea rows="4" cols="65" name="ta3" align="right">
C:&yen;Program Files&yen;Microsoft SDKs&yen;Windows&yen;v7.0A&yen;bin>pvk2pfx -pvk d:&yen;cert&yen;SDK_LTD.p
vk -spc d:&yen;cert&yen;SDK_LTD.cer -pfx d:&yen;cert&yen;SDK_LTD.pfx -po password
</textarea>
<br />
・ダイアログが表示されたら、パスワードを入力します。<br />
・d:&yen;cert&yen;SDK_LTD.pfxの１ファイルができます。<br />
・有効期限が30年弱の証明書ができます。<br />
<br />

4) LightSwitchアプリケーションの発行ウィザードで [証明書の参照...]をクリックし、3)で作成された PFXファイルを指定<br />
<img src="http://img.lightswitch.jp/20111025_1651139.png" alt="LightSwitch証明書・makecert作成" width="339" height="341" class="pict" /><br />
<br />

]]></content></entry><entry><title>LightSwitchのメニュー</title><link rel="alternate" type="text/html" href="http://lightswitch.jp/?eid=36" /><id>http://lightswitch.jp/?eid=36</id><issued>2011-10-24T10:46:00+09:00</issued><modified>2011-10-25T07:16:02Z</modified><created>2011-10-24T01:46:00Z</created><summary>LightSwitchアプリケーションの画面メニューは、プロジェクトプロパティの画面ナビゲーションで 「グループ - 画面」で階層的に定義できます。


画面数が10枚ぐらいまでであれば、「グループ - 画面」の１段階でいいのですが、20〜30枚と増えてくると 画面には おさま...</summary><author><name>lightswitch</name></author><dc:subject>LightSwitch開発</dc:subject><content mode="escaped" type="text/html" xml:lang="ja"><![CDATA[LightSwitchアプリケーションの画面メニューは、プロジェクトプロパティの画面ナビゲーションで 「グループ - 画面」で階層的に定義できます。<br />
<img src="http://img.lightswitch.jp/20111024_1648018.png" alt="LightSwitchメニュー・画面ナビゲーション" width="448" height="368" class="pict" /><br />
<br />
画面数が10枚ぐらいまでであれば、「グループ - 画面」の１段階でいいのですが、20〜30枚と増えてくると 画面には おさまっても使い勝手(視認性)が悪くなります。<br />
残念ながら LightSwitch標準では「グループ - 画面」は１段階で、グループの下にグループは作れません。<br />
<br />
２段階以上の画面階層メニューを作るには、画面ナビゲーションにはメニュー画面だけを登録して、ここの画面にジャンプするメニュー画面を作るという方法があります。<br />
画面表示例を下図に示します。<br />
<img src="http://img.lightswitch.jp/20111024_1648109.png" alt="LightSwitchメニュー・画面表示例" width="449" height="309" class="pict" /><br />
<br />
この例では、ページ(LightSwitchのScreen)上に ローカルプロパティでサブメニュー見出しを付け、その見出しの下にコマンドボタンを３つづつ配置しています。<br />
<img src="http://img.lightswitch.jp/20111024_1648110.png" alt="LightSwitchメニュー・画面デザイナ" width="438" height="301" class="pict" /><br />
<br />
ページのソースコードには、コマンドボタンのイベントハンドラ Executeを追加しています。コマンドボタンがクリックすると呼び出され、それぞれの個別画面を表示します。個別画面の表示は、「this.Application.ShowCreateNewCustomer();」のように、画面名の前にShowが付加されたメソッドが自動作成されるので それを呼び出します。（画面によっては、起動時の引数が必要な場合があります。）<br />
<img src="http://img.lightswitch.jp/20111024_1648111.png" alt="LightSwitchメニュー・ソース" width="490" height="389" class="pict" /><br />
<br />
画面デザイナで、メニューの「ボタン」を「リンク」に変更できます。<br />
<img src="http://img.lightswitch.jp/20111024_1648133.png" alt="LightSwitchメニュー・画面表示例リンク" width="486" height="335" class="pict" /><br />
<br />

<strong>LightSwitchアプリケーションからのプログラム実行</strong><br />
１つのアプリケーション内のメニューではなく、別プログラムを実行する「プログラムランチャー」のようにするには、プログラム実行が必要となります。<br />
LightSwitchアプリケーションで クライアントがデスクトップ(Silverlight ブラウザー外実行)の場合、
AutomationFactory（COMオートメーション）で WScript(Windows Script Host).Shellオブジェクトを作成し、
別プログラムが実行できます。<br />
<br />

1) 参照の追加<br />
<textarea rows="3" cols="65" name="ta1" align="right">
Microsoft.CSharp.dll
</textarea>
<br />

2) usingの追加<br />
<textarea rows="3" cols="65" name="ta2" align="right">
using System.Runtime.InteropServices.Automation;
</textarea>
<br />

3) 実行コードの追加<br />
<textarea rows="10" cols="65" name="ta3" align="right">
    if( AutomationFactory.IsAvailable )
    &#123;
        using (dynamic shell = 
               AutomationFactory.CreateObject("WScript.Shell"))
        &#123;
            shell.Run(@"notepad.exe");
        &#125;
    &#125;
</textarea>
<br />
]]></content></entry><entry><title>LightSwitchのロゴ・アイコン</title><link rel="alternate" type="text/html" href="http://lightswitch.jp/?eid=35" /><id>http://lightswitch.jp/?eid=35</id><issued>2011-10-21T14:45:00+09:00</issued><modified>2011-10-26T01:22:46Z</modified><created>2011-10-21T05:45:00Z</created><summary>アプリケーションには、企業やアプリケーション名を表すロゴ、アイコンを設定しますよね。
LightSwitchアプリケーションのロゴ・アイコンは、プロジェクトプロパティの全般プロパティで設定します。



LightSwitchのアプリケーション アイコン
アイコンには png形...</summary><author><name>lightswitch</name></author><dc:subject>LightSwitch開発</dc:subject><content mode="escaped" type="text/html" xml:lang="ja"><![CDATA[アプリケーションには、企業やアプリケーション名を表すロゴ、アイコンを設定しますよね。<br />
LightSwitchアプリケーションのロゴ・アイコンは、プロジェクトプロパティの全般プロパティで設定します。<br />
<img src="http://img.lightswitch.jp/20111005_1580127.png" alt="プロジェクトプロパティ・全般" width="407" height="159" class="pict" /><br />
<br />

<strong>LightSwitchのアプリケーション アイコン</strong><br />
アイコンには png形式(*.png) が選択できます。選択したファイルは Clientプロジェクト￥Resourcesフォルダにインポートされます。<br />
アイコンは、<br />
・アプリケーション実行時・タイトルバーの左側<br />
・Windowsタスクバー上のアイコン<br />
・ショートカットを作成した場合のアイコン<br />
などで表示されますので、他のアプリケーションと同様に 透過にした方がよいでしょう。<br />
透過pngの作成方法は、<a href="http://hooktail.org/computer/index.php?%C6%A9%B2%E1png%A4%CE%BA%EE%A4%EA%CA%FD" target="_blank">透過pngの作り方</a> などを参考にして下さい。<br />
<br />

<strong>LightSwitchのロゴ イメージ</strong><br />
ロゴには png形式(*.png) と jpeg形式(*.jpg)が選択できます。選択したファイルは Clientプロジェクト￥Resourcesフォルダにインポートされます。<br />
ロゴは、シェル拡張が表示するのですが 「LightSwitch 標準シェル(既定)」では 表示されません．．．Beta版では表示できたので とても残念。<br />
<a href="http://msdn.microsoft.com/ja-jp/library/ff852009.aspx" target="_blank">MSDN LightSwitchロゴ設定</a>には、「ロゴ画像を任意のプロジェクトに追加できますが、ロゴのイメージをサポートするカスタム アプリケーション シェル拡張を使用するプロジェクトでのみ表示されます。 既定の LightSwitch アプリケーション シェルでは、ロゴ画像の表示はサポートされていません。」との記載が...。<br />
いつかは改善されるとは思いますが、今すぐロゴを使いたい人は シェル拡張を開発するか、オンラインギャラリーでシェル拡張をダウンロード・インストールするか になります。シェル拡張の開発については、<a href="./?eid=26">LightSwitchのシェル開発</a>を参照してください。<br />
<br />

<strong>LightSwitchのロゴ 表示例</strong><br />
シェル拡張の開発は難しいし、オンラインギャラリーには お手頃な価格のシェル拡張はないし．．．とお困りの方もいらっしゃるかと思いまして．．． (Beta1の表示方法とは異なりますが)ロゴを表示する方法を考えました。<br />
「アプリケーション起動時に表示する画面(Screen)を１枚つくって、その画面にロゴとタイトルなどを表示する」という方法です。<br />
<br />
1) Visual Studioで LightSwitchアプリケーションのプロジェクトを作成し、データ・画面などを準備<br />
<br />
2) プロジェクトプロパティの全般プロパティで ロゴイメージの[選択]をクリックし、ロゴファイル（例：logo300x50.png）をインポート<br />
<br />
3) ソリューションエクスプローラ（論理ビュー）で 「画面」を右クリックし、[画面の追加]をクリック<br />
<br />
4) 画面テンプレートに「データ検索画面」を選択し、画面名（例：Home）を入力し、画面データは（なし）のまま、[OK]をクリック<br />
<img src="http://img.lightswitch.jp/20111021_1641080.png" alt="LightSwitchロゴ表示・画面の追加" width="440" height="314" class="pict" /><br />
<br />
5) 画面デザイナで 4)で作成した画面を表示し、[データ項目の追加]をクリック<br />
<br />
6) データ項目の追加で 画面メンバーの種類に「ローカルプロパティ」を選択し、種類に「Image」を選択し、名前にLogoと入力し、[OK]をクリック<br />
<img src="http://img.lightswitch.jp/20111021_1641081.png" alt="LightSwitchロゴ表示・データ項目の追加" width="400" height="400" class="pict" /><br />
<br />
7) 画面デザイナで [データ項目の追加]をクリックし、データ項目の追加で 画面メンバーの種類に「ローカルプロパティ」を選択し、種類に「String」を選択し、名前にTitleと入力し、[OK]をクリック<br />
<br />

8) 画面デザイナ左側の Logoを、画面中央 の画面コマンドバーの下に ドラッグアンドドロップし、Logoのプロパティ画面で以下の値に変更<br />
<table border="0">
<tr><td bgcolor="#C0C0C0" align="center">項目名</td><td bgcolor="#C0C0C0" align="center">設定</td></tr>
<tr valign="top"><td>表示名</td><td>(全角スペース)</td></tr>
<tr valign="top"><td nowrap>コントロールの種類</td><td>イメージビューアー</td></tr>
<tr valign="top"><td>幅</td><td>ピクセル指定（300）</td></tr>
<tr valign="top"><td>高さ</td><td>ピクセル指定（50）</td></tr>
</table>
<br />

9) 画面デザイナ左側の Titleを、画面中央 の画面コマンドバーの下に ドラッグアンドドロップし、Titleのプロパティ画面で以下の値に変更<br />
<table border="0">
<tr><td bgcolor="#C0C0C0" align="center">項目名</td><td bgcolor="#C0C0C0" align="center">設定</td></tr>
<tr valign="top"><td>表示名</td><td>(全角スペース)</td></tr>
<tr valign="top"><td nowrap>コントロールの種類</td><td>ラベル</td></tr>
</table>
<br />
ここまでの Visual Studio画面は 下図の通りです。<br />
<img src="http://img.lightswitch.jp/20111021_1641082.png" alt="LightSwitchロゴ表示・画面デザイナ" width="448" height="345" class="pict" /><br />
<br />

10) プロジェクトプロパティの画面ナビゲーションで 4)で作成した画面を選択し、中央下部の[設定]をクリック<br />
<br />

11) ソリューションエクスプローラ（ファイルの表示ビュー）で Clientプロジェクトの下の「UserCode」を右クリックし、[追加]→[クラス]をクリック<br />
<br />
12) 新しい項目の追加ダイアログで (クラスの)名前に「MyImageHelper.cs」と入力し、[追加]をクリック<br />
<br />
13) 追加したクラス コードが表示されたら、下記のプログラムコードに変更<br />
<textarea rows="35" cols="65" name="ta1" align="right">
using System;
using System.IO;
using System.Reflection;

namespace LightSwitchApplication.UserCode
&#123;
    public class MyImageHelper
    &#123;
        public static byte[] GetImageByName(string fileName)
        &#123;
            Assembly assembly = Assembly.GetExecutingAssembly();
            Stream stream = assembly.GetManifestResourceStream(
                typeof(LightSwitchApplication.Application).Namespace + ".Resources." + fileName);
            return GetStreamAsByteArray(stream);
        &#125;

        private static byte[] GetStreamAsByteArray(Stream stream)
        &#123;
            int streamLength = Convert.ToInt32(stream.Length);
            byte[] fileData = new byte[streamLength];
            stream.Read(fileData, 0, streamLength);
            stream.Close();
            return fileData;
        &#125;
    &#125;
&#125;
</textarea>
<br />
14) ソリューションエクスプローラ（論理ビュー）で 4)で作成した画面をダブルクリック<br />
15) 画面デザイナ右上の[コードの記述]のドロップダウンリストをクリックし、[(画面名)_InitializeDataWorkspace]をクリック<br />
16) (画面名).csのプログラムコードが表示されたら、「using LightSwitchApplication.UserCode;」を追加<br />
17) (画面名)_InitializeDataWorkspaceメソッドに、ロゴ表示、タイトル表示のコードを追加<br />
<textarea rows="30" cols="65" name="ta2" align="right">
using System;
using System.Linq;
using System.IO;
using System.IO.IsolatedStorage;
using System.Collections.Generic;
using Microsoft.LightSwitch;
using Microsoft.LightSwitch.Framework.Client;
using Microsoft.LightSwitch.Presentation;
using Microsoft.LightSwitch.Presentation.Extensions;
using LightSwitchApplication.UserCode;

namespace LightSwitchApplication
&#123;
    public partial class Home
    &#123;
        partial void Home_InitializeDataWorkspace(List<IDataService> saveChangesTo)
        &#123;
            this.Logo = MyImageHelper.GetImageByName("logo300x50.png");
            this.Title = "顧客管理システム";
        &#125;
    &#125;
&#125;
</textarea>
<br />

18) ソリューションエクスプローラ（ファイルの表示ビュー）で Clientプロジェクト￥Resourcesの下で 2)で追加したロゴファイルを選択し、プロパティ画面で ビルドアクションを 「埋め込まれたリソース」(Embedded Resoure)に変更<br />
<br />
19) Visual Studioの[ファイル]メニュー [すべてを保存]をクリック<br />
<br />
20) プロジェクトのビルド、実行(F5)<br />
<img src="http://img.lightswitch.jp/20111021_1641115.png" alt="LightSwitchロゴ表示・実行例" width="457" height="270" class="pict" /><br />
<br />
画像、テキストの配置を縦方向から横方向に変更するには、画面デザイナで「行のレイアウト」を「列のレイアウト」に変更します。（「画像とテキスト」「テキストと画像」でもOKです。）<br />
<img src="http://img.lightswitch.jp/20111021_1641121.png" alt="LightSwitchロゴ表示・実行例・列のレイアウト" width="457" height="270" class="pict" /><br />
<br />
]]></content></entry><entry><title>LightSwitchのファイル表示ビュー</title><link rel="alternate" type="text/html" href="http://lightswitch.jp/?eid=34" /><id>http://lightswitch.jp/?eid=34</id><issued>2011-10-20T17:26:00+09:00</issued><modified>2011-10-21T01:56:32Z</modified><created>2011-10-20T08:26:00Z</created><summary>LightSwitchプロジェクトを Visual Studioのソリューションエクスプローラでみると 「プロパティ」「データソース」「画面」の３つだけで、「細やかな設定などは、どこでやるのか」気になりますよね？

ソリューションエクスプローラでプロジェクトを選択すると、ソリュ...</summary><author><name>lightswitch</name></author><dc:subject>LightSwitch開発</dc:subject><content mode="escaped" type="text/html" xml:lang="ja"><![CDATA[LightSwitchプロジェクトを Visual Studioのソリューションエクスプローラでみると 「プロパティ」「データソース」「画面」の３つだけで、「細やかな設定などは、どこでやるのか」気になりますよね？<br />
<br />
ソリューションエクスプローラでプロジェクトを選択すると、ソリューションエクスプローラー上部に「ビューを切り替えるドロップダウンリスト」が表示されます。初期状態で表示されているのが[論理ビュー](Logical View)です。<br />
<img src="http://img.lightswitch.jp/20111020_1639102.png" alt="LightSwitch論理ビュー表示" width="471" height="276" class="pict" /><br />
<br />
そのドロップダウンリストで [ファイルの表示](File View)をクリックすると、Visual Studioお馴染みのフォルダ・ファイル形式のビューに切り替わります。<br />
<img src="http://img.lightswitch.jp/20111020_1639103.png" alt="LightSwitchファイルビュー表示" width="236" height="288" class="pict" /><br />
<br />
プロジェクト配下には 以下のフォルダ・ファイルがあります。<br />
<table border="0">
<tr><td bgcolor="#C0C0C0" align="center">フォルダ・ファイル</td><td bgcolor="#C0C0C0" align="center">説明</td></tr>
<tr valign="top"><td>プロパティ</td><td>ダブルクリックすると LightSwitchデザイナーでプロジェクトプロパティが表示されます。<br /><br /></td></tr>
<tr valign="top"><td>App.config</td><td>アプリケーション設定値、データベース接続文字列などが定義されたファイルです。<br /><br /></td></tr>
<tr valign="top"><td>Client</td><td>LightSwitchアプリケーションのクライアント側で動作するコードに関するフォルダです。<br />
Client￥UserCodeフォルダの下に、<br />
アプリケーション全般にかかわる Application.cs、<br />
個々の画面の (画面名).csがあります。<br /><br /></td></tr>
<tr valign="top"><td>Common</td><td>LightSwitchアプリケーション共通で使用されるコードに関するフォルダです。<br />
Common￥UserCodeフォルダの下に、個々のテーブルの (テーブル名).csがあります。<br /><br /></td></tr>
<tr valign="top"><td>Data</td><td>アプリケーションデータなどを保存するフォルダです。<br /><br /></td></tr>
<tr valign="top"><td>Server</td><td>LightSwitchアプリケーションのサーバー側で動作するコードに関するフォルダです。<br /><br /></td></tr>
<tr valign="top"><td nowrap>ServiceConfiguration.cscfg</td><td>サービスのTrace設定などを定義するファイルです。<br /><br /></td></tr>
<tr valign="top"><td>ServiceDefinition.csdef</td><td>サービスのWebRoleなどを定義するファイルです。<br /><br /></td></tr>
</table>
<br />
]]></content></entry><entry><title>LightSwitchのニュース</title><link rel="alternate" type="text/html" href="http://lightswitch.jp/?eid=33" /><id>http://lightswitch.jp/?eid=33</id><issued>2011-10-20T09:49:00+09:00</issued><modified>2012-04-04T05:48:49Z</modified><created>2011-10-20T00:49:00Z</created><summary>
2012/04/04
MSBC「Visual Studio LightSwitch 2011 社内業務を、もっと手軽で簡単に。」の
第3弾 アプリケーションを作ってみよう、
第4弾 拡張性
 が公開されました。


2012/03/17
技術ひろば.net 2012年3月勉強会で 「LightSwitch 〜結局何ができるの？〜」 ...</summary><author><name>lightswitch</name></author><dc:subject>LightSwitch製品紹介</dc:subject><content mode="escaped" type="text/html" xml:lang="ja"><![CDATA[<table border="0">
<tr valign="top"><td>2012/04/04</td><td>
<a href="https://www.microsoft.com/japan/msbc/info.aspx?fname=products/lightswitch" target="_blank">MSBC「Visual Studio LightSwitch 2011 社内業務を、もっと手軽で簡単に。」</a>の
<a href="https://www.microsoft.com/japan/msbc/info.aspx?fname=products/lightswitch&page=9" target="_blank">第3弾 アプリケーションを作ってみよう</a>、
<a href="https://www.microsoft.com/japan/msbc/info.aspx?fname=products/lightswitch&page=12" target="_blank">第4弾 拡張性</a>
 が公開されました。<br />
<br /></td></tr>

<tr valign="top"><td>2012/03/17</td><td>
<a href="http://hiroba-tech.net/tabid/138/Default.aspx" target="_blank">技術ひろば.net 2012年3月勉強会</a>で 「LightSwitch 〜結局何ができるの？〜」 (スピーカーは 瀬尾さん) がありました。<br />
<br />
</td></tr>

<tr valign="top"><td>2012/03/07</td><td>
<a href="https://www.microsoft.com/japan/msbc/info.aspx?fname=products/lightswitch" target="_blank">MSBC「Visual Studio LightSwitch 2011 社内業務を、もっと手軽で簡単に。」</a>の<a href="https://www.microsoft.com/japan/msbc/info.aspx?fname=products/lightswitch&page=6" target="_blank">第2弾　機能を知る</a> が公開されました。<br />
<br /></td></tr>

<tr valign="top"><td>2012/02/01</td><td>
Microsoft MSBCで <a href="https://www.microsoft.com/japan/msbc/info.aspx?fname=products/lightswitch" target="_blank">「Visual Studio LightSwitch 2011 社内業務を、もっと手軽で簡単に。」</a>が はじまりました。
特長、活用場面、基本的な開発方法などが紹介されています。<br />
<br />
</td></tr>

<tr valign="top"><td>2011/11/19</td><td>
<a href="http://www.wankuma.com/" target="_blank">わんくま同盟</a>・東京#65 勉強会で
<a href="http://yseosoft.wordpress.com/" target="_blank">技術との戯れ・瀬尾さん</a>の<br />
「LightSwitch 〜結局何ができるの？〜」がありました。<br />
<a href="http://www.slideshare.net/seosoft" target="_blank">セッション資料はslideshareで公開</a>されています。<br />
<br />
</td></tr>

<tr valign="top"><td>2011/10/22</td><td>
技術評論社 WEB+DB PRESS Vol.65の<br />
<a href="http://blogonos.wordpress.com/" target="_blank">小野 修司さん</a>の連載「いまどきの.NET開発」で<br />
【第3回】LightSwitch 2011で超簡単アプリケーション開発<br />
というLightSwitchの記事が掲載されました。<br />
9ページで、Ｑ＆Ａ形式で疑問に答え、業務アプリケーションとして必要な機能の検証結果がまとめられています。<br />
<iframe src="http://rcm-jp.amazon.co.jp/e/cm?t=sdkltdcom-22&o=9&p=8&l=as1&asins=477414830X&ref=tf_til&fc1=000000&IS2=1&lt1=_blank&m=amazon&lc1=0000FF&bc1=FFFFFF&bg1=FFFFFF&f=ifr" style="width:120px;height:240px;" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"></iframe><br />
<br />
</td></tr>

<tr valign="top"><td>2011/09/28</td><td>
「Microsoft Conference 2011・T2-206　実践クラウドのススメ」で LightSwitchの説明とデモがありました。<br />
(LightSwitchの特徴)<br />
・業務アプリケーションを手軽に簡単に作成<br />
・オンプレミス・クラウド両方に対応<br />
・利用状況に合わせて拡張できる<br />
(LightSwitchのデモ)<br />
・Visual Studio LightSwitch 2011で アプリケーションを作成<br />
・Windows Azureに発行<br />
※2011/10/20現在、Microsoft Conference 2011のセッション資料(PowerPointスライドショー)が公開されています。<br />
　「Microsoft Conference 2011」で検索して、ダウンロードしてください。
<br /><br /></td></tr>

<tr valign="top"><td width="100">2011/07/27</td><td>Microsoft Visual Studio LightSwitch 2011の日本語正式版のダウンロード提供開始<br /><br /></td></tr>
</table>
]]></content></entry><entry><title>LightSwitchのパスワード</title><link rel="alternate" type="text/html" href="http://lightswitch.jp/?eid=32" /><id>http://lightswitch.jp/?eid=32</id><issued>2011-10-18T10:51:00+09:00</issued><modified>2011-10-18T01:52:54Z</modified><created>2011-10-18T01:51:00Z</created><summary>LightSwitchのアクセス制御で「フォーム認証」を指定して、
実際にログインし、単純なパスワード(例：password)に変更すると、
「パスワードがパスワードの要件を満たしていません。
最低限必要なパスワードの長さと複雑性を確認してください。」というエラーが表示さ...</summary><author><name>lightswitch</name></author><dc:subject>LightSwitch開発</dc:subject><content mode="escaped" type="text/html" xml:lang="ja"><![CDATA[<a href="./?eid=31">LightSwitchのアクセス制御</a>で「フォーム認証」を指定して、
実際にログインし、単純なパスワード(例：password)に変更すると、
「パスワードがパスワードの要件を満たしていません。
最低限必要なパスワードの長さと複雑性を確認してください。」というエラーが表示されます。<br />
<img src="http://img.lightswitch.jp/20111018_1633512.png" alt="LightSwitchパスワード・パスワードポリシー" width="434" height="120" class="pict" /><br />
<br />

LightSwitchが使用しているユーザー管理の仕組み ASPNET Membershipでも、 
Windows Server 2008やWindows 7などと同じように、
パスワードポリシーというものがあります。<br />
<br />
ここでは LightSwitchアプリケーションのパスワードポリシー、パスワードリセットについて説明します。<br />
<br />

<strong>発行直後のMembership設定</strong><br />
LightSwitchアプリケーションを作成して、発行した Web.Config内の Membershipは以下のように設定されています。<br />
<textarea rows="15" cols="65" name="ta1" align="right">
<membership defaultProvider="AspNetMembershipProvider">
  <providers>
    <clear />
    <add name="AspNetMembershipProvider" 
        type="System.Web.Security.SqlMembershipProvider" 
        connectionStringName="_IntrinsicData" 
        applicationName="LightSwitchApp1017" 
        requiresUniqueEmail="false" 
        requiresQuestionAndAnswer="false" />
  </providers>
</membership>
</textarea>
<br />
requiresUniqueEmailは 電子メールアドレスを一意にするかですが 初期値でfalse(一意にしない)が設定されています。<br />
LightSwitchアプリケーションのユーザー設定画面では 電子メールアドレス欄はないので、気にしないでください。<br />
requiresQuestionAndAnswerは ユーザーがパスワードリセットまたはパスワードを取得する際に
「パスワードの質問(例： あなたの犬の名は？)」に答えなければならないようにするかですが 
初期値でfalse(質問なし)が設定されています。<br />
また、requiresQuestionAndAnswerがfalseの場合には、無効なパスワード試行回数が追跡されないため、ロックアウトは発生しません。<br />
その他は 指定されていないので、ASPNET Membershipの既定値で動作します。<br />
<br />

<strong>Membershipプロパティ</strong><br />
<a href="http://msdn.microsoft.com/ja-jp/library/a28ctsa5.aspx" target="_blank">Membership プロパティ</a>は、
前述した requiresUniqueEmail, requiresQuestionAndAnswer以外にも 11プロパティあります。<br />
<br />
パスワードポリシー設定は、以下のプロパティです。<br />
<table border="0">
<tr><td bgcolor="#C0C0C0" align="center">プロパティ名</td><td bgcolor="#C0C0C0" align="center">意味</td><td bgcolor="#C0C0C0" align="center">既定値</td></tr>
<tr valign="top"><td nowrap>MinRequiredNonAlphanumericCharacters</td><td nowrap>英数字以外の特殊文字数の下限値</td><td>1<br /><br /></td></tr>
<tr valign="top"><td>MinRequiredPasswordLength</td><td>パスワード長の下限値</td><td>7<br /><br /></td></tr>
<tr valign="top"><td>PasswordStrengthRegularExpression</td><td>正規表現 ※複雑性</td><td>空白<br /><br /></td></tr>
</table>
既定値では 英数字以外の特殊文字を1文字以上含み、パスワード長が7文字以上です。<br />
<br />

パスワードロックアウト制御は、以下のプロパティです。<br />
<table border="0">
<tr><td bgcolor="#C0C0C0" align="center">プロパティ名</td><td bgcolor="#C0C0C0" align="center">意味</td><td bgcolor="#C0C0C0" align="center">既定値</td></tr>
<tr valign="top"><td>RequiresQuestionAndAnswer</td><td>無効なパスワード試行の追跡有無</td><td>※false<br /><br /></td></tr>
<tr valign="top"><td>PasswordAttemptWindow</td><td nowrap>無効なパスワード試行の時間(分数)</td><td>10<br /><br /></td></tr>
<tr valign="top"><td nowrap>MaxInvalidPasswordAttempts</td><td>無効なパスワード試行の回数</td><td>5<br /><br /></td></tr>
</table>
<br />
※RequiresQuestionAndAnswerのASPNET Membershipでの既定値は trueですが、LightSwitchアプリケーションを発行した際に作成される Web.Configで falseが設定されています。<br />
(ASPNET Membershipの)既定値では 10分間に5回パスワードを間違えると ロックアウトされます。<br />
<img src="http://img.lightswitch.jp/20111018_1633488.png" alt="LightSwitchパスワード・ロックアウト" width="451" height="132" class="pict" /><br />
<br />
ロックアウトした場合、管理者がロックアウトを解除しなければ ログインできなくなります。<br />
しかし、LightSwitchアプリケーションのユーザー管理画面には ユーザー名、パスワードしか変更できず、ロックアウト解除は データベースを直接変更するか、ASPNET  Membershipのテーブルをメンテナンスする画面を作るかになります。<br />
<br />
データベースを直接修正する場合、LightSwitchアプリケーションが使用しているデータベース内のaspnet関連テーブルを変更します。<br />
1) aspnet_UsersテーブルのUserNameで ユーザーのレコードを特定<br />
2) そのユーザーのレコードのUserIdをメモしておく<br />
3) aspnet_Membershipテーブルを開き、UserIdが一致するレコードを特定<br />
4) そのレコードの IsLockedOutを TrueからFalseに変更<br />
<img src="http://img.lightswitch.jp/20111018_1633489.png" alt="LightSwitchパスワード・DBでリセット" width="466" height="62" class="pict" /><br />
<br />
データベース修正は ASPNET Membershipの理解を深めることはできますが、通常のシステム管理者にとっては作業負荷となりますので、ロックアウトを使う場合には ユーザーの画面を作成することをお勧めします。<br />
<br />
]]></content></entry><entry><title>LightSwitchのアクセス制御</title><link rel="alternate" type="text/html" href="http://lightswitch.jp/?eid=31" /><id>http://lightswitch.jp/?eid=31</id><issued>2011-10-17T17:54:00+09:00</issued><modified>2011-10-17T09:00:52Z</modified><created>2011-10-17T08:54:00Z</created><summary>業務アプリケーションでは企業データを取り扱いますので、アクセスユーザーの管理、アクセス権限管理などが必要になります。

Excel VBAの場合は、パスワードによる保護やIRM(Information Rights Management)サービスによる資格情報確認などの権限管理があります。Acces...</summary><author><name>lightswitch</name></author><dc:subject>LightSwitch開発</dc:subject><content mode="escaped" type="text/html" xml:lang="ja"><![CDATA[業務アプリケーションでは企業データを取り扱いますので、アクセスユーザーの管理、アクセス権限管理などが必要になります。<br />
<br />
<small>Excel VBAの場合は、パスワードによる保護やIRM(Information Rights Management)サービスによる資格情報確認などの権限管理があります。Accessの場合は、パスワードを使用した暗号化があります。</small><br />
<br />
LightSwitchアプリケーションでは、プロジェクトプロパティの[アクセス制御]でユーザー認証方法が選択できます。<br />
<img src="http://img.lightswitch.jp/20111017_1631784.png" alt="LightSwitchアクセス制御・プロパティ設定" width="491" height="243" class="pict" /><br />
<br />
<table border="0">
<tr><td bgcolor="#C0C0C0" align="center">認証の種類</td><td bgcolor="#C0C0C0" align="center">説明</td></tr>
<tr valign="top"><td>Windows認証</td><td>Windowsユーザー、ActiveDirectoryユーザーの認証<br />LightSwitch画面右下に Windowsユーザー名が表示される<br />以下のいずれかが選択できる<br />・アプリケーションの[ユーザー]画面で指定されたユーザーのみ許可する<br />・認証されたすべてのWindowsユーザーを許可する<br /><br /></td></tr>
<tr valign="top"><td>フォーム認証</td><td>アプリケーションが管理するユーザー、パスワードで認証<br />LightSwitch画面右下に ユーザー名(デバッグ時はテストユーザー)が表示される<br /><br /></td></tr>
<tr valign="top"><td>認証を有効にしない</td><td>ユーザー認証なし（既定値）<br />LightSwitch画面右下に ユーザー名は表示されない<br /><br /></td></tr>
</table>
<br />
LightSwitchアプリケーションでは、アプリケーションデータの機密性、アクセスするユーザー数などに応じて、簡単なアクセス制御から 高度なアクセス制御まで 実装できます。<br />
<strong>１つのユーザー・パスワードを共有</strong><br />
Accessアプリケーションのように、アプリケーションで単一のパスワードを設定して、
複数名でパスワードを共有するような管理方法は、「フォーム認証」を選択し、
管理者ユーザー名とパスワードを指定することで、実現できます。<br />
<br />
フォーム認証では、アプリケーション起動時にログイン画面が表示されます。<br />
<img src="http://img.lightswitch.jp/20111017_1631785.png" alt="LightSwitchアクセス制御・ログイン画面" width="467" height="386" class="pict" /><br />
<br />
ログイン後は、画面右下にユーザー名が表示され、ユーザー名をクリックし [パスワード変更]ができます。<br />
<img src="http://img.lightswitch.jp/20111017_1631786.png" alt="LightSwitchアクセス制御・パスワード変更操作" width="198" height="107" class="pict" /><br />
<br />
<img src="http://img.lightswitch.jp/20111017_1631787.png" alt="LightSwitchアクセス制御・パスワード変更画面" width="313" height="158" class="pict" /><br />
<br />

<strong>役割ごとのユーザー・パスワードを複数名で共有</strong><br />
役割に応じて画面表示やデータ編集の権限などが異なる場合には、「フォーム認証」を選択し、
役割に応じたユーザー(管理者、利用者など)を複数作成して、
それぞれのユーザー名・パスワードを複数名で共有することで実現できます。<br />
<br />
この場合、LightSwitchアプリケーションでは、役割に応じた画面表示 OK/NGの実装（<Screen>_CanRunメソッドを編集して、ユーザーのロールごとのメニュー表示/非表示を切り替え）が必要となります。<br />
コードの実装、デバッグ方法については <a href="http://yseosoft.wordpress.com/pages/lightswitch/" target="_blank">技術との戯れ　LightSwitch</a>の記事を参考にして下さい。<br />
<br />
フォーム認証のユーザーは、アプリケーション実行時の[管理]メニューの[ユーザー]で追加、編集できます。<br />
<img src="http://img.lightswitch.jp/20111017_1631860.png" alt="LightSwitchアクセス制御・ユーザー作成" width="492" height="302" class="pict" /><br />
<br />
フォーム認証の役割は、アプリケーション実行時の[管理]メニューの[役割]で追加、編集できます。<br />
<img src="http://img.lightswitch.jp/20111017_1631861.png" alt="LightSwitchアクセス制御・役割作成" width="492" height="302" class="pict" /><br />
<br />
ユーザー、役割は <a href="http://msdn.microsoft.com/ja-jp/library/yh26yfzy(v=VS.100).aspx" target="_blank">ASPNET Membership</a>で実現されています。作成したユーザー、役割は データベースのaspnet_Userテーブル、aspnet_Roleテーブルなどに格納されています。<br />
<br />

<strong>個々のユーザー・パスワード</strong><br />
Windowsドメイン(ActiveDirectory)環境がある場合、「Windows認証」を選択します。<br />
「アプリケーションの[ユーザー]画面で指定されたユーザーのみ許可する」を選択すれば、ユーザーの表示名やパスワード管理は Windowsドメインにまかせて、Windowsドメインユーザーのうち、LightSwitchアプリケーションを利用するユーザーを選択できます。<br />
「認証されたすべてのWindowsユーザーを許可する」を選択すれば、ユーザー認証のすべてをWindowsドメインコントローラに任せられます。全社で使用する情報表示アプリケーションなどで この設定にすれば、「管理が容易」となります。<br />
<br />
Windowsドメインはないが、個々のユーザー・パスワードで管理したい場合には、「フォーム認証」を選択します。<br />
<br />
]]></content></entry><entry><title>LightSwitchのＱ＆Ａ</title><link rel="alternate" type="text/html" href="http://lightswitch.jp/?eid=30" /><id>http://lightswitch.jp/?eid=30</id><issued>2011-10-14T14:39:00+09:00</issued><modified>2011-10-14T05:40:23Z</modified><created>2011-10-14T05:39:00Z</created><summary>LightSwitchの開発をはじめると、数々の疑問が浮かび上がってきます。
しかし、まだ 日本語のフォーラムなどがないようなので、とりあえず Ｑ＆Ａ形式で載せておきます。


(Q1)作成済みのテーブル名を変更したら、作成済みの画面名は変更されますか？
(A1)いいえ、...</summary><author><name>lightswitch</name></author><dc:subject>LightSwitch評価</dc:subject><content mode="escaped" type="text/html" xml:lang="ja"><![CDATA[LightSwitchの開発をはじめると、数々の疑問が浮かび上がってきます。<br />
しかし、まだ 日本語のフォーラムなどがないようなので、とりあえず Ｑ＆Ａ形式で載せておきます。<br />
<br />
<table border="0">
<tr valign="top"><td width="50">(Q1)</td><td>作成済みのテーブル名を変更したら、作成済みの画面名は変更されますか？</td></tr>
<tr valign="top"><td>(A1)</td><td>いいえ、変更されません。<br /><br /></td></tr>

<tr valign="top"><td>(Q2)</td><td>作成済みの(テーブルの)フィールド名を変更したら、編集グリッドなどのフィールド名は変更されますか？</td></tr>
<tr valign="top"><td>(A2)</td><td>画面上のフィールド名は自動的に変更されます。フィールドの自動計算などの カスタム検証(内のメソッド名など)も自動的に変更されます。<br /><br /></td></tr>
 
<tr valign="top"><td>(Q3)</td><td>作成済みのテーブルにフィールドを追加したら、作成済みの画面に追加されますか？</td></tr>
<tr valign="top"><td>(A3)</td><td>いいえ、追加されません。そして、Debug実行時に こっそり Visuala Studioの出力ウィンドウに 警告が表示されていたりします。<br /><br /></td></tr>

<tr valign="top"><td>(Q4)</td><td>画面上部のメニュー(リボン)を小さくするには？</td></tr>
<tr valign="top"><td>(A4)</td><td>アプリケーションのDebug実行に メニュー右側のユーザー設定 [^]をクリックすると メニューが小さくなります。プログラムで自動的にできないかは、要調査。<br /><br /></td></tr>

<tr valign="top"><td>(Q5)</td><td>テーブル フィールドの型には どのような型がありますか？</td></tr>
<tr valign="top"><td>(A5)</td><td>Binary,Boolean,Date,Date Time,Decimal,Double,Image,Integer,Long Integer,Money,Short Intger,Stringなどの標準的DBMSにあるデータ型の他に、Email Address,Guid,Phone Numberのデータ型があります。詳細は、<a href="./?eid=12">LightSwitchのデータ型</a>を参照してください。<br /><br /></td></tr>

<tr valign="top"><td>(Q6)</td><td>テーブル フィールドのカスタム検証は どのタイミングで実行されますか？</td></tr>
<tr valign="top"><td>(A6)</td><td>テーブルのレコードデータを新規作成、編集したタイミングで実行されます。カスタム検証を追加する前に テーブルのレコードデータがある場合は 検証は実行されません。<br /><br /></td></tr>

<tr valign="top"><td>(Q7)</td><td>デザイナーなどで定義したテーブルデータはどこに保存されていますか？</td></tr>
<tr valign="top"><td>(A7)</td><td>発行するまでは、ローカルファイルに保持しています。発行のタイミングで SQL Serverデータベースなどに移されます。<br /><br /></td></tr>

<tr valign="top"><td>(Q8)</td><td>どこのWebサーバーを使っていますか？</td></tr>
<tr valign="top"><td>(A8)</td><td>発行するまでは、ローカルコンピュータ上で動作しています。LightSwitchプロジェクトの初期設定では デスクトップアプリケーションとなっています。<br /><br /></td></tr>

<!-- Record format
<tr valign="top"><td></td><td></td></tr>
<tr valign="top"><td></td><td><br /><br /></td></tr>
-->

</table>
]]></content></entry><entry><title>LightSwitchのコントロール開発</title><link rel="alternate" type="text/html" href="http://lightswitch.jp/?eid=29" /><id>http://lightswitch.jp/?eid=29</id><issued>2011-10-14T14:22:00+09:00</issued><modified>2011-10-14T05:23:39Z</modified><created>2011-10-14T05:22:00Z</created><summary>LightSwitchのコントロールは、LightSwitchアプリケーションの外観と機能をカスタマイズする もっとも一般的な方法です。
LightSwitchのコントロールは SilverlightコントロールにLightSwitchモデルの機能を追加したものです。
LightSwitchにコントロールを追加する方法...</summary><author><name>lightswitch</name></author><dc:subject>LightSwitch開発</dc:subject><content mode="escaped" type="text/html" xml:lang="ja"><![CDATA[LightSwitchのコントロールは、LightSwitchアプリケーションの外観と機能をカスタマイズする もっとも一般的な方法です。<br />
LightSwitchのコントロールは SilverlightコントロールにLightSwitchモデルの機能を追加したものです。<br />
LightSwitchにコントロールを追加する方法は、カスタムコントロールを開発するか、コントロール拡張(control extension)するかの２つの方法があります。<br />
ほとんどのSilverlightコントロールが、LightSwitchのカスタムコントロールとして直接使用できます。グループコントロールなどのいくつかのコントロールについては、コントロール拡張を作成して、使用できます。<br />
<br />
コントロール拡張の種類を下表に示します。<br />
<table border="0">
<tr valign="top"><td bgcolor="#C0C0C0" align="center" width="120">種類</td><td bgcolor="#C0C0C0" align="center">説明</td></tr>
<tr valign="top"><td>Value</td><td>単一コントロールのような 単純なデータ<br /><br /></td></tr>
<tr valign="top"><td>Details</td><td>単一のコントロール や  ノード配下の子要素のような 要素または 要素の複合体<br /><br /></td></tr>
<tr valign="top"><td>Command</td><td>Button や Hyperlinkのような アクションのあるアイテム<br /><br /></td></tr>
<tr valign="top"><td>Collection</td><td>Grid や ListBoxのような アイテムのコレクション<br /><br /></td></tr>
<tr valign="top"><td>Group</td><td>TableLayout や RowsLayoutのような アイテムのグループ<br /><br /></td></tr>
</table>
<br />
コントロール拡張を開発する方法は、MSDNに多くのサンプル(Walkthrough)がありますので参考にしてください。<br />
・<a href="http://msdn.microsoft.com/en-us/library/hh304423.aspx" target="_blank">Walkthrough: Creating a Smart Layout Control Extension.</a><br />
・<a href="http://msdn.microsoft.com/en-us/library/hh304430.aspx" target="_blank">Walkthrough: Creating a Stack Panel Control Extension.</a><br />
・<a href="http://msdn.microsoft.com/en-us/library/hh290141.aspx" target="_blank">Walkthrough: Creating a Value Control Extension</a><br />
・<a href="http://msdn.microsoft.com/en-us/library/hh290136.aspx" target="_blank">Walkthrough: Creating a Detail Control Extension.</a><br />
<br />
]]></content></entry><entry><title>LightSwitchのビジネス型開発</title><link rel="alternate" type="text/html" href="http://lightswitch.jp/?eid=28" /><id>http://lightswitch.jp/?eid=28</id><issued>2011-10-14T13:26:00+09:00</issued><modified>2011-10-14T04:40:11Z</modified><created>2011-10-14T04:26:00Z</created><summary>LightSwitchには、Integer,Stringなどの標準的なデータ型があり、入力値の検証（バリデーション）もできます。バリデーションには、Nullチェック、最大文字列長チェック、上限/下限チェック、通貨型の精度・小数点以下桁数チェックがあります。
LightSwitchには、電子メ...</summary><author><name>lightswitch</name></author><dc:subject>LightSwitch開発</dc:subject><content mode="escaped" type="text/html" xml:lang="ja"><![CDATA[LightSwitchには、Integer,Stringなどの標準的な<a href="./?eid=12">データ型</a>があり、入力値の検証（バリデーション）もできます。バリデーションには、Nullチェック、最大文字列長チェック、上限/下限チェック、通貨型の精度・小数点以下桁数チェックがあります。<br />
LightSwitchには、電子メールアドレス用のEmail Address、電話番号用のPhone Numberというデータ型も用意されていて、簡単に書式設定や検証ロジックのカスタマイズができます。<br />
<br />
単純なデータなどを１つのテーブル フィールドで扱う場合には、LightSwitchの標準データ型を使用すればよいのですが、業務システム・業務データというものは複雑なので、標準データ型だけではカバーできないケースもでてきます。<br />
例えば、複数箇所で同じ種類のデータ(企業や業界特有のID、番号など)を取り扱う場合や、複数のLightSwitchアプリケーションで同じ種類のデータを取り扱う場合などです。
LightSwitchに組み込まれている標準の<a href="./?eid=12">データ型</a>の Integer,Stringなどのカスタム検証で検証ロジックをプログラミングすると、複数箇所に同じようなプログラムができ、テストの時や仕様変更の時などに問題となります。<br />
<br />
このような「LightSwitchの標準データ型でカバーできない」場合には、LightSwitch拡張機能のビジネス型を開発します。<br />
LightSwitchのビジネス型では、独自の書式設定、検証ロジック、プロパティ オプションの組み合わせなどができます。<br />
<br />
ここでは、LightSwitchのビジネス型を開発する手順(<a href="http://msdn.microsoft.com/en-us/library/hh290140.aspx" target="_blank">MSDNのWalkthrough: Creating a Business Type Extension</a>)について説明します。<br />
※LightSwitchの拡張開発に必要なソフトウェアのインストールについては、<a href="./?eid=22">LightSwitchの拡張開発環境</a>を参照してください。<br />
<br />

<strong>プロジェクト作成</strong><br />
1) Visual Studioを起動し、[新規作成]→[プロジェクト]をクリック<br />
<br />

2) 新しいプロジェクト画面の左側で [LightSwitch]の下の[Extensibility]をクリックし、画面中央で「LightSwitch Extension Library」を選択し、プロジェクト名に BusinessTypeExtension と入力し、[OK]をクリック<br />
<br />

3) プロジェクトが作成され、ソリューションエクスプローラに 7つのプロジェクトが追加されます。<br />
BusinessTypeExtension.Client<br />
BusinessTypeExtension.Client.Design<br />
BusinessTypeExtension.Common<br />
BusinessTypeExtension.Design<br />
BusinessTypeExtension.Lspkg<br />
BusinessTypeExtension.Server<br />
BusinessTypeExtension.Vsix<br />
<br />

<strong>BusinessTypeファイルの追加</strong><br />
4) ソリューションエクスプローラで [(プロジェクト名).Lspkg]を右クリックし、[追加]→[新しい項目]をクリック<br />
<br />

5) 新しい項目の追加画面の中央で 「Business Type」を選択し、画面下部のファイル名に PositiveIntegerと入力し、[追加]をクリック<br />
<img src="http://img.lightswitch.jp/20111014_1623173.png" alt="LightSwitchビジネス型・BusinessTypeファイルの追加" width="478" height="330" class="pict" /><br />
<br />

6) ビジネス型のxamlファイルが追加され、画面表示されます。関連ファイルは、.Clientプロジェクトなどに作成されます。<br />
(.Clientプロジェクト￥Presentation￥Controls)<br />
PositiveIntegerControl.xaml<br />
(.ClientDesignプロジェクト￥Resources￥ControlImages)<br />
PositiveIntegerControl.png<br />
(.Commonプロジェクト￥Metadata)<br />
￥Controls￥PositiveIntegerControl.lsml<br />
￥Types￥PositiveInteger.lsml<br />
Module.lsml<br />
(.Commonプロジェクト￥Resources)<br />
ModuleResources.resx<br />
(.Designプロジェクト￥Resources)<br />
￥ControlImages￥PositiveIntegerControl.png<br />
PositiveIntegerControlImageProvider.cs<br />
<br />

<strong>データ型のOverride指定</strong><br />
ビジネス型は、LightSwitch標準のデータ型（Integer,Stringなど）をOverride指定して、定義します。<br />
7) ソリューションエクスプローラで [(プロジェクト名).Common]を展開し、￥Metadata￥Types￥PositiveInteger.lsmlをダブルクリック<br />
<br />
8) PositiveInteger.lsmlのSemanticTypeタグには、既定では String をOverride指定するようになっていますので Int32 に変更<br />
<img src="http://img.lightswitch.jp/20111014_1623174.png" alt="LightSwitchビジネス型・データ型のOverride指定" width="416" height="504" class="pict" /><br />
<br />

<strong>表示名、説明、作者の設定</strong><br />
9) ビジネス型の表示名、説明、作者を設定します。<br />
・各プロジェクトファイルのプロパティ - アセンブリ情報<br />
・.Commonプロジェクト￥Metadata￥Controls￥PositiveIntegerControl.lsml<br />
・.Vsixプロジェクト￥source.extension.vsixmanifest<br />
<br />

<strong>ビルド、実行</strong><br />
ここまでの設定を一旦すべて保存して、ビルド、実行します。<br />
10) ソリューションのビルド、実行(F5)<br />
<br />

11) 新しくVisual Studioがもう１つ起動されますので、新しいプロジェクトでLightSwitchアプリケーションを作成するか、既存プロジェクトのLightSwitchアプリケーションを開きます。<br />
<br />

12) 新しく起動されたVisual Studioのソリューションエクスプローラで プロジェクトを右クリックし、[プロパティ]をクリック<br />
<br />

13) プロジェクトプロパティ画面の左側で 「拡張機能」をクリックし、画面中央で BusinessTypeExtension を選択し、左側のチェックボックスをチェック<br />
<img src="http://img.lightswitch.jp/20111014_1623175.png" alt="LightSwitchビジネス型・プロジェクトプロパティ拡張機能" width="450" height="348" class="pict" /><br />
<br />

14) ソリューションエクスプローラで 任意のテーブルをダブルクリックし、デザイナーを表示し、新しいフィールドを追加し、（例： DT_PositiveInteger） 型で「PositiveInteger」が選択できることを確認<br />
<img src="http://img.lightswitch.jp/20111014_1623176.png" alt="LightSwitchビジネス型・フィールドの型" width="475" height="330" class="pict" /><br />
<br />

15) 新しく起動されたVisual Studioを終了し、デバッグを終了<br />
<br />

<strong>対応するコントロールの定義</strong><br />
LightSwitch拡張機能のビジネス型を作成すると、既定ではシンプルなTextBoxコントロールが自動的に作成されます。ここでは そのTextBoxコントロールのxamlファイルをカスタマイズします。<br />
16) ソリューションエクスプローラで、.Clientプロジェクト￥Presentation￥Controls￥PositiveIntegerControl.xamlをダブルクリック<br />
<br />
17) PositiveIntegerControl.xamlのTextBoxタグを Gridタグ、Sliderタグ、TextBlockタグなどに変更<br />
<img src="http://img.lightswitch.jp/20111014_1623220.png" alt="LightSwitchビジネス型・対応コントロールの変更" width="469" height="272" class="pict" /><br />
<br />

<strong>バリデーションの定義</strong><br />
ビジネス型にバリデーション(入力の検証)を追加するには、以下の定義が必要となります。<br />
a) Constant定義<br />
b) 検証ルール(Validation rule)定義<br />
c) 検証アトリビュート(Validation attribute)定義<br />
d) 検証ファクトリー(Validator factory)定義<br />
e) 検証インディケーター(Validation indicator)定義<br />
<br />
18) まずConstant定義を追加します。ソリューションエクスプローラで .Commonプロジェクトを右クリックし、[追加]→[クラス]をクリック<br />
19) 新しい項目の追加画面で、クラスのファイル名に BusinessTypeExtensionModuleと入力し、[追加]をクリック<br />
<img src="http://img.lightswitch.jp/20111014_1623225.png" alt="LightSwitchビジネス型・検証クラスの追加" width="478" height="330" class="pict" /><br />
<br />
20) BusinessTypeExtensionModule クラスを 下図のコードに変更<br />
<img src="http://img.lightswitch.jp/20111014_1623261.png" alt="LightSwitchビジネス型・検証クラスのコード" width="442" height="288" class="pict" /><br />
<br />
21) 次に検証ルールを定義します。ソリューションエクスプローラで .Commonプロジェクトを右クリックし、[追加]→[クラス]をクリック<br />
<br />
22) 新しい項目の追加画面で、クラスのファイル名に PositiveIntegerValidationと入力し、[追加]をクリック<br />
<br />
23) PositiveIntegerValidation クラスを 下図のコードに変更<br />
<img src="http://img.lightswitch.jp/20111014_1623267.png" alt="LightSwitchビジネス型・検証ルールのコード" width="448" height="437" class="pict" /><br />
24) 次に検証アトリビュートを定義します。ソリューションエクスプローラで .Commonプロジェクト￥Metadata￥Types￥PositiveInteger.lsmlをダブルクリック<br />
<br />
25) PositiveInteger.lsmlのSemantivType.Attributesタグ内のDisplayNameタグの直後に Attributeタグを追加<br />
26) PositiveInteger.lsmlのSemantivTypeタグの後に AttributeClassタグを追加<br />
<img src="http://img.lightswitch.jp/20111014_1623299.png" alt=" LightSwitchビジネス型・検証アトリビュートのコード" width="459" height="375" class="pict" /><br />
<br />
27) 次に検証ファクトリーを定義します。ソリューションエクスプローラで .Commonプロジェクト￥PositiveIntegerValidation.csをダブルクリック<br />
<br />
28) PositiveIntegerValidation.csのPositiveIntegerValidationクラス内のコンストラクタ直後に PositiveIntegerValidatorFactoryクラスを追加<br />
<img src="http://img.lightswitch.jp/20111014_1623342.png" alt="LightSwitchビジネス型・検証ファクトリーのコード" width="441" height="325" class="pict" /><br />
※コードは msdnのコードをコピーしてください。ただし、2箇所ほど間違っていますが。<br />
<br />
29) 次に検証インディケーターを定義します。ソリューションエクスプローラで .Clientプロジェクト￥Presentation￥Controls￥PositiveIntegerControl.xaml をダブルクリック<br />
<br />
30) PositiveIntegerControl.xaml のUserControlタグにネームリファレンスを追加<br />
<br />
31) PositiveIntegerControl.xaml のUserControlタグ、Gridタグ内のTextBlockタグの直後に ValidatableContentControlタグを追加<br />
<img src="http://img.lightswitch.jp/20111014_1623359.png" alt="LightSwitchビジネス型・検証インディケーターのコード" width="445" height="132" class="pict" /><br />
※ここで Visual Studioの青波線がでる場合もありますが、[すべてのファイルを保存]→[ソリューションのビルド]をすれば解消します。入力したコードが間違ってなければですが。<br />
<br />

<strong>カスタムプロパティの追加</strong><br />
ビジネス型でも LightSwitch標準の組み込み検証ルールは常に実行されます。組み込みの検証ルールの実行ON/OFFが追加できます。
ビジネス型にカスタムプロパティを追加するには、以下の変更が必要となります。<br />
・メタデータの更新<br />
・constantsの追加<br />
・検証コード(Validation code)の追加<br />
<br />
32) まずメタデータを更新します。ソリューションエクスプローラで .Commonプロジェクト￥Metadata￥Types￥PositiveInteger.lsml をダブルクリック<br />
<br />
33) PositiveInteger.lsmlのAttributeClass.Attributesタグの直後に AttributePropertyタグを追加<br />
<br />
34) PositiveInteger.lsmlのSemanticType.Attributesタグ内のAttributeタグ内に Propertyタグを追加<br />
<img src="http://img.lightswitch.jp/20111014_1623402.png" alt="LightSwitchビジネス型・カスタムプロパティメタデータ" width="409" height="424" class="pict" /><br />
<br />
35) 次にconstantsを追加します。ソリューションエクスプローラで .Commonプロジェクト￥BusinessTypeExtensionModule.csをダブルクリック<br />
<br />
36) BusinessTypeExtensionModule.csのValidationAttributeクラスに const ShouldBeEvenPropertyName、ShouldBeEvenPropertyEditorName を追加<br />
<img src="http://img.lightswitch.jp/20111014_1623423.png" alt="LightSwitchビジネス型・カスタムプロパティConst" width="473" height="314" class="pict" /><br />
<br />
37) 最後に検証コードを追加します。ソリューションエクスプローラで .Commonプロジェクト￥PositiveIntegerValidation.csをダブルクリック<br />
<br />
38) PositiveIntegerValidation.csのValidateメソッドのコードを変更<br />
<img src="http://img.lightswitch.jp/20111014_1623439.png" alt="LightSwitchビジネス型・カスタムプロパティ検証コード" width="458" height="249" class="pict" /><br />
検証アトリビュートのNullチェックなどの検証コードが追加されています。<br />
<br />
MSDNのWalkthroughでは、「プロパティエディターの作成」もありますが、ご興味のある方は チャレンジしてみてください。<br />
<br />

<strong>実装の確認</strong><br />
ここまでの変更をすべて保存し、ソリューションビルド、実行(F5)して、ビジネス型にカスタムプロパティが追加されていること、検証コードが正しく動作していることなどを確認してみてください。<br />
<img src="http://img.lightswitch.jp/20111014_1623449.png" alt="LightSwitchビジネス型・実行時のプロパティ" width="387" height="613" class="pict" /><br />
<br />
<img src="http://img.lightswitch.jp/20111014_1623533.png" alt="LightSwitchビジネス型・デザイン時のコントロール" width="327" height="274" class="pict" /><br />
<br />
<img src="http://img.lightswitch.jp/20111014_1623541.png" alt=" LightSwitchビジネス型・実行時のコントロール" width="478" height="220" class="pict" /><br />
<br />
]]></content></entry><entry><title>LightSwitchの画面テンプレート開発</title><link rel="alternate" type="text/html" href="http://lightswitch.jp/?eid=27" /><id>http://lightswitch.jp/?eid=27</id><issued>2011-10-12T15:13:00+09:00</issued><modified>2011-10-12T06:15:25Z</modified><created>2011-10-12T06:13:00Z</created><summary>LightSwitchの画面テンプレート（スクリーンテンプレート）は、「新しい画面の追加」で選択できるテンプレートで 標準では詳細/編集可能グリッド/一覧および詳細/新規データ/データ検索 の５種類があります。

レポート機能などを追加する場合や、標準の画面ではカバー...</summary><author><name>lightswitch</name></author><dc:subject>LightSwitch開発</dc:subject><content mode="escaped" type="text/html" xml:lang="ja"><![CDATA[LightSwitchの画面テンプレート（スクリーンテンプレート）は、「新しい画面の追加」で選択できるテンプレートで 標準では<a href="./?eid=3">詳細/編集可能グリッド/一覧および詳細/新規データ/データ検索</a> の５種類があります。<br />
<br />
<a href="./?eid=23">レポート機能</a>などを追加する場合や、標準の画面ではカバーできない<a href="./?eid=4">データソース接続</a>を含む画面などを追加する場合に有用です。<br />
<br />
LightSwitchの画面テンプレート開発の前半部分（プロジェクト作成〜拡張機能ファイルの追加）とインストール方法などは、<a href="./?eid=25">テーマの開発</a>や<a href="./?eid=26">シェルの開発</a>と同様です。開発の後半部分は、シェルの開発と同様に「プログラム寄り」な内容が多く、難解です。<br />
<br />
LightSwitchの画面テンプレート開発例を下図に示します。<br />
<img src="http://img.lightswitch.jp/20111012_1618594.png" alt="LightSwitch画面テンプレート開発例" width="480" height="342" class="pict" /><br />
<br />]]></content></entry></feed>
