Welcome to MSDN Blogs Sign in | Join | Help

[Info] Office 開発を よりビジネスの視点で

こんにちは。

Office / SharePoint を中心とした開発について、「どんな国内製品が出ているの ?」、「事例の一覧が見たい !」、「認定やプログラムは ?」 などのビジネス的な視点で興味を持たれている方も多いと思います。
そうした方へのヒントとして、Office 開発をよりビジネス的な視点 (統合的なソリューションの視点) でまとめた OBA (Office Business Applications) のサイトがオープンしました。

http://www.microsoft.com/japan/office/2007/oba/default.mspx

書籍「OBA開発入門」でもコードをまじえてご紹介していますが、数多く存在する VSTO や SharePoint などのテクノロジーを組み合わせて、実際にビジネスやソリューションをどう構築していくか、といった事例についても (実例を通して) 学ぶことができます。

 

Posted by tsmatsuz | 2 Comments

Excel と Excel Services を使ったデータベース連携

  1. SharePoint におけるさまざまな活用場面
  2. 例1 : InfoPath と Forms Services を使ったデータベース連携
  3. 例2 : Excel と Excel Services を使ったデータベース連携 

こんにちは。 

今回は Excel Services を使って、前回登録したデータベース上のデータを閲覧する機能を作成してみましょう。

勉強会でも話が出たのですが、SharePoint 上でデータベースのデータ表示をおこなう方法は、実は、非常にさまざまです。まずは、その点を補足しておきます。

  • データビュー

    単に表を扱う場合には、SharePoint Designer のデータビューを使用して作成することができます。データビューを使用すると、データベースの内の SQL やストアドプロシージャを使用したデータの表示や、さらに作成したデータビュー上でのフィルターの設定なども可能など、細かなビューの設定が可能です。(注 : ただし、データビューのフィルターでは、データベースへの検索のフィルターではなく、取得したデータをフィルターして表示しているため注意してください)
    このデータビューは、SharePoint Designer を扱える 業務管理者 (現場の管理者) による 実装を想定した仕組みです。

  • ビジネスデータカタログ (BDC)

    エンタープライズビジネス向けの Microsoft Office SharePoint Server 2007 でのみ使用可能です。
    このシナリオでは、プロフェッショナル開発者により構築されたアプリケーション定義 (xml) を SharePoint に
    インストールして検索などの設定をおこなうことで、SharePoint を使用する現場の担当者(エンドユーザー)がこのデータを使用した Web パーツ挿入によるデータの表示や、Web パーツどうしの接続、look-up 列としての使用、検索・閲覧 などの使い方が可能になるというもので、開発者 /管 理者による設定と、エンドユーザーによるビジネス構築という統合シナリオ での利用を想定した機能です。(SharePoint 上におけるデータ統合的な観点でコラボレーションされます)
    ただし、BDC では更新系の処理はサポートされていない (閲覧のみ) ので注意してください。

  • SQL Server Report Services

    SharePoint では、SQL Server のレポートサービス (Report Services) と連携したデータの表示が可能です。
    レポートサービス用のアドイン (ダウンロード可能) を SharePoint にインストールすることで、SQL Server のレポートサービスと連携したレポートの管理や、レポート ビューア Web パーツを使用したデータの表示が可能になるため、SQL Server が持っているレポーティングのためのフレームワークを SharePoint 上でも有効に、そして完結的に活用できます。

Excel Services の場合は、ピボット、グラフなどのインテリジェンスと組み合わせた エンドユーザーによる実装・展開 が可能であり、 データベース連携シナリオにおいても、SQL Server Analysis Services との連携 (キューブデータの使用) など、いくつかの統合シナリオがあります。
これらの 1 つ 1 つのシナリオは、以下で簡潔に紹介されていますので、是非参考にしながら、ステップバイステップでつ設定してみてください。(決して長いドキュメントではありません。最初のほうは、セキュリティ構成の方法などについてです)

http://www.microsoft.com/japan/technet/archive/prodtechnol/office/sharepoint/library/eea3ace8-0863-429a-b1e8-041254ed2fc4.mspx?mfr=true

なお、Excel Services を使用する場合、Excel 上へのデータのインポートの際のデータの種類として 「テーブル」(クエリテーブル、外部データ範囲) は挿入できないので注意してください。ピボットテーブル (pivot table) などを使ったデータベース (SQL Server など) のデータの取り込みが必要です。

挿入したグラフなどは「Webパーツ」としてトップページなどに取り込むことができ、一般的なシナリオは達成されるでしょう。

さて、ここからは少し余談を記載しましょう。 

Excel Services を使って取り込んだデータに高度なフィルターなどを使って処理したくなる場合もあるでしょう。
この場合には、「開発」の必要が生じます。

1 つの方法としては、Excel Services を使ったコンシューマWebパーツを作成し、プロバイダーWebパーツと接続 (Web パーツ接続) をおこなうという方法です。「接続」を使用したWeb パーツの実装方法については、以前 私のブログ でも簡単な例を紹介しましたが、Excel Services を使ったコンシューマ Web パーツの作成方法については以下で紹介されていますので、「接続」の概念を身につけてから以下を参照すると良いでしょう。

http://msdn.microsoft.com/en-us/office/bb266408.aspx

また、もう 1 つの回避策として、UDF (ユーザー定義関数) を使用した (Excel Services 上の) Excel シートを作成することで解決するという方法もあります。単純な表形式のデータなどの場合にはこの方法が使えるでしょう。
ここでは、このサンプルをご紹介しましょう。

