マイクロソフト株式会社

セッション 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