SlideShare une entreprise Scribd logo
1  sur  98
Salesforce1開発
2
Safe Harbor
Safe harbor statement under the Private Securities Litigation Reform Act of 1995:
This presentation may contain forward-looking statements that involve risks, uncertainties, and assumptions. If any such
uncertainties materialize or if any of the assumptions proves incorrect, the results of salesforce.com, inc. could differ
materially from the results expressed or implied by the forward-looking statements we make. All statements other than
statements of historical fact could be deemed forward-looking, including any projections of product or service availability,
subscriber growth, earnings, revenues, or other financial items and any statements regarding strategies or plans of
management for future operations, statements of belief, any statements concerning new, planned, or upgraded services or
technology developments and customer contracts or use of our services.
The risks and uncertainties referred to above include – but are not limited to – risks associated with developing and
delivering new functionality for our service, new products and services, our new business model, our past operating losses,
possible fluctuations in our operating results and rate of growth, interruptions or delays in our Web hosting, breach of our
security measures, the outcome of any litigation, risks associated with completed and any possible mergers and
acquisitions, the immature market in which we operate, our relatively limited operating history, our ability to expand, retain,
and motivate our employees and manage our growth, new releases of our service and successful customer deployment, our
limited history reselling non-salesforce.com products, and utilization and selling to larger enterprise customers. Further
information on potential factors that could affect the financial results of salesforce.com, inc. is included in our annual report
on Form 10-K for the most recent fiscal year and in our quarterly report on Form 10-Q for the most recent fiscal quarter.
These documents and others containing important disclosures are available on the SEC Filings section of the Investor
Information section of our Web site.
Any unreleased services or features referenced in this or other presentations, press releases or public statements are not
currently available and may not be delivered on time or at all. Customers who purchase our services should make the
purchase decisions based upon features that are currently available. Salesforce.com, inc. assumes no obligation and does
not intend to update these forward-looking statements.
3
アジェンダ
• Salesforce1 背景、概要
• 開発
1. ポイント&クリックでの開発
2. Visualforce開発
• 3種類のアプローチ
• 画面遷移
• イベント処理
3. Flexible ページ開発
• 技術情報
4
モバイルコンピューティングの台頭
Source: Strategy Analytics. “Global Smartphone Shipments Hit Record 230 Million Units in Q2 2013.” July 2013.
Source. Gartner. July 2013.
社員、顧客
企業
iOS/Androidデバイス
2億3,000万台
販売台数
2008 Q3 2009 Q2 2010 Q1 2010 Q4 2011 Q3 2012 Q2 2013 Q1
PC
7,600万台
2013 Q2
5
2017 年には業務アプリケーションの90% がモバイル化
20%
Source: Gartner, Ian Finley, Research VP; 2010
モバイルに対応する
アプリケーション
2013 2017
90%
デスクトップ、モバイルの両方に
対応するアプリケーション
6
モバイルアプリ開発と展開の困難さ
Mobile Apps
Are Critical
Mobile Apps
Deployed
60%
40%
20%
App
Gap
PercentofRespondents
2013 Study of
1,300 Global Executives
“The State of the Customer-Led Economy”
Complexity of Form Factors
Limited Number of Developers
Multiple Operating Systems
Multiple Platforms
7
以前のモバイルアプリのポートフォリオ
Salesforce Platform
Content CompensationCollaborationDashboards
Digital Sales
Aid
Customer AppLog a Call Content CompensationCollaborationDashboardsLog a Call
8
Salesforce1によるモバイルアプリのポートフォリオ
Digital Sales
Aid
Customer
App
企業のモバイルアプ
リのコストを革命的
に激減
Content CompensationCollaborationDashboardsLog a Call
9
Salesforceモバイル・アプリケーション
Digital Sales
Aid
Customer
App
企業のモバイルアプ
リのコストを革命的
に激減
Salesforce
Classic
Salesforce
Touch
Chatter Mobile
Logger と
Forcepad
10
DB
ネイティブコード
(Java, Objective C)
DBDB
モバイルからコー
ルされるWebサー
ビス
モバイルからコー
ルされるWebサー
ビス
モバイルから呼ば
れるWebアプリ
ケーションコード
ただし、このコー
ドはモバイル側に
配置することも可
能
DB
モバイルから呼ば
れるWebアプリ
ケーションコード
HTML5の
localStorageで
javascriptからア
クセスできるDB使
用可能
DB
ネイティブアプリ ハイブリッドアプリ HTML5 アプリ
モバイルアプリケーションとは
Salesforce 1
ネイティブコード
(Java, Objective C)
11
Salesforce1 アプリケーション
最近 アプリケーション アクション
12
シンプルで汎用的な画面遷移
13
Salesforce1開発特徴
 簡単な画面ならポイント&クリックで開発
 レイアウト編集は標準機能のドラッグ&ドロップ
 デバイスへコードをダウンロードする必要がないため、最小開発環境はブラウ
ザーのみ
 ネイティブ(JavaやObjectiveC)言語の開発は不必要
 Android, iOSに対してシングルソースで対応
 VisualforceとApexでの画面開発 但しレスポンシブル対応を推奨しているの
でVisualforceタグライブラリは使用せず、一般技術(CSS, Javascript,
HTML)での画面開発
 Canvasアプリケーションのインテグレーション可能なので、既存
サービス、Heroku上でのアプリケーションの統合が可能
14
Salesforce1を触ってみましょう
1
環境によっては
https://ap.salesforce.comではあ
りません。
https://<server_name>/one/one.ap
p でアクセスして下さい
2
15
S1用ユーザフェース
16
開発可能な場所
ナビゲーションメニュー
専用オブジェクトアクション
グローバルアクション
VFページタブ、Flexible ページタブ
をメニューに追加可能
ポイント&クリックで並び替え可能
ポイント&クリックでアク
ション作成可能、またVF、
Canvasを使用してアクショ
ンを作成することもできま
す
ポイント&クリックでアク
ション作成可能、またVFを
使用してアクションを作成
することもできます
ポイント&クリックで表示
内容の変更可能
ポイント&クリックで表示
内容の変更可能、VFを追加
することもできる
17
ナビゲーションメニュー
最近使用したレ
コード • Flexibleページタブ、Visualforce
タブをナビゲーションメニューに
追加可能
• 最近使用したレコード以外は並び
替え可能
• 最近使用したレコードの並び替え
はある程度可能。PC画面の検索結
果で上位に表示させたいオブジェ
クトに「最上部に固定」と設定す
る
• カスタムオブジェクトは最近使用
したレコード領域に表示される
18
ナビゲーションメニュー
1
2
3
1. 標準、カスタムオブジェクト
2. Visualforce ページ
3. Flexi ページ
VisualforceページとApexを使ってページを作成す
るため、外部へのAPI接続など様々なことが可能で
す。ただし、モバイルアプリのためパフォーマンス
には気をつけて下さい。画面遷移は専用のjsオブ
ジェクトを使用してSalesforce1の標準画面にも遷
移可能です
ビュー、最近参照したレコード
が表示されますが、レイアウト
の変更はできません。
Flexibleページは複数オブジェク
ト一覧を表示するのに優れていま
す。また、アクションを追加する
ことも簡単です。コードでの実装
ではなく、XMLでの作成となりま
す。
19
グローバルアクション
グローバルアクションは特定の
レコードを自動的に関連させる
ことはできません。アクション
には4つのタイプがあります。
アクションタイプ 実装方法 備考
Create a Record ポイント&クリック 現時点ではAccount, Campaign, Case, Contact, Contract, Event,
Custom Object, Lead, Note, Opportunity, Taskしか作成できません。
Log a Call ポイント&クリック
Visualforce Apex, VF
Canvas なんでもOK Herokuのような外部プラットフォームが必要
20
オブジェクト専用アクション
アクションタイプ 実装方法 備考
Create a Record ポイント&クリック 作成できるオブジェクトは専用アクションが設定されているオブ
ジェクトに依存します。例えば、Account 専用アクションでは
account, case, contact, contract, event, note, opp, or task のレコード
を作成できます。また Caseの場合いには, case, event, or task レ
コードを作成できます
Log a Call ポイント&クリック
Visualforce Apex, VF Visualforceページのコントローラは必ずそのオブジェ
クトのStandardControllerを使用しなければいけませ
ん
Update a Record ポイント&クリック
オブジェクト専用アクションは
特定のレコードを自動的に関連
させることはできます。アク
ションには4つのタイプがあり
ます。
21
レコード詳細
モバイルカード:
拡張ルックアップ、Visualforceページを埋め込むことができます。
Visualforceページを作成する場合は必ずStandardContollerを使用する必要があ
ります。また、拡張ルックアップの種類は選択したオブジェクトによって変わり
ます。例えばAccount’のレコード詳細での拡張ルックアップはAccount Owner,
Created By, Last Modified By, and Parent Accountです。また、Opportunitiyでは
Account Name, Created By, Last Modified By, Opportunity Owner, Primary
Campaignです。
コンパクトレイアウト:
レコード詳細ページ上部に表示される注目エリア
です。ポイント&クリックで表示項目を変更でき
ます。
22
Salesforce1対応 appexchangeアプリ
23
Salesforce1対応 appexchangeアプリ
24
ポイント&クリック
開発
25
●ナビゲーションメニュー変更
スマート検索項目要素よりも下に配
置すると、ナビゲーションメニュー
の [アプリケーション] セクション
に表示されます。
1
2
26
●グローバルアクション登録
1
デフォルトで下記アクション群が用
意されています。新規ケースアク
ションを独自に新規作成することも
可能です。
2
27
アクション種別(4種類)
28
グローバルアクション登録
1
2
29
●オブジェクト専用アクション登録
1
取引先詳細画面にこのアクションを
登録します
3
2
30
オブジェクト専用アクション登録
1
選択した取引先に紐づく商談を作成
するアクションを登録
2
商談新規画面のレイアウト編集
Salesforce1実際の画面レイアウト
31
アクションをパブリッシャアクションへ登録
1
取引先のレイアウトエディタ
Salesforce1実際のパブリッシャアク
ション
ファイルアクションはネイティブ
アプリにしか表示されません。こ
の画面はブラウザでの表示です。
32
オブジェクト専用アクション 画面遷移
33
●コンパクトレイアウト変更
1
ロングテキストエリア、リッ
チテキストエリア、複数選択
リスト以外のタイプをサポー
ト
3
2
34
●モバイルカード変更
1
拡張ルックアップを選択し、
対象項目をドラッグしてモバ
イルカード領域へドロップし
ます
3
2
35
Visualforce
Salesforce1
基礎
36
Visualforceアプローチ
1. Visualforce単独
• Visualforceタグライブラリを使用してページを作成
2. Visualforce + HTML
• pageBlock, pageBlockButtons,
pageBlockSectionItem,pageBlockTableは使用しない
• デザインにはCSSを使用
3. JavaScript remoting + Static HTML
• Salesforce1にマッチした最善なアプローチ
• JavaScriptでのデータへのCRUD操作を行うためパフォーマンス
向上
37
1. Visualforce単独
メリット
• 通常のVisualforce開発のため新しい知識必要なし
• デスクトップ、モバイル共有ページ
デメリット
• ボタン、リンクなどの部品はデスクトップ用に最適化
されているため指でのタッチが難しい
• レスポンシブルデザインに対応していないため、
Salesforce1デザインに最適化されていない
38
Visualforce作成
1
3
2
39
ソースコード
<apex:page standardController="Account">
<apex:form>
<apex:pageBlock title="{!Account.Name}">
<apex:pageBlockSection title= "Warehouse Details" columns= "1">
<apex:inputField value="{!Account.Name}" />
</apex:pageBlockSection>
<apex:pageBlockButtons location="bottom">
<apex:commandButton action="{!quickSave}" value="Save" />
</apex:pageBlockButtons>
</apex:pageBlock>
</apex:form>
</apex:page>
40
Visualforceタブ作成
1
3
2
41
Visualforceタブ作成
1
2
42
モバイルナビゲーションへ追加
1
3
2
43
Visualforce単独での実装
1
2
44
2. Visualforce + HTML
メリット
• Visualforce単独での開発と違ってSalesforce1デザイン
に近い実装が可能
• データの受け渡しは通常のVisualforce開発と同じ
デメリット
• デスクトップで行われるrequest-responseサイクルのた
め大量データのやりとりが発生される(ViewState)
• デザインを統一するためCSSの実装必修
45
Visualforce作成
1
3
2
46
ソースコード
<apex:page standardController="Account">
<style> html, body, p { font-family: sans-serif; } </style>
<apex:form >
<h1>{!Account.Name}</h1>
<h2>Account Details</h2>
<div id="theForm">
<div>
<apex:outputLabel for="Name" value="Name"/>
<apex:inputField id="name"
value="{! Account.Name}"/>
</div>
</div>
<div id="formControls">
<apex:commandButton action="{!quickSave}" value="Save"/>
</div>
</apex:form>
</apex:page>
47
Visualforceタブの作成
1
3
2
48
Visualforceタブの作成
1
2
49
ナビゲーションメニューへ追加
1
2
50
Visualforce + HTMLでの実装
1
2
51
3. JavaScript Remoting & Static HTML
メリット
• Salesforce1にマッチした最善なアプローチ
• JavaScriptでのデータへのCRUD操作を行うためパフォ
ーマンス向上
デメリット
• コード量の増大
• CSS, JavaScript, Apex, HTML5でのWebアプリケーシ
ョン開発知識が必修
52
モバイルパックインストール
1
2
http://www2.developerforce.com/en/mobile/services/mobile-packs
53
モバイルパックインストール
1
3
2
54
モバイルパックインストール
1
2
55
モバイルパックインストール
56
Apex作成
1
3
2
57
ソースコード
global with sharing class AccountEditor{
public AccountEditor(ApexPages.StandardController ctl){ }
@RemoteAction
global static Boolean saveAccount(String name) {
Account acc = new Account();
acc.Name = name;
upsert acc;
return true;
}
}
58
Visualforce作成
1
3
2
59
ソースコード
<apex:page standardController="Account" extensions="AccountEditor"
showHeader="false" standardStylesheets="false"
docType="html-5.0" applyHtmlTag="false" applyBodyTag="false">
<apex:stylesheet value="{!URLFOR($Resource.MobileSample_Resources_jQueryMobile, 'jquery.mobile-1.3.0.min.css')}"/>
<apex:includeScript value="{!URLFOR($Resource.MobileSample_Resources_jQueryMobile, 'jquery-1.9.1.min.js')}"/>
<apex:includeScript value="{!URLFOR($Resource.MobileSample_Resources_jQueryMobile, 'jquery.mobile-1.3.0.min.js')}"/>
<head>
<style>
html, body, p { font-family: sans-serif; }
input { display: block; }
</style>
<script>
function saveAccount() {
// Call the remote action to save the record data
Visualforce.remoting.Manager.invokeAction(
'{!$RemoteAction.AccountEditor.saveAccount}',
$('#account_name_value').val(),
function(result, event){;
if(event.status){
console.log(accountId);
$('#action_status').text('Record updated.');
} else if (event.type === 'exception'){
console.log(result);
$('#action_status').text(
'Problem saving record.');
} else {
// unexpected problem...
}
});
}
</script>
</head>
<body>
<div id="detailPage">
<div class="list-view-header" id="account_name"></div>
<div id="action_status"></div>
<section>
<div class="content">
<h3>取引先</h3>
<div class="form-control-group">
<div class="form-control form-control-text">
<label for="account_name">
Name</label>
<input type="text" id="account_name_value" />
</div>
</div>
</div>
</section>
<section class="data-capture-buttons one-buttons">
<div class="content">
<section class="data-capture-buttons one-buttons">
<a href="#" id="updateAccount"
onClick="saveAccount();">save</a>
</section>
</div>
</section>
</div> <!-- end detail page -->
</body>
</apex:page>
60
Visualforceタブ作成
1
3
2
61
Visualforceタブの作成
1
2
62
ナビゲーションメニューに追加
1
3
2
63
JavaScript Remoting & Static HTMLでの実装
1
2
64
Visualforce
画面遷移
65
sforce.one JavaScript object
• Salesforce1用ナビゲーションフレームワーク
• Salesforce1で動作しているVisualforceページには自動
的にsforce.oneオブジェクトが追加されるため、特定の
JavaScriptライブラリをインクルードする必要なし
66
提供されている画面遷移メソッド
メソッド コメント
navigateToSObject(recordId, view) recordIdの詳細ページへ遷移、viewはオプショ
ンでchatter, related, detailを選択できる。
ViewパラメータはSummer '14で実装予定
navigateToURL(url) urlは絶対パス、相対パスをサポート。絶対パス
が選択された場合のみ、子供ウィンドウで表示
navigateToFeed(subjectId, type) 特定のFeedへ遷移、typeはNEWS,RECORD
他は???
navigateToFeedItemDetail(feedItemId) 特定のFeedItemへ遷移
navigateToRelatedList(relatedListId,
parentRecordId)
relatedListIdで指定した関連リストに遷移、
parentId
navigateToList(listViewId, listViewName,
scope)
listViewIdとlistViewNameで指定されたList
viewへ遷移
createRecord(entityName, recordTypeId) entityNameで指定された新規レコード作成画面
へ遷移、recordTypeIdは任意
editRecord(recordId) recordIdで指定された編集画面へ遷移
67
navigateToSObject(recordId, view)
recordIdで指定したレコードの詳細ページへ遷移。viewパラメータは
chatter, related, detailが選択できるが現時点では未実装。Summer
'14で実装予定
これがrecrodId
68
navigateToURL(url)
urlは絶対パス、あるいは相対パスをサポート。絶対パスが選択された
場合のみ、子供ウィンドウで表示
urlパラメータに
'/0011000000k8T1j'としてメソッ
ドコールをすると右図の詳細ペー
ジへ遷移する
69
navigateToFeed(subjectId, type)
特定のFeedへ遷移、typeはNEWS、RECORDは確認済み。subjectIdにユー
ザレコードID、typeにNEWSを設定すると特定のユーザNewFeed画面に遷
移する。他のTypeの値は調査中。
subjectIdに'0011000000k8T1j'と
type='RECORD'を指定
70
navigateToFeedItemDetail(feedItemId)
特定のFeedItemへ遷移。
feedItemId
71
navigateToRelatedList(relatedListId,
parentRecordId)
特定レコードの関連リストに遷移
relatedListIdに
'RelatedCaseList'、
parentRecordIdに
'0011000000k8T1j'
72
navigateToList(listViewId, listViewName,
scope)
listViewIdとlistViewNameで指定されたList viewへ遷移
listViewIdに '00B10000003hT4l'
listViewNameに 'You can set title here'
scopeに 'Account'
73
createRecord(entityName, recordTypeId)
entityNameで指定された新規レコード作成画面へ遷移、recordTypeId
は任意
entityNameに 'Account' に設定してメソッドを実行す
るとAccountの新規作成ページに遷移
74
editRecord(recordId)
recordIdで指定された編集画面へ遷移
recordIdに '0011000000k8T1j'を設定
75
Test them
取引先レコードIDを入力
Feed Item IDを入力
ListView IDを入力
次のスライドにあるVisualforcePageをコピー
し、自分の組織で新規VisualforcePageを作成、
VisualforceTab作成、Salesforce1にタブ追加
すると
https://ap.salesforce.com/one/one.appから
動作確認ができます。
76
Visualforceページ
<apex:page standardController="Account" extensions="AccountEditor"
showHeader="false" standardStylesheets="false"
docType="html-5.0" applyHtmlTag="false" applyBodyTag="false">
<head>
<script>
function createRecord() {
sforce.one.createRecord("Account");
}
function navigateToSObject() {
// http://salesforce.stackexchange.com/questions/22246/salesforce1-javascript-method-navigatetosobjectrecordid-view-not-changing-tab
// view parameter is not supported yet
sforce.one.navigateToSObject(getAccount(), 'related');
}
function navigateToAbsoluteURL() {
sforce.one.navigateToURL('http://www.google.com');
}
function navigateToRelativeURL() {
sforce.one.navigateToURL('/'+getAccount());
}
function navigateToFeed() {
sforce.one.navigateToFeed(getAccount(), 'RECORD');
//sforce.one.navigateToFeed('005100000021nht', 'NEWS');
}
function navigateToFeedItemDetail() {
var feed_item_id = getFeedItemId();
sforce.one.navigateToFeedItemDetail(feed_item_id);
}
function navigateToRelatedList() {
sforce.one.navigateToRelatedList('RelatedCaseList', getAccount());
}
function navigateToList() {
sforce.one.navigateToList(getListViewId(), 'You can set title here', 'Account');
}
function editRecord() {
sforce.one.editRecord(getAccount());
}
functionback() {
sforce.one.back(true);
}
function getAccount() {
return document.getElementById('account_id').value
}
function getFeedItemId() {
return document.getElementById('feed_item_id').value
}
function getListViewId() {
return document.getElementById('list_view_id').value
}
</script>
</head>
<body>
<p>
1. You do not need to enter any value<br/>
<a href="#" onClick="navigateToAbsoluteURL();">navigateToURL(absolute url)</a><br/>
<a href="#" onClick="createRecord();">createRecord(recordId, view)</a><br/>
</p>
<hr/>
<p>
2. Enter Account Record ID : <input type="text" id="account_id" /> <br/>
<a href="#" onClick="navigateToSObject();">navigateToSObject(recordId, view)</a><br/>
<a href="#" onClick="navigateToRelativeURL();">navigateToURL(relative url)</a><br/>
<a href="#" onClick="navigateToRelatedList();">navigateToRelatedList(relatedListId, parentRecordId)</a><br/>
<a href="#" onClick="editRecord();">editRecord(recordId)</a><br/>
<a href="#" onClick="navigateToFeed();">navigateToFeed(subjectId, type)</a><br/>
</p>
<hr/>
<p>
3. Enter Feed Item ID : <input type="text" id="feed_item_id" /> <br/>
<a href="#" onClick="navigateToFeedItemDetail();">navigateToFeedItemDetail(feedItemId)</a><br/>
</p>
<hr/>
<p>
4. Enter ListView ID of Account : <input type="text" id="list_view_id" /> <br/>
<a href="#" onClick="navigateToList();">navigateToList(listViewId, listViewName, scope)</a><br/>
</p>
</body>
</apex:page>
上記Visualforceを自分の組織へコピーして
77
Visualforce
イベント処理
78
Canvas イベント publisher.setupPanel
publisher.showPanel
publisher.clearPanelState
Cancel / Close
publisher.post
79
Subscribe
Sfdc.canvas.publisher.subscribe(
{ name : "publisher.post", onData:function(e) {} }
);
Sfdc.canvas.publisher.subscribe(
{ name : "publisher.setupPanel", onData:function(e) { }}
);
Sfdc.canvas.publisher.subscribe(
{ name : "publisher.showPanel", onData:function(e) {}}
);
Sfdc.canvas.publisher.subscribe(
{ name : "publisher.clearPanelState", onData:function(e) {}}
);
80
Publish
Sfdc.canvas.publisher.publish({ name : "publisher.setValidForSubmit", payload:"true"});
Sfdc.canvas.publisher.publish({ name : "publisher.setValidForSubmit", payload:"false"});
Sfdc.canvas.publisher.publish({ name : "publisher.close", payload : { refresh:"true" }});
Sfdc.canvas.publisher.publish({ name : "publisher.refresh", payload : { feed:true }});
81
オブジェクト専用アクションでテストしてみよう
82
テスト用サンプルVisualforce
• <apex:page docType="html-5.0" showHeader="false" sidebar="false" standardController="Account" standardStylesheets="false">
• <meta charset="UTF-8" />
• <apex:includeScript value="/canvas/sdk/js/publisher.js" />
• <script>
• function setValidForSubmitTrue() {
• Sfdc.canvas.publisher.publish({ name : "publisher.setValidForSubmit", payload:"true" });
• }
•
• function setValidForSubmitFalse() {
• Sfdc.canvas.publisher.publish({ name : "publisher.setValidForSubmit", payload:"false" });
• }
•
• function publisher_close() {
• Sfdc.canvas.publisher.publish({ name : "publisher.close", payload : { refresh:"true" }});
• }
•
• function publisher_refresh() {
• Sfdc.canvas.publisher.publish({ name : "publisher.refresh", payload : { feed:true }});
• }
•
• Sfdc.canvas.publisher.subscribe(
• { name : "publisher.post", onData:function(e) { alert('Post Event'); } }
• );
• Sfdc.canvas.publisher.subscribe(
• { name : "publisher.setupPanel", onData:function(e) { alert('SetupPanel Event'); }}
• );
•
• Sfdc.canvas.publisher.subscribe(
• { name : "publisher.showPanel", onData:function(e) { alert('ShowPanel Event'); }}
• );
• Sfdc.canvas.publisher.subscribe(
• { name : "publisher.clearPanelState", onData:function(e) { alert('ClearPanelState Event'); }}
• );
•
• </script>
•
• <a href="#" onClick="setValidForSubmitTrue()">setValidForSubmit payload: true</a><br/>
• <a href="#" onClick="setValidForSubmitFalse()">setValidForSubmit payload: false</a><br/>
• <a href="#" onClick="publisher_close()">publisher.close</a><br/>
• <a href="#" onClick="publisher_refresh()">publisher.refresh</a><br/>
• </apex:page>
83
Flexible Page
開発
84
Flexible Pageとは
• Flexible Pageとは、ページレイアウトとVisualforceペ
ージの中間的なページです。ページレイアウトのよう
にカスタムアイテムを追加することが可能となってい
ますが、Flexible Pageはページレイアウトとは違う構
造となっています。
• Flexible Pageでアプリケーションのホームページを作
成、Salesforce1のナビゲーションに追加できます。
• グローバルアクションをFlexible Pageに割り当てが可
能。Flexible Page上にある+ボタンを選択するとあな
たが割り当てたグローバルアクションが表示されます
85
どんなデータが表示可能?
カスタムオブジェクトの最
近使用したデータを表示
リストビューを表示、但
しサポートされていない
オブジェクトあり
グローバルアクションの追加
86
Flexible Page開発ステップ
1. 開発する前に
• どのリストビューを表示させるか?
• 何の「最近使ったデータ」を表示させるか?
• どのグローバルアクションを追加するのか?(任意)
2. XmlベースのFlexible Pageの作成
グローバルアクションを追加する場合にはXMLに記述する必要があ
ります。記述していないとFlexible Pageにはパブリッシャアクシ
ョンアイコン(+)が表示されません。
3. Force.com Migration Tool、Force.com IDE、Workbenchのいずれ
かのツールを使用してファイルを自分の組織へデプロイする
4. Flexible Pageカスタムタブの作成
5. Salesforce1のナビゲーションタブへFlexible Pageを追加する
87
Flexible Pageファイルについて
カスタムオブジェクトの最
近使用したデータを表示
リストビューを表示
Region名は必ずmainとする
パブリッシャアクションアイ
コンの追加
88
Flexible Pageファイルについて
• flexiPageRegionsエレメントは1つだけ
• ComponentInstanceは2種類
• filterListCard: リストビューを表示、但しそのビューから最初の
数レコードしか表示しない、またサポートしているのは、
Custom Objects, Account, Campaign, Case,
CollablrationGroup, Contact, Contract, Lead, LiveChatTransript,
Opportunityのみ
• recentItems: propertyで指定したカスタムオブジェクトの最近
しようしたデータを表示
詳細はこちらで確認ください
89
1. Flexible Page作成 Package.xml
FlexiblePage__cと
FlexiblePage2__cというカ
スタムオブジェクトを組織
に作成する必要があります
90
2. package.xml作成 Package.xml
91
3. Salesforceへ配置 Zipファイル作成
1
2
92
3. Salesforceへ配置
1
2
3
4
成功を確認する
93
4. Flexibleタブ作成
1
2
3
94
4. Flexibleタブ作成
1
2 3
作成されていることを確認する
95
5. 確認作業
96
サンプルコード
FlexiblePage__cとFlexiblePage2__cというカスタ
ムオブジェクトを組織に作成する必要があります
97
技術情報
98
情報
• Salesforce1 App スタイルガイドライン
• Salesforce1 App開発ガイド
• Salesforce1 Cheetsheet
• ISV向けSalesforce1 Webinar by Nakajima Kazuki
• Using Visualforce in Salesforce1

Contenu connexe

Tendances

Salesforce1 PlatformアーキテクチャWebinar
Salesforce1 PlatformアーキテクチャWebinarSalesforce1 PlatformアーキテクチャWebinar
Salesforce1 PlatformアーキテクチャWebinarSalesforce Developers Japan
 
Salesforce1 platformで爆速モバイル開発
Salesforce1 platformで爆速モバイル開発Salesforce1 platformで爆速モバイル開発
Salesforce1 platformで爆速モバイル開発Salesforce Developers Japan
 
Spring16 リリース開発者向け新機能Webセミナー
Spring16 リリース開発者向け新機能WebセミナーSpring16 リリース開発者向け新機能Webセミナー
Spring16 リリース開発者向け新機能WebセミナーSalesforce Developers Japan
 
Go Faster with Lightning : Salesforce Lightning 概要Webinar
Go Faster with Lightning : Salesforce Lightning 概要WebinarGo Faster with Lightning : Salesforce Lightning 概要Webinar
Go Faster with Lightning : Salesforce Lightning 概要WebinarSalesforce Developers Japan
 
はじめようLightningコンポーネント
はじめようLightningコンポーネントはじめようLightningコンポーネント
はじめようLightningコンポーネントSalesforce Developers Japan
 
Salesforce Platform Mobile Serviceを使ったアプリ開発
Salesforce Platform Mobile Serviceを使ったアプリ開発Salesforce Platform Mobile Serviceを使ったアプリ開発
Salesforce Platform Mobile Serviceを使ったアプリ開発Salesforce Developers Japan
 
絶賛活躍中のモバイルアプリに学ぶモバイルならではのアイデア
絶賛活躍中のモバイルアプリに学ぶモバイルならではのアイデア絶賛活躍中のモバイルアプリに学ぶモバイルならではのアイデア
絶賛活躍中のモバイルアプリに学ぶモバイルならではのアイデアSalesforce Developers Japan
 
Force.comとモバイルでイベント管理実例
Force.comとモバイルでイベント管理実例Force.comとモバイルでイベント管理実例
Force.comとモバイルでイベント管理実例Salesforce Developers Japan
 
Salesforce.comの情報セキュリティについて
Salesforce.comの情報セキュリティについてSalesforce.comの情報セキュリティについて
Salesforce.comの情報セキュリティについてSalesforce Developers Japan
 
Connected Products
Connected ProductsConnected Products
Connected ProductsAyumu Aizawa
 
2021Apr tableau_crm説明資料
2021Apr tableau_crm説明資料2021Apr tableau_crm説明資料
2021Apr tableau_crm説明資料TAKESHI KIURA
 
Lightning App Builder による ビジュアルアプリケーション開発
Lightning App Builder による ビジュアルアプリケーション開発Lightning App Builder による ビジュアルアプリケーション開発
Lightning App Builder による ビジュアルアプリケーション開発Salesforce Developers Japan
 

Tendances (20)

超初心者向けForce.com入門
超初心者向けForce.com入門超初心者向けForce.com入門
超初心者向けForce.com入門
 
Visualforceを使ってみよう
Visualforceを使ってみようVisualforceを使ってみよう
Visualforceを使ってみよう
 
Salesforce1 PlatformアーキテクチャWebinar
Salesforce1 PlatformアーキテクチャWebinarSalesforce1 PlatformアーキテクチャWebinar
Salesforce1 PlatformアーキテクチャWebinar
 
Salesforce1 platformで爆速モバイル開発
Salesforce1 platformで爆速モバイル開発Salesforce1 platformで爆速モバイル開発
Salesforce1 platformで爆速モバイル開発
 
Spring16 リリース開発者向け新機能Webセミナー
Spring16 リリース開発者向け新機能WebセミナーSpring16 リリース開発者向け新機能Webセミナー
Spring16 リリース開発者向け新機能Webセミナー
 
Go Faster with Lightning : Salesforce Lightning 概要Webinar
Go Faster with Lightning : Salesforce Lightning 概要WebinarGo Faster with Lightning : Salesforce Lightning 概要Webinar
Go Faster with Lightning : Salesforce Lightning 概要Webinar
 
App Cloud モバイルアプリ開発戦略
App Cloud モバイルアプリ開発戦略App Cloud モバイルアプリ開発戦略
App Cloud モバイルアプリ開発戦略
 
Developer Keynote
Developer KeynoteDeveloper Keynote
Developer Keynote
 
Force.com開発基礎
Force.com開発基礎Force.com開発基礎
Force.com開発基礎
 
はじめようLightningコンポーネント
はじめようLightningコンポーネントはじめようLightningコンポーネント
はじめようLightningコンポーネント
 
Salesforce Platform Mobile Serviceを使ったアプリ開発
Salesforce Platform Mobile Serviceを使ったアプリ開発Salesforce Platform Mobile Serviceを使ったアプリ開発
Salesforce Platform Mobile Serviceを使ったアプリ開発
 
絶賛活躍中のモバイルアプリに学ぶモバイルならではのアイデア
絶賛活躍中のモバイルアプリに学ぶモバイルならではのアイデア絶賛活躍中のモバイルアプリに学ぶモバイルならではのアイデア
絶賛活躍中のモバイルアプリに学ぶモバイルならではのアイデア
 
Force.comとモバイルでイベント管理実例
Force.comとモバイルでイベント管理実例Force.comとモバイルでイベント管理実例
Force.comとモバイルでイベント管理実例
 
Salesforce.comの情報セキュリティについて
Salesforce.comの情報セキュリティについてSalesforce.comの情報セキュリティについて
Salesforce.comの情報セキュリティについて
 
THE REINVENTION OF APPS
THE REINVENTION OF APPSTHE REINVENTION OF APPS
THE REINVENTION OF APPS
 
PHP開発者のためのHeroku入門
PHP開発者のためのHeroku入門PHP開発者のためのHeroku入門
PHP開発者のためのHeroku入門
 
Connected Products
Connected ProductsConnected Products
Connected Products
 
2021Apr tableau_crm説明資料
2021Apr tableau_crm説明資料2021Apr tableau_crm説明資料
2021Apr tableau_crm説明資料
 
Lightning App Builder による ビジュアルアプリケーション開発
Lightning App Builder による ビジュアルアプリケーション開発Lightning App Builder による ビジュアルアプリケーション開発
Lightning App Builder による ビジュアルアプリケーション開発
 
Python開発者のためのHeroku入門
Python開発者のためのHeroku入門Python開発者のためのHeroku入門
Python開発者のためのHeroku入門
 

Similaire à Salesforce1開発(s1 tour)

コンポーネントを”つなぐ”時代へ Web&Mobileアプリ開発最新動向
コンポーネントを”つなぐ”時代へ Web&Mobileアプリ開発最新動向コンポーネントを”つなぐ”時代へ Web&Mobileアプリ開発最新動向
コンポーネントを”つなぐ”時代へ Web&Mobileアプリ開発最新動向Mitch Okamoto
 
Salesforce開発プロジェクトの進め方とアプリケーションライフサイクルマネジメント
Salesforce開発プロジェクトの進め方とアプリケーションライフサイクルマネジメントSalesforce開発プロジェクトの進め方とアプリケーションライフサイクルマネジメント
Salesforce開発プロジェクトの進め方とアプリケーションライフサイクルマネジメントSalesforce Developers Japan
 
Lightning Process Builder で ビジネス・プロセスを自動化
Lightning Process Builder でビジネス・プロセスを自動化Lightning Process Builder でビジネス・プロセスを自動化
Lightning Process Builder で ビジネス・プロセスを自動化Salesforce Developers Japan
 
さあ、はじめよう。Application Partner
さあ、はじめよう。Application Partnerさあ、はじめよう。Application Partner
さあ、はじめよう。Application PartnerKazuki Nakajima
 
実践!カスタマー エクスペリエンス 向上のためのアプリ開発 後編
実践!カスタマー エクスペリエンス 向上のためのアプリ開発 後編実践!カスタマー エクスペリエンス 向上のためのアプリ開発 後編
実践!カスタマー エクスペリエンス 向上のためのアプリ開発 後編Salesforce Developers Japan
 
Lightning Components で 次世代のアプリケーション開発
Lightning Components で 次世代のアプリケーション開発Lightning Components で 次世代のアプリケーション開発
Lightning Components で 次世代のアプリケーション開発Salesforce Developers Japan
 
実践!カスタマー エクスペリエンス向上のためのアプリ開発 前編
実践!カスタマー エクスペリエンス向上のためのアプリ開発 前編実践!カスタマー エクスペリエンス向上のためのアプリ開発 前編
実践!カスタマー エクスペリエンス向上のためのアプリ開発 前編Salesforce Developers Japan
 
Lightning アプリケーション開発 - Visualforce ページの移行
Lightning アプリケーション開発 - Visualforce ページの移行Lightning アプリケーション開発 - Visualforce ページの移行
Lightning アプリケーション開発 - Visualforce ページの移行Salesforce Developers Japan
 
ビジネスアイデアを最速で形にできるApp exchange
ビジネスアイデアを最速で形にできるApp exchangeビジネスアイデアを最速で形にできるApp exchange
ビジネスアイデアを最速で形にできるApp exchangeKazuki Nakajima
 
Lightning を利用した開発とケーススタディ
Lightning を利用した開発とケーススタディLightning を利用した開発とケーススタディ
Lightning を利用した開発とケーススタディSalesforce Developers Japan
 
初めてのWave Analyticsデータセット作成
初めてのWave Analyticsデータセット作成初めてのWave Analyticsデータセット作成
初めてのWave Analyticsデータセット作成Salesforce Developers Japan
 
やれる Heroku - Java アプリケーション開発編
やれる Heroku - Java アプリケーション開発編やれる Heroku - Java アプリケーション開発編
やれる Heroku - Java アプリケーション開発編Salesforce Developers Japan
 

Similaire à Salesforce1開発(s1 tour) (19)

Spring '15 開発者向け新機能Webinar
Spring '15 開発者向け新機能WebinarSpring '15 開発者向け新機能Webinar
Spring '15 開発者向け新機能Webinar
 
コンポーネントを”つなぐ”時代へ Web&Mobileアプリ開発最新動向
コンポーネントを”つなぐ”時代へ Web&Mobileアプリ開発最新動向コンポーネントを”つなぐ”時代へ Web&Mobileアプリ開発最新動向
コンポーネントを”つなぐ”時代へ Web&Mobileアプリ開発最新動向
 
Salesforce開発プロジェクトの進め方とアプリケーションライフサイクルマネジメント
Salesforce開発プロジェクトの進め方とアプリケーションライフサイクルマネジメントSalesforce開発プロジェクトの進め方とアプリケーションライフサイクルマネジメント
Salesforce開発プロジェクトの進め方とアプリケーションライフサイクルマネジメント
 
Lightning Process Builder で ビジネス・プロセスを自動化
Lightning Process Builder でビジネス・プロセスを自動化Lightning Process Builder でビジネス・プロセスを自動化
Lightning Process Builder で ビジネス・プロセスを自動化
 
さあ、はじめよう。Application Partner
さあ、はじめよう。Application Partnerさあ、はじめよう。Application Partner
さあ、はじめよう。Application Partner
 
Lightningコンポーネントの概要
Lightningコンポーネントの概要Lightningコンポーネントの概要
Lightningコンポーネントの概要
 
実践!カスタマー エクスペリエンス 向上のためのアプリ開発 後編
実践!カスタマー エクスペリエンス 向上のためのアプリ開発 後編実践!カスタマー エクスペリエンス 向上のためのアプリ開発 後編
実践!カスタマー エクスペリエンス 向上のためのアプリ開発 後編
 
Lightning Components で 次世代のアプリケーション開発
Lightning Components で 次世代のアプリケーション開発Lightning Components で 次世代のアプリケーション開発
Lightning Components で 次世代のアプリケーション開発
 
Lightning Experience 時代のフロー開発
Lightning Experience 時代のフロー開発Lightning Experience 時代のフロー開発
Lightning Experience 時代のフロー開発
 
実践!カスタマー エクスペリエンス向上のためのアプリ開発 前編
実践!カスタマー エクスペリエンス向上のためのアプリ開発 前編実践!カスタマー エクスペリエンス向上のためのアプリ開発 前編
実践!カスタマー エクスペリエンス向上のためのアプリ開発 前編
 
Salesforce DX & GitHub Deep Dive
Salesforce DX & GitHub Deep DiveSalesforce DX & GitHub Deep Dive
Salesforce DX & GitHub Deep Dive
 
Lightning アプリケーション開発 - Visualforce ページの移行
Lightning アプリケーション開発 - Visualforce ページの移行Lightning アプリケーション開発 - Visualforce ページの移行
Lightning アプリケーション開発 - Visualforce ページの移行
 
ビジネスアイデアを最速で形にできるApp exchange
ビジネスアイデアを最速で形にできるApp exchangeビジネスアイデアを最速で形にできるApp exchange
ビジネスアイデアを最速で形にできるApp exchange
 
Lightning を利用した開発とケーススタディ
Lightning を利用した開発とケーススタディLightning を利用した開発とケーススタディ
Lightning を利用した開発とケーススタディ
 
初めてのWave Analyticsデータセット作成
初めてのWave Analyticsデータセット作成初めてのWave Analyticsデータセット作成
初めてのWave Analyticsデータセット作成
 
やれる Heroku - Java アプリケーション開発編
やれる Heroku - Java アプリケーション開発編やれる Heroku - Java アプリケーション開発編
やれる Heroku - Java アプリケーション開発編
 
Salesforce 開発入門
Salesforce 開発入門Salesforce 開発入門
Salesforce 開発入門
 
Lightning コンポーネント Deep Dive
Lightning コンポーネント Deep DiveLightning コンポーネント Deep Dive
Lightning コンポーネント Deep Dive
 
Einstein Next Best Action を試してみよう
Einstein Next Best Action を試してみようEinstein Next Best Action を試してみよう
Einstein Next Best Action を試してみよう
 

Plus de Akihiro Iwaya

Wt13 processing records
Wt13 processing recordsWt13 processing records
Wt13 processing recordsAkihiro Iwaya
 
Wt12 triggering flows
Wt12 triggering flowsWt12 triggering flows
Wt12 triggering flowsAkihiro Iwaya
 
Wt11 writing dataweave transformations
Wt11 writing dataweave transformationsWt11 writing dataweave transformations
Wt11 writing dataweave transformationsAkihiro Iwaya
 
Wt9 multicast an event
Wt9 multicast an eventWt9 multicast an event
Wt9 multicast an eventAkihiro Iwaya
 
Wt8 consuming web services
Wt8 consuming web servicesWt8 consuming web services
Wt8 consuming web servicesAkihiro Iwaya
 
Wt7 structuring mule applications
Wt7 structuring mule applicationsWt7 structuring mule applications
Wt7 structuring mule applicationsAkihiro Iwaya
 
Wt6 accessing and modifying mule event
Wt6 accessing and modifying mule eventWt6 accessing and modifying mule event
Wt6 accessing and modifying mule eventAkihiro Iwaya
 
Wt5 deploying and managing ap is
Wt5 deploying and managing ap isWt5 deploying and managing ap is
Wt5 deploying and managing ap isAkihiro Iwaya
 
Iot explore demo for cross clouds
Iot explore demo for cross cloudsIot explore demo for cross clouds
Iot explore demo for cross cloudsAkihiro Iwaya
 
Iot explorer デモ (MC, CC, Heroku, Core)
Iot explorer デモ (MC, CC, Heroku, Core)Iot explorer デモ (MC, CC, Heroku, Core)
Iot explorer デモ (MC, CC, Heroku, Core)Akihiro Iwaya
 
Df salesforce dx説明資料
Df salesforce dx説明資料Df salesforce dx説明資料
Df salesforce dx説明資料Akihiro Iwaya
 
IoT explorer タクシー配車デモ
IoT explorer タクシー配車デモIoT explorer タクシー配車デモ
IoT explorer タクシー配車デモAkihiro Iwaya
 
Io t工場機器監視デモ
Io t工場機器監視デモIo t工場機器監視デモ
Io t工場機器監視デモAkihiro Iwaya
 
Salesforce X AWS Machine Learning
Salesforce X AWS Machine LearningSalesforce X AWS Machine Learning
Salesforce X AWS Machine LearningAkihiro Iwaya
 
Soracom X AWS Iot X Salesforce
Soracom X AWS Iot X SalesforceSoracom X AWS Iot X Salesforce
Soracom X AWS Iot X SalesforceAkihiro Iwaya
 
Force.comハンズオン
Force.comハンズオンForce.comハンズオン
Force.comハンズオンAkihiro Iwaya
 
Lightingコンポーネントベーシック開発
Lightingコンポーネントベーシック開発Lightingコンポーネントベーシック開発
Lightingコンポーネントベーシック開発Akihiro Iwaya
 

Plus de Akihiro Iwaya (20)

Wt13 processing records
Wt13 processing recordsWt13 processing records
Wt13 processing records
 
Wt12 triggering flows
Wt12 triggering flowsWt12 triggering flows
Wt12 triggering flows
 
Wt11 writing dataweave transformations
Wt11 writing dataweave transformationsWt11 writing dataweave transformations
Wt11 writing dataweave transformations
 
Wt9 multicast an event
Wt9 multicast an eventWt9 multicast an event
Wt9 multicast an event
 
Wt8 consuming web services
Wt8 consuming web servicesWt8 consuming web services
Wt8 consuming web services
 
Wt7 structuring mule applications
Wt7 structuring mule applicationsWt7 structuring mule applications
Wt7 structuring mule applications
 
Wt6 accessing and modifying mule event
Wt6 accessing and modifying mule eventWt6 accessing and modifying mule event
Wt6 accessing and modifying mule event
 
Wt5 deploying and managing ap is
Wt5 deploying and managing ap isWt5 deploying and managing ap is
Wt5 deploying and managing ap is
 
Wt4 building apis
Wt4 building apisWt4 building apis
Wt4 building apis
 
Wt3 designing apis
Wt3 designing apisWt3 designing apis
Wt3 designing apis
 
Iot explore demo for cross clouds
Iot explore demo for cross cloudsIot explore demo for cross clouds
Iot explore demo for cross clouds
 
Iot explorer デモ (MC, CC, Heroku, Core)
Iot explorer デモ (MC, CC, Heroku, Core)Iot explorer デモ (MC, CC, Heroku, Core)
Iot explorer デモ (MC, CC, Heroku, Core)
 
Df salesforce dx説明資料
Df salesforce dx説明資料Df salesforce dx説明資料
Df salesforce dx説明資料
 
IoT explorer タクシー配車デモ
IoT explorer タクシー配車デモIoT explorer タクシー配車デモ
IoT explorer タクシー配車デモ
 
Io t工場機器監視デモ
Io t工場機器監視デモIo t工場機器監視デモ
Io t工場機器監視デモ
 
Salesforce X AWS Machine Learning
Salesforce X AWS Machine LearningSalesforce X AWS Machine Learning
Salesforce X AWS Machine Learning
 
Visualforceとは
VisualforceとはVisualforceとは
Visualforceとは
 
Soracom X AWS Iot X Salesforce
Soracom X AWS Iot X SalesforceSoracom X AWS Iot X Salesforce
Soracom X AWS Iot X Salesforce
 
Force.comハンズオン
Force.comハンズオンForce.comハンズオン
Force.comハンズオン
 
Lightingコンポーネントベーシック開発
Lightingコンポーネントベーシック開発Lightingコンポーネントベーシック開発
Lightingコンポーネントベーシック開発
 

Salesforce1開発(s1 tour)

Notes de l'éditeur

  1. Before I begin, just a word from our lawyers.  This is our safe harbor statement which if you cannot read, you can find on our website.  Any purchasing decisions you make should be made based on currently available technology.
  2. And two-thirds of companies feel unprepared for this new social and mobile world. They&apos;re not ready. They don&apos;t know what to do.
  3. A key part of the Salesforce1 app is the Publisher which is basically the users launchpad to taking action in Salesforce. With the publisher you can create global actions for users to take anywhere like posting a file, a link or a poll. Or more contextual actions like creating a contact on an account or a DSR on an opportunity. Any business processes and workflows associated with creating these records are instantly kicked off. Admins can create standard actions like creating a task, event, or account or some more custom actions like logging an IT ticket, creating an invoice, or submitting an order. Additionally there are Salesforce partners that have built custom actions as well to allow customers to interact with information from other apps or take actions specific to an ISV app.