Quantcast
Channel: tyoshikawa1106のブログ
Viewing all 1438 articles
Browse latest View live

SFDC:Lightning Experienceとナビゲーション処理


SFDC:組織で共通の数式項目を用意する方法

$
0
0

Salesforceのカスタマイズで便利な数式項目ですが、不特定多数のオブジェクトで共通で利用できるような式の場合、一箇所で管理できると便利だと思います。


そんなときはカスタム設定が便利です。設定種別が階層型のカスタム設定なら数式項目からでも$Setupで呼び出す事が可能です。これを利用すればカスタム設定に登録した値を複数のオブジェクトで参照することが可能です。
f:id:tyoshikawa1106:20160811035039p:plain


・・・なのですが、カスタム設定には作成できるデータ型に数式項目が用意されていません。そのため『本日の曜日』をセットするといったことは通常できません。


この問題の解決方法ですが、Apexをスケジュール登録して実行する機能を利用することで解決できます。
f:id:tyoshikawa1106:20160811035323p:plain


定期的に実行するApexバッチを登録して処理を行うときに利用する機能ですが、バッチ以外のApex処理も実行することが可能です。これを使って1日1回カスタム設定の値を更新するようにすれば値を動的に変更できるかと思います。


けっこう頑張らないといけない感じですが、組織で共通の数式項目を用意する方法としてはこういったやり方が考えられました。

SFDC:Salesforce Summer 2016 - Osaka Keynote

$
0
0

Salesforce Summer 2016 OsakaのKeynote動画が公開されていたので見てみました。
f:id:tyoshikawa1106:20160811063405p:plain


動画はYoutubeのJPsfdcのチャンネルから見れます。

日本市場へのコミット

  • Salesforce Ventures Japan
    • ベンチャー企業への継続的な投資を行っている
  • 第二データセンター開設
    • 関西地区に間もなくオープン

新しいテクノロジーモデル

  • インフラではなくイノベーションに注力
    • マルチテナントクラウドコンピューティング
  • 各社のビジネス固有の要件に対応
    • 拡張性に優れたメタデータプラットフォーム
  • 信頼性の高いエンタープライズクラウド
    • セキュリティ | 可用性 | パフォーマンス


アプリケーションをつくるときにインフラに時間をかけずに作れる環境を用意した。データのためのデータ、メタデータを用意することでテクノロジーの進化にあわせてバージョンアップを円滑に進められるようにした。セキュリティやログ管理やバックアップなど企業向けクラウドとして世界トップレベルの管理を実現。

新しいビジネスモデル (Salesforceのビジネスモデル)

  • 従来課金モデル
  • Custommer Sucessチーム
  • 大規模なエコシステム、コミュニティ


今までIT資産を持つと始めに高いコストが必要になった。Salesforceでは利用した分だけ料金が発生する仕組みなので利用開始時に高コストが発生することが無い。(極端な話だと使ってみてイマイチだったらいつでもやめられるイメージ → 主導権は顧客が持てる仕組み)


Custommer Sucessチームがあるので、顧客の悩みなどの相談に乗れる仕組みがある。(利用方法のアドバイス、パフォーマンス向上にはどうすればいいかなど)

新しい社会貢献

Salesforceの1 : 1 : 1モデルの話。社会貢献に力を入れてる話。

事例紹介

  • 総務省
  • ビームス

カスタマーカンパニーの実現 (セッションのまとめ)

  • 新しいカタチで顧客と繋がる
  • スマートフォンからビジネスを動かす
  • One to Oneのカスタマージャーニーを描く
  • 顧客をより理解する

Sales Cloud 担当 EVP アダム・プリッツァーさんの話

Salesforce - 17年間に渡るイノベーションの積み重ね

  • セールス
  • サービス
  • マーケティング
  • Chatter
  • 年3回のリリース
  • マルチテナントインフラストラクチャ
  • 拡張性の高いプラットフォーム

数年かけてプラットフォームを再構築

  • 2013 : モバイルエクスペリエンスを再構築 (Salesforce1 Mobile)
  • 2014 : プラットフォームを再構築 (Salesforce1 Lighnting)
  • 2015 : エクスペリエンスを再構築 (Lightning Experience)


ビジネスをモバイルへ、Salesforceでできることをモバイルからできるように。

Lightning ですべてのエクスペリエンスがつながる

  • エクスペリエンス・プラットフォーム・エコシステム
  • どんなデバイスでも共通のエクスペリエンスを
  • Lightning Componentをつくればドラッグ&ドロップでエクスペリエンスに追加できる

CRMのグローバルリーダー

業界トップクラスの7つのアプリがひとつのプラットフォームに

Sales Cloud
  • マジックアドランドでSFA部門の「リーダー」の評価を獲得
  • セールスオートメーションアプリケーションの市場シェア1位 (2014年)
Service Coud
  • マジックアドランドでCRMカスタマーエンゲージメントセンター部門の「リーダー」の評価を獲得
  • カスタマーサービスアプリケーションの市場シェア1位 (2014年)
Marketing Cloud
  • マジックアドランドでデジタルマーケティングハブ部門の「リーダー」の評価を獲得
Community Cloud
  • マジックアドランドで水平型ポータル部門の「リーダー」の評価を獲得
App Cloud
  • マジックアドランドでエンタープライズアプリケーションPaas部門の「リーダー」の評価を獲得

Sales Cloud Lightning

『世界No.1のセールスアプリ』

  • それぞれのスタイルにあった営業
    • Lightning Platformとそのエコシステム
  • スピーディーな営業
    • Salesforce CPQ
    • Microsoft製品との連携
  • スマートな営業
    • Salesforce IQ Inbox
    • Sales Wave App
  • 場所を選ばない
    • Salesforce1モバイルアプリ

