Upload
adachiyosuke
View
2.120
Download
1
Embed Size (px)
DESCRIPTION
Lync 2013 SDK 等を利用したアプリ開発
Citation preview
フェアユース株式会社足立洋介
日時:2014年8月2日 13:00~18:00場所:日本マイクロソフト品川本社 31F/セミナールームB
第9回 Office 365勉強会
Lync 2013 アプリ開発
2014/8/2 1
参考:フェアユース株式会社紹介
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月から取得
連絡先
所在地:〒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
弊社の得意な開発分野:SharePointアプリ
Proxy Server、 ADFS、その他認証基盤を介したログイン
アプリ内のデータを完全に暗号化
各企業ごとの利用用途に合わせたPDF編集エンジン
⇨セキュリティを担保し、情報漏洩を防ぐ。詳細は当スライドを参照:http://www.slideshare.net/adachiyosuke/microsoft-officemobile-32931168
⇨ネイティブアプリだからこそ出来るユーザビリティの確保。詳細は次ページ以降を参照
2014/8/2 4
SharePointのiPhone、Androidアプリを各企業向けに提供
ShareOfficeのデモShareOfficeの説明
2014/8/2 5
業務的な課題日本全国の津々浦々の美容院、ヘアサロンにシャンプー、リンス、カラーリングソフト(髪の毛の染料)を販売する営業マンがおり、利用が出来るようにしたい。
SharePoint上の製品情報、社内情報にアクセスして、業務に必要な情報を参照したい。
SalesForceを利用して各顧客情報を閲覧したい。
技術的な課題 ADFSを利用して、IDとPWを保存してシングルサインオンしたい。 クライアント証明書を用いた二要素認証を実現したい。
2014/8/2 6
SharePointとSalesForceへのシングルサインオン
一つのアプリから、SharePointとSalesForceの両方へログイン。地方で長距離移動が多い営業マンがiPhone上で必要な社内情報を参照することを可能にした。
セキュリティを担保してSFAとSharePointにシングルサインオン
SharePoint Onlineとセールスフォースへのシングルサインオン
2014/8/2 7
デスクトップアイコンから起動 メニュー画面
設定画面ADのIDとPWを入力
SharePointShareOfficeアプリ
SalesForceモバイルサイト
システム構成図概略
8
① ②
③
④
⑥ ⑦
⑧
⑫⑪
①クラウドサービスにアクセス②認証トークンの発行のリクエスト③コネクションラッパクラス(証明書を添付)しアクセス。④証明書認証⑤ADFSに認証依頼⑥ADにアクセス⑦ID, PWを認証⑧トークン発行依頼⑨Proxy Server経由⑩iPhoneに認証データセット⑪トークンを保持しながらリダイレクト⑫必要なデータを取得
リバースプロキシーサーバ
AD FS 2.0(STS) Active Directory⑤
⑨
⑩
2014/8/2
業務的な課題 当顧客企業は全社的にiPadの利用を進めている。理由としては、全社的にペーパレスオフィスを実現したい。
技術的な課題 オフライン時のキャッシュ利用
ファイルをキャッシュ化し、電波情報の悪いところでも参照出来るようにしたい。 キャッシュされたファイルは、時限装置(一定期間)で自動的に削除されるようにしてほしい。
PDF編集 社内の共通ファイル形式がPDFなので、PDFで編集、閲覧が出来るようにしたい。
共有とセキュリティ 各ユーザごとに情報漏洩防止をを担保しながら一台のiPadを課内の複数の人間で使いまわしたい。 情報漏洩防止を担保しながら、特定のSharePoint上のドキュメントライブラリにアップロードしたり、他のユーザにファイルを添付して送信することで迅速な共有を行いたい。
ユーザビリティ それぞれのユーザが複数のSharePointサイトを利用しており、それぞれのサイトを自動入力化させたい。
2014/8/2 9
PDF編集を編集してSharePointにアップロード
社内共通ファイル形式がPDF。PDFをShareOffice上で編集することを可能に。また、一台のiPadにて複数のユーザが利用することを想定し、各ユーザごとのログインパスコードロックを実現する。
情報漏洩の徹底防止を前提にしたPDF編集
2014/8/2 10
役員向け承認決裁ワークフロー
SharePoint上に独自に構築した承認決裁ワークフローを、iPhone、iPad上にて操作可能に。自分が決裁しなければならない案件が起案された時にiPhone、iPadの待ち受け画面に通知が表示される。役員のタイムリーな承認決裁を実現する。
業務的な課題
役員含め、全社員がPC上で承認決済、ワークフローを行ってきた。
役員は非常に多忙であるが、適宜決済を行わないと、生産設備が止まりかねない事態になり、多額の損害を出すことになる。
自分が決済しなければならない承認事項が発生した場合は、リアルタイムで知らなければならない。
技術的な課題
UIはInfoPathで構築され、入力と制御がされていたが、iPadのSafariで利用すると、画面が崩れ、入力し間違えそうになる。
PCで利用する場合はパフォーマンスが悪く、ネットワークの状況ではセッションタイムアウトになることが多い。
承認決裁ワークフローをiPhone、iPadで実現
役員向け承認決裁ワークフロー
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
弊社の得意な開発分野: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を利用したアプリ開発
Work Time Recorderデモ簡易録音アプリデモ
2014/8/2 13
Lyncのアプリ開発について
前半:前回おさらい後半:より詳細な説明
2014/8/2 14
Lync 2013 SDKの開発環境について
2014/8/2 15
Lync 2013 SDKによる開発が可能なプラットフォーム
2014/8/2 16
• Windows Presentation Foundation (WPF)• Silverlight• Windows Form
システム要件
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
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
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
その他インストール
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
Lync 2013 SDKが提供する機能
2014/8/2 21
• Lync 2013 Pro Plusと同等の機能を持つ「コントロール」
• Lync 2013 Pro Plusの各機能を利用する為のAPI
Lync 2013 SDKが提供するコントロールについて
2014/8/2 22
• WPFとSilverlightプラットフォームで利用可能(※Windows Formでは利用が出来ない。
• コントロールは複雑なコーディング無しで自動的にLyncクライアントとの接続を確立
• コントロールの詳細は弊社Blogを参照してください。http://blog.fairuse.jp/2014/04/blog-post_6016.html
Lync 2013 SDKが提供するコントロールについて
2014/8/2 23
MyStatusArea
ContactSearchInputBox
ContactList
WPFを利用した開発①
2014/8/2 24
1.Visual Studioを開始します。メニューバーの「ファイル」から「新規作成(N)」をクリックして、「プロジェクト」を選択して新しいプロジェクトを作成します。
2.「新しいプロジェクト」ダイアログボックスで、テンプレートの中の「VisualC#」を選択し「 Lync WPF Application」を選択します。新規に任意のプロジェクト名を作成します。ここではプロジェクト名を「WPFDemo」として「OK」ボタンをクリックします。
WPFを利用した開発②
2014/8/2 25
3.Microsoft Lync SDKコントロールのDLLファイルが自動的に取り込まれます。
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
WPFを利用した開発④
2014/8/2 27
プレゼンス状態の表示と変更の機能の実装を行います。左側が今回開発するLyncクライアントアプリになります。右側はMicrosoft社が提供するLyncクライアントアプリです。Microsoft社のアプリのプレゼンス状態を変更すると、自動的に今回開発するアプリのプレゼンス状態が変更されます。また、反対に今回開発するアプリのプレゼンス状態を変更すると、Lyncアプリも変更されます。
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」とします。
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 → 位置の調整
WPFを利用した開発⑦
2014/8/2 30
「Lync WPF」画面のプレゼンス状態で、「Microsoft Lync」アプリにログインしているユーザーのプレゼンス状態が表示されます。「Window1」画面のプレゼンス状態を変更すると、「Microsoft Lync」アプリにログインしているユーザーのプレゼンス状態も自動的に変更されます。
WPFを利用した開発⑧
2014/8/2 31
「連絡先リスト」の作成を行います。連絡先リストとはログインユーザーの連絡先リストをグループ上で表示する機能です。
「ContactSearchResultList」コントロール(連絡先検索コントロール)と「ContactList」コントロール(連絡先リストコントロール)を非表示にすることが可能です。(この場合も検索はContactSearchInputBoxで可能です。)表示、非表示を制御するにために、今回「BooleanToVisibility.cs」クラスファイルと「NotBooleanToVisibility .cs」クラスファイルを作成します。
WPFを利用した開発⑨
2014/8/2 32
「ソリューション エクスプローラー」上の「WPFDemo」プロジェクトを右クリックし、「追加」 → 「新しい項目」を選択します。「新しい項目の追加」ダイアログボックスに「VisualC#」 → 「クラス」を選択してファイル名を「BooleanToVisibility.cs」とします。
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」ファイルを開いて、左のコードを追加します。
WPFを利用した開発⑪
2014/8/2 34
「ソリューション エクスプローラー」上の「WPFDemo」プロジェクトを右クリック → 「追加」 → 「新しい項目」を選択します。
「新しい項目の追加」ダイアログボックスに「VisualC#」 → 「クラス」を選択してファイル名を「NotBooleanToVisibility.cs」とします。
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」ファイルを開いて、下記のコードを追加します。
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」ファイルを開いて、「連絡先リスト」コントロールと「連絡先検索文字入れテキストボックス」コントロール、「連絡先検索」コントロールを追加します。
WPFを利用した開発⑭
2014/8/2 37
「Lync WPF」画面の「グループ」タグの連絡先リストに、「Microsoft Lync」アプリにサインインしているユーザーの連絡先リストが表示されます。
WPFを利用した開発⑮
2014/8/2 38
「Lync WPF」画面の連絡先リストの連絡先を右クリックすると、「インスタント メッセージの送信」、「通話」、「ビデオ通話の開始」、「共有」、「電子メール メッセージの送信」、「会議の予約」、「ファイルの送信」機能が使えます。
UI サプレッションモードとは?
2014/8/2 39
• Lync2013クライアントのUIが表示されなくなる(プロセスは実行される)
• 設定方法はレジストリキー
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
Lync Japan Community
Facebook上
「Lync Japan Community」
を開設しました。下記について情報交換を進め日本のLync市場を活性化してまいります。ご参加ください。
Lyncによって実現する業務効率化
Lync APIを用いた開発
Lync APIを利用したソフトウエア製品
Lync対応ハードウエア製品
https://www.facebook.com/groups/534282403360057/
2014/8/2 41
2014/8/2 42