UDF とは、構築経験のある方は百も承知と思いますが、関数を SharePoint Server 上に登録して、この関数を Excel Services 上の Excel シートから (さも Excel に組み込まれている関数のように) 呼び出すというものです。
UDF では表形式のデータを返すことも可能です。

  1. まず、UDF を使用できるようにするため、SharePoint の SSP (共有サービスプロバイダ) の管理画面で、[信頼できる保存場所] の設定画面を表示します。
    Excel ブックをアップロードする場所 (サイト) に対して UDF の使用を許可しておきましょう。

  2. 今回作成する UDF では、ストアドプロシージャを作成して呼び出すようにしましょう。
    このため、まずは、以下のストアドプロシージャを作成しておきます。(テーブルは、前回作成したものをそのまま使用します)

    create procedure GetTestData
      @Name nvarchar(255)
    as
      select Id, Name, Cost from TestTbl where Name like @Name
    go

  3. UDF の関数を作成します。[クラスライブラリ] のプロジェクトを新規作成し、以下の関数を実装します。
    ここでのポイントは、返り値として object[,] の表 (table) の配列を渡しているという点です。(同様の手法を用いて、Excel 上に設定された 1 次元や、2 X 2 の配列を引数に取ることもできます)

    using Microsoft.Office.Excel.Server.Udf;

    . . . . .

    [UdfClass]
    public class TestDataUDF
    {
        [UdfMethod]
        public object[,] GetTestData(string name)
        {
            int maxrow = 5;
            object[,] data = new object[maxrow, 2];
            using (SqlConnection con = new SqlConnection(@"data source=.\sqlexpress;initial catalog=TestDB;user id=Demo;password=P@ssw0rd"))
            {
                con.Open();
                SqlCommand cmd = new SqlCommand(@"GetTestData", con);
                cmd.CommandType = CommandType.StoredProcedure;
                cmd.Parameters.Add("@Name", SqlDbType.NVarChar, 255).Value = name;
                using (SqlDataReader reader = cmd.ExecuteReader())
                {
                    for (int i = 0; (i < maxrow) && reader.Read(); i++)
                    {
                        data[i, 0] = reader["Name"];
                        data[i, 1] = reader["Cost"];
                    }
                    reader.Close();
                }
                con.Close();
            }
            return data;
        }
    }

  4. ビルドをおこなって、アセンブリ (dll) を作成します

     
  5. SharePoint の SSP (共有サービスプロバイダ) の管理画面で、[ユーザー定義関数アセンブリ] の設定画面を表示し、上記で作成したアセンブリを登録します

  6. Excel ブックを作成しましょう。
    • 今回は下図のようにテーブルを挿入します。ただし、Excel の「テーブル」では上記の配列データ (UDF 関数が返してくる結果) が使用できないため、今回は、いったんテーブルを挿入したら、範囲に変換 ([デザイン] タブの [範囲に変換] をクリック) をおこなっておきます。
    • 下図の通り、UDF に渡すパラメータを入力するセルを今回は C2 としています。
      C2 のセルを選択し、リボンの [数式] タブ - [名前の定義] をクリックして「param1」という名前を付けておきましょう。
    • Excel のシートのデータを貼り付ける範囲の左上のセルに、上記のUDFを使用した式「=GetTestData(C2)」を入力します (この時点では、Excel Services を使用していないので「#Name」が表示されます)。
      つぎに、データを貼り付ける範囲すべてを選択して F2 を押し、続けて [Ctrl] + [Shift] + [Enter] を押すと、選択した範囲すべてに、式「{=GetTestData(B2)}」が設定されます。
      (これで、配列として式が設定されます。)



  7. 上記の Excel ブックを SharePoint のサーバーに発行 (Publish) します。
    発行の際には、[Excel Services のオプション] をクリックして、パラメータとして上記の「param1」を選択しておきましょう。

これで完了です。

登録された Excel シートは Web ブラウザで閲覧可能であり、param1 に入力された値に応じて関数が実行され、データが貼りつきます。

このようにして登録された Excel シートでは、表部分、グラフ部分などの部品ごとに Web パーツとして貼り付けて、上記の param1 のフィルターの値と連携 (Web パーツ接続) させることも可能です。例えば、[テキストフィルター] Web パーツを使用して下図のように default.aspx に検索結果などを表示することが可能です。

 

 

Posted by tsmatsuz | 1 Comments
Filed under:

InfoPath と Forms Services を使ったデータベース連携

  1. SharePoint におけるさまざまな活用場面
  2. 例1 : InfoPath と Forms Services を使ったデータベース連携
  3. 例2 : Excel と Excel Services を使ったデータベース連携 

こんにちは。 

では、実際に、InfoPath を使って、企業のリレーショナルデータと連携する InfoPath の簡単な Web (ブラウザ互換) フォームを作成してみましょう。作成するシナリオは単純で、InfoPath の Web フォームで入力をおこなったら、データベースにその情報を反映するというものです。

InfoPath の Web フォームを使ってデータ登録 (変更) をおこなうには、実は、コードや Web サービスを使った実装が必要になります。(今回は Web サービスを使用します。) ということは、「開発」が必要になります !

通常、InfoPath の開発では、エンドユーザーのみでノンコーディングで作成できるというメリットがありますが、こうした処理 (単純な「参照」以外の処理) を含む業務を実装する場合には、開発者が更新部分のコンポーネントを構築して、これをエンドユーザー (現場の業務管理者) が InfoPath を使って組み合わせるといった処理が必要になります。さらに、こうしたコードや Web サービスを使った実装では、エンドユーザーが勝手にフォームを登録することもできません。管理者用のフォームとして SharePoint に登録する必要があるという点も憶えておきましょう。(管理者による設定作業も必要です)

開発者の作業 

  1. まず、テーブルとストアドプロシージャを作成しておきましょう。
    今回は以下の簡単なテーブルを使用します。

    create table TestTbl (
      Id int identity(1,1) not null,
      Name nvarchar(255),
      Cost int,
      constraint PK_TestTbl_Id primary key clustered (Id asc)
    )
    go

  2. 登録されたデータの ID を Web フォームに返すように、以下のストアドプロシージャを作成しておきます。

    create procedure InsertTestData
      @Name nvarchar(255),
      @Cost int,
      @Id int out
    as
      insert into TestTbl (Name, Cost) values (@Name, @Cost)
      set @Id = scope_identity()
    go

  3. このストアドプロシージャを InfoPath から直接呼び出す方法もあるかもしれませんか、今回は、このストアドプロシージャを使って、以下の Web サービスを作成し、この Web サービスを公開しておきます。
    この Web サービスでは、「追加の処理」の場合には上記のストアドプロシージャを使ってデータを追加し (さらに、作成されたデータの ID を取得して返す)、「変更の処理」の場合には ID をキーとしてデータの変更をおこないます。

    public class TestDataService : System.Web.Services.WebService
    {
        [WebMethod]
        public int SetData(int id, string name, int cost)
        {
            int res;
            using (SqlConnection con = new SqlConnection(@"data source=.\sqlexpress;initial catalog=TestDB;user id=Demo;password=P@ssw0rd"))
            {
                con.Open();
                if (id > 0)
                {
                    SqlCommand cmd = new SqlCommand(@"update TestTbl set Name = @Name, Cost = @Cost where Id = @Id", con);
                    cmd.Parameters.Add("@Id", SqlDbType.Int).Value = id;
                    cmd.Parameters.Add("@Name", SqlDbType.NVarChar, 255).Value = name;
                    cmd.Parameters.Add("@Cost", SqlDbType.Int).Value = cost;
                    cmd.ExecuteNonQuery();
                    res = id;
                }
                else
                {
                    SqlCommand cmd = new SqlCommand(@"InsertTestData", con);
                    cmd.CommandType = CommandType.StoredProcedure;
                    cmd.Parameters.Add("@Name", SqlDbType.NVarChar, 255).Value = name;
                    cmd.Parameters.Add("@Cost", SqlDbType.Int).Value = cost;
                    SqlParameter retParam = cmd.Parameters.Add("@Id", SqlDbType.Int);
                    retParam.Direction = ParameterDirection.Output;
                    using (SqlDataReader reader = cmd.ExecuteReader())
                    {
                        res = (int) retParam.Value;
                        reader.Close();
                    }
                }
                con.Close();
                return res;
            }
        }
    }

ユーザー (または業務管理者) の作業

  1. InfoPath を使ってフォームを以下のようにデザインします。
    (下記の Id は、本来は内部で保持しておくものですが、今回は、デバッグ用に下記の通り表示させておきます。)



  2. InfoPath の [ツール] - [データ接続] メニューで、上記で開発者が作成した Web サービスに接続するためのデータ接続をウィザードに従って作成し、そのデータ接続の名前を「TestConnection」として保存します。(設定内容は以下で述べます)




    今回は、更新 (追加/変更) のために Web サービスに接続をおこなうのですが、戻り値として作成された Id を受信する必要がありますので、データ接続の種類として [データの受信] を選択してウィザードを進めます。
    以降のウィザードでは、下記の設定をおこないます。
    • データ接続の種類 : [データの受信]
    • データのソース :  [Web サービス]
    • Web サービスの場所 : (上記で作成した Web サービスの URL)
    • Web サービスの処理 : SetData (上記で作成した WebMethod のメソッド名です)
    • 「パラメータ」として id, name, cost が表示され値を InfoPath のデータと関連付けることが可能ですが、今回は、あとで値の設定をおこなうため、特に値の設定はしなくてOKです。
    • [フォームを開くときに自動的にデータを取得する] のチェックボックスはオフにします

  3. すると、InfoPath は、Web サービス (SOAP の wsdl) の定義を読み込んで、以下のセカンダリデータソースを自動生成します。



  4. 必要に応じ、[ツール] - [フォームオプション] の [ブラウザ] タブで、ブラウザフォームに表示される上部や下部のメニューを設定しておきます。(今回は、以下の通り設定しておきましょう)



  5. これで Web サービスへの接続の設定は完了しました。
    上図のフォームで作成した「データベースへ反映」ボタンのプロパティ画面を表示し、ボタンが押された際の [動作規則] として以下の [動作] を追加します。
    • フィールドの値を設定する : セカンダリデータソース (Webサービス) の引数である id, name, cost (上図参照) に、メインデータソースの Id, Name, Cost (上図参照) の値をそれぞれ設定します。(3 つ作成します)
    • データ接続を使用してクエリを送信する : 先ほど作成した「TestConnection」を実行します
    • フィールドの値を設定する : 今度は逆に、メインデータソースの Id に、セカンダリデータソースの結果(戻り値)である SetDataResult を設定します



  6. 今回は Web サービスに接続するフォームですので、InfoPath の [ツール] - [フォームオプション] メニューの [セキュリティと信頼] タブで [完全信頼] を選択します。

    あるいは、[ツール] - [データ接続] メニューで、上記で作成した「TestConnection」のデータ接続の情報を [変換] ボタンを押して SharePoint のデータ接続ライブラリに保存 (.udcx ファイル) し、このデータ接続情報を参照するようにします。(この方法だと、udcx に、認証の情報など、追加の情報も記述可能です)

  7. 冒頭でも記載しましたが、Web サービスを使用する場合やコードを使う場合は、InfoPath は 管理者用に 発行しておく必要があります。
    この手順については、以前、以下の Post で記載していますので参照してください。(ここでは手順は省略します)

    http://blogs.msdn.com/tsmatsuz/archive/2006/08/23/vsta-infopath-web-publish.aspx

管理者の作業

  1. SharePoint の全体管理で、[InfoPath Form Services の構成] をクリックし、SQL 認証、クロスドメイン設定を有効にしておきましょう。(クロスドメイン設定を有効にしないと、SharePoint のサイト以外に登録された上記の Web サービスなどに InfoPath から接続できません)
    さらに、上記の URL (リンク先) で記載しているように、ユーザーが管理者用に登録した InfoPath のフォームをサイトにアクティブ化します。
     

以上で使える状態になりました。

ユーザー (もしくは業務管理者) は、サイト上で、このフォームを設定 (コンテンツタイプとして設定) したフォームライブラリを作成して使用すると下図のようにフォームが表示され、[データベースへ反映] ボタンを押すと Id が SQL Server により自動採番されて表示されます。

ここでは省略しましたが、他にも、フォームを表示する際に、この Id を元にデータベースから Name や Cost の内容を取得してフォームに設定すると、データベースの内容と完全に連携したフォームになるでしょう。

上記の「ユーザー (または業務管理者) の作業」の 5 の処理は、VSTA と呼ばれるコードを使用して実装することもできます。コードレベルでないと実装が難しいロジックを埋めたい場合には、エンドユーザーによりこうした簡易コードを記述するといった実装も可能です。(この場合も、勿論、管理者発行が必要です)

 

Posted by tsmatsuz | 1 Comments
Filed under:

SharePoint におけるさまざまな活用場面

  1. SharePoint におけるさまざまな活用場面
  2. 例1 : InfoPath と Forms Services を使ったデータベース連携
  3. 例2 : Excel と Excel Services を使ったデータベース連携 

こんにちは。

昨日、実際に業務適用を検討されている皆さんと SharePoint の勉強会を実施し、当方からは SharePoint を使用したさまざまな活用シーンや、実際の設定方法などいくつかをご紹介させて頂きました。

ここでは、その中でご紹介した、データベース上のデータと組み合わせた業務活用の一例を記載しようと思いますが、その前に、まずは補足として、SharePoint そのものの活用シナリオについて本投稿で記載しておきましょう。(皆さんはどのようにお使いでしょうか ? 今回ご紹介する使用方法以外にも、さまざまな観点で活用が行われています)
無論、これが「すべて」ではありません、、、

お馴染み、ファイルデータの管理

まずは、皆さんご存じ (今さらですが) バイナリファイルの管理DBとしての役割です。SharePoint では、登録したファイル、カスタマイズしたページなどは、SQL Server 上に一元管理されるため、アプリケーションサーバーの負荷分散、データベースのクラスタ構成やバックアップなどの管理性を考慮したシステムレイヤ分割が可能です。(下図)

こうしたシステムをベースに、ユーザーレイヤも意識したいくつかのツールや仕組みが提供されています。例えばバックアップでは、サーバー管理者/IT Pro によるサーバー環境のバックアップ/復元 (大規模向けには DPM、中小規模は SharePoint の管理コマンド) と、現場の各サイトなどの管理者向けには SharePoint Designer を使用したサイトレベルのバックアップ/復元の機能が提供されているといった具合です。

内部統制、ECM、、、 "きちんと" 管理

ファイルなどが保管庫に管理されているということは、 当然これらの『管理』についても豊富な機能を提供できます。

例えば、「情報管理ポリシー」と呼ばれるものを設定することで、ドキュメントの作成・変更などがあった場合のログの記録 (監査) や、監査項目の設定 (どのタイミングを監査するか) といった設定が可能です。つまり、勝手な閲覧や削除はすべて管理されています。ドキュメントの有効期限なども設定できます。これらは、「コンテンツタイプ」と呼ばれるドキュメントの「型」に相当するものを定義して、使用するテンプレートや情報管理ポリシーなどのコンテンツポリシーをまとめて管理、階層化することもできます。
また、RMS (Rights Management Services) と連携させて、フォルダ (ドキュメントライブラリ) 単位の IRM (Information Rights Management) の管理を設定し、閲覧、編集、印刷などを細かく制御することができます。

さらに、レコード管理 と呼ばれる仕組みを使用することで、仕掛中のドキュメントと完成済みの管理ドキュメントを分割管理することができます。(タイマーによる定期的な収集のための仕組みも持っています)

コンテンツ管理システム (CMS) としての SharePoint

Microsoft Office SharePoint Server 2007 では、かつての Microsoft Content Management Server の仕組みが「発行インフラストラクチャー」という機能 (フィーチャー) として統合されています。

例えば、文中の固有名詞やリンク先などを HTMLやプレーンテキストとして統合管理することで、ページの本文はこの管理された情報とリンクした形で構成することができます (一箇所を修正すれば、その情報を参照しているすべてのページが変更されます)。
ページの作成も、ロゴの掲載、本文の配置位置など、「ページレイアウト」と呼ばれるテンプレートをベースとしたオーサリング (例:「社内お知らせページ」の標準テンプレート、など) が可能で、ページレイアウトの独自開発も可能です。
無論、各ページの外観の統一的な管理や、こうした外観の自作も可能です。

CMS のもう 1 つの側面であるオーサリング業務の管理機能も勿論提供されています。発行機能を使用すると、現場で作成されたページの承認依頼や、承認/スケジューリングによる公開作業 (それまでは未公開とする) などが可能です。

「たかが情報共有 . . .」と思われるかもしれませんが、情報公開を専門とするような部門では、こうしたプロフェッショナルオーサリング業務で必要とされる機能を活用して情報の整理/管理/統合が可能です。

サイトコレクションの「発行インフラストラクチャー」の機能を有効にし (デフォルトでは無効になっています)、利用サイトで「発行機能」の機能を有効にすることで利用できます。

コラボレーション、インテリジェンス、EUC、、、

使い慣れた Office 製品のほとんどと連携して、情報収集やビジネスインテリジェンスの仕組みをエンドユーザーが Non コードで構築することができます。より複雑なものについては、プロフェッショナル開発者がコンポーネントを構築し、エンドユーザーはそれと組み合わせて利用することもできます。 

こちらは、以前の Post でもご紹介していますので、同じ説明は省略しましょう、、、

今回ご紹介しようとしているサンプル (上記) は、まさにこの利用シナリオになります。

強力なエンタープライズ検索

検索機能は「おまけの機能」ではありません。この目的だけで使用しているユーザーも居ます。

Microsoft Office SharePoint Server 2007、もしくは Microsoft Search Server 2008 では、単なるサイト検索を超えた強力な機能を持っています。
リモートの SharePoint サイト、共有ファイル、Exchange パブリックフォルダ、Lotus Notes データベースなどの企業に散在するコンテンツソースのインデックス収集を統合的におこない、全社の統合検索ポータルを提供することができます。このポータルでは、カスタムな検索ページの作成、検索専用サイトの提供が可能です。また、プロトコルハンドラー、IFilter を追加で組み込んで、検索対象を追加することも可能です (例:Lotus Notes データベースや Documentum を検索する、One Note や PDF を対象に含める、など)。
さらに、独自のスコープ、独自の管理プロパティを使って企業独自の視点で対象を絞り込んだり、インターネット検索サイトなどと統合したフェデレーションを構成することも可能です。
閲覧情報はセキュリティトリマーで ”適切な人に適切な情報を” 表示させることができます。

さらに、Microsoft Office SharePoint Server 2007 を使用すると、検索対象に企業内のリレーショナルデータベースや Web サービスも追加することができます。また、Active Directory (AD)、LDAP と連携した「人」の検索や、RDB (独自なデータベース) と AD の情報を統合させて独自な「人のノウハウ」の情報を検索可能にするなど、よりエンタープライズ目的の検索体験の拡張が可能です。

マイクロソフトでも社内のイントラ検索の仕組みとしてこの SharePoint によるエンタープライズ検索の機能を使用しています (多数の RDB も検索対象です。この内容は こちら でも紹介しています)。インデックスサーバー (クロールをおこなうサーバー) とクエリサーバー (エンドユーザーの要求した検索を処理するサーバー) は分離されており、クエリサーバーはロードバランス、データベースはクラスタなど、膨大なデータと大量のトランザクションを処理できるよう拡張可能です。

無償版で試したい方は、構成などに制限がありますが、Microsoft Serach Server 2008 の Express Edition を使用することができます (ただし、Microsoft Serach Server 2008 では、リレーショナルデータベースとの統合、人の検索などはできません)。

Community !

Blog 専用サイト、Wiki 専用サイトを提供できます。これらは RSS 2.0  に準拠しているため、Outlook, Google Reader など、専用リーダーによる購読も可能です。
ポスト、コメント、カテゴリごとなどの細かな権限設定や、承認設定による公開が可能で (スパム防止、Executive Note、など)、勿論、UIカスタマイズや、これらの情報のエンタープライズ検索との統合も対象となります。(CodePlex では、さらに便利な Blog 拡張、Wiki 拡張のモジュールなども提供されています。)

さらに Microsoft Office SharePoint Server 2007 では、個人用サイト/仕事仲間Webパーツ(およびプレゼンス)や、上述した「人」の検索を組み合わせて、簡易な機能ではありますが、ソーシャルネットワーク的なサイトを構成することができます。

 

SharePoint は、皆さんのニーズにあわせてさまざまな形で活用することができます。活用のコンセプトや実際の手順については、「自習書シリーズ」としても紹介されていますのでご活用ください。

http://technet.microsoft.com/ja-jp/office/sharepointserver/cc952469.aspx

 

Posted by tsmatsuz | 3 Comments
Filed under:

[Info] Linux 向けの Silverlight 実装 「Moonlight」 ベータ版リリース

こんにちは。

Moonlight のベータ版がリリースされたようです。

http://www.go-mono.com/moonlight/

Silverlight は Tech Fielders インタビューなどでも数多く取り上げていますが、この実装を待たれていた方も多いと思います。

 

Posted by tsmatsuz | 1 Comments

[Info] SQL Server のバイブル、2008 RTM 版に対応しすべて完了

こんにちは。

エンジニアにとっての「(新機能の)速習」、「実践」の助けである「SQL Server 2008 自習書シリーズ」がRTM版に対応し、すべて完了しました。(下記、製品チームのサイトより入手可能です)

SQL Server 2008 自習書
http://www.microsoft.com/japan/sqlserver/2008/self-learning/default.mspx

セミナー(2008/11/10 Tech Fielders セミナー東京 「データアクセスプログラム & SQL Server 2008 による開発]」)では尻切れトンボな説明で終わってしまいましたが (最後の自習書の紹介にも到達せず、、、)、下記の自習書の新機能紹介では、膨大なドキュメントを読まされるのではなく、数ページの手順説明によって、素早く、次々と、ポイントを理解していくことができますので是非ご活用ください。(「もっと聞きたかった」とご意見頂いた方々が多かったのですが、是非自習書で続きを)

また、実務で必要となる、例えば、「こういう場合のアップグレードってどうなるの?」とか、「最近うるさく言われるコンプライアンスのココのポイントを実現したいんだけど」とか、「単機能が知りたいのではなくて、ETL、キューブ構成なども含めた統合的なデータウェアハウスの実現が必要で、、、」など、実践のニーズに応える徹底検証シリーズもすべて揃っています。こちらも、漠然とした製品紹介ではなく、現実の設定手順などを含めた現場視点での説明になっています。

SQL Server 徹底検証シリーズ
http://www.microsoft.com/japan/sqlserver/2008/bible/cqi.mspx

セミナーで皆さんにご紹介しようとしていた「骨太な進化」の側面ですが、各新機能の1つ1つの理解を積み上げて、いくつかを理解していくと、それらの集合が全体で大きな進化(データベースとして本来求められる信頼性等々の進化)につながっていることに気づきます。例えばパフォーマンス面を見ても、「ミラーの同期で高速化」、「さまざまな圧縮とレベル設定で最適化(アクセスページ削減等)」、「並列実行プランがパーティション化されていてもフルにコントロールされる」、「ロックエスカレーションも、テーブルの前にパーティションレベルで有効になる」、、、などなどなど、これらが積み上がった結果、全体の集合としてパフォーマンス向上のための1つグレードの高い仕組みで動作しているエンジンであることに気づくでしょう。

自習書、徹底検証シリーズなどを通し、是非こうした「気づき」の発見をして頂ければと思います。

(セミナーでここに気づいて頂く予定でしたが、時間切れで申し訳ありません、、、)

 

Posted by tsmatsuz | 1 Comments

[Info] Silverlight によるデザイン/開発、その実際は ? (Tech Fielders 取材記事)

こんにちは。

「Silverlight開発って、すんなり行くもの?」、「実際のところ、デザイン会社とかに委託できるもの?」、「どんな風に活用できるの?」、、、

そんな疑問にお答いただくため、この分野では著名なさまざまな商用サイトの構築を実施された実績を持つセカンドファクトリーの開発チームの方に取材させて頂きました。

http://www.microsoft.com/japan/powerpro/TF/interview/17_1.mspx

その「甘い部分」(恩恵)や、Microsoftではなかなか紹介できない「すっぱい部分」(落とし穴)も含めたノウハウのいくつかを 多数の商用サイト構築の実績で養った "実開発" の視点で語っていただいています。(ビデオ掲載は、現在編集中のため、1、2日お待ちください)

 

Posted by tsmatsuz | 1 Comments

[Info] Visio の図面から Silverlight への変換、制御 (Tech Fielders 取材記事)

こんにちは。

すでに 11/14 にご紹介されていたのですが、私がインタビュアーとして担当させていただいた Tech Fielders インタビューの取材記事の 2 つめが公開しましたのでご紹介いたします。

製造業と言えば日本の産業基盤を形成する屋台骨とも言うべき分野ですが、今回は、ハード、制御技術など日本の強みである製造分野のテクノロジーと、欧米先行の感覚が強いコンピュータソフトウェアの分野でのテクノロジーの融合事例です。

http://www.microsoft.com/japan/powerpro/TF/interview/14_1.mspx

「Visio から Siliverlight へ変換」と聞いて、「海外の連携ソフトを使った構築事例」と思ってしまう方も多いかもしれませんが、違います。OPC サーバー(デバイス連携)、SOAP ベースの通信テクノロジー、IntelliCAD として成長した Visio のポテンシャル、そして Silverlight 。これらを融合させた 日本製 テクノロジーの取り組みについて記載しています。

ここで紹介されている日本OPC協議会については、参加企業による定例の勉強会などが実施されています。活動状況などについては、以下のホームページをご参照ください。

日本OPC協議会ホームページ
http://www.opcjapan.org/

Posted by tsmatsuz | 1 Comments

[Info] PDC が気になる方へ . . . <イベントのご紹介>

こんにちは。

先日Losで開催されたPDCでは、メディアなどでご存じの通り、Microsoft のクラウドサービスとも言うべき Windows Azure などのテクノロジーが紹介されました。これらの情報については、日本では、随時、イベントなどを通してご紹介させていただきますので、ご興味ある方はお見逃しのないようご参加ください。(私のブログでも、イベントでの紹介まではこれらテクノロジーの紹介は控えたいと思います。) 

で、そうしたイベントはどこでやってるの?という疑問になると思いますので記載します。

PDC で紹介された新しいテクノロジーは、プロフェッショナルデベロッパーの方を含むエンジニアの方向けに、以下のイベントを通してご紹介していきますので、どうぞご参加ください。(米国で開催された PDC の日本版イベントです。従来、Microsoft Developer Conference と呼んでいたものに相当するでしょう。)

Microsoft tech・days 2009 (2009/01/27 - 28, 横浜)
http://www.microsoft.com/japan/events/techdays/default.mspx

また、このクラウドサービスは、ベンチャーの方などが、開発されたソフトウェアを配り、普及させていく場合などを想像していただくとわかりますが、使う側のポータビリティ以外にも、作る側にも大きな "ビジネス面" での可能性をもたらします。(そういった点では、例えば、課金方式などといった話題にも興味を持たれている方も多いかもしれません。)
中小企業やベンチャーの経営者の方、情報部門の管理者/企画者の方、または独立されている個人のデベロッパーの方などにとっては、テクノロジーだけでなく、こうしたビジネス面でも、「このテクノロジーで、どのようなビジネスインパクトを想定しているのか?」、「マイクロソフトはどういった方向に進もうとしているのか?」 、「いままでのデスクトップアプリ的なものはどう位置づけていくのか?」といった方向性にご興味があるでしょう。
こうした方々は、早速 11 月に、以下のイベントを通して、ビジネス的な観点での方向性をご理解いただくことができます。(デモもあります!)

Microsoft Innovation Day (2008 年 11 月 19 日 14:00 - 17:30, 渋谷):
http://www.microsoft.com/japan/mscorp/mic/innovationday/default.mspx


エンジニアとして興味を持たれている方は勿論、情報部門の方、企業経営者の方など、幅広い層の皆さんを対象にイベントを予定していますので、是非お見逃しないよう、ご参加お待ちしております。

 

Posted by tsmatsuz | 1 Comments

[Info] Patterns & Practices : SharePoint Guidance (英語) リリース

こんにちは。

SharePoint 開発における Patters & Practices のガイダンスがリリースされました。

MSDN : Patterns & Practices - SharePoint Guidance
http://msdn.microsoft.com/en-us/library/dd203468.aspx 

SharePoint Guidance - November 2008 ダウンロード:
http://www.microsoft.com/downloads/details.aspx?FamilyId=C3722DBA-6EE7-4E0E-82B5-FDAF3C5EC927&displaylang=en

SharePoint 上で開発をおこなう場合、開発されるモジュールのテストや変更管理 (アップグレードの管理含む) などのライフサイクル管理などについて疑問をお持ちの方(あるいは、他の開発者はどうやっているのだろう?とか)も多いでしょう。答えの "すべて" にはなっていないかもしれませんが、いくつかの重要な方法を示してくれています。

MSDN にも、このための指針がいくつか掲載されています。例えば、以下では、SharePoint Designer で構築したオブジェクトについて、そのステージングの方法なども含め紹介しています。

Microsoft Office SharePoint 2007 でのチームベース開発 :
http://msdn.microsoft.com/ja-jp/library/bb428899.aspx

Web パッケージをエクスポートまたはインポートする :
http://office.microsoft.com/ja-jp/sharepointdesigner/HA100819231041.aspx

 

Posted by tsmatsuz | 1 Comments

現場の "声" と "現実" を伝える Tech Fielders インタビュースタート

こんにちは。

待ちに待った PDC (in LA) も終わり、そろそろ左のバナーも下ろそうと思います。内容は、今後、日本の皆さんにとって分かりやすい形でご紹介していきたいと思います。

さて、皆さんが必要とする情報は、私達社員が発信する将来の情報や新製品の情報以外にもさまざまです。皆さんご自身が経験される現場ならではの情報は、コミュニティの方が運営するセミナー活動などを通しても (社員以外から) 学ぶことができます。しかし、現場の皆さんは我々のように「情報発信」が本業ではないでしょうから、実は目からウロコの情報でも個人や1組織の中に眠ってしまっていることもまだまだあることでしょう。

"Tech Fielders" では、こうした現場の方の "メッセージ" "実際" "ノウハウ"  などの貴重な声を発掘すべく、Lightening Talks などのさまざまな形で双方向型のメッセージをお届けしようと思っています。今回、そのための次の企画として、"Tech Fielders インタビュー" をオープンしました。

Tech Fielders インタビュー:
http://www.microsoft.com/japan/powerpro/TF/interview/default.mspx

今回 私がインタビューさせて頂いたのは CrystalMarks という著名ソフト(フリーソフト)を開発されている「ひよひよ」さんです。
ひよひよさんは、勉強のために簡単な自作OSなども作成されている方です。OS は、その中を見ると、実によく設計されています。さまざまなデバイスにも対応しています。今でもかつての Win 32 の関数の多くが動作し、互換性に配慮されていたりもします。(というコメントは、私たち Microsoft 製品に対して ブ が良すぎる表現なので、あえて記事の中ではカットしています。) Vista を含め、今のOS がどのように配慮されていて、しかしどこに問題があって、といった ひよひよさんなりの深い洞察にあふれています。

記事ではインタビューで得た全体の一部しか表現できていないかもしれませんが、ひよひよさんが考えるソフトウェアの世界、開発の世界を記事を通して実感して頂ければと思います。
Windows Vista 以降では、.NET Framework が OS のコンポーネントの一部として搭載されました。IIS など OS まわりの機能の多くももこの便利なフレームワークをベースにモジュール化されています。しかし 1 つ言えることは、それでも Native 開発は今後も絶対に無くならないという点です。こうしたベースがあってこそ、その上のフレームワーク上で動作する応用アプリが快適に動作し続けます。これは、今後いかに .NET Framework が進化しても変わりませんし、忘れてはいけないことでしょう。

Crystal Dew World :
http://crystalmark.info/
OpenLibSys.org :
http://openlibsys.org/

Posted by tsmatsuz | 1 Comments

[ブログ紹介] ASP.NET MVC

こんにちは。

エバンジェリスト中原が Tech Ed でご紹介した、ASP.NET MVC について情報がアップされておりますので、ご紹介しておきます。(また、ASP.NET MVP ナオキさんの ASP.NET MVC に関する記事 前編後編 のご紹介も含まれております)

大人しい独り言 : ASP.NET MVC のセッション PPT
http://blogs.msdn.com/mikion/archive/2008/09/02/teched-2008-yokohama-asp-net-mvc-ppt-demo.aspx

大人しい独り言 : セッションのデモ
http://blogs.msdn.com/mikion/archive/2008/09/02/teched-2008-yokohama-asp-net-mvc.aspx

.NET によるサーバー開発を実施されている方にとっては、この仕組みは大変興味のある分野かと思いますので、ご参加されなかった方も、スライドで概要 (観点) をご想像いただければと思います。(考え方、視点がよく整理されています。またナオキさんの記事では、これに導入からテストまでの手順的なものも含め把握していくことができます)

 

Posted by tsmatsuz | 1 Comments
Filed under: ,

[Info] Power to the Pro 「Tech Fielders」 スタート

こんにちは。

こちらも、Tech Ed にご参加された方はご存じかもしれませんが、Tech Fielders という "Team" がスタートしました。 

テックフィールダーズ
http://www.microsoft.com/japan/powerpro/TF/default.mspx

Tech Ed の中で Lightening Talks と呼ばれるプログラムが実施されました。私たちマイクロソフト社員が話すのではなく、現場の方、エンジニアの方、つまり、皆さんが話していただき情報を共有するプログラムです。
威張って言うことではありませんが、私が持っている「現場」の経験も、もう過去の錆びた知識かもしれません。私たちマイクロソフトのエバンジェリストよりも、きっと皆さんのほうが切実に、「現場」の課題や、トレンドを理解されていることでしょう。
この Team は、最終的には、そうしたフィールドの皆さんにも参画していただきたい!という意志が込められた、新チームです。

"技術ブログ" "ビジネスブログ" は、技術分野が多岐に及ぶ現在においては、情報の観点の多様性や、情報の機敏性というという観点で重要と思っています。(例えば、昔は、文字列処理といったら、strxxx, _mbsxxx, といった関数一覧で決着がつきましたが、現在では便利になった分、そう簡単な話では終わりません。) しかし、仮にその人がその会社を辞めてしまったことを想像してみてください。その情報がいつまで残っているか保障はされていません。 この Tech Fielders は、上記の「共有」以外にも、そうした観点での技術情報の "維持" "持続" という観点もあります。
今後、ある程度まとまった (体系立った) 技術視点は、こちらの Tech Fielders にも掲載をおこなっていきたいと思います。

本内容の主意については、長沢ブログ で背景や主旨など含め説明されていますので、是非そちらをご参照ください。

 

Posted by tsmatsuz | 1 Comments

[Info] VSeWSS 1.2 日本語版リリース

こんにちは。

Tech Ed にご参加された方はご存じかと思いますが、Tech Ed 期間中に、Visual Studio extensions for Windows SharePoint Services (VSeWSS) 1.2 の日本語版がリリースされています。

Windows SharePoint Services 3.0 ツール: Visual Studio 2008 Extensions Version 1.2
http://www.microsoft.com/downloads/details.aspx?displaylang=ja&FamilyID=7bf65b28-06e2-4e87-9bad-086e32185e68

Tech Ed では、T3-401 「直伝! Visual Studio extensions for SharePoint による Office SharePoint Server 2007 開発手法」 (小松真也) にて、VSeWSS のセッションがありました。これまで多くの方にとって疑問であったであろう SharePoint における フォーム (aspx)、WebParts などの "Visual 開発 ! ! " について、疑問がすっきりと晴れた方も多かったのではないかと思います。

Visual Studio 2008 に対応したこの VSeWSS 1.2 を活用することで、Ajax, Silverlight, など Visual Studio 2008 の進んだ UX 開発と SharePoint の融合、さらには上記のセッションで紹介された「技」を組み合わせて、新しい SharePoint UX 開発の世界を実感して頂ければと思います。

 

Posted by tsmatsuz | 1 Comments

[T2-401 デモ (4)] Custom の SharePoint Workflow Editor

こんにちは。

  1. WCF の Transport レベルの Custom Channel Sample
  2. Rehosting を使ったエンドユーザへのワークフロー公開
  3. WF による Rule Base のアプリケーション
  4. Custom の SharePoint Workflow Editor

製品開発者向けということで実施した Tech Ed の T2-401 セッションですが、お約束通り、デモを添付しておきます。

ここまでの内容を元に、これを SharePoint に応用した、さいごにお見せしたサンプルです。(ライセンスの問題もお約束通り修正しておきました . . .)

download sample

セッションの中で 1 つ言い忘れてしまったのですが、xoml の作成部分については、これまでの説明とまったく同様、普通にワークフローを構築して、いつものように WorkflowMarkupSerializer にお任せで OK です。(その部分のコードは、ソースをじっくりとみておいてください。) 違っている点とすれば、SharePoint 用のアクティビティを使っているという点だけです。

配置方法ですが、セッションでご説明したように、製品向けなどで SharePoint のワークフローを配置する際は、stsadm による 「ワークフローテンプレート」ではなく、 SharePoint Designer が使用している「ワークフロー」のデプロイのほうがさまざまな点で優れていました。
SharePoint では、WorkflowRuntime を直接起動して操作することは禁止されおり、ここでのポイントは SharePoint がワークフロー構築のために用意している (主に SharePoint Designer で使用されている)、ValidateWorkflowMarkupAndCreateSupportObjects、AssociateWorkflowMarkup などのメソッドが使えることでした。(http://msdn.microsoft.com/en-us/library/bb417436.aspx)
このため、SharePoint 展開用の「どのタスクリストを使うの ?」、「どのワークフローフォルダに入れるの ?」、「どのリストに関連付けるの ?」などの設定情報を記載したワークフロー構成ファイル (.xoml.wfconfig.xml) が必要で、この作成もおこなう必要があったわけです。(ただ、この定義は非常にシンプルなものですので、サンプルコードのように、XmlDocument などを使って自作すれば OK です) 

あとは WorkflowMarkupSerializer などを使ってこれまでと同じように処理をおこなえば良いのですが、ご説明したように、SharePoint 固有の他のさまざまな課題もクリアしなければなりません。
例えば、ワークフローを関連付けるリストは、リストの表示名ではなく GUID が必要となります。また、列についても、表示名ではなく内部名が必要となります。また、ワークフローも、ただのドキュメントライブラリではなく、ご説明した ServerTemplate ID が 117 番のワークフロー用のフォルダに入れておく必要があります。つまり、このフォルダがない場合には、このフォルダを作るという作業も必要になるわけです。
(さらに、ここではサンプルを簡単にするためにワークフローフォームも使っていませんが、カスタムの初期化フォームや、タスクフォームが必要な場合には、こうしたフォームも aspx などで構築しておき、配置する必要もあります。)

コードでは、これら事前の処理を実施するため、リスト Web サービス (Lists.asmx) を使用した事前のやりとりをおこっています。またファイルの配置などは、WebRequest オブジェクトを使って WebDAV フォルダにアクセスしています。

さいごに、セッションの終わりでご説明した点ですが、時間が迫っていて簡単にしか説明できませんでしたので、ここはちゃんと記載しておきましょう。SharePoint Designer が作成した xoml ですが、セッションでお見せしたように、参照しているアクティビティのライブラリ名が、

Microsoft.SharePoint.WorkflowActions.dll, Version=12.0.0.0, Culture=neutral, PublicKeyToken=null

となっていました。
これは、SharePoint Designer が、リモートからも登録されているアクティビティの dll を扱ってワークフローの作成と配置ができるために必要な仕様で、Sharepoint Designer は %userprofile%\AppData\Roaming\Microsoft\SharePoint Designer\ProxyAssemblyCache\12.0.0.6219 の中に、サーバ上の dll と同じクラスやメソッドを持った dll の Proxy を内部で生成しています。このため、プロフェッショナル開発者が自作したカスタムの dll (SharePoint Designer のアクティビティ) なども、ちゃんと Proxy がキャッシュされ、リモートからも正しく動作するようになっています。(よって、公開キーまではコピーできませんので、PublicKeyToken を null にして配置する必要があります。)
では、この処理と同じことを皆さんの製品の中でも実施したくなるかもしれませんが、セッションでご紹介した FetchLegalWorkflowActions などの Web サービスのメソッドは、ご説明したように製品が内部で使用しているもので、一般の開発者に公開されたメソッドではありません。そこで上記のダウンロードサンプルでは、サーバ側の Microsoft.SharePoint.WorkflowActions.dll と同じクラスやメソッドを持つスタブ用のコードを作成し、これをワークフロー構築で使用するようにしています。(xoml 構築のためのクラスですので、内部処理は必要ありません。)
よって、WebPart の開発などでサーバ側で動作するモジュールの場合にはこうした面倒なスタブコードは必要ありませんし、リモートで処理されるワークフローであっても、初期化処理 (OnWorkflowActivated など) 以降はカスタムアクティビティだけで構成するようにしておけば、(初期化部分のみ xoml のテンプレートなどを用意しておき) Microsoft のライブラリを真似てスタブを構成しておく必要もありません。一般的には、こうした方法で開発するほうが望ましいでしょう。

以下にこのスタブコード以外の処理コードの部分を掲載しておきます。

public partial class Form1 : Form

{

    public Form1()

    {

        InitializeComponent();

    }

 

    ComboBox[] Conditions = new ComboBox[3];

    ComboBox[] Tasks = new ComboBox[3];

    TextBox[] MailAddresses = new TextBox[3];

    TextBox[] FieldNames = new TextBox[3];

    TextBox[] FieldValues = new TextBox[3];

    TextBox[] Approvers = new TextBox[3];

 

    XmlDocument xomlDoc;

    XmlDocument configDoc;

 

    private void Form1_Load(object sender, EventArgs e)

    {

        Tasks[0] = Task0;

        Tasks[1] = Task1;

        Tasks[2] = Task2;

 

        MailAddresses[0] = MailAddress0;

        MailAddresses[1] = MailAddress1;

        MailAddresses[2] = MailAddress2;

 

        FieldNames[0] = FieldName0;

        FieldNames[1] = FieldName1;

        FieldNames[2] = FieldName2;

 

        FieldValues[0] = FieldValue0;

        FieldValues[1] = FieldValue1;

        FieldValues[2] = FieldValue2;

    }

 

    private void ExecuteButton_Click(object sender, EventArgs e)

    {

        // Step 0 : Workflow Location などの設定

        Step_SetupObjects();

 

        // Step 1 : Workflow Config を作成

        Step_CreateWorkflowConfig();

 

        // Step 2 : XOML を作成

        Step_CreateXoml();

 

        // Step 3 : Upload !

        Step_UploadFiles();

 

        // Step 4 : ワークフローのコンパイル

        WebPartPagesSvc.WebPartPagesWebService sv = new WebPartPagesSvc.WebPartPagesWebService();

        sv.Url = string.Format("{0}/{1}", SiteLoc.Text.TrimEnd(new char[] { '/' }), "_vti_bin/WebPartPages.asmx");

        sv.UseDefaultCredentials = true;