Analytics Cloud

『先進のアナリティクスプラットフォーム』

  • すべてのユーザがあらゆるデータと繋がる
    • Wave Platform
  • ほしい答えをリアルタイムに入手
    • Sales Wave App, Service Weve App
  • インサイトからアクションを起こす
    • Waveアクション
  • どこからでも意思決定
  • Waveモバイルアプリ

App Cloud Lightning

『世界No.1のクラウドアプリ開発環境』

  • 誰もが手軽にアプリを開発
    • Lightningアプリケーションビルダー
    • プロセスビルダー
  • 最新の開発エクスペリエンス
    • Heroku Enterprise
    • Lightning Design System
  • No.1の業務アプリエコシステム
    • AppExchange
    • Lightningコンポーネント
  • 信頼、拡張、連携
    • Salesforce Shield
    • Connect
    • Thunder

Salesforce CPQ

『Lightning Experienceで実現するQuote-to-Cashソリューション』

  • 見積りの精度を向上
    • わかりやすい見積り書を簡単に作成
  • ブランドを反映した提案書を短時間に作成
    • カスタムテンプレートで個々のビジネスニーズに対応
  • 見積りから入金までのプロセスを自動化
    • リード獲得から売上計上までのジャーニーを効率化


Salesforce CPQは新しい製品です。
f:id:tyoshikawa1106:20160811061116p:plain:w300

Service Cloud Lightning

『世界No.1のカスタマーサービスアプリ』

  • つながるサービス
    • Lightning Platformとそのエコシステム
  • スピーディーなサポート
    • Lightning サービスコンソール
    • オムニチャンネルサポート
  • スマートなサービス
    • Service Wave App
  • 個別化したService
    • Service CloudのSOS機能
    • Field Service Lightning

Marketing Cloud

『No.1のマーケティングアプリ』

  • One to oneのカスタマージャーニー
    • ジャーニービルダー
  • あらゆるチャンネル、デバイスに対応
    • メール、モバイル、ソーシャル、広告、Web、IOT
  • 予測マーケティング
    • プレディレクティブジャーニー
  • つながるCRM
    • 顧客ライフサイクルに渡るエクスペリエンスの向上

Community Cloud

『No.1のコミュニティプラットフォーム』

  • ビジネスプロセスと連携
    • ファイルやレコード、データの取り込み
  • スピーディーにつながる
    • Lihgnitngコミュニティビルダー
    • コミュニティテンプレート
    • AppExchangeのLighnting Component (New)
  • スマートにつながる
    • コンテンツやおすすめのパーソナライズ
  • あらゆる場所でつながる
    • ブランディングを反映したモバイルエクスペリエンス

Field Service Lightning

『今秋、国内で一般提供を開始』

  • すべてのサービス関係者がつながる
    • エージェント
    • ディスパッチャー
    • 屋外
    • 遠隔地の作業員のためのツール
  • スケジュール調整、作業要員の派遣を自動化
    • 技術者のスキル
    • 予定の空き状況
    • 現在地にもとづきサービススケジュールの自動調整
  • 作業をリアルタイムに管理
    • 作業手順や状況をあらゆるデバイスから更新可能


Field Service Lightningは新登場の機能
f:id:tyoshikawa1106:20160811063058p:plain:w300

さいごに

f:id:tyoshikawa1106:20160811063206p:plain



こんな感じでした。

SFDC:REST APIで組織の制限情報を取得

$
0
0

REST APIでSalesforce組織の制限情報を取得する方法についてです。海外のDEVELOPERがTwitterで共有していました。


取得方法は次の通り。Workbenchで動作確認するのが簡単です。

/services/data/v37.0/limits


実行結果はこんな感じです。
f:id:tyoshikawa1106:20160811173845p:plain


データストレージやファイルストレージの情報も取得できます。
f:id:tyoshikawa1106:20160811173954p:plain


このときの設定から確認できるストレージ利用状況です。
f:id:tyoshikawa1106:20160811174215p:plain:w300


Remainingは残りの利用できる数値が表示されるみたいです。

SFDC:プレリリース環境でWinter'17を試してみました

$
0
0

プレリリース環境でWinter'17を試してみました。Winter'17版プレリリース環境へのサインアップは『8/18』、リリースノートの公開は『8/19』の予定ですが既存のプレリリース環境は既にアップデートされているみたいです。
f:id:tyoshikawa1106:20160812032858j:plain


Twitterのタイムラインで動かしてみたツイートをしている方が何人かいたので、昔作成していたプレリリース環境にログインして試してみました。
f:id:tyoshikawa1106:20160812033348p:plain


リリースノートはまだなので新機能の確認はできませんが、Lightning Experienceの新しいナビゲーションは確認することができました。
f:id:tyoshikawa1106:20160812033521p:plain


「Winter'17でデザインを変更します」とアナウンスがあったときは、「えっ..」と思ったりもしたのですが、実際に動かして見るとこのナビゲーションの方が使いやすかったです。
f:id:tyoshikawa1106:20160812035743p:plain


Summer'16までのナビゲーションは1つのプロファイルに1つナビゲーションしか紐付けできなかったため、少し設定しずらい部分があったのですが、新しいナビゲーションはSalesforce Classic版と同じで1つのプロファイルに複数のアプリケーションを紐付けて利用できるので、利用者にあわせて柔軟なカスタマイズができそうでした。
f:id:tyoshikawa1106:20160812033849p:plain


またアプリケーションランチャーからは、個別のタブにもアクセスできるようになっていました。
f:id:tyoshikawa1106:20160812034406p:plain


アプリケーションを切り替えなくてもVisualforceタブなどに直接アクセスができるみたいです。
f:id:tyoshikawa1106:20160812034444p:plain


これでSalesforce Classicのときの『+』タブと同じような使い方ができました。
f:id:tyoshikawa1106:20160812034600p:plain


ナビゲーションの仕様が変更されたので、Summer'16までのナビゲーションの設定はどうなったのかなと確認したところ、アプリケーションの設定にアクセスできるように変更されていました。
f:id:tyoshikawa1106:20160812034948p:plain


とりあえず簡単に動かしてみて確認できたのはこんな感じです。Winter'17の新機能はリリースノートが公開されてから確認しようかなと思います。

SFDC:Salesforce MVPについての話

$
0
0

だいぶ前ですがこういう記事を書いてる方がいました。

SFDC:開発者コンソールからのApex実行権限

$
0
0

Apexの処理は通常システム権限で実行されますが、開発者コンソールなどからApexを実行するとき、『匿名ブロック内』で実行する場合は、現在のユーザのオブジェクトレベルの権限と項目レベルの権限で実行される仕様となっています。

f:id:tyoshikawa1106:20160812042230p:plain


開発者コンソールから実行するときはちょっとした動作確認とかだったりするのであまり気にすることがなかったなと思いました。

SFDC:Winter'17 Lightning ナビゲーションのカスタマイズを試してみました

$
0
0

プレリリース環境のWinter'17バージョン組織でLightning ナビゲーションのカスタマイズを試してみました。Summer'16までのナビゲーションは表示するタブの設定ぐらいしかできませんでしたが、Winter'17の新しいナビゲーションはロゴや色の設定ができるようになったみたいです。設定のナビゲーションメニューからアプリケーションをカスタマイズできます。

f:id:tyoshikawa1106:20160812135219p:plain


最初に確認してみたのですが、セールスやマーケティングなどの標準アプリケーションはロゴやナビゲーションのカスタマイズはできませんでした。
f:id:tyoshikawa1106:20160812135504p:plain


ですがShow in Lightning Experienceといった設定が追加されていました。
f:id:tyoshikawa1106:20160812135539p:plain


ナビゲーションをカスタマイズできるアプリケーションですが、『New Lightning App』のボタンから作成する必要があるみたいです。
f:id:tyoshikawa1106:20160812135902p:plain


こちらが設定画面です。
f:id:tyoshikawa1106:20160812135930p:plain


こんな感じでアイコンや色のカスタマイズを指定することができました。
f:id:tyoshikawa1106:20160812140143p:plain


ユーティリティバーの有効化という設定もありました。Lightning Voice関係の機能だと思います。
f:id:tyoshikawa1106:20160812140324p:plain


ナビゲーションに表示するタブの設定はこんな感じ。
f:id:tyoshikawa1106:20160812140454p:plain


最後にこのナビゲーションを利用できるプロファイルを指定して設定完了です。
f:id:tyoshikawa1106:20160812140546p:plain


これでアプリケーションランチャーに表示されるようになりました。
f:id:tyoshikawa1106:20160812140645p:plain


実際にアクセスしてみると設定どおりにロゴが表示されました。Experienceにはブランドロゴを表示する機能が無かったのでWinter'17から表示できるようになったのは良かったと思います。
f:id:tyoshikawa1106:20160812140831p:plain


色についてはメニューの線の色が変更されるみたいです。自分のイメージはこんな感じになると思っていたのでちょっと思っていたのとは違いました。(設定が他にあるのか今後できるようになるのかもしれません。)
f:id:tyoshikawa1106:20160812141145p:plain


ひとまずLightningナビゲーションの設定はこんな感じでした。ブランドロゴが設定できるようになったので、また1つClassicでできた機能がLightning Experienceに追加されたなと思いました。


SFDC:NG-LIGHTNINGを試してみました

$
0
0

Angular2を使った開発でLightning Design Systemを利用できるNG-LIGHTNINGを試してみました。

f:id:tyoshikawa1106:20160812142151p:plain

ng-lightning - Native Angular 2 components and directives for Lightning Design System


使い方はトップページのGetting startedに記載されています。
f:id:tyoshikawa1106:20160812142425p:plain


ヘッダーメニューのComponentを選択すると、各コンポーネントのサンプルコードが確認できました。
f:id:tyoshikawa1106:20160812142524p:plain


HTML側のコードだけではなく、TypeScript側のコードも確認することができます。
f:id:tyoshikawa1106:20160812142614p:plain


NG-LIGHTNINGはGitHubで公開されています。


リポジトリの中にはdemoフォルダも用意されていました。
f:id:tyoshikawa1106:20160812142906p:plain

demoフォルダについて

demoフォルダをみたとき、NG-LIGHTNINGをちょっと動かすためのデモアプリだと思ったのですが、これはNG-LIGHTNING事態の開発に参加したい開発者向けの動作確認用に用意されたものみたいです。


詳細はng-lightning/DEVELOPER.mdファイルに記載がありました。
f:id:tyoshikawa1106:20160812150249p:plain


まずはgit cloneの実行です。

$ git clone git@github.com:ng-lightning/ng-lightning.git

f:id:tyoshikawa1106:20160812143101p:plain


ng-lightningフォルダに移動します。

$ cd ng-lightning/

f:id:tyoshikawa1106:20160812143203p:plain


npm installを実行します。

$ npm install
$ npm run typings


runコマンドを実行。

$ npm run build
$ npm run demo


別タブでnpm startを実行。

$ npm start


http://localhost:1111にアクセスするとLoadingと表示されるようになりました。ただエラーがでていたのでどこか手順が間違えているっぽいです。
f:id:tyoshikawa1106:20160812151753p:plain


ちなみにテストコマンドの方は正常に実行することができました。

$ npm test

f:id:tyoshikawa1106:20160812151902p:plain


とはいえNG-LIGHTNINGの開発に参加したい人向けなので、普通に利用する場合はここまでチェックする必要はないと思います。NG-LIGHTNINGのサイトで確認できたことはこんな感じです。

SFDC:Ionic2とNG-LIGHTNINGの組み合わせを試してみました

$
0
0

まずはIonic2の準備から。

$ npm install -g ionic@beta
$ ionic start cutePuppyPics --v2
$ cd cutePuppyPics
$ ionic serve

f:id:tyoshikawa1106:20160812152926p:plain:w300


Ionic2にはTypeScriptを利用する環境も全て整っています。
f:id:tyoshikawa1106:20160812153019p:plain


続いてng-lightningのインストールです。

$ npm install --save ng-lightning

もしかすると次のライブラリも必要かも

$ npm install --save @salesforce-ux/design-system@^2.0.1
$ npm install --save tether@^1.2.0


インストールできたら実際にバッチを表示してみます。まずはtsファイルの変更です。

home.ts
import {Component} from '@angular/core';
import {NavController} from 'ionic-angular';
import {NGL_DIRECTIVES} from 'ng-lightning/ng-lightning';

@Component({
  directives: [NGL_DIRECTIVES],
  templateUrl: 'build/pages/home/home.html'
})
export class HomePage {

  constructor(private navCtrl: NavController) {
  
  }

  type = 'inverse';

  private types: string[] = ['default', 'shade', 'inverse'];

  change() {
    this.type = this.types[(this.types.indexOf(this.type) + 1) % 3];
  }
}


続いてhome.htmlの変更です。

<ion-header>
  <ion-navbar>
    <ion-title>Home</ion-title>
  </ion-navbar>
</ion-header>

<ion-content padding class="home">
  <h2>Welcome to Ionic!</h2>
  <p>
    This starter project comes with simple tabs-based layout for apps
    that are going to primarily use a Tabbed UI.
  </p>
  <p>
    Take a look at the <code>app/</code> directory to add or change tabs,
    update any existing page or create new pages.
  </p>

  <ngl-badge>Badge</ngl-badge>
  <ngl-badge type="default">Default</ngl-badge>
  <ngl-badge type="info">Info</ngl-badge>
  <ngl-badge type="success">Success</ngl-badge>
  <ngl-badge type="warning">Warning</ngl-badge>
  <ngl-badge type="error">Error</ngl-badge>

  <div class="slds-m-top--large">
    Type: <code>{{type}}</code>
    <ngl-badge [type]="type" class="slds-m-horizontal--large">Badge</ngl-badge>
    <button type="button" nglButton="neutral" (click)="change()">Change</button>
  </div>
  
</ion-content>


最後にindex.htmlの変更です。(SLDSのCSS読み込みを追加)

<!DOCTYPE html>
<html lang="en" dir="ltr">
<head>
  <meta charset="UTF-8">
  <title>Ionic</title>
  <meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no">
  <meta name="format-detection" content="telephone=no">
  <meta name="msapplication-tap-highlight" content="no">
  <link rel="stylesheet" href="https://npmcdn.com/@salesforce-ux/design-system@^2.0.2/assets/styles/salesforce-lightning-design-system.min.css">
  <link ios-href="build/css/app.ios.css" rel="stylesheet">
  <link md-href="build/css/app.md.css" rel="stylesheet">
  <link wp-href="build/css/app.wp.css" rel="stylesheet">
</head>
<body>

  <!-- This is Ionic's root component, where the app will load -->
  <ion-app></ion-app>

  <!-- cordova.js required for cordova apps -->
  <script src="cordova.js"></script>
  <!-- Polyfill needed for platforms without Promise and Collection support -->
  <script src="build/js/es6-shim.min.js"></script>
  <!-- Zone.js and Reflect-metadata  -->
  <script src="build/js/Reflect.js"></script>
  <script src="build/js/zone.js"></script>
  <!-- The bundle which is built from the app's source code -->
  <script src="build/js/app.bundle.js"></script>
</body>
</html>


これでSLDSのバッチを表示することができました。
f:id:tyoshikawa1106:20160812160051p:plain:w300


その他いろいろ試してみようと思ったのですが、ボタンコンポーネント利用時に次のエラーが発生してしまいました。
f:id:tyoshikawa1106:20160812160944p:plain


解決方法があるかは確認できませんでした。Ionic2とNG-Lightningはもしかすると相性がよくないかもしれません。


とりあえず今回試してみた結果はこんな感じです。Ionic2との組み合わせがうまくいったらいいなと思ったのですが、ちょっと簡単にはできそうにありませんでした。

SFDC:emptyRecycleBinでゴミ箱のレコードを削除

$
0
0

Salesforceのゴミ箱からレコードを削除したい場合、ApexのDabase Classにある『emptyRecycleBin』で削除することができます。
f:id:tyoshikawa1106:20160812223737p:plain


利用方法はこんな感じ。ゴミ箱のレコードを取得したい場合は『ALL ROWS』を利用します。

Map<Id,Account>accMap = new Map<Id,Account>([Select id.name from Account where Type='xyz value' ALL ROWS]);
List<ID> accIds = new List<Id>(accmap.keyset());// Getting correct Ids 
Database.emptyRecycleBin(accIds);


SFDC:LEXのレコードページと活動の登録機能について

$
0
0

Lightning Experienceにはレコードページから素早く活動を登録できる機能がついています。
f:id:tyoshikawa1106:20160813061440p:plain


この活動登録機能ですが、活動が許可されたオブジェクトなら必ず表示される機能だと思っていました。App Builderでも特にカスタマイズできるコンポーネントではありません。
f:id:tyoshikawa1106:20160813061644p:plain


ですがこの活動機能をカスタマイズする方法がきちんと用意されていました。この活動登録はパブリッシャーアクションとして扱われています。
f:id:tyoshikawa1106:20160813061845p:plain


なので次のようにパブリッシャーアクションから除外すると
f:id:tyoshikawa1106:20160813061948p:plain


活動の入力ボックスを非表示にできます。
f:id:tyoshikawa1106:20160813062116p:plain


このように新規行動・新規ToDo・活動の記録の3つの機能から必要な機能のみ選択して表示させるといった使い方が可能となっていました。(もし右側の活動コンポーネント自体を除外したい場合はAppBuilderでカスタマイズできます。)


LEXのレコードページと活動の登録機能についてはこんな仕組みとなっています。

SFDC:レコードIDの15桁表現と18桁表現の検証

$
0
0

SalesforceのレコードIDには大文字/小文字を区別する15桁の形式と、大文字/小文字を区別できない外部システムとの連携用に用意された18桁の形式が用意されています。


15桁のレコードIDはレコード詳細ページのURLなどで確認できます。
f:id:tyoshikawa1106:20160813065722p:plain


18桁のレコードIDはApexのSOQLクエリで取得したときに確認できます。
f:id:tyoshikawa1106:20160813070014p:plain


このレコードIDの桁数について、項目自動更新やプロセスビルダー、Apexトリガやレポート、数式で扱うときにどのように扱われるかというのをまとめてみようと思います。

レポートから参照したとき

まずはレポートからレコードIDを表示させたときです。この場合は15桁のIDが表示されました。
f:id:tyoshikawa1106:20160813070710p:plain


レポートのエクスポート機能で取得したIDは15桁表示となります。
f:id:tyoshikawa1106:20160813070854p:plain

数式で参照したとき

数式で取得した場合です。
f:id:tyoshikawa1106:20160813071127p:plain


これは通常15桁の形式で表示されます。
f:id:tyoshikawa1106:20160813071204p:plain


数式には『CASESAFEID』という関数が用意されています。これを利用することで18桁に変換することが可能です。
f:id:tyoshikawa1106:20160813071415p:plain


先ほどのレポートからエクスポートしたときに18桁に変換したい場合は数式で対応する方法があります。
f:id:tyoshikawa1106:20160813071456p:plain

ワークフロールールの項目自動更新でセット

ワークフロールールの項目自動更新でセットした場合です。
f:id:tyoshikawa1106:20160813072014p:plain


これも通常は15桁で扱われます。
f:id:tyoshikawa1106:20160813072109p:plain


ですが項目自動更新では数式と同じ関数が利用できるので『CASESAFEID』を使って18桁に変換することも可能です。
f:id:tyoshikawa1106:20160813072249p:plain

f:id:tyoshikawa1106:20160813072327p:plain

Apexでセット

それではApex経由でセットした場合についてです。今回は開発者コンソールからApexを実行して検証してみます。

Apexで扱うときは以下の形式が考えられます。

  • sObject型
  • String型
  • ID型


開発者コンソールから次の処理を実行して確認してみました。

Sample__c s = [SELECT Id,Name FROM Sample__c LIMIT 1];

String recordIdForString =  s.Id;
Id recordIdForId =  s.Id;

System.debug('レコードID (sObject型) = ' + s.Id);
System.debug('レコードID (String型) = ' + recordIdForString);
System.debug('レコードID (ID型) = ' + recordIdForId);


どれも18桁として扱われました。
f:id:tyoshikawa1106:20160813073446p:plain


ApexトリガなどでレコードIDを差し込んだ時は通常は18桁として扱われます。もし15桁に変換したい場合はString型の変数にセットする際にSubStringを使って対応すれば変更できます。
f:id:tyoshikawa1106:20160813073632p:plain



このあたりの詳細はSalesforce Developer Blogにまとめられています。

プロセスビルダー

プロセスビルダーから更新する場合です。ワークフロールールと同じと思われますが、実際に試してみると結果が違ったりする可能性もあるのできちんと確認してみました。


検証してみた結果ですが、プロセスビルダーでもCASESAFEID関数を利用することができました。これで状況に応じて15桁と18桁のどちらをセットするか選択できました。
f:id:tyoshikawa1106:20160813074433p:plain

まとめ

Apexは通常18桁で扱われますがSubStringなどで15桁に変換することが可能です。ワークフロールールやプロセスビルダー、数式は通常15桁で扱われ、CASESAFEID関数を使って18桁に変換することができます。


レポートの場合は15桁で扱われ、エクスポートしたときも15桁だったのでデータ連携などでそのまま利用するときは注意が必要そうです。


15桁と18桁どちらに合わせるか悩みどころですが、基本的には18桁で扱うようにした方が安心だと思われます。


最後にCASESAFEID関数ですが、コンパイルサイズが大きいという注意点があるそうです。

たいていのことは、「気合い」と「根性」で乗り越えられるものだ!!:【salesforce】idを18桁にするCASESAFEIDについてだゼイ。


あまり複雑な数式をつくるとコンパイルサイズの上限エラーで困ったことになるケースも多々あるのでこのあたりの制限があることは意識しておいた方が良いと思います。(数式から他の数式を参照した場合など)

Heroku:create-react-app-buildpackを試してみました

$
0
0

React開発の雛形を用意できるcreate-react-appコマンドですが、これで生成したファイルをHerokuに簡単にデプロイできるcreate-react-app-buildpackについての記事が公開されていました。

使い方

アプリの生成からHerokuデプロイまでに実行するコマンドです。

$ npm install -g create-react-app
$ create-react-app my-app
$ cd my-app
$ git init
$ heroku create -b https://github.com/mars/create-react-app-buildpack.git
$ git add .
$ git commit -m "react-create-app on Heroku"
$ git push heroku master
$ heroku open

Step1.アプリの起動まで

create-react-appコマンドを実行できるようにインストールします。(初回だけ)

$ npm install -g create-react-app


アプリの雛形ファイルを生成してディレクトリを移動します。

$ create-react-app my-app
$ cd my-app

f:id:tyoshikawa1106:20160817085734p:plain


次のコマンドを実行するとlocalhost:3000でアプリを動かすことができます。

$ npm start

f:id:tyoshikawa1106:20160817085901p:plain

Step2. gitコミットとHerokuデプロイ

まずは.gitファイルを生成します。

$ git init


Herokuアプリを作成します。-bオプションとURLを指定することでビルドパックを利用できるみたいです。

$ heroku create -b https://github.com/mars/create-react-app-buildpack.git

f:id:tyoshikawa1106:20160817090201p:plain


GitコミットしてからHerokuにデプロイします。

$ git add .
$ git commit -m "react-create-app on Heroku"
$ git push heroku master


エラーになっていなければ次のコマンドでHerokuアプリにアクセスできます。

$ heroku open

f:id:tyoshikawa1106:20160817090501p:plain


すごく簡単にHerokuへのデプロイを行うことができました。以前、create-react-appコマンドについて使い方を確認した際に、buildフォルダ内のファイルだけをデプロイするようにして対応していました。


create-react-app-buildpackを使うことでその辺りの手順がすごく楽になったと思います。

2回目以降のデプロイについて

初回デプロイは-bオプションをつかってデプロイを実行しました。二回目以降のデプロイはどうなるかも確認してみました。


まず、画面の表示を一部変更してみます。
f:id:tyoshikawa1106:20160817091620p:plain


次のコマンドを実行してコミットとHerokuへのデプロイを実行します。

$ git status
$ git add .
$ git commit -m "commit"
$ git push heroku master


実行後にHerokuアプリにアクセスしてみると変更結果が反映されていました。
f:id:tyoshikawa1106:20160817091919p:plain


『$ npm run build』コマンドでビルドしてからでないとデプロイできないかなと思ったりもしたのですが、create-react-app-buildpackを利用すればそのあたりの手順も省略することができました。

Heroku Createコマンドでアプリ名を指定

  • bオプションを指定する際に、アプリ名も指定できるかについても確認してみました。
$ heroku create tyoshikawa1106-react-buildpack -b https://github.com/mars/create-react-app-buildpack.git

f:id:tyoshikawa1106:20160817092509p:plain


特にエラーもなく正常に実行できました。
f:id:tyoshikawa1106:20160817092741p:plain

create-react-app-buildpackの使い方ドキュメント

より詳しい使い方についてですが、GitHubに使い方がまとめられているみたいです。


例えばカスタマイズの方法についても紹介されていました。create-react-appで生成したときデフォルト設定ではbuildディレクトリにビルド後のファイルが生成されます。このディレクトリ構成を変更したい場合はstatic.jsonファイルを用意してそこに設定情報を記載することでカスタマイズできるみたいです。
f:id:tyoshikawa1106:20160817091245p:plain


create-react-app-buildpackを試してみた結果はこんな感じです。便利なcreate-react-appコマンドですが、Herokuに簡単にデプロイできるようになってより使いやすい環境を用意できるようになったと思います。

SFDC:Salesforce もくもく会 #11 に参加しました

$
0
0

8月19日にTokyo Salesforce Developer Group主催のもくもく会 #11 に参加しました。

f:id:tyoshikawa1106:20160819185823j:plain


今回はSalesforce Marketing CloudのSocial StudioについてLTをやらせてもらいました。Marketing CloudはDeveloper Edtionが用意されていないので、普段はあまり触れる機会が無い製品だと思います。少し前に運良くSocial Studioを触ることができる機会を手にすることがてきたので、どのような使い方ができるのか調べてみてLTをやりました。

f:id:tyoshikawa1106:20160819190342j:plain:w400

f:id:tyoshikawa1106:20160820145637j:plain:w400


LTで使ったスライドはこちらです。


TwitterやFacebookなどのソーシャルメディアを活用している企業で活躍してくれる製品だと思います。

もくもく会でやったこと

ちょっとうまく行かなくて困っている問題について他の開発者の人たちに相談に乗ってもらいました。


その中の1つがGit Cloneで取得したコードとMavensMateの紐付けについてです。自分で調べた手順だとgit fetchやgit resetコマンドを実行する必要があったのでそこをよりシンプルにやる方法が無いか聞いてみました。

以前調べた方法

Git CloneからSalesforceプロジェクトを準備する手順

以下の手順で簡単に対応できたみたいです。

1. Git Cloneでコードを取得

Git Cloneでコードの取得します。この時点ではMavensMateの設定ファイルが存在しない状態となっています。
f:id:tyoshikawa1106:20160820152021p:plain

2. Create Mavens Mate Projectで設定ファイルの作成

プロジェクトのフォルダで右クリックするとMavensMateメニュー内に『Create MavensMate Project..』が存在します。
f:id:tyoshikawa1106:20160820152350p:plain


『Create MavensMate Project..』を選択するとMavensMateのプロジェクト作成画面が表示されます。プロジェクト名にはフォルダ名が自動でセットされましたが、あとはいつもどおりユーザ名とパスワードを入力してプロジェクトを作成できます。
f:id:tyoshikawa1106:20160820152801p:plain


作成したプロジェクトは指定したワークスペース先に生成されるのだけ意識しておくと良いと思います。これでGit CloneしたコードにMavensMateの設定ファイルを追加することができました。
f:id:tyoshikawa1106:20160820153037p:plain


.gitファイルなども反映されるようになっています。git logコマンドを試してみたところ正しく実行できました。
f:id:tyoshikawa1106:20160820153358p:plain


この流れでGit Cloneで取得したコードにMavensMateの設定ファイルを追加することができました。git fetchやgit resetコマンドの実行も不要になりシンプルな手順になったと思います。


今回のもくもく会でやったことはこんな感じです。他にもいろいろな話が聞けたりして楽しかったです。


SFDC:積み上げ集計項目の条件指定と数式項目

$
0
0

DiscussionForumを見ていて積み上げ集計項目の条件指定で数式項目は利用できたっけと思い、ちょっと確認してみました。


雑ですが数式項目を用意して・・・
f:id:tyoshikawa1106:20160823103809p:plain


積み上げ集計項目を作成すると・・・数式項目は指定することができました。
f:id:tyoshikawa1106:20160823103136p:plain


ただ値の指定は固定値になるので親レコードの特定の項目と一致という条件までは設定できなさそうです。

SFDC:静的リソースへのデプロイで試してみたこと

$
0
0

gulp-jsforce-deploy』をつかって静的リソースへのデプロイを行う方法を覚えたので実際にそれを使った開発を試してみました。


環境構築方法はこんな感じです。

SFDC:Salesforce Development 2016 - Part 1 - tyoshikawa1106のブログ


プロジェクトのファイル構成はこんな感じになっています。
f:id:tyoshikawa1106:20160823110714p:plain


devstaticresourcesフォルダで『.resource』形式に変換する前のファイルを管理しています。(ここでJSやCSSを開発)
f:id:tyoshikawa1106:20160823110934p:plain


staticresourcesフォルダで『.resource』形式に変換後のファイルを管理します。この中にあるファイルをSalesforce組織の静的リソースにデプロイします。
f:id:tyoshikawa1106:20160823111135p:plain


静的リソースでデプロイ後はこんな感じ。
f:id:tyoshikawa1106:20160823111319p:plain


gulp-jsforce-deployを使えば次のコマンドでpkgフォルダ内のファイルをSalesforce組織にデプロイできます。

$ foreman run gulp deploy


静的リソースへのデプロイもこれで対応できたのですが、基本的にstaticresourceフォルダ内のファイルがすべてデプロイされます。デプロイ対象はpackage.xmlで対象を指定することで制御できますが、毎回変更するのは少し面倒だなと思いました。
f:id:tyoshikawa1106:20160823111923p:plain


また、package.xmlをデプロイ時に毎回変更する場合はコミット時に前回作業者が指定したファイル名で更新されてしまいます。.gitignoreで管理対象外に指定する方法も考えられますが、それも少し面倒かなと思いました。


ということでpackage.xmlで管理する以外の方法を考えてみました。


今回試してみたのは.resource形式に変換する箇所を制御する方法です。devstaticresourcesフォルダ内でJSファイルやCSSファイルを開発して、作業後に.resource形式に変換してstaticresourcesフォルダに格納していたので、.resource形式に変換する対象を制御することで、package.xmlを変更せずにデプロイ対象を制御できると思います。


.resource形式への変換はGulpをつかって行っています。gulpfile.jsの処理内で対象のファイル名を指定する方法を思いついたのですが、直接指定する方法だと、コミット時に前回作業者が指定したファイル名が残ってしまうのがイマイチでした。(.gitginoreで除外するもの少しイマイチ...)


そこで『foreman』をつかった方法を試してみました。『foreman』を利用すればgulpの処理内でも『.env』ファイルの値を参照できるようになります。gulp-jsforce-deployが使っている方法を参考にしました。

f:id:tyoshikawa1106:20160823114029p:plain


.envファイルはこんな感じ。カンマ区切りで複数のファイルを指定できます。
f:id:tyoshikawa1106:20160823114155p:plain


.envファイルはgitのリポジトリで管理する必要が無いので、前回作業者が指定したファイル名が残ることがありません。また、作業前に毎回自分で用意する必要があるので、うっかり他のファイル名を指定してデプロイしてしまうトラブルも回避できると思います。


staticresourcesフォルダ内のファイルはすべてデプロイ対象となるので、pkg/staticresources のファイルはGitリポジトリから除外するようにしました。これで作業対象外のファイルがデプロイされることを回避できると思います。
f:id:tyoshikawa1106:20160823114542p:plain


staticresourcesもGitのバージョン管理をした方がいいと思いますが、これはsrcフォルダ側で管理すればいいと思います。


foremanと.envファイルを利用することでこんな感じで静的リソースデプロイの仕組みを用意できました。

SFDC:force exportとGit管理の対象ファイル

$
0
0

Salesforceの標準カスタマイズの情報はForce.com CLIを利用すると簡単にエクスポートできます。オブジェクトやページレイアウト、カスタム表示ラベルなど、ほぼすべての情報を取得できるはずです。
f:id:tyoshikawa1106:20160823122737p:plain


force exportコマンドを実行するだけでエクスポートできますが、このときに、ページ、クラス、トリガ、静的リソースも一緒にエクスポートされます。ですが、ページやクラスなどはsrcフォルダ側で管理していることが多いと思います。このままだと2重でバージョン管理することになってしまうので、gitignoreで管理対象外にしてしまう方が良さそうかなと思いました。
f:id:tyoshikawa1106:20160823122224p:plain


最初、package.xmlで制御してしまおうかと考えたのですが、force exportコマンド実行時にはpackage.xmlの内容に関係無く全てのファイルがエクスポートされるみたいです。


この方法ではpagesフォルダやclassesフォルダのエクポート自体は行われてしまいますが、それでもGitリポジトリ側にコミットされることは無いので差分として扱われずに済むと思います。


これでページやクラスなどの開発コードはsrcフォルダ側でバージョン管理してそれ以外の標準カスタマイズ情報はmetadataフォルダで管理するという運用ができるとかなと思います。

関連記事

SFDC:Search The Force.comを試してみました

$
0
0

Salesforceの情報を検索できる『Search The Force.com』というサイトが公開されています。



利用画面はこんな感じです。
f:id:tyoshikawa1106:20160823120121p:plain


例えば『apex』と入力すると検索候補が表示されます。
f:id:tyoshikawa1106:20160823120237p:plain


検索結果はこんな感じです。
f:id:tyoshikawa1106:20160823120307p:plain


エゴサーチしてみるとこんな感じでした。
f:id:tyoshikawa1106:20160823120422p:plain


Salesforce関係の検索をしたいときは便利そうです。

SFDC:Trailhead - Dreamforce & Beyond (2016版)

$
0
0

TrailheadにDreamforceについてのモジュールが公開されています。
f:id:tyoshikawa1106:20160824113657p:plain

Get to Know the Dreamforce Campus Unit | Salesforce Trailhead

Get to Know the Dreamforce Campus

  • セッション、展示会、および他のイベントが配置されている場所
  • Dreamforceのキャンパスを回避するための最も効率的な方法
  • クラウドエキスポとSalesforceのキャンプ場で見つけること
  • Dreamfestについて

Dreamforceキャンパス

イベント、セッション、またはエリアの焦点 ロケーション
IT、開発者、管理者、およびトレイルヘッドゾーンモスコーンウェスト
マーケティングパレスホテル
クラウドエキスポとSalesforceのキャンプ場モスコーニ南
基調講演とDreamtalksモスコーニ・ノース、モスコーンウェスト、およびイエルバ・ブエナ・シアター
セールス、サービス、およびSMBマリオットマーキスホテル
ハンズオントレーニング、認定、およびSalesforceの大学ヒルトンホテル
Salesforce.org、非営利団体、および高等教育セントフランシスホテル
産業インターコンチネンタルホテル
パートナーズパークセントラルホテル

Cloud Expo

Salesforceのエコシステムを体験できる

サンフランシスコの食事スポット

Dreamfest

Dreamfestは信じられないほどのライブ音楽、料理、飲み物のパーティー。

Make the Most of Your Time at Dreamforce

  • Dreamforceの参加者、パートナー、およびSalesforceの従業員とのネットワーク。
  • Dreamforceイベントの異なるタイプの利点を理解します。
  • Dreamforceで恩返しするためのさまざまな方法を知っています。
  • Dreamforce中に健康を維持。
  • Dreamforce後の成功のために自分自身を設定します。

Salesforce LIVE

基調講演スペシャルゲスト

  • メリンダ・ゲイツ(共同議長、ビル&メリンダ・ゲイツ財団)
  • デボラ・デュガン(最高経営責任者(CEO)、[RED])
  • ビリー・ジーン・キング(スポーツアイコンと人道)
  • パトリシア・アークエット(アカデミー賞受賞者と活動家)
  • トニー・ロビンス(生活とビジネス戦略家)
  • キャプテンマーク・ケリー(宇宙飛行士、NASA)
  • キャプテン・スコット・ケリー(宇宙飛行士、NASA)
  • ダニエル・ゴールマン(著、心理学者、科学ジャーナリスト)
  • ラリー・ブリリアント、MD MPHのDSC(議長、スコールグローバル脅威基金)

Dreamforceハッシュタグ

#DF16

新しいイベント

Dreamtalksでインスピレーションスピーカーとの25分の会話

Dreamforceのセッション待ち時間

会場に入るまでに列ができたときの対応

  • 待っている間に友達を作る。行がネットワークに大きなチャンスです!あなたは、同じイベントで...あなたが持っている必要があり、同じもののためのラインにいる何か共通点が。製作に潜在的な親友!
  • 次のセッションを研究しています。何をしているあなたはラインで待っていますか?セッションのトピックのより良い理解を得るためにあなたのスマートフォンを使用してください。
  • スナック。それはDreamforceのような多忙なイベントの間に食べることを忘れがちです。行は、あなたがかまを持っているし、あなたのエネルギーアップするのに最適な時間です。

Extend Your Dreamforce Experience

  • 効果的にあなたの会社内のあなたのDreamforceの経験を共有しています。
  • セッションのプレゼンテーションの録画を検索します。
  • 継続的な学習のための踏み台としてDreamforceを使用してください。

あなたが学んだことを共有します

Chatterやブログ、開発者コミュニティなどで共有しましょう。

Viewing all 1438 articles
Browse latest View live


<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>