セッション ID:T5-306 SharePoint 2010 & Office 2010 開発レシピ マイクロソフト株式会社 パートナーテクノロジー本部 プリンシパル テクノロジー アドバイザー ジニアス平井(平井昌人) セッションの目的とゴール Session Objectives and Takeaways セッションの目的 .NET 開発者が SharePoint 2010 / Office 2010 のカスタム ソリューション開発に取り込めるように関連テクノロジーと それらを活用するテクニックを紹介する Office / SharePoint を情報インフラとしたソリューション のあり方を理解してその開発手法をマスターして頂く セッションのゴール Visual Studio 2010 における SharePoint 2010 開発用の 新機能を理解する SharePoint 2010 のデータアクセス手法を学ぶ Office 2010 のアドイン作成をマスターする Open XML の理解とプログラミング技法を習得する 3 アジェンダ 本番では一部メニューが変更になる場合もございます SharePoint 2010 Visual Studio 2010 SharePoint 開発環境 ビジュアル開発 - 可視 Web パーツ データアクセス - LINQ, REST, Client Object Model Business Connectivity Services 開発 ワークフロー開発 サンドボックス ソリューション Office 2010 クライアント(VSTO) VBA vs. .NET Office Open XML Visual Studio 2010 Office アプリ開発新機能 アドイン開発 - リボン / Backstage ビュー 配布・配置の新機能 4 SharePoint 2010 開発 SharePoint 2010 サービス SharePoint 2010 は優れた開発基盤 ポータル サイト管理 Team Collaboration Enterprise Search User Management People Profile SNS Notification Web Contents Management Document Management Media Management Record Management Wiki Blog Metadata Management Workflow RSS Web Services REST LINQ Input Validation Audit Log 標準機能 Excel Services Visio Graphics Services Access Services InfoPath Forms Services Word Automation LOB Integration Usage Analysis FAST Search 6 Enterprise 機能 Performance Point Services SharePoint 2010 の開発者向け新機能 What's new for Developer クライアント OS へのインストール(開発用途) 64 ビット Windows 7, Vista にインストールが可能 データアクセスの拡張 LINQ to SharePoint クライアント オブジェクト モデル(Client OM) REST サービス(WCF Data Services) ワークフロー開発の改良 Windows Workflow Foundation 3.5 ベース Visio, SharePoint Designer 2010, Visual Studio 2010 サイト ワークフロー サンドボックス ソリューションの提供 7 Visual Studio 2010 の SharePoint 開発 すべて Visual Studio 2010 に統合 プロジェクトテンプテート アイテムテンプレート SharePoint エクスプローラー サーバー エクスプローラーに追加 ビジュアル開発 可視 Web パーツ SharePoint ワークフロー フィーチャ デザイナー プロパティウィンドウでの編集も可 WSP デザイナー Web ソリューション パッケージ の編集やリソースファイルの展開 8 VS2010 - SharePoint テンプレート 豊富なプロジェクト テンプレートとアイテム テンプレート プロジェクト テンプテート アイテム テンプテート 9 SharePoint 2010 - データアクセス サーバーサイドは LINQ ! クライアントサイドは REST サーバーサイド Server-side SharePoint Object Model(Server OM) SharePoint 独自の CAML クエリーによるアクセス LINQ to SharePoint (New) インテリセンスサポート、コンパイル時の型チェック クライアントサイド Web サービス 従来から XML Web サービス経由でのアクセス Client-side SharePoint Object Model (new) CAMLクエリーによるアクセスがクライアントでも可能に .NET, Silverlight, JavaScript 用のライブラリを提供 REST (new) WCF Data Services に対応 - サービス参照で利用 10 SharePoint 2010 - LINQ to SharePoint あの独特な CAML から解放 SPMETAL.exe でエンティティクラスを作成 [SharePoint 2010 管理シェル]にて利用 SPMETAL /web:http://localhost/sites/demo1 /code:MyDataContext.vb Micrsosft.SharePoint.Linq.dll を参照 Dim ctx As New DemoDataContext("http://localhost/demo1") Dim qy = From x In ctx.Announce Where x.本文.Contains("ジニアス") Select x.タイトル, x.本文 GridView1.DataSource = qy GridView1.DataBind() 'データの追加 ctx.Announce.InsertOnSubmit(New お知らせ() With {.タイトル = TextBox1.Text, .本文 = TextBox2.Text}) ctx.Announce.InsertOnSubmit(obj) 11 ctx.SubmitChanges() SharePoint 2010 – REST API クライアントからのデータアクセス プログラミングが快適 VS2010 の[サービス参照の追加]で svc を指定 http://localhost/demo/_vti_bin/listdata.svc 'データの取得 Const svc_path = "http://GENIUS-R2/DEMO1/_vti_bin/listdata.svc" Dim ctx As New ServiceReference1.DEMO1DataContext(New Uri(svc_path)) ctx.Credentials = CredentialCache.DefaultCredentials Dim qy = From x In ctx.Announce Select x For Each n In qy.ToList Console.WriteLine(n.本文) Next 'データの更新 Dim upd = (From x In ctx.Announce Where x.タイトル = "デモ" Select x).First() upd.有効期限 = Date.UtcNow.AddDays(1) ctx.UpdateObject(upd) ctx.SaveChanges() 12 SharePoint 2010 – Client OM サーバーサイドのコード再利用やデータアクセス以外はこれ VS2010 の[参照の追加] .NET Silverlight Microsoft.SharePoint.Client.dll Microsoft.SharePoint.Client.Runtime.dll Microsoft.SharePoint.Client.Silverlight.dll Microsoft.SharePoint.Client.Silverlight.Runtime.dll Dim ctx As New ClientContext("http://GENIUS-R2/DEMO2") Dim oList As List = ctx.Web.Lists.GetByTitle("Announce") Dim caml As New CamlQuery() caml.ViewXml = "<View><RowLimit>1</RowLimit></View>" Dim oItems As ListItemCollection = oList.GetItems(caml) ctx.Load(oItems) ctx.ExecuteQuery() For Each n In oItems For Each f In n.FieldValues Console.WriteLine("{0}={1}", f.Key, f.Value) Next 13 Next サンドボックス ソリューション SharePoint ソリューションのマルチテナント化 サイトコレクション単位で ソリューションを展開する 仕組み サイト管理者が設定可能 IIS / アプリケーションプールの再起動不要 コード アクセス セキュリティ 独自のワーカープロセス内で動作 リソース クォータによる制限とモニタリング サンドボックスの制限 Web アプリケーション、ファームレベルのフィーチャ SharePoint ハイブ内へのリソース展開 Web パーツ接続 14 Office 2010 クライアント開発 VBA vs. .NET .NET ならパフォーマンス・生産性とも向上 Office 2010 でも VBA をサポート VBA:Visual Basic for Applications 6.0 から 7.0 に更新されているが進化なし VBA エディターなど開発環境も機能追加なし VBA の方が便利なシナリオもあり マクロの記録による定型タスクの簡易実装 カスタム ワークシート関数作成 コードがドキュメントに埋め込まれるので配布が用意 .NET マネージドコードへ移行する価値 パフォーマンスの大幅な改善 圧倒的な開発生産性の向上 VBA エディターは VB6 レベルの機能のみ 16 Office Open XML(Open XML) Office 2007 から採用された新しいドキュメント形式 Word、Excel、PowerPoint の保存形式として採用 XML で記述された文書とバイナリ データを ZIP 圧縮 Office の入っていない環境でもファイルの操作が可能 パーツの再利用が容易で破損のリスクが局所的で済む ZIP 圧縮されることでファイルサイズが小さくなる ECMA-376, ISO/IEC 29500 として標準化 Open XML SDK 2.0 .NET マネージドライブラリ System.IO.Packaging 名前空間 参照の追加: [DocumentFormat.OpenXml] SDK ツール(OpenXmlSdkTool.exe) スキーマと対応する Open XML SDK のクラスを確認 2 つのファイルの比較(Diff) ファイルを生成するための コードを出力 17 No-PIA(Primary Interop Assembly) .NET Framework 4(Client Profile)での利点 No-PIA(Primary Interop Assembly) Office プライマリ相互運用機能アセンブリ(PIA)は不要 利用する型情報だけを自分のアセンブリに埋め込む 18 遅延バインディング .NET Framework 4 の新機能の 1 つ dynamic 型により遅延バインディング Visual C# var tsExcel = new Excel.Application(); tsExcel.Visible = true; dynamic で宣言 var はタイプセーフ dynamic dmExcel = new Excel.Application(); Visual Basic dmExcel.Visible = true; Object 型で宣言 + Option Strict Off 遅延バインディングでのみ使用可能なメンバーが多い 状況によって返す型が違うので Object 型で返される Ex: ActiveSheet プロパティ → WorkSheet or Chart オブジェクト dynamic dialog = app.Dialogs[Word.WdWordDialog.wdDialogFileOpen]; dialog.Name = "demo.docx"; dialog.Show(); 19 C# 名前付き引数・省略可能引数 コンパイラのおかげ 名前付き引数・省略可能引数 Visual C# 2010 のコンパイラの新機能でコードが簡素化 object missing = Type.Missing; object before = @"Genius"; object after = @"ジニアス"; object option = Word.WdReplace.wdReplaceAll; Word.Range docRange = wordApp.ActiveDocument.Content; docRange.Find.Execute(ref before, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref after, ref option, ref missing, ref missing, ref missing, ref missing); // VS2008 Range docRange = wordApp.ActiveDocument.Content; docRange.Find.Execute(FindText : "Genius", ReplaceWith : "ジニアス", Replace : Word.WdReplace.wdReplaceAll); // VS2010 20 VS2010 の Office 開発用テンプレート アドイン開発は原則 Office のバージョンごとに VS2010 が提供する Office 開発テンプレート Office 2007 用と Office 2010 用を提供 21 Office Fluent UI の構成要素 リボン UI は Windows 7 でも採用 リボン :メニューやツール バーを置き換えた UI タブ :特定のオブジェクトやシナリオごとに整理 グループ :タブの中をさらに分割する単位 ギャラリー 視覚的に機能を探す手段 コンテキスト リボン 選択・挿入時に対応するタブ を表示 22 カスタム リボン開発 VS2010 のリボン デザイナーは便利!でも XML が基本 Visual Studio 2010 でのリボン開発 リボン(ビジュアル デザイナー) ドラッグ&ドロップによるデザイン XML へのエクスポートが可能(不可逆) リボン(XML) インテリセンスのサポート リボン パーツ 多層化も可能 23 カスタム リボンの XML 定義 リボン デザイナーで雛形を作り、最終的に XML で調整 <customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui"> <ribbon> <tabs> <tab id="Tab1" label="ちこたんタブ"> <group id="Group1" label="ダビンチ"> <button id="Button1" onAction="B1_Click" label="変換" /> <dialogBoxLauncher> <button id="Group1__btn" /> </dialogBoxLauncher> </group> <group id="Group2" label="アイコン集"> <gallery id="Gallery1" onAction="G1_Click" label="LOGO" size="large" columns="3" itemHeight="128" itemWidth="128"> <item id="__id2" label="Access" /> <item id="__id3" label="Excel" /> </gallery> 24 Backstage ビュー Office 2010 での新機能 firstColumn secondColumn ファスト コマンド Button group Tab group 25 Backstage ビューの XML 定義 リボンの作成と同じパーツを利用 <?xml version="1.0" encoding="utf-8" ?> <customUI xmlns="http://schemas.microsoft.com/office/2009/07/customui"> <backstage> <tab id="Area1" label="ジニアスなタブ" columnWidthPercent="30" > <firstColumn> <group id="grpOne" label="第1グループ"> <primaryItem> <button id="firstButton" label="Primary Button" /> </primaryItem> <topItems> <layoutContainer id="layoutOne" layoutChildren="vertical"> <editBox id="firstEBox" label="テキスト" /> <button id="Button1" label="Done" isDefinitive="true" /> </layoutContainer> </topItems> </firstColumn> 26 配布の新機能 Office 2010 なら VSTO ランタイムを包含 ランタイムの配布 Office 2010 には .NET Framework 3.5 用の [Visual Studio 2010 Tools for Office Runtime] が含まれている .NET Framework 4 をターゲットにしたソリューション .NET Framework 4(Client Profile)とともに [Visual Studio 2010 Tools for Office Runtime] を配布 すべてのユーザー(AllUser)への配置が可能 Windows インストーラー(MSI)で可能 管理者権限が必要だが 1 回のインストールで完了 複数 Office ソリューションの単一パッケージ化 [プログラムの追加と削除]は 1 エントリー インストール完了後のアクションが可能 ドキュメントのコピー、レジストリ追加、… 27 参照 関連セッション T5-307 8/25 16:55-18:05 SharePoint Server 2010 のエンタープライズ機能 T5-308 8/26 15:20-16:30 SharePoint 2010 UI 大解剖 T5-302 8/26 18:30-19:40 導入事例から学ぶ Office 2010 互換性についての対処法 T1-403 8/27 09:20-10:30 SharePoint Online 開発と Windows Azure 連携 H-309 8/27 16:55-18:05 SharePoint Designer 2010 カスタマイズ 29 リファレンス SharePoint 2010 デベロッパー センター http://msdn.microsoft.com/ja-jp/sharepoint/default.aspx SharePoint 2010 プロフェッショナルデベロッパー向け評価ガイド SharePoint 2010 デベロッパー向けチュートリアル http://www.microsoft.com/downloads/details.aspx?FamilyID=CFFB14E8-88A943BD-87AA-4792AB60D320&displaylang=ja SharePoint 2010 開発入門 "10行でズバリ !" http://msdn.microsoft.com/ja-jp/sharepoint/ff710303.aspx Office 開発者向け技術情報ポータル http://msdn.microsoft.com/ja-jp/office/ Open XML SDK 2.0 ダウンロード http://www.microsoft.com/downloads/details.aspx?displaylang=en&FamilyID=c6e 744e5-36e9-45f5-8d8c-331df206e0d0 30 ご清聴ありがとうございました。 T5-306 アンケートにご協力ください。 © 2010 Microsoft Corporation. All rights reserved. Microsoft, Windows and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries. The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION. 32
© Copyright 2024 ExpyDoc