Upload
salesforce-developers-japan
View
689
Download
8
Embed Size (px)
DESCRIPTION
7月4日に行われた開発者向け新機能Weibnarで使用された資料です。
Citation preview
Summer ’14 開発者向け新機能 2014年7月4日
#forcewebinar
Speaker
Mitsuhiro Okamoto Developer Programs Manager
@mitsuhiro
#forcewebinar
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 intellectual property and other litigation, risks associated with 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-Q for the most recent fiscal quarter ended July 31, 2012. This 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.
#forcewebinar
ソーシャルアカウントをフォロー下さい
@salesforcedevJP / #salesforcedevjp
Salesforce Developers Japan
+Salesforce Developers Japan
Salesforce Developers Japan
Salesforce Developers
#forcewebinar
Agenda
§ Salesforce1 新機能 § Canvas 新機能
§ Apex新機能
§ Visualforce新機能
$50,000 in prizes New York | Bangalore | Los Angeles | London
FREE EVENT
SALESFORCE1 PLATFORM SUMMER HACKATHON SERIES
http://summerofhacks.com
#salesforcedevs
2014年10月13日-16日
カリフォルニア州、サンフランシスコ
$899 開発者割引コード:
D14DVLPR http://bit.ly/dfweb14
#devzone
#forcewebinar
Salesforce1 新機能
#forcewebinar
パブリッシャアクションがChatterから独立
§ Chatterを有効化しなくてもSalesforce1固有のアクションを
追加できるように
§ 投稿、ファイル、リンク、アンケート、感謝、といったChatter固有のアクションは利用できない
#forcewebinar
Salesforce1上での承認申請
#forcewebinar
Canvas新機能
#forcewebinar
Canvasがモバイルカード及びページレイアウトに
#forcewebinar
Canvasを直接ページレイアウトに配置可能 Embed your Canvas
App directly in a Page Layout without using a Visualforce
Container
Visualforceコンテナを介さずに直接Canvasアプリケーションをページレイアウトに埋め込むこと
が可能になった
#forcewebinar
Canvasを呼び出す際のレコード詳細情報の追加
設定した項目は署名付きリクエストのレスポンスに
含まれて返却される
You can set the record fields in the Apex Lifecycle
handler and/or the Visualforce component
Apexライフサイクルハンドラ及びVisualforceタグにレコードの項
目を設定できるようになった
#forcewebinar
Apex ライフサイクルハンドラーとCanvas URLのオーバーライド
Apex Lifecycle Handlerを利用すると、署名付きリクエスト受信時の挙動を
カスタマイズできる
CanvasへアクセスするためのURLを書き換
えることが可能
#forcewebinar
Salesforce1 – ページレイアウト & モバイルカード Embed your Canvas
App directly in a Page Layout or as a Mobile
Card
Canvas Apps can be displayed in
Record Detail and in Mobile Cards in
S1
Canvasアプリはレコード詳細及びモバイルカードに追加するこ
とが可能
Canvasアプリを直接ページレイアウトで指定する
#forcewebinar
Salesforce1 – 画面回転イベントとモバイルCanvasアイコン
Canvasアプリがデフォルトのパズルアイコンではなく独自のロゴを利用できる
ように
デバイスを回転した際、 Canvasアプリケーション側でイベントが補足できるようになった (0, -90, もしくは 90 degrees)等
#forcewebinar
ユーザ承認制の承認リクエスト
署名付リクエストをCanvasが受け取ってない場合、承認画面を
表示
接続アプリの設定で “許可されてるユーザ” に“すべてのユーザ
は自己承認可能”を選択
#forcewebinar
Demo Canvas
#forcewebinar
Force.com新機能
#forcewebinar
カスタム権限 [開発者プレビュー] § 接続アプリの権限をコントロール可能
#forcewebinar
その他新機能、変更 § 外部IDの使用制限
– 従来の3つからから7つへ
§ ホームページコンポーネント – 新しいリッチテキストエディタにより従来より多くのマークアップがサ
ポート – HTMLエリア内のJavascript、CSS、iframe等のサポート外マーク
アップはSummer’15リリース以降無効化
– 上記のサポート外マークアップは新たに用意されたVisualforceエリ
アコンポーネントにて利用可能
#forcewebinar
Apex新機能
#forcewebinar
Flex Queue [パイロット] § 従来のジョブの最大値である5以上のバッチをQueueに登
録しておくことが可能
§ 100バッチジョブまで待ち行列に加わることが可能
§ システムリソースに空きが出た場合、システムは
FlexQueueからジョブを取得し、Batch JobQueueへ登録す
る
#forcewebinar
Batchable Interface global with sharing class WHUtil implements Database.Batchable<sObject>!
{ global Database.QueryLocator start(Database.BatchableContext BC)!
{ //Start on next context }!
global void execute(Database.BatchableContext BC, !
!List<sObject>scope) !
{ //Execute on current scope }!
global void finish(Database.BatchableContext BC) !
{ //Finish and clean up context } !
} !
!
#forcewebinar
Flex キュー
#forcewebinar
カスタムFutureリミット [パイロット]
§ Futureメソッドに従来のガバナ制限よりより高い値を設定す
ることが可能
§ もしFutureメソッドがガバナ制限に抵触する可能性がある場
合には、自身で制限を拡張できる
#forcewebinar
カスタムFutureリミット 設定一覧
@future(limits='2xHeap') Heap size limit is doubled (24 MB).
@future(limits='3xHeap') Heap size limit is tripled (36 MB).
@future(limits='2xCPU') CPU timeout is doubled (120,000 milliseconds).
@future(limits='3xCPU') CPU timeout is tripled (180,000 milliseconds).
@future(limits='2xSOQL') Number of SOQL queries limit is doubled (400).
@future(limits='3xSOQL') Number of SOQL queries limit is tripled (600).
@future(limits='2xDML') Number of DML statements limit is doubled (300).
@future(limits='3xDML') Number of DML statements limit is tripled (450).
@future(limits=‘2xDMLRows’)1 Number of records that were processed as a result of DML operations is doubled (20,000).
@future(limits='3xDMLRows')1 Number of records that were processed as a result of DML operations is tripled (30,000).
#forcewebinar
@future(limits='2xHeap') public static void myFutureMethod() { // Your code here }
Setting @future limits
#forcewebinar
Visualforce新機能
#forcewebinar
Visualforce Remote Objects 機能追加
§ 地理位置情報のサポート – 地理位置情報型へアクセス § Upsert処理 – update/createの簡略化
§ Orderby条件 – クエリをソートする
§ Where条件 – 新しい条件句: ne, lte, gte
§ Remote Methodオーバーライド – 標準動作の上書き
#forcewebinar
<apex:remoteObjects jsNamespace="RemoteObjectModel”> <apex:remoteObjectModel name="Contact" fields="Id,FirstName,LastName,Phone,Email,MailingStreet” retrieve="{!$RemoteAction.ContactOverrideController.retrieve}”> <apex:remoteObjectField name="skipdev__Notes__c" jsShorthand="Notes"/> <apex:remoteObjectField name="Location__Longitude__s" jsShorthand="Longitude"/> <apex:remoteObjectField name="Location__Latitude__s" jsShorthand="Latitude"/> </apex:remoteObjectModel> </apex:remoteObjects> … var c = new RemoteObjectModel.Contact(); c.retrieve({where: { Id: { eq: id } } }, function(err, records) { var record = records[0]; var lat = record.get("Latitude”); var lng = record.get(”Longitude”) var latlng = new google.maps.LatLng(lat, lng); ….
サンプル – 地理位置情報
#forcewebinar
function addUpdateContact(e){ var record = new RemoteObjectModel.Contact({…}); if (cId) { record.set('Id', cId); } record.upsert(updateCallback); }
サンプル - upsert
#forcewebinar
function getAllContacts() { var c = new RemoteObjectModel.Contact(); c.retrieve({ limit: 100, orderby: [ {FirstName: "ASC"}, {LastName: "ASC"} ], where: {FirstName: {ne: "Andy"} } }, function (err, records) { … } ); }
サンプル – orderby と where 条件
#forcewebinar
<apex:page controller="skipdev.ContactOverrideController"> <apex:remoteObjects jsNamespace="RemoteObjectModel”> <apex:remoteObjectModel name="Contact" fields="Id,FirstName,LastName,Phone,Email,MailingStreet” retrieve="{!$RemoteAction.ContactOverrideController.retrieve}”> </apex:remoteObjectModel> </apex:remoteObjects> public class ContactOverrideController { @RemoteAction public static Map<String, Object> retrieve(String type, List<String> fields, Map<String, Object> criteria) { Map<String, Object> result = RemoteObjectController.retrieve(type, fields, criteria); // Append to, transform, or otherwise modify the result object …. return result; } }
サンプル – メソッドのオーバーライド
#forcewebinar
public with sharing class myControllerExtension implements Util { private final Account acct; public Contact newContact {get; set;} public myControllerExtension(ApexPages.StandardController stdController) { this.acct = (Account)stdController.getRecord(); } public PageReference associateNewContact(Id cid) { newContact = [SELECT Id, Account from Contact WHERE Id =: cid LIMIT 1]; newContact.Account = acct; update newContact; } }
サンプル
#forcewebinar
その他のVisualforceアップデート
§ sforce.one 関連のAPIバージョニング § Salesforce CSS 及び Javascript 最適化
§ Visualforce PDFエンジンのアップデート(パイロット) – WebkitベースでよりJSによる描画後や2 Byte言語のサポート
#forcewebinar
New Visualforce PDF Engine
#forcewebinar
New Visualforce PDF Engine
#forcewebinar
ガバナ制約の更新
§ Describe 制限の撤廃 – 全てのAPIバージョンからApex Describeコールの制限が削除
– DescribeコールにはsObject、項目、項目セット、関連、選択リスト、
レコードタイプが含まれる
§ Developer Edition API制限の拡張 – 24時間のコール制限が5,000 から 15,000 に
#forcewebinar
正式リリース
§ Chatter Files REST API § ワークフローでの複数レコード及び項目のサポート
§ Search Suggested Queries REST API
§ 分析ダッシュボードAPI
#forcewebinar
リソース
§ http://developer.salesforce.com
§ http://developer.salesforce.com/releases
§ http://bit.ly/summer14prerel
#forcewebinar
Next Steps
§ プレリリース組織を取得Pre-Release – http://bit.ly/summer14prerel
§ リリースノートを読む – http://developer.salesforce.com/releases
#forcewebinar
無料の開発者環境 Developer Edition
http://developer.salesforce.com/join
#forcewebinar
ありがとうございました