42
フェアユース株式会社 足立洋介 日時:2014年8月2日 13:00~18:00 場所:日本マイクロソフト品川本社 31F/セミナールームB 第9回 Office 365勉強会 Lync 2013 アプリ開発 2014/8/2 1

Lync 2013 API カスタマイズアプリ開発

Embed Size (px)

DESCRIPTION

Lync 2013 SDK 等を利用したアプリ開発

Citation preview

Page 1: Lync 2013 API カスタマイズアプリ開発

フェアユース株式会社足立洋介

日時:2014年8月2日 13:00~18:00場所:日本マイクロソフト品川本社 31F/セミナールームB

第9回 Office 365勉強会

Lync 2013 アプリ開発

2014/8/2 1

Page 2: Lync 2013 API カスタマイズアプリ開発

参考:フェアユース株式会社紹介

2014/8/2 2

SharePoint、Lyncの各種アプリを開発

1.SharePointのiPhone、iPad、AndroidのネイティブアプリであるShareOfficeの開発と販売。https://itunes.apple.com/jp/app/shareoffice/id409136682?mt=8

2.Lyncの各種アプリ開発https://www.youtube.com/watch?v=Vzbb0PIyuXk

3.その他スマートデバイス向けアプリ、システム開発・ゲーム、スポーツ観戦アプリ

4.SharePoint上の通常のサイトおよびWebアプリの開発・アパレル業界最大手・自動車製造メーカ最大手

足立洋介とAye Myat MoeがLync MVPを2014年7月から取得

Page 3: Lync 2013 API カスタマイズアプリ開発

連絡先

所在地:〒151-0053 東京都渋谷区代々木 2-27-8-402

代表取締役社長:足立洋介

URL:http://www.fairuse.jp/shareoffice/

Twitter:@adachiyosuke

Email:[email protected]

Blog: http://blog.fairuse.jp

SlideShare: http://www.slideshare.net/adachiyosuke

代表者紹介

弊社社内での役割:怒り役、営業、新規商品開発、その他雑用。

趣味:将棋観戦。山を歩きまわること。海で泳ぐこと。川で魚を釣ること。アニメ鑑賞。

好きな将棋師:羽生善治、小池重明、森雞二、升田幸三、大山康晴

2014/8/2 3

Page 4: Lync 2013 API カスタマイズアプリ開発

弊社の得意な開発分野:SharePointアプリ

Proxy Server、 ADFS、その他認証基盤を介したログイン

アプリ内のデータを完全に暗号化

各企業ごとの利用用途に合わせたPDF編集エンジン

⇨セキュリティを担保し、情報漏洩を防ぐ。詳細は当スライドを参照:http://www.slideshare.net/adachiyosuke/microsoft-officemobile-32931168

⇨ネイティブアプリだからこそ出来るユーザビリティの確保。詳細は次ページ以降を参照

2014/8/2 4

SharePointのiPhone、Androidアプリを各企業向けに提供

Page 5: Lync 2013 API カスタマイズアプリ開発

ShareOfficeのデモShareOfficeの説明

2014/8/2 5

Page 6: Lync 2013 API カスタマイズアプリ開発

業務的な課題日本全国の津々浦々の美容院、ヘアサロンにシャンプー、リンス、カラーリングソフト(髪の毛の染料)を販売する営業マンがおり、利用が出来るようにしたい。

SharePoint上の製品情報、社内情報にアクセスして、業務に必要な情報を参照したい。

SalesForceを利用して各顧客情報を閲覧したい。

技術的な課題 ADFSを利用して、IDとPWを保存してシングルサインオンしたい。 クライアント証明書を用いた二要素認証を実現したい。

2014/8/2 6

SharePointとSalesForceへのシングルサインオン

一つのアプリから、SharePointとSalesForceの両方へログイン。地方で長距離移動が多い営業マンがiPhone上で必要な社内情報を参照することを可能にした。

セキュリティを担保してSFAとSharePointにシングルサインオン

Page 7: Lync 2013 API カスタマイズアプリ開発

SharePoint Onlineとセールスフォースへのシングルサインオン

2014/8/2 7

デスクトップアイコンから起動 メニュー画面

設定画面ADのIDとPWを入力

SharePointShareOfficeアプリ

SalesForceモバイルサイト

Page 8: Lync 2013 API カスタマイズアプリ開発

システム構成図概略

8

① ②

⑥ ⑦

⑫⑪

①クラウドサービスにアクセス②認証トークンの発行のリクエスト③コネクションラッパクラス(証明書を添付)しアクセス。④証明書認証⑤ADFSに認証依頼⑥ADにアクセス⑦ID, PWを認証⑧トークン発行依頼⑨Proxy Server経由⑩iPhoneに認証データセット⑪トークンを保持しながらリダイレクト⑫必要なデータを取得

リバースプロキシーサーバ

AD FS 2.0(STS) Active Directory⑤

2014/8/2

Page 9: Lync 2013 API カスタマイズアプリ開発

業務的な課題 当顧客企業は全社的にiPadの利用を進めている。理由としては、全社的にペーパレスオフィスを実現したい。

技術的な課題 オフライン時のキャッシュ利用

ファイルをキャッシュ化し、電波情報の悪いところでも参照出来るようにしたい。 キャッシュされたファイルは、時限装置(一定期間)で自動的に削除されるようにしてほしい。

PDF編集 社内の共通ファイル形式がPDFなので、PDFで編集、閲覧が出来るようにしたい。

共有とセキュリティ 各ユーザごとに情報漏洩防止をを担保しながら一台のiPadを課内の複数の人間で使いまわしたい。 情報漏洩防止を担保しながら、特定のSharePoint上のドキュメントライブラリにアップロードしたり、他のユーザにファイルを添付して送信することで迅速な共有を行いたい。

ユーザビリティ それぞれのユーザが複数のSharePointサイトを利用しており、それぞれのサイトを自動入力化させたい。

2014/8/2 9

PDF編集を編集してSharePointにアップロード

社内共通ファイル形式がPDF。PDFをShareOffice上で編集することを可能に。また、一台のiPadにて複数のユーザが利用することを想定し、各ユーザごとのログインパスコードロックを実現する。

情報漏洩の徹底防止を前提にしたPDF編集

Page 10: Lync 2013 API カスタマイズアプリ開発

2014/8/2 10

役員向け承認決裁ワークフロー

SharePoint上に独自に構築した承認決裁ワークフローを、iPhone、iPad上にて操作可能に。自分が決裁しなければならない案件が起案された時にiPhone、iPadの待ち受け画面に通知が表示される。役員のタイムリーな承認決裁を実現する。

業務的な課題

役員含め、全社員がPC上で承認決済、ワークフローを行ってきた。

役員は非常に多忙であるが、適宜決済を行わないと、生産設備が止まりかねない事態になり、多額の損害を出すことになる。

自分が決済しなければならない承認事項が発生した場合は、リアルタイムで知らなければならない。

技術的な課題

UIはInfoPathで構築され、入力と制御がされていたが、iPadのSafariで利用すると、画面が崩れ、入力し間違えそうになる。

PCで利用する場合はパフォーマンスが悪く、ネットワークの状況ではセッションタイムアウトになることが多い。

承認決裁ワークフローをiPhone、iPadで実現

Page 11: Lync 2013 API カスタマイズアプリ開発

役員向け承認決裁ワークフロー

11

外部DB

SharePoint Server

iPad用SharePointWeb Services

入力・変更作業はInfoPathで

行う。入力された内容は外部DBにて保存される。

InfoPath

PCからのアクセス

SharePointサイトにブラウザーからアク

セス。会議室、外出先からの承認決済を行いたいとの社内ニーズがあった。

フェアユースがiPhone、iPad専用SharePoint Webサービスを構築し、ワークフローの制御を行う。

ShareOffice

ShareOfficeからアクセス

APNSAPNSを利用した通知表示

Device Profile

User Profile

Provider

各デバイスへの通知依頼

Proxy Server

SharePointWeb Services

※緑文字:フェアユース社の開発2014/8/2

Page 12: Lync 2013 API カスタマイズアプリ開発

弊社の得意な開発分野:Lyncアプリ

Lync 2013 SDK Windows Desktop7, 8上のアプリケーション開発

Unified Communications Web API REST形式のAPI Microsoft社のWebサイト

https://ucwa.lync.com/about/about-ucwa

松崎剛さんのBlog http://blogs.msdn.com/b/tsmatsuz/archive/2013/03/26/lync-unified-communications-web-api-

ucwa-programming.aspx

Unified Communications Managed API Lync Server内部設定、外部から操作するAPI Microsoft社のWebサイト

http://msdn.microsoft.com/ja-jp/office/dn448485.aspx

松崎剛さんのBlog http://msdn.microsoft.com/ja-jp/office/dn448485.aspx

⇨ 単なるIM、チャットのツールではなく

具体的な業務(Line Of Business)の効率化を図れるアプリの開発が可能。

2014/8/2 12

Lyncの各種APIを利用したアプリ開発

Page 13: Lync 2013 API カスタマイズアプリ開発

Work Time Recorderデモ簡易録音アプリデモ

2014/8/2 13

Page 14: Lync 2013 API カスタマイズアプリ開発

Lyncのアプリ開発について

前半:前回おさらい後半:より詳細な説明

2014/8/2 14

Page 15: Lync 2013 API カスタマイズアプリ開発

Lync 2013 SDKの開発環境について

2014/8/2 15

Page 16: Lync 2013 API カスタマイズアプリ開発

Lync 2013 SDKによる開発が可能なプラットフォーム

2014/8/2 16

• Windows Presentation Foundation (WPF)• Silverlight• Windows Form

Page 17: Lync 2013 API カスタマイズアプリ開発

システム要件

2014/8/2 17

• Lync Server 013• .NET Framework 4.0 and later versions of .NET Framework• Silverlight 5 SDK• Silverlight 5 Tools For Visual Studio• Visual Studio 2010または2010以降のバージョン(Visual Studio

2012バージョンまで)※VisualStuido 2013にはSDK自体が未だ対応していません。

• Lync 2013 クライアント• Lync 2013 SDK

Page 18: Lync 2013 API カスタマイズアプリ開発

Lync Server 2013の構成

Lync Server2013はアプリのデモを動作させる環境として必要になります。実際の動作検証は、大部分はLync Onlineでも可能です。

下記のMicrosoftのサイトからLync Server 2013環境構成手順書をダウンロードして、手順書に記載の通り構築を行ってください。

ダウンロード元:http://www.microsoft.com/ja-jp/lync/download/default.aspx

ファイル名 :Lync Server 2013 デモ環境構築

2014/8/2 18

Page 19: Lync 2013 API カスタマイズアプリ開発

Visual Studioのインストール

下記のURLからVisual Studioをダウンロードして、インストールします。 ダウンロード元:http://www.microsoft.com/ja-

jp/download/details.aspx?id=30654 ファイル名 :Visual Studio 2012

※ご利用のVisual Studio2012のエディションによってはSilverlight 5 開発者向けランタイム、及びSilverlight 5 SDKが含まれていない場合があります。その場合は下記URLより別途インストールして下さい。

ダウンロード元:http://msdn.microsoft.com/ja-jp/silverlight/bb187452.aspx

ファイル名 :Silverlight 5 開発者向けランタイム, Silverlight 5 SDK

※ LyncSDK2013のサポートはVisual Studio 2012までであり、それ以降のバージョンは現時点ではサポート対象外です。

2014/8/2 19

Page 20: Lync 2013 API カスタマイズアプリ開発

その他インストール

Silverlight 5.0

ダウンロード元:http://www.microsoft.com/ja-jp/silverlight/download.aspx

ファイル名 :Silverlight 5.0

Lync 2013 クライアント

ダウンロード元: http://technet.microsoft.com/ja-jp/evalcenter/jj192782.aspx

ファイル名 :Microsoft Office Professional Plus 2013

Lync 2013 SDK

ダウンロード元:http://www.microsoft.com/en-us/download/details.aspx?id=36824

ファイル名 :Microsoft Lync 2013 SDK

2014/8/2 20

Page 21: Lync 2013 API カスタマイズアプリ開発

Lync 2013 SDKが提供する機能

2014/8/2 21

• Lync 2013 Pro Plusと同等の機能を持つ「コントロール」

• Lync 2013 Pro Plusの各機能を利用する為のAPI

Page 22: Lync 2013 API カスタマイズアプリ開発

Lync 2013 SDKが提供するコントロールについて

2014/8/2 22

• WPFとSilverlightプラットフォームで利用可能(※Windows Formでは利用が出来ない。

• コントロールは複雑なコーディング無しで自動的にLyncクライアントとの接続を確立

• コントロールの詳細は弊社Blogを参照してください。http://blog.fairuse.jp/2014/04/blog-post_6016.html

Page 23: Lync 2013 API カスタマイズアプリ開発

Lync 2013 SDKが提供するコントロールについて

2014/8/2 23

MyStatusArea

ContactSearchInputBox

ContactList

Page 24: Lync 2013 API カスタマイズアプリ開発

WPFを利用した開発①

2014/8/2 24

1.Visual Studioを開始します。メニューバーの「ファイル」から「新規作成(N)」をクリックして、「プロジェクト」を選択して新しいプロジェクトを作成します。

2.「新しいプロジェクト」ダイアログボックスで、テンプレートの中の「VisualC#」を選択し「 Lync WPF Application」を選択します。新規に任意のプロジェクト名を作成します。ここではプロジェクト名を「WPFDemo」として「OK」ボタンをクリックします。

Page 25: Lync 2013 API カスタマイズアプリ開発

WPFを利用した開発②

2014/8/2 25

3.Microsoft Lync SDKコントロールのDLLファイルが自動的に取り込まれます。

Page 26: Lync 2013 API カスタマイズアプリ開発

WPFを利用した開発③

Lync SDKを用いて開発したLyncアプリの実行ではUI Suppression Modeを利用します。これは、Windows Desktop上では独自に開発したアプリのみが起動されているようにユーザーには見えますが、実際にはWindowsのバックグラウンドにてMicrosoft社が提供するLyncクライアントアプリが動作しています。独自開発したアプリが、実際にはMicrosoft社のLyncクライアントアプリに処理指示を行う形で動作処理がおこなわれます。

UI Suppression ModeではLync Controlを利用することが出来ません。WPFとSilverlightにてLync Controlを利用するにはMicrosoft社が提供するLyncクライアントアプリ自体を常に起動しておく必要があります。

2014/8/2 26

Page 27: Lync 2013 API カスタマイズアプリ開発

WPFを利用した開発④

2014/8/2 27

プレゼンス状態の表示と変更の機能の実装を行います。左側が今回開発するLyncクライアントアプリになります。右側はMicrosoft社が提供するLyncクライアントアプリです。Microsoft社のアプリのプレゼンス状態を変更すると、自動的に今回開発するアプリのプレゼンス状態が変更されます。また、反対に今回開発するアプリのプレゼンス状態を変更すると、Lyncアプリも変更されます。

Page 28: Lync 2013 API カスタマイズアプリ開発

WPFを利用した開発⑤

2014/8/2 28

「Window1.xaml」ファイルを開いて、ハイライトした部分を削除します。この部分はプロジェクト作成時に、ログインをしている各ユーザーのプレゼンス状態を表示するコードになります。今回ここでは利用しないため削除します。

<Grid>

<StackPanel Orientation="Horizontal" HorizontalAlignment="Center"

VerticalAlignment="Center">

<!-- Show the presence indicator. Hover over the icon to see the contact card.

Set Source to a valid SIP URI in your organization. -->

<controls:PresenceIndicator

x:Name="Presence"

Source="sip:[email protected]"

PhotoDisplayMode="Large"/>

<!-- Use the DisplayName property from PresenceIndicator to show the user's name --

>

<TextBlock

Text="{Binding DisplayName, ElementName=Presence}"

Margin="4,0,0,0"

VerticalAlignment="Center" />

</StackPanel>

</Grid>

「Title」プロパティにプロジェクト名を変更することが可能です。ここではプロジェクト名を「Lync WPF」とします。

Page 29: Lync 2013 API カスタマイズアプリ開発

WPFを利用した開発⑥

2014/8/2 29

アプリ画面のプレゼンス状態の表示と変更のため、「Window1.xaml」ファイルの「<Grid>」タグの間に「MyStatusArea」コントロールを追加します。

<Grid>

<controls:MyStatusArea Name="myStatusArea1"

Margin="10,10,0.334,0.333" Background="Transparent" Grid.ColumnSpan="2"/>

</Grid>

MyStatusArea → ユーザーのプレゼンス状態を表示するコントロール

Background → 背景色の設定

Margin,Grid.ColunmSpan → 位置の調整

Page 30: Lync 2013 API カスタマイズアプリ開発

WPFを利用した開発⑦

2014/8/2 30

「Lync WPF」画面のプレゼンス状態で、「Microsoft Lync」アプリにログインしているユーザーのプレゼンス状態が表示されます。「Window1」画面のプレゼンス状態を変更すると、「Microsoft Lync」アプリにログインしているユーザーのプレゼンス状態も自動的に変更されます。

Page 31: Lync 2013 API カスタマイズアプリ開発

WPFを利用した開発⑧

2014/8/2 31

「連絡先リスト」の作成を行います。連絡先リストとはログインユーザーの連絡先リストをグループ上で表示する機能です。

「ContactSearchResultList」コントロール(連絡先検索コントロール)と「ContactList」コントロール(連絡先リストコントロール)を非表示にすることが可能です。(この場合も検索はContactSearchInputBoxで可能です。)表示、非表示を制御するにために、今回「BooleanToVisibility.cs」クラスファイルと「NotBooleanToVisibility .cs」クラスファイルを作成します。

Page 32: Lync 2013 API カスタマイズアプリ開発

WPFを利用した開発⑨

2014/8/2 32

「ソリューション エクスプローラー」上の「WPFDemo」プロジェクトを右クリックし、「追加」 → 「新しい項目」を選択します。「新しい項目の追加」ダイアログボックスに「VisualC#」 → 「クラス」を選択してファイル名を「BooleanToVisibility.cs」とします。

Page 33: Lync 2013 API カスタマイズアプリ開発

WPFを利用した開発⑩

2014/8/2 33

using System;

using System.Globalization;

using System.Windows;

using System.Windows.Data;

namespace WPFDemo.Converters

{

/// <summary>

/// BooleanToVisibilityコンバーター. コントロールを表示、非表示するためのプロパティ

/// </summary>

public class BooleanToVisibility : IValueConverter

{

/// <summary>

/// ‘値’によって Visibilityステータスを返す。

/// </summary>

public object Convert(object value, Type targetType, object parameter, CultureInfo

culture)

{

if (!(value is bool))

{

value = System.Convert.ToBoolean(value);

}

return ConvertValue((bool)value);

}

/// <summary>

/// ConverCollapsed機能を呼び出す、Visibilityを返す。

/// </summary>

/// <param name="value"></param>

protected virtual Visibility ConvertValue(bool value)

{

return ConvertCollapsed(value);

}

「BooleanToVisibility.cs」ファイルを開いて、左のコードを追加します。

Page 34: Lync 2013 API カスタマイズアプリ開発

WPFを利用した開発⑪

2014/8/2 34

「ソリューション エクスプローラー」上の「WPFDemo」プロジェクトを右クリック → 「追加」 → 「新しい項目」を選択します。

「新しい項目の追加」ダイアログボックスに「VisualC#」 → 「クラス」を選択してファイル名を「NotBooleanToVisibility.cs」とします。

Page 35: Lync 2013 API カスタマイズアプリ開発

WPFを利用した開発⑫

2014/8/2 35

using System.Windows;

namespace WPFDemo.Converters

{

/// <summary>

/// NotBooleanToVisibilityコンバーター. BooleanToVisibilityコンバーターを実装して、

/// ConvertValueメソッドをオーバーライドします。

/// </summary>

public class NotBooleanToVisibility :

BooleanToVisibility

{

/// <summary>

/// ベースクラスの ConvertValueメソッドをオーバーライドします。

/// </summary>

/// <param name="value"></param>

protected override Visibility ConvertValue(bool value)

{

return ConvertCollapsed(!value);

}

}

}

「NotBooleanToVisibility.cs」ファイルを開いて、下記のコードを追加します。

Page 36: Lync 2013 API カスタマイズアプリ開発

WPFを利用した開発⑬

2014/8/2 36

<Window x:Class="WPFDemo.Window1"

xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"

xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"

xmlns:controls="clr-

namespace:Microsoft.Lync.Controls;assembly=Microsoft.Lync.Controls"

xmlns:d="http://schemas.microsoft.com/expression/blend/2008"

xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"

xmlns:Converters="clr-namespace:WPFDemo.Converters"

mc:Ignorable="d"

Title="Window1" Height="Auto" Width="350">

<Window.Resources>

<Converters:BooleanToVisibility x:Key="BooleanToVisibility"/>

<Converters:NotBooleanToVisibility x:Key="NotBooleanToVisibility"/>

</Window.Resources>

<Grid>

<Grid.RowDefinitions>

<RowDefinition Height="Auto"/>

<RowDefinition Height="*"/>

</Grid.RowDefinitions>

<controls:MyStatusArea Name="myStatusArea1" Margin="10,10,0.334,0.333"

Background="Transparent" Grid.ColumnSpan="2"/>

<!--ContactSearchInputBoxはユーザーが検索ボックスに文字を入力して連絡先を検索すること

ができる機能です。-->

<controls:ContactSearchInputBox

x:Name="ocSearchInput"

MaxResults="10"

Grid.Row="0" Margin="0,107,0.334,326.333" Grid.ColumnSpan="2" />

<!--ContactsearchResultlistは ContactSearchInputBoxの検索結果を表示します。-->

<controls:ContactSearchResultList

x:Name="ocSearchResults"

「Window1.xaml」ファイルを開いて、「連絡先リスト」コントロールと「連絡先検索文字入れテキストボックス」コントロール、「連絡先検索」コントロールを追加します。

Page 37: Lync 2013 API カスタマイズアプリ開発

WPFを利用した開発⑭

2014/8/2 37

「Lync WPF」画面の「グループ」タグの連絡先リストに、「Microsoft Lync」アプリにサインインしているユーザーの連絡先リストが表示されます。

Page 38: Lync 2013 API カスタマイズアプリ開発

WPFを利用した開発⑮

2014/8/2 38

「Lync WPF」画面の連絡先リストの連絡先を右クリックすると、「インスタント メッセージの送信」、「通話」、「ビデオ通話の開始」、「共有」、「電子メール メッセージの送信」、「会議の予約」、「ファイルの送信」機能が使えます。

Page 39: Lync 2013 API カスタマイズアプリ開発

UI サプレッションモードとは?

2014/8/2 39

• Lync2013クライアントのUIが表示されなくなる(プロセスは実行される)

• 設定方法はレジストリキー

Page 40: Lync 2013 API カスタマイズアプリ開発

UIサプレッションモード設定方法

2014/8/2 40

• WindowsのレジストリキーにUI Suppressionモードを有効に設定

• WindowsのレジストリキーにUI Suppressionモードを無効に設定

HKEY_CURRENT_USER¥Software¥Microsoft¥Office¥15.0¥Lync“UISuppressionMode”=dword:00000001

HKEY_CURRENT_USER¥Software¥Microsoft¥Office¥15.0¥Lync“UISuppressionMode”=dword:00000000

Page 41: Lync 2013 API カスタマイズアプリ開発

Lync Japan Community

Facebook上

「Lync Japan Community」

を開設しました。下記について情報交換を進め日本のLync市場を活性化してまいります。ご参加ください。

Lyncによって実現する業務効率化

Lync APIを用いた開発

Lync APIを利用したソフトウエア製品

Lync対応ハードウエア製品

https://www.facebook.com/groups/534282403360057/

2014/8/2 41

Page 42: Lync 2013 API カスタマイズアプリ開発

2014/8/2 42