夏サミ2012...

17
ソーシャル機能を取り入れた エンタープライズアプリケーション チームスピリットのご紹介 倉谷 デジタルコースト株式会社 研究開発グループ エンジニア

Post on 03-Nov-2014

792 views

Category:

Documents


5 download

DESCRIPTION

2012年7月27日に行われた「Developer [Social Enterprise] Summit」(通称:夏サミ)のA-2ブレイクアウトセッションの中で発表した講演資料です。

TRANSCRIPT

Page 1: 夏サミ2012 [A-2]ソーシャルプラットフォームを使った業務アプリ開発の現場(ソーシャル機能を取り入れたエンタープライズアプリケーション)

ソーシャル機能を取り入れた

エンタープライズアプリケーション チームスピリットのご紹介

倉谷 彰

デジタルコースト株式会社

研究開発グループ

エンジニア

Page 2: 夏サミ2012 [A-2]ソーシャルプラットフォームを使った業務アプリ開発の現場(ソーシャル機能を取り入れたエンタープライズアプリケーション)

デジタルコーストとは

1 2012/8/11 Copyright © DigitalCoast Inc. All Rights Reserved.

を開発・提供している会社です。

を組み込んだ、 ソーシャル・ワークフォースマネジメント・サービス

Page 3: 夏サミ2012 [A-2]ソーシャルプラットフォームを使った業務アプリ開発の現場(ソーシャル機能を取り入れたエンタープライズアプリケーション)

2012/8/11 Copyright © DigitalCoast Inc. All Rights Reserved. 2

勤怠管理

プロジェクト

工数管理

経費精算

タイムライン

行動を記録

デモを ご覧ください

とは

実労働時間

Project A Project B 移動

ビジネスで起こる全ての活動をタイムラインで記録

Page 4: 夏サミ2012 [A-2]ソーシャルプラットフォームを使った業務アプリ開発の現場(ソーシャル機能を取り入れたエンタープライズアプリケーション)

少し技術的なお話

ソーシャル・エンタープライズを実現する業務アプリの作り方

Page 5: 夏サミ2012 [A-2]ソーシャルプラットフォームを使った業務アプリ開発の現場(ソーシャル機能を取り入れたエンタープライズアプリケーション)

チームスピリットのアーキテクチャ

2012/8/11 Copyright © DigitalCoast Inc. All Rights Reserved. 4

認証

権限管理

Chatter

承認プロセス

レポート/ダッシュボード

勤怠管理

プロジェクト工数管理

経費精算

業務に関連する機能 汎用的な機能

Page 6: 夏サミ2012 [A-2]ソーシャルプラットフォームを使った業務アプリ開発の現場(ソーシャル機能を取り入れたエンタープライズアプリケーション)

例えば、Chatter

2012/8/11 Copyright © DigitalCoast Inc. All Rights Reserved. 5

Chatter投稿

Page 7: 夏サミ2012 [A-2]ソーシャルプラットフォームを使った業務アプリ開発の現場(ソーシャル機能を取り入れたエンタープライズアプリケーション)

コードはどうなっているか?

2012/8/11 Copyright © DigitalCoast Inc. All Rights Reserved. 6

public with sharing class TxsActivityLogic { public static void insertActivity( Map<String,Object> r, RestRequest req) { Map<String, String> p = req.params; String s = p.get('time'); DateTime tim = TxsUtil.now(); if(s != null) tim = DateTime.valueOf(s); TxsLog__c log = new TxsLog__c(TargetTime__c=tim); log.Status__c = null; ・・・(位置情報や画像をレコードにセットする) String feed = p.get('feed'); if(feed != null) { FeedItem post = new FeedItem(); post.ParentId = UserInfo.getUserId(); post.Body = feed; post.Type = 'TextPost'; insert post; log.FeedId__c = post.Id; } insert log; r.put('id', log.Id); } ・・・

Force.com

行動ログ TxsLog

クラス TxsActivity

クラス TxsActivity

Logic

REST

リソース

モバイル { “time” : ”2012/07/27”,

“feed” : “今日は○○社の・・・”, “latitude” : 35.684337, “longitude” : 139.739649 “placeId” : “WGS84”,

“placeName” : “デジタルコースト・・・” }

Chatter投稿

行動ログレコード追加

Force.com

Page 8: 夏サミ2012 [A-2]ソーシャルプラットフォームを使った業務アプリ開発の現場(ソーシャル機能を取り入れたエンタープライズアプリケーション)

例えば、承認プロセス

2012/8/11 Copyright © DigitalCoast Inc. All Rights Reserved. 7

承認プロセスの設定

承認申請

Page 9: 夏サミ2012 [A-2]ソーシャルプラットフォームを使った業務アプリ開発の現場(ソーシャル機能を取り入れたエンタープライズアプリケーション)

コードはどうなっているか?

2012/8/11 Copyright © DigitalCoast Inc. All Rights Reserved. 8

// id : 承認申請対象とするオブジェクトのID // comment : 承認申請時のコメント // approver : 承認プロセスのID ・・・ Approval.ProcessSubmitRequest req1 = new Approval.ProcessSubmitRequest(); req1.setObjectId(id); req1.setComments(comment); if(approver != null) { req1.setNextApproverIds(new Id[]{ approver }); } Approval.ProcessResult result = Approval.process(req1); ・・・

Force.com側

Page 10: 夏サミ2012 [A-2]ソーシャルプラットフォームを使った業務アプリ開発の現場(ソーシャル機能を取り入れたエンタープライズアプリケーション)

モバイル・アプリケーション

2012/8/11 Copyright © DigitalCoast Inc. All Rights Reserved. 9

OAuth2.0

Apex REST

Salesforce Toolkit for Appcelarator

{ “time” : ”2012/07/27”,

“feed” : “今日は○○社の・・・”, “latitude” : 35.684337, “longitude” : 139.739649 “placeId” : “WGS84”,

“placeName” : “デジタルコースト・・・” }

JSON

クラウドサービス側 モバイル側

Page 11: 夏サミ2012 [A-2]ソーシャルプラットフォームを使った業務アプリ開発の現場(ソーシャル機能を取り入れたエンタープライズアプリケーション)

OAuth2.0

2012/8/11 Copyright © DigitalCoast Inc. All Rights Reserved. 10

Force.com側

Page 12: 夏サミ2012 [A-2]ソーシャルプラットフォームを使った業務アプリ開発の現場(ソーシャル機能を取り入れたエンタープライズアプリケーション)

Apex REST:コードはどうなっているか?

RestResourceアノテーションを利用することで簡単に RESTリソースを公開できます

2012/8/11 Copyright © DigitalCoast Inc. All Rights Reserved. 11

@RestResource(urlMapping='/txsapi2/activity/*') global with sharing class TxsActivity { @HttpPost global static void doPost(RestRequest req, RestResponse res) { Map<String,Object> r = new Map<String,Object>(); try { String id = TxsUtil.getParamId(req); if(id != null) TxsActivityLogic.updateActivity(r, req, id); else TxsActivityLogic.insertActivity(r, req); r.put('success', true); } catch(Exception e) { TxsUtil.setException(r, e); } res.responseBody = Blob.valueof(JSON.serialize(r)); } @HttpGet global static void doGet(RestRequest req, RestResponse res) { Map<String,Object> r = new Map<String,Object>(); ・・・

postBtn.addEventListener(‘click’, function() { ・・・ var oauthJson = JSON.parse(oauthData); var uri = '/services/apexrest/txsapi2/activity/?'; uri += 'time=' + TSX.timeAsString(); uri += '&feed=' + (commentText.value ? commentText.value : ''); var restUrl = encodeURI( Ti.Network.decodeURIComponent(oauthJson.instance_url) + uri); var xhr = Ti.Network.createHTTPClient(); xhr.onload = function() { var res = JSON.parse(this.responseText); // Callbackでの処理 ・・・ }; xhr.open(“GET”, restUrl, true); xhr.setRequestHeader( “Authorization”, “OAuth ” + Ti.Network.decodeURIComponent(oauthJson.access_token)); xhr.setRequestHeader("Content-Type", "application/json"); xhr.send(); ・・・ };

モバイル側 Force.com側

Page 13: 夏サミ2012 [A-2]ソーシャルプラットフォームを使った業務アプリ開発の現場(ソーシャル機能を取り入れたエンタープライズアプリケーション)

モバイルとForce.comアプリの役割分担

2012/8/11 Copyright © DigitalCoast Inc. All Rights Reserved. 12

OAuth2.0

RESTリソース TxsExpense2

Salesforce Toolkit for Appcelarator

サーバ側にロジックを集約

複雑な勤怠計算や経路探索はサーバ側に任せた

クライアント側は画面制御に特化

短期間でプロトタイプを開発し、試作を繰り返すことができた

モバイル側 クラウドサービス側

RESTリソース TxsActivity

RESTリソース TxsWorkTimeLogic

駅探経路探索エンジン

勤怠計算エンジン

ロジック

ロジック

ロジック

外部

Web サービス

画面制御

Page 14: 夏サミ2012 [A-2]ソーシャルプラットフォームを使った業務アプリ開発の現場(ソーシャル機能を取り入れたエンタープライズアプリケーション)

最後に

ソーシャル化した企業はどのように変わったか?

Page 15: 夏サミ2012 [A-2]ソーシャルプラットフォームを使った業務アプリ開発の現場(ソーシャル機能を取り入れたエンタープライズアプリケーション)

ソーシャル化した企業はどのように変わったか?

日報こそソーシャル

出退社でつぶやくアイデアで日報をやるようになった

「つぶやきはキッカケがないとつぶやかない」

タイムラインで社内の状況がわかるようになる

業務的な依頼もChatterで行う。そのときに誰が関わっているか知ることができる

2012/8/11 Copyright © DigitalCoast Inc. All Rights Reserved. 14

入社6ヶ月目の 木村圭太さん 入社6日目の

浦畑 瞳さん

課題

東京、札幌、帯広の3拠点体制

クリエイティブな仕事なのでリアルな一体感が重要

事例:株式会社 スカイアークシステム 様

すべてのウェブサイトに「かんたん」と「成果」を

CMSインテグレーション事業を行う会社です。

入社して6日目でも雰囲気が分かった

Page 16: 夏サミ2012 [A-2]ソーシャルプラットフォームを使った業務アプリ開発の現場(ソーシャル機能を取り入れたエンタープライズアプリケーション)

業務アプリをソーシャル化するということ

エンジニアのちょっとしたアイデアで

お客様の業務が大きく変えることができる

2012/8/11 Copyright © DigitalCoast Inc. All Rights Reserved. 15

Page 17: 夏サミ2012 [A-2]ソーシャルプラットフォームを使った業務アプリ開発の現場(ソーシャル機能を取り入れたエンタープライズアプリケーション)

2012/8/11 Copyright © DigitalCoast Inc. All Rights Reserved. 16