SlideShare a Scribd company logo
ソーシャル機能を取り入れた
エンタープライズアプリケーション
チームスピリットのご紹介




                倉谷 彰
          デジタルコースト株式会社
              研究開発グループ
                 エンジニア
デジタルコーストとは

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

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




1            Copyright © DigitalCoast Inc. All Rights Reserved.   2012/7/30
とは
                                                                                            デモを
ビジネスで起こる全ての活動をタイムラインで記録                                                                     ご覧ください
                                                                                     勤怠管理
行動を記録




                                                タイムライン
                                                                                             プロジェクト
                                                                                              工数管理




                                                                                     経費精算
     Project A   移動 Project B


            実労働時間



 2                              Copyright © DigitalCoast Inc. All Rights Reserved.            2012/7/30
少し技術的なお話
ソーシャル・エンタープライズを実現する業務アプリの作り方
チームスピリットのアーキテクチャ



      勤怠管理                                                             認証


    プロジェクト工数管理                                                        Chatter


                                                                      権限管理
      経費精算

                                                                承認プロセス


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


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


4                Copyright © DigitalCoast Inc. All Rights Reserved.             2012/7/30
例えば、Chatter




              Chatter投稿




5             Copyright © DigitalCoast Inc. All Rights Reserved.   2012/7/30
コードはどうなっているか?
モバイル                                                              Force.com
       { “time” : ”2012/07/27”,
         “feed” : “今日は○○社の・・・”,                                   public with sharing class TxsActivityLogic {
         “latitude” : 35.684337,                                    public static void insertActivity(
         “longitude” : 139.739649                                       Map<String,Object> r, RestRequest req) {
         “placeId” : “WGS84”,                                           Map<String, String> p = req.params;
         “placeName” : “デジタルコースト・・・” }
                                                                        String s = p.get('time');
                                                Force.com
                                                                        DateTime tim = TxsUtil.now();
                                                                        if(s != null)
               REST                                                         tim = DateTime.valueOf(s);
              リソース
                                                                        TxsLog__c log = new TxsLog__c(TargetTime__c=tim);
                    クラス                                                 log.Status__c = null;
                  TxsActivity                                           ・・・(位置情報や画像をレコードにセットする)

                                               行動ログ                     String feed = p.get('feed');
                                                                        if(feed != null) {
                                               TxsLog
                                                                            FeedItem post = new FeedItem();
                             クラス                                            post.ParentId = UserInfo.getUserId();
                           TxsActivity                                      post.Body = feed;                        Chatter投稿
                             Logic                                          post.Type = 'TextPost';
                                                                            insert post;

                                                                            log.FeedId__c = post.Id;
                                                                        }

                                                                        insert log;            行動ログレコード追加
                                                                        r.put('id', log.Id);
                                                                     }
                                                                     ・・・


  6                                      Copyright © DigitalCoast Inc. All Rights Reserved.                         2012/7/30
例えば、承認プロセス

                                 承認プロセスの設定




            承認申請




7       Copyright © DigitalCoast Inc. All Rights Reserved.   2012/7/30
コードはどうなっているか?


    Force.com側
     // 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);
     ・・・




8                                 Copyright © DigitalCoast Inc. All Rights Reserved.         2012/7/30
モバイル・アプリケーション
モバイル側                                                          クラウドサービス側




        Salesforce Toolkit
        for Appcelarator                                         OAuth2.0




                                       JSON
                             { “time” : ”2012/07/27”,
                               “feed” : “今日は○○社の・・・”,
                                                                Apex REST
                               “latitude” : 35.684337,
                               “longitude” : 139.739649
                               “placeId” : “WGS84”,
                               “placeName” : “デジタルコースト・・・” }




 9                           Copyright © DigitalCoast Inc. All Rights Reserved.   2012/7/30
OAuth2.0

     Force.com側




10                Copyright © DigitalCoast Inc. All Rights Reserved.   2012/7/30
Apex REST:コードはどうなっているか?
                   RestResourceアノテーションを利用することで簡単に
                    RESTリソースを公開できます
モバイル側                                                                        Force.com側
postBtn.addEventListener(‘click’, function() {                              @RestResource(urlMapping='/txsapi2/activity/*')
  ・・・                                                                       global with sharing class TxsActivity {
  var oauthJson = JSON.parse(oauthData);                                       @HttpPost
                                                                               global static void doPost(RestRequest req, RestResponse res) {
     var uri = '/services/apexrest/txsapi2/activity/?';                           Map<String,Object> r = new Map<String,Object>();
     uri += 'time=' + TSX.timeAsString();                                         try {
     uri += '&feed=' + (commentText.value ? commentText.value : '');                 String id = TxsUtil.getParamId(req);
     var restUrl = encodeURI(                                                        if(id != null)
        Ti.Network.decodeURIComponent(oauthJson.instance_url) +
                                                                                            TxsActivityLogic.updateActivity(r, req, id);
        uri);
                                                                                     else
                                                                                            TxsActivityLogic.insertActivity(r, req);
     var xhr = Ti.Network.createHTTPClient();
     xhr.onload = function() {
                                                                                     r.put('success', true);
        var res = JSON.parse(this.responseText);                                  }
        // Callbackでの処理                                                           catch(Exception e) { TxsUtil.setException(r, e); }
        ・・・                                                                       res.responseBody = Blob.valueof(JSON.serialize(r));
     };                                                                        }

     xhr.open(“GET”, restUrl, true);                                         @HttpGet
     xhr.setRequestHeader(                                                   global static void doGet(RestRequest req, RestResponse res) {
         “Authorization”, “OAuth ” +                                            Map<String,Object> r = new Map<String,Object>();
         Ti.Network.decodeURIComponent(oauthJson.access_token));            ・・・
     xhr.setRequestHeader("Content-Type", "application/json");
     xhr.send();
     ・・・
};


           11                                          Copyright © DigitalCoast Inc. All Rights Reserved.                      2012/7/30
モバイルとForce.comアプリの役割分担
モバイル側                                   クラウドサービス側

                                         OAuth2.0
              画面制御


                                                                                                      外部
          Salesforce Toolkit            RESTリソース                  ロジック                                Web
           for Appcelarator                TxsActivity
                                                                                                      サービス


                                        RESTリソース                  ロジック              駅探経路探索エンジン
                                          TxsExpense2




                                        RESTリソース                  ロジック               勤怠計算エンジン
                                        TxsWorkTimeLogic


   サーバ側にロジックを集約
    複雑な勤怠計算や経路探索はサーバ側に任せた

   クライアント側は画面制御に特化
    短期間でプロトタイプを開発し、試作を繰り返
    すことができた




    12                         Copyright © DigitalCoast Inc. All Rights Reserved.                2012/7/30
最後に
ソーシャル化した企業はどのように変わったか?
業務アプリをソーシャル化するということ




      エンジニアのちょっとしたアイデアで
     お客様の業務が大きく変えることができる



14         Copyright © DigitalCoast Inc. All Rights Reserved.   2012/7/30
15   Copyright © DigitalCoast Inc. All Rights Reserved.   2012/7/30

More Related Content

What's hot (6)

NGSIv1 を知っている開発者向けの NGSIv2 の概要 (Orion 2.1.0対応)
NGSIv1 を知っている開発者向けの NGSIv2 の概要 (Orion 2.1.0対応)NGSIv1 を知っている開発者向けの NGSIv2 の概要 (Orion 2.1.0対応)
NGSIv1 を知っている開発者向けの NGSIv2 の概要 (Orion 2.1.0対応)
fisuda
 
20140708 オンラインゲームソリューション
20140708 オンラインゲームソリューション20140708 オンラインゲームソリューション
20140708 オンラインゲームソリューション
Takahiro Inoue
 
トレジャーデータ新サービス発表 2013/12/9
トレジャーデータ新サービス発表 2013/12/9トレジャーデータ新サービス発表 2013/12/9
トレジャーデータ新サービス発表 2013/12/9
Treasure Data, Inc.
 
データ可視化勉強会
データ可視化勉強会データ可視化勉強会
データ可視化勉強会
Daichi Morifuji
 
ソーシャルデザインパターン -評判と情報収集-
ソーシャルデザインパターン -評判と情報収集-ソーシャルデザインパターン -評判と情報収集-
ソーシャルデザインパターン -評判と情報収集-
Koichi Hamada
 
『モバゲーの大規模データマイニング基盤におけるHadoop活用』-Hadoop Conference Japan 2011- #hcj2011
『モバゲーの大規模データマイニング基盤におけるHadoop活用』-Hadoop Conference Japan 2011- #hcj2011 『モバゲーの大規模データマイニング基盤におけるHadoop活用』-Hadoop Conference Japan 2011- #hcj2011
『モバゲーの大規模データマイニング基盤におけるHadoop活用』-Hadoop Conference Japan 2011- #hcj2011
Koichi Hamada
 
NGSIv1 を知っている開発者向けの NGSIv2 の概要 (Orion 2.1.0対応)
NGSIv1 を知っている開発者向けの NGSIv2 の概要 (Orion 2.1.0対応)NGSIv1 を知っている開発者向けの NGSIv2 の概要 (Orion 2.1.0対応)
NGSIv1 を知っている開発者向けの NGSIv2 の概要 (Orion 2.1.0対応)
fisuda
 
20140708 オンラインゲームソリューション
20140708 オンラインゲームソリューション20140708 オンラインゲームソリューション
20140708 オンラインゲームソリューション
Takahiro Inoue
 
トレジャーデータ新サービス発表 2013/12/9
トレジャーデータ新サービス発表 2013/12/9トレジャーデータ新サービス発表 2013/12/9
トレジャーデータ新サービス発表 2013/12/9
Treasure Data, Inc.
 
データ可視化勉強会
データ可視化勉強会データ可視化勉強会
データ可視化勉強会
Daichi Morifuji
 
ソーシャルデザインパターン -評判と情報収集-
ソーシャルデザインパターン -評判と情報収集-ソーシャルデザインパターン -評判と情報収集-
ソーシャルデザインパターン -評判と情報収集-
Koichi Hamada
 
『モバゲーの大規模データマイニング基盤におけるHadoop活用』-Hadoop Conference Japan 2011- #hcj2011
『モバゲーの大規模データマイニング基盤におけるHadoop活用』-Hadoop Conference Japan 2011- #hcj2011 『モバゲーの大規模データマイニング基盤におけるHadoop活用』-Hadoop Conference Japan 2011- #hcj2011
『モバゲーの大規模データマイニング基盤におけるHadoop活用』-Hadoop Conference Japan 2011- #hcj2011
Koichi Hamada
 

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

データサイエンティストが力を発揮できるアジャイルデータ活用基盤
データサイエンティストが力を発揮できるアジャイルデータ活用基盤データサイエンティストが力を発揮できるアジャイルデータ活用基盤
データサイエンティストが力を発揮できるアジャイルデータ活用基盤
Recruit Lifestyle Co., Ltd.
 
Apexデザインパターン
ApexデザインパターンApexデザインパターン
Apexデザインパターン
Salesforce Developers Japan
 
トレジャーデータ株式会社について(for all Data_Enthusiast!!)
トレジャーデータ株式会社について(for all Data_Enthusiast!!)トレジャーデータ株式会社について(for all Data_Enthusiast!!)
トレジャーデータ株式会社について(for all Data_Enthusiast!!)
Takahiro Inoue
 
Entity Framework 5.0 deep dive
Entity Framework 5.0 deep diveEntity Framework 5.0 deep dive
Entity Framework 5.0 deep dive
Atsushi Fukui
 
Twitter連携chrome extension作り方
Twitter連携chrome extension作り方Twitter連携chrome extension作り方
Twitter連携chrome extension作り方
Hiroshi Oyamada
 
Heroku Postgres
Heroku PostgresHeroku Postgres
Heroku Postgres
Salesforce Developers Japan
 
アプリを成長させるためのログ取りとログ解析に必要なこと
アプリを成長させるためのログ取りとログ解析に必要なことアプリを成長させるためのログ取りとログ解析に必要なこと
アプリを成長させるためのログ取りとログ解析に必要なこと
Takao Sumitomo
 
クラウド時代の並列分散処理技術
クラウド時代の並列分散処理技術クラウド時代の並列分散処理技術
クラウド時代の並列分散処理技術
Koichi Fujikawa
 
[Cloud OnAir] 最新アップデート Google Cloud データ関連ソリューション 2020年5月14日 放送
[Cloud OnAir] 最新アップデート Google Cloud データ関連ソリューション 2020年5月14日 放送[Cloud OnAir] 最新アップデート Google Cloud データ関連ソリューション 2020年5月14日 放送
[Cloud OnAir] 最新アップデート Google Cloud データ関連ソリューション 2020年5月14日 放送
Google Cloud Platform - Japan
 
[DI10] IoT を実践する最新のプラクティス ~ Azure IoT Hub 、SDK 、Azure IoT Suite ~
[DI10] IoT を実践する最新のプラクティス ~ Azure IoT Hub 、SDK 、Azure IoT Suite ~[DI10] IoT を実践する最新のプラクティス ~ Azure IoT Hub 、SDK 、Azure IoT Suite ~
[DI10] IoT を実践する最新のプラクティス ~ Azure IoT Hub 、SDK 、Azure IoT Suite ~
de:code 2017
 
20170703_05 IoTビジネス共創ラボ
20170703_05 IoTビジネス共創ラボ20170703_05 IoTビジネス共創ラボ
20170703_05 IoTビジネス共創ラボ
IoTビジネス共創ラボ
 
Metaprogramming Universe in C# - 実例に見るILからRoslynまでの活用例
Metaprogramming Universe in C# - 実例に見るILからRoslynまでの活用例Metaprogramming Universe in C# - 実例に見るILからRoslynまでの活用例
Metaprogramming Universe in C# - 実例に見るILからRoslynまでの活用例
Yoshifumi Kawai
 
GoAzure 2015:IoTなどの大量データをStream Analyticsでリアルタイムデータ分析してみよう
GoAzure 2015:IoTなどの大量データをStream Analyticsでリアルタイムデータ分析してみようGoAzure 2015:IoTなどの大量データをStream Analyticsでリアルタイムデータ分析してみよう
GoAzure 2015:IoTなどの大量データをStream Analyticsでリアルタイムデータ分析してみよう
Hidemasa Togashi
 
Treasure Data Intro for Data Enthusiast!!
Treasure Data Intro for Data Enthusiast!!Treasure Data Intro for Data Enthusiast!!
Treasure Data Intro for Data Enthusiast!!
Takahiro Inoue
 
クラウドではじめるリアルタイムデータ分析 #seccamp
クラウドではじめるリアルタイムデータ分析 #seccampクラウドではじめるリアルタイムデータ分析 #seccamp
クラウドではじめるリアルタイムデータ分析 #seccamp
Masahiro NAKAYAMA
 
文字コードの脆弱性はこの3年間でどの程度対策されたか?
文字コードの脆弱性はこの3年間でどの程度対策されたか?文字コードの脆弱性はこの3年間でどの程度対策されたか?
文字コードの脆弱性はこの3年間でどの程度対策されたか?
Hiroshi Tokumaru
 
ビッグデータ処理データベースの全体像と使い分け
ビッグデータ処理データベースの全体像と使い分けビッグデータ処理データベースの全体像と使い分け
ビッグデータ処理データベースの全体像と使い分け
Recruit Technologies
 
初めての Data api cms どうでしょう - 大阪夏の陣
初めての Data api   cms どうでしょう - 大阪夏の陣初めての Data api   cms どうでしょう - 大阪夏の陣
初めての Data api cms どうでしょう - 大阪夏の陣
Yuji Takayama
 
初めての Data API CMS どうでしょう - 仙台編 -
初めての Data API   CMS どうでしょう - 仙台編 -初めての Data API   CMS どうでしょう - 仙台編 -
初めての Data API CMS どうでしょう - 仙台編 -
Yuji Takayama
 
データサイエンティストが力を発揮できるアジャイルデータ活用基盤
データサイエンティストが力を発揮できるアジャイルデータ活用基盤データサイエンティストが力を発揮できるアジャイルデータ活用基盤
データサイエンティストが力を発揮できるアジャイルデータ活用基盤
Recruit Lifestyle Co., Ltd.
 
トレジャーデータ株式会社について(for all Data_Enthusiast!!)
トレジャーデータ株式会社について(for all Data_Enthusiast!!)トレジャーデータ株式会社について(for all Data_Enthusiast!!)
トレジャーデータ株式会社について(for all Data_Enthusiast!!)
Takahiro Inoue
 
Entity Framework 5.0 deep dive
Entity Framework 5.0 deep diveEntity Framework 5.0 deep dive
Entity Framework 5.0 deep dive
Atsushi Fukui
 
Twitter連携chrome extension作り方
Twitter連携chrome extension作り方Twitter連携chrome extension作り方
Twitter連携chrome extension作り方
Hiroshi Oyamada
 
アプリを成長させるためのログ取りとログ解析に必要なこと
アプリを成長させるためのログ取りとログ解析に必要なことアプリを成長させるためのログ取りとログ解析に必要なこと
アプリを成長させるためのログ取りとログ解析に必要なこと
Takao Sumitomo
 
クラウド時代の並列分散処理技術
クラウド時代の並列分散処理技術クラウド時代の並列分散処理技術
クラウド時代の並列分散処理技術
Koichi Fujikawa
 
[Cloud OnAir] 最新アップデート Google Cloud データ関連ソリューション 2020年5月14日 放送
[Cloud OnAir] 最新アップデート Google Cloud データ関連ソリューション 2020年5月14日 放送[Cloud OnAir] 最新アップデート Google Cloud データ関連ソリューション 2020年5月14日 放送
[Cloud OnAir] 最新アップデート Google Cloud データ関連ソリューション 2020年5月14日 放送
Google Cloud Platform - Japan
 
[DI10] IoT を実践する最新のプラクティス ~ Azure IoT Hub 、SDK 、Azure IoT Suite ~
[DI10] IoT を実践する最新のプラクティス ~ Azure IoT Hub 、SDK 、Azure IoT Suite ~[DI10] IoT を実践する最新のプラクティス ~ Azure IoT Hub 、SDK 、Azure IoT Suite ~
[DI10] IoT を実践する最新のプラクティス ~ Azure IoT Hub 、SDK 、Azure IoT Suite ~
de:code 2017
 
Metaprogramming Universe in C# - 実例に見るILからRoslynまでの活用例
Metaprogramming Universe in C# - 実例に見るILからRoslynまでの活用例Metaprogramming Universe in C# - 実例に見るILからRoslynまでの活用例
Metaprogramming Universe in C# - 実例に見るILからRoslynまでの活用例
Yoshifumi Kawai
 
GoAzure 2015:IoTなどの大量データをStream Analyticsでリアルタイムデータ分析してみよう
GoAzure 2015:IoTなどの大量データをStream Analyticsでリアルタイムデータ分析してみようGoAzure 2015:IoTなどの大量データをStream Analyticsでリアルタイムデータ分析してみよう
GoAzure 2015:IoTなどの大量データをStream Analyticsでリアルタイムデータ分析してみよう
Hidemasa Togashi
 
Treasure Data Intro for Data Enthusiast!!
Treasure Data Intro for Data Enthusiast!!Treasure Data Intro for Data Enthusiast!!
Treasure Data Intro for Data Enthusiast!!
Takahiro Inoue
 
クラウドではじめるリアルタイムデータ分析 #seccamp
クラウドではじめるリアルタイムデータ分析 #seccampクラウドではじめるリアルタイムデータ分析 #seccamp
クラウドではじめるリアルタイムデータ分析 #seccamp
Masahiro NAKAYAMA
 
文字コードの脆弱性はこの3年間でどの程度対策されたか?
文字コードの脆弱性はこの3年間でどの程度対策されたか?文字コードの脆弱性はこの3年間でどの程度対策されたか?
文字コードの脆弱性はこの3年間でどの程度対策されたか?
Hiroshi Tokumaru
 
ビッグデータ処理データベースの全体像と使い分け
ビッグデータ処理データベースの全体像と使い分けビッグデータ処理データベースの全体像と使い分け
ビッグデータ処理データベースの全体像と使い分け
Recruit Technologies
 
初めての Data api cms どうでしょう - 大阪夏の陣
初めての Data api   cms どうでしょう - 大阪夏の陣初めての Data api   cms どうでしょう - 大阪夏の陣
初めての Data api cms どうでしょう - 大阪夏の陣
Yuji Takayama
 
初めての Data API CMS どうでしょう - 仙台編 -
初めての Data API   CMS どうでしょう - 仙台編 -初めての Data API   CMS どうでしょう - 仙台編 -
初めての Data API CMS どうでしょう - 仙台編 -
Yuji Takayama
 

More from Akira Kuratani (20)

[Japan Dreamin' 2022] エンジニアが学ぶカスタマーサクセス
[Japan Dreamin' 2022] エンジニアが学ぶカスタマーサクセス[Japan Dreamin' 2022] エンジニアが学ぶカスタマーサクセス
[Japan Dreamin' 2022] エンジニアが学ぶカスタマーサクセス
Akira Kuratani
 
愛される管理画面の作り方
愛される管理画面の作り方愛される管理画面の作り方
愛される管理画面の作り方
Akira Kuratani
 
Japan dreamin' 2020 - AppExchangeプロダクト開発を続けて見えてきたプラクティス
Japan dreamin' 2020 - AppExchangeプロダクト開発を続けて見えてきたプラクティスJapan dreamin' 2020 - AppExchangeプロダクト開発を続けて見えてきたプラクティス
Japan dreamin' 2020 - AppExchangeプロダクト開発を続けて見えてきたプラクティス
Akira Kuratani
 
Salesforce World Tour Tokyo 2018 愛される AppExchangeアプリを創るべき「3つの理由」
Salesforce World Tour Tokyo 2018 愛される AppExchangeアプリを創るべき「3つの理由」Salesforce World Tour Tokyo 2018 愛される AppExchangeアプリを創るべき「3つの理由」
Salesforce World Tour Tokyo 2018 愛される AppExchangeアプリを創るべき「3つの理由」
Akira Kuratani
 
Salesforce World Tour Tokyo 2017 (SalesforceDX〜Salesforceにも継続的デリバリーを〜)
Salesforce World Tour Tokyo 2017 (SalesforceDX〜Salesforceにも継続的デリバリーを〜)Salesforce World Tour Tokyo 2017 (SalesforceDX〜Salesforceにも継続的デリバリーを〜)
Salesforce World Tour Tokyo 2017 (SalesforceDX〜Salesforceにも継続的デリバリーを〜)
Akira Kuratani
 
静的解析、はじまったな
静的解析、はじまったな静的解析、はじまったな
静的解析、はじまったな
Akira Kuratani
 
ReactとSeleniumの幸せな関係
ReactとSeleniumの幸せな関係ReactとSeleniumの幸せな関係
ReactとSeleniumの幸せな関係
Akira Kuratani
 
AppExchange Growth Hacks - Aiming for the world -
AppExchange Growth Hacks - Aiming for the world -AppExchange Growth Hacks - Aiming for the world -
AppExchange Growth Hacks - Aiming for the world -
Akira Kuratani
 
Tokyo Salesforce DG Meetup 2017新年会〜Advent Calendarふりかえり〜
Tokyo Salesforce DG Meetup 2017新年会〜Advent Calendarふりかえり〜Tokyo Salesforce DG Meetup 2017新年会〜Advent Calendarふりかえり〜
Tokyo Salesforce DG Meetup 2017新年会〜Advent Calendarふりかえり〜
Akira Kuratani
 
Salesforce dug [tokyo] meetup 2016 新年会
Salesforce dug [tokyo] meetup 2016 新年会Salesforce dug [tokyo] meetup 2016 新年会
Salesforce dug [tokyo] meetup 2016 新年会
Akira Kuratani
 
Salesforce DUG meetup #10 MiniHack完全制覇の旅
Salesforce DUG meetup #10 MiniHack完全制覇の旅Salesforce DUG meetup #10 MiniHack完全制覇の旅
Salesforce DUG meetup #10 MiniHack完全制覇の旅
Akira Kuratani
 
Salesforce DUG TOKYO Meetup #9
Salesforce DUG TOKYO Meetup #9Salesforce DUG TOKYO Meetup #9
Salesforce DUG TOKYO Meetup #9
Akira Kuratani
 
Lightning componentの研究ポイントあるいは…
Lightning componentの研究ポイントあるいは…Lightning componentの研究ポイントあるいは…
Lightning componentの研究ポイントあるいは…
Akira Kuratani
 
Salesforce DUG Meetup 2015 新年会
Salesforce DUG Meetup 2015 新年会Salesforce DUG Meetup 2015 新年会
Salesforce DUG Meetup 2015 新年会
Akira Kuratani
 
Salesforce dugもくもく会 #1
Salesforce dugもくもく会 #1Salesforce dugもくもく会 #1
Salesforce dugもくもく会 #1
Akira Kuratani
 
Salesforce dug meetup #6
Salesforce dug meetup #6Salesforce dug meetup #6
Salesforce dug meetup #6
Akira Kuratani
 
Crowd hackchallenge2014 LT
Crowd hackchallenge2014 LTCrowd hackchallenge2014 LT
Crowd hackchallenge2014 LT
Akira Kuratani
 
Salesforce dug meetup #5
Salesforce dug meetup #5Salesforce dug meetup #5
Salesforce dug meetup #5
Akira Kuratani
 
Salesforce DUG meetup #4 LT
Salesforce DUG meetup #4 LTSalesforce DUG meetup #4 LT
Salesforce DUG meetup #4 LT
Akira Kuratani
 
Force.com lightning talks cfj2012 by A.Kuratani
Force.com lightning talks cfj2012 by A.KurataniForce.com lightning talks cfj2012 by A.Kuratani
Force.com lightning talks cfj2012 by A.Kuratani
Akira Kuratani
 
[Japan Dreamin' 2022] エンジニアが学ぶカスタマーサクセス
[Japan Dreamin' 2022] エンジニアが学ぶカスタマーサクセス[Japan Dreamin' 2022] エンジニアが学ぶカスタマーサクセス
[Japan Dreamin' 2022] エンジニアが学ぶカスタマーサクセス
Akira Kuratani
 
愛される管理画面の作り方
愛される管理画面の作り方愛される管理画面の作り方
愛される管理画面の作り方
Akira Kuratani
 
Japan dreamin' 2020 - AppExchangeプロダクト開発を続けて見えてきたプラクティス
Japan dreamin' 2020 - AppExchangeプロダクト開発を続けて見えてきたプラクティスJapan dreamin' 2020 - AppExchangeプロダクト開発を続けて見えてきたプラクティス
Japan dreamin' 2020 - AppExchangeプロダクト開発を続けて見えてきたプラクティス
Akira Kuratani
 
Salesforce World Tour Tokyo 2018 愛される AppExchangeアプリを創るべき「3つの理由」
Salesforce World Tour Tokyo 2018 愛される AppExchangeアプリを創るべき「3つの理由」Salesforce World Tour Tokyo 2018 愛される AppExchangeアプリを創るべき「3つの理由」
Salesforce World Tour Tokyo 2018 愛される AppExchangeアプリを創るべき「3つの理由」
Akira Kuratani
 
Salesforce World Tour Tokyo 2017 (SalesforceDX〜Salesforceにも継続的デリバリーを〜)
Salesforce World Tour Tokyo 2017 (SalesforceDX〜Salesforceにも継続的デリバリーを〜)Salesforce World Tour Tokyo 2017 (SalesforceDX〜Salesforceにも継続的デリバリーを〜)
Salesforce World Tour Tokyo 2017 (SalesforceDX〜Salesforceにも継続的デリバリーを〜)
Akira Kuratani
 
静的解析、はじまったな
静的解析、はじまったな静的解析、はじまったな
静的解析、はじまったな
Akira Kuratani
 
ReactとSeleniumの幸せな関係
ReactとSeleniumの幸せな関係ReactとSeleniumの幸せな関係
ReactとSeleniumの幸せな関係
Akira Kuratani
 
AppExchange Growth Hacks - Aiming for the world -
AppExchange Growth Hacks - Aiming for the world -AppExchange Growth Hacks - Aiming for the world -
AppExchange Growth Hacks - Aiming for the world -
Akira Kuratani
 
Tokyo Salesforce DG Meetup 2017新年会〜Advent Calendarふりかえり〜
Tokyo Salesforce DG Meetup 2017新年会〜Advent Calendarふりかえり〜Tokyo Salesforce DG Meetup 2017新年会〜Advent Calendarふりかえり〜
Tokyo Salesforce DG Meetup 2017新年会〜Advent Calendarふりかえり〜
Akira Kuratani
 
Salesforce dug [tokyo] meetup 2016 新年会
Salesforce dug [tokyo] meetup 2016 新年会Salesforce dug [tokyo] meetup 2016 新年会
Salesforce dug [tokyo] meetup 2016 新年会
Akira Kuratani
 
Salesforce DUG meetup #10 MiniHack完全制覇の旅
Salesforce DUG meetup #10 MiniHack完全制覇の旅Salesforce DUG meetup #10 MiniHack完全制覇の旅
Salesforce DUG meetup #10 MiniHack完全制覇の旅
Akira Kuratani
 
Salesforce DUG TOKYO Meetup #9
Salesforce DUG TOKYO Meetup #9Salesforce DUG TOKYO Meetup #9
Salesforce DUG TOKYO Meetup #9
Akira Kuratani
 
Lightning componentの研究ポイントあるいは…
Lightning componentの研究ポイントあるいは…Lightning componentの研究ポイントあるいは…
Lightning componentの研究ポイントあるいは…
Akira Kuratani
 
Salesforce DUG Meetup 2015 新年会
Salesforce DUG Meetup 2015 新年会Salesforce DUG Meetup 2015 新年会
Salesforce DUG Meetup 2015 新年会
Akira Kuratani
 
Salesforce dugもくもく会 #1
Salesforce dugもくもく会 #1Salesforce dugもくもく会 #1
Salesforce dugもくもく会 #1
Akira Kuratani
 
Salesforce dug meetup #6
Salesforce dug meetup #6Salesforce dug meetup #6
Salesforce dug meetup #6
Akira Kuratani
 
Crowd hackchallenge2014 LT
Crowd hackchallenge2014 LTCrowd hackchallenge2014 LT
Crowd hackchallenge2014 LT
Akira Kuratani
 
Salesforce dug meetup #5
Salesforce dug meetup #5Salesforce dug meetup #5
Salesforce dug meetup #5
Akira Kuratani
 
Salesforce DUG meetup #4 LT
Salesforce DUG meetup #4 LTSalesforce DUG meetup #4 LT
Salesforce DUG meetup #4 LT
Akira Kuratani
 
Force.com lightning talks cfj2012 by A.Kuratani
Force.com lightning talks cfj2012 by A.KurataniForce.com lightning talks cfj2012 by A.Kuratani
Force.com lightning talks cfj2012 by A.Kuratani
Akira Kuratani
 

Recently uploaded (11)

実はアナタの身近にある!? Linux のチェックポイント/レストア機能 (NTT Tech Conference 2025 発表資料)
実はアナタの身近にある!? Linux のチェックポイント/レストア機能 (NTT Tech Conference 2025 発表資料)実はアナタの身近にある!? Linux のチェックポイント/レストア機能 (NTT Tech Conference 2025 発表資料)
実はアナタの身近にある!? Linux のチェックポイント/レストア機能 (NTT Tech Conference 2025 発表資料)
NTT DATA Technology & Innovation
 
第1回日本理学療法推論学会学術大会での発表資料(2025年3月2日 高橋可奈恵)
第1回日本理学療法推論学会学術大会での発表資料(2025年3月2日 高橋可奈恵)第1回日本理学療法推論学会学術大会での発表資料(2025年3月2日 高橋可奈恵)
第1回日本理学療法推論学会学術大会での発表資料(2025年3月2日 高橋可奈恵)
Matsushita Laboratory
 
HarukiShinkawa_LLMを利用した果樹農家の経験知の対話的蓄積支援_deim2025
HarukiShinkawa_LLMを利用した果樹農家の経験知の対話的蓄積支援_deim2025HarukiShinkawa_LLMを利用した果樹農家の経験知の対話的蓄積支援_deim2025
HarukiShinkawa_LLMを利用した果樹農家の経験知の対話的蓄積支援_deim2025
Matsushita Laboratory
 
【卒業論文】LLMを用いたMulti-Agent-Debateにおける反論の効果に関する研究
【卒業論文】LLMを用いたMulti-Agent-Debateにおける反論の効果に関する研究【卒業論文】LLMを用いたMulti-Agent-Debateにおける反論の効果に関する研究
【卒業論文】LLMを用いたMulti-Agent-Debateにおける反論の効果に関する研究
harmonylab
 
LF Decentralized Trust Tokyo Meetup 3
LF Decentralized Trust Tokyo Meetup 3LF Decentralized Trust Tokyo Meetup 3
LF Decentralized Trust Tokyo Meetup 3
LFDT Tokyo Meetup
 
NodaItsuki_反省観点の分類に基づく試合の振り返り支援システムに関する有用性検証_DEIM2025
NodaItsuki_反省観点の分類に基づく試合の振り返り支援システムに関する有用性検証_DEIM2025NodaItsuki_反省観点の分類に基づく試合の振り返り支援システムに関する有用性検証_DEIM2025
NodaItsuki_反省観点の分類に基づく試合の振り返り支援システムに関する有用性検証_DEIM2025
Matsushita Laboratory
 
2025フードテックWeek大阪展示会 - LoRaWANを使った複数ポイント温度管理 by AVNET玉井部長
2025フードテックWeek大阪展示会 - LoRaWANを使った複数ポイント温度管理 by AVNET玉井部長2025フードテックWeek大阪展示会 - LoRaWANを使った複数ポイント温度管理 by AVNET玉井部長
2025フードテックWeek大阪展示会 - LoRaWANを使った複数ポイント温度管理 by AVNET玉井部長
CRI Japan, Inc.
 
【卒業論文】深層学習によるログ異常検知モデルを用いたサイバー攻撃検知に関する研究
【卒業論文】深層学習によるログ異常検知モデルを用いたサイバー攻撃検知に関する研究【卒業論文】深層学習によるログ異常検知モデルを用いたサイバー攻撃検知に関する研究
【卒業論文】深層学習によるログ異常検知モデルを用いたサイバー攻撃検知に関する研究
harmonylab
 
測距センサとIMUセンサを用いた指輪型デバイスにおける顔認証システムの提案
測距センサとIMUセンサを用いた指輪型デバイスにおける顔認証システムの提案測距センサとIMUセンサを用いた指輪型デバイスにおける顔認証システムの提案
測距センサとIMUセンサを用いた指輪型デバイスにおける顔認証システムの提案
sugiuralab
 
ラズパイを使って作品を作ったらラズパイコンテストでKSY賞を貰って、さらに、文化庁メディア芸術祭で審査員推薦作品に選ばれてしまった件〜自作チップでラズパイ...
ラズパイを使って作品を作ったらラズパイコンテストでKSY賞を貰って、さらに、文化庁メディア芸術祭で審査員推薦作品に選ばれてしまった件〜自作チップでラズパイ...ラズパイを使って作品を作ったらラズパイコンテストでKSY賞を貰って、さらに、文化庁メディア芸術祭で審査員推薦作品に選ばれてしまった件〜自作チップでラズパイ...
ラズパイを使って作品を作ったらラズパイコンテストでKSY賞を貰って、さらに、文化庁メディア芸術祭で審査員推薦作品に選ばれてしまった件〜自作チップでラズパイ...
Industrial Technology Research Institute (ITRI)(工業技術研究院, 工研院)
 
空間オーディオを用いたヘッドパスワードの提案と音源提示手法の最適化
空間オーディオを用いたヘッドパスワードの提案と音源提示手法の最適化空間オーディオを用いたヘッドパスワードの提案と音源提示手法の最適化
空間オーディオを用いたヘッドパスワードの提案と音源提示手法の最適化
sugiuralab
 
実はアナタの身近にある!? Linux のチェックポイント/レストア機能 (NTT Tech Conference 2025 発表資料)
実はアナタの身近にある!? Linux のチェックポイント/レストア機能 (NTT Tech Conference 2025 発表資料)実はアナタの身近にある!? Linux のチェックポイント/レストア機能 (NTT Tech Conference 2025 発表資料)
実はアナタの身近にある!? Linux のチェックポイント/レストア機能 (NTT Tech Conference 2025 発表資料)
NTT DATA Technology & Innovation
 
第1回日本理学療法推論学会学術大会での発表資料(2025年3月2日 高橋可奈恵)
第1回日本理学療法推論学会学術大会での発表資料(2025年3月2日 高橋可奈恵)第1回日本理学療法推論学会学術大会での発表資料(2025年3月2日 高橋可奈恵)
第1回日本理学療法推論学会学術大会での発表資料(2025年3月2日 高橋可奈恵)
Matsushita Laboratory
 
HarukiShinkawa_LLMを利用した果樹農家の経験知の対話的蓄積支援_deim2025
HarukiShinkawa_LLMを利用した果樹農家の経験知の対話的蓄積支援_deim2025HarukiShinkawa_LLMを利用した果樹農家の経験知の対話的蓄積支援_deim2025
HarukiShinkawa_LLMを利用した果樹農家の経験知の対話的蓄積支援_deim2025
Matsushita Laboratory
 
【卒業論文】LLMを用いたMulti-Agent-Debateにおける反論の効果に関する研究
【卒業論文】LLMを用いたMulti-Agent-Debateにおける反論の効果に関する研究【卒業論文】LLMを用いたMulti-Agent-Debateにおける反論の効果に関する研究
【卒業論文】LLMを用いたMulti-Agent-Debateにおける反論の効果に関する研究
harmonylab
 
LF Decentralized Trust Tokyo Meetup 3
LF Decentralized Trust Tokyo Meetup 3LF Decentralized Trust Tokyo Meetup 3
LF Decentralized Trust Tokyo Meetup 3
LFDT Tokyo Meetup
 
NodaItsuki_反省観点の分類に基づく試合の振り返り支援システムに関する有用性検証_DEIM2025
NodaItsuki_反省観点の分類に基づく試合の振り返り支援システムに関する有用性検証_DEIM2025NodaItsuki_反省観点の分類に基づく試合の振り返り支援システムに関する有用性検証_DEIM2025
NodaItsuki_反省観点の分類に基づく試合の振り返り支援システムに関する有用性検証_DEIM2025
Matsushita Laboratory
 
2025フードテックWeek大阪展示会 - LoRaWANを使った複数ポイント温度管理 by AVNET玉井部長
2025フードテックWeek大阪展示会 - LoRaWANを使った複数ポイント温度管理 by AVNET玉井部長2025フードテックWeek大阪展示会 - LoRaWANを使った複数ポイント温度管理 by AVNET玉井部長
2025フードテックWeek大阪展示会 - LoRaWANを使った複数ポイント温度管理 by AVNET玉井部長
CRI Japan, Inc.
 
【卒業論文】深層学習によるログ異常検知モデルを用いたサイバー攻撃検知に関する研究
【卒業論文】深層学習によるログ異常検知モデルを用いたサイバー攻撃検知に関する研究【卒業論文】深層学習によるログ異常検知モデルを用いたサイバー攻撃検知に関する研究
【卒業論文】深層学習によるログ異常検知モデルを用いたサイバー攻撃検知に関する研究
harmonylab
 
測距センサとIMUセンサを用いた指輪型デバイスにおける顔認証システムの提案
測距センサとIMUセンサを用いた指輪型デバイスにおける顔認証システムの提案測距センサとIMUセンサを用いた指輪型デバイスにおける顔認証システムの提案
測距センサとIMUセンサを用いた指輪型デバイスにおける顔認証システムの提案
sugiuralab
 
ラズパイを使って作品を作ったらラズパイコンテストでKSY賞を貰って、さらに、文化庁メディア芸術祭で審査員推薦作品に選ばれてしまった件〜自作チップでラズパイ...
ラズパイを使って作品を作ったらラズパイコンテストでKSY賞を貰って、さらに、文化庁メディア芸術祭で審査員推薦作品に選ばれてしまった件〜自作チップでラズパイ...ラズパイを使って作品を作ったらラズパイコンテストでKSY賞を貰って、さらに、文化庁メディア芸術祭で審査員推薦作品に選ばれてしまった件〜自作チップでラズパイ...
ラズパイを使って作品を作ったらラズパイコンテストでKSY賞を貰って、さらに、文化庁メディア芸術祭で審査員推薦作品に選ばれてしまった件〜自作チップでラズパイ...
Industrial Technology Research Institute (ITRI)(工業技術研究院, 工研院)
 
空間オーディオを用いたヘッドパスワードの提案と音源提示手法の最適化
空間オーディオを用いたヘッドパスワードの提案と音源提示手法の最適化空間オーディオを用いたヘッドパスワードの提案と音源提示手法の最適化
空間オーディオを用いたヘッドパスワードの提案と音源提示手法の最適化
sugiuralab
 

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

  • 1. ソーシャル機能を取り入れた エンタープライズアプリケーション チームスピリットのご紹介 倉谷 彰 デジタルコースト株式会社 研究開発グループ エンジニア
  • 2. デジタルコーストとは を組み込んだ、 ソーシャル・ワークフォースマネジメント・サービス を開発・提供している会社です。 1 Copyright © DigitalCoast Inc. All Rights Reserved. 2012/7/30
  • 3. とは デモを ビジネスで起こる全ての活動をタイムラインで記録 ご覧ください 勤怠管理 行動を記録 タイムライン プロジェクト 工数管理 経費精算 Project A 移動 Project B 実労働時間 2 Copyright © DigitalCoast Inc. All Rights Reserved. 2012/7/30
  • 5. チームスピリットのアーキテクチャ 勤怠管理 認証 プロジェクト工数管理 Chatter 権限管理 経費精算 承認プロセス レポート/ダッシュボード 業務に関連する機能 汎用的な機能 4 Copyright © DigitalCoast Inc. All Rights Reserved. 2012/7/30
  • 6. 例えば、Chatter Chatter投稿 5 Copyright © DigitalCoast Inc. All Rights Reserved. 2012/7/30
  • 7. コードはどうなっているか? モバイル Force.com { “time” : ”2012/07/27”, “feed” : “今日は○○社の・・・”, public with sharing class TxsActivityLogic { “latitude” : 35.684337, public static void insertActivity( “longitude” : 139.739649 Map<String,Object> r, RestRequest req) { “placeId” : “WGS84”, Map<String, String> p = req.params; “placeName” : “デジタルコースト・・・” } String s = p.get('time'); Force.com DateTime tim = TxsUtil.now(); if(s != null) REST tim = DateTime.valueOf(s); リソース TxsLog__c log = new TxsLog__c(TargetTime__c=tim); クラス log.Status__c = null; TxsActivity ・・・(位置情報や画像をレコードにセットする) 行動ログ String feed = p.get('feed'); if(feed != null) { TxsLog FeedItem post = new FeedItem(); クラス post.ParentId = UserInfo.getUserId(); TxsActivity post.Body = feed; Chatter投稿 Logic post.Type = 'TextPost'; insert post; log.FeedId__c = post.Id; } insert log; 行動ログレコード追加 r.put('id', log.Id); } ・・・ 6 Copyright © DigitalCoast Inc. All Rights Reserved. 2012/7/30
  • 8. 例えば、承認プロセス 承認プロセスの設定 承認申請 7 Copyright © DigitalCoast Inc. All Rights Reserved. 2012/7/30
  • 9. コードはどうなっているか? Force.com側 // 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); ・・・ 8 Copyright © DigitalCoast Inc. All Rights Reserved. 2012/7/30
  • 10. モバイル・アプリケーション モバイル側 クラウドサービス側 Salesforce Toolkit for Appcelarator OAuth2.0 JSON { “time” : ”2012/07/27”, “feed” : “今日は○○社の・・・”, Apex REST “latitude” : 35.684337, “longitude” : 139.739649 “placeId” : “WGS84”, “placeName” : “デジタルコースト・・・” } 9 Copyright © DigitalCoast Inc. All Rights Reserved. 2012/7/30
  • 11. OAuth2.0 Force.com側 10 Copyright © DigitalCoast Inc. All Rights Reserved. 2012/7/30
  • 12. Apex REST:コードはどうなっているか?  RestResourceアノテーションを利用することで簡単に RESTリソースを公開できます モバイル側 Force.com側 postBtn.addEventListener(‘click’, function() { @RestResource(urlMapping='/txsapi2/activity/*') ・・・ global with sharing class TxsActivity { var oauthJson = JSON.parse(oauthData); @HttpPost global static void doPost(RestRequest req, RestResponse res) { var uri = '/services/apexrest/txsapi2/activity/?'; Map<String,Object> r = new Map<String,Object>(); uri += 'time=' + TSX.timeAsString(); try { uri += '&feed=' + (commentText.value ? commentText.value : ''); String id = TxsUtil.getParamId(req); var restUrl = encodeURI( if(id != null) Ti.Network.decodeURIComponent(oauthJson.instance_url) + TxsActivityLogic.updateActivity(r, req, id); uri); else TxsActivityLogic.insertActivity(r, req); var xhr = Ti.Network.createHTTPClient(); xhr.onload = function() { r.put('success', true); var res = JSON.parse(this.responseText); } // Callbackでの処理 catch(Exception e) { TxsUtil.setException(r, e); } ・・・ res.responseBody = Blob.valueof(JSON.serialize(r)); }; } xhr.open(“GET”, restUrl, true); @HttpGet xhr.setRequestHeader( global static void doGet(RestRequest req, RestResponse res) { “Authorization”, “OAuth ” + Map<String,Object> r = new Map<String,Object>(); Ti.Network.decodeURIComponent(oauthJson.access_token)); ・・・ xhr.setRequestHeader("Content-Type", "application/json"); xhr.send(); ・・・ }; 11 Copyright © DigitalCoast Inc. All Rights Reserved. 2012/7/30
  • 13. モバイルとForce.comアプリの役割分担 モバイル側 クラウドサービス側 OAuth2.0 画面制御 外部 Salesforce Toolkit RESTリソース ロジック Web for Appcelarator TxsActivity サービス RESTリソース ロジック 駅探経路探索エンジン TxsExpense2 RESTリソース ロジック 勤怠計算エンジン TxsWorkTimeLogic  サーバ側にロジックを集約 複雑な勤怠計算や経路探索はサーバ側に任せた  クライアント側は画面制御に特化 短期間でプロトタイプを開発し、試作を繰り返 すことができた 12 Copyright © DigitalCoast Inc. All Rights Reserved. 2012/7/30
  • 15. 業務アプリをソーシャル化するということ エンジニアのちょっとしたアイデアで お客様の業務が大きく変えることができる 14 Copyright © DigitalCoast Inc. All Rights Reserved. 2012/7/30
  • 16. 15 Copyright © DigitalCoast Inc. All Rights Reserved. 2012/7/30