tyoshikawa1106のブログ

- Force.com Developer Blog -

SFDC:Dreamforce2018に参加しました - Day 0

2018年9月25日(火)〜9月29日(金)までの5日間開催されるDreamforce2018に参加しました。9月24日(月)の17:00の便で成田空港を出発して同じく24日(月)の11:00頃にサンフランシスコ空港に到着しました。日本からサンフランシスコは時差の関係で9時間過去時刻に戻ります。

f:id:tyoshikawa1106:20180924141332j:plain:w300


出発前に少し焦ったのがGlobal WiFiのカウンターが今まで南ウイングにあったのですが今回は北ウイングに移動していました。南ウイングは改修工事中?みたいです。
f:id:tyoshikawa1106:20180924135620j:plain:w300


去年、後先考えずにネットにバンバン接続したところ最終日までもたずに上限まで使い切るという失敗をしてしまったのですが、今回もそんなことになってしまったときのために使い切った場合に追加購入可能なのか聞いてみました。一応専用の問い合わせ先がありそこで一日分1GBの追加手続きができるみたいです。連絡先はWiFi一式の中に書類が用意されていました。本当に困ったときには連絡してみようと思います。


航空会社はANAを利用しました。少し料金は高めだと思いますが快適な時間を過ごすことができました。
f:id:tyoshikawa1106:20180924101917j:plain:w300


機内ですが到着後にスムーズに審査を進めるために税関申告書類を記載します。なのでボールペンは手荷物として用意しておいたほうが便利だと思います。あとはパスポートの番号と宿泊するホテルの名前と住所をメモしておくと慌てなくて済むと思います。


サンフランシスコ到着後に少し苦労する入国手続きですが、今回は専用の機械で指紋登録や写真撮影を行うことができ、スムーズに手続きを済ますことができました。機械の使い方に慣れればもっと短時間で済ませられそうでした。
f:id:tyoshikawa1106:20180924110053j:plain:w300


サンフランシスコの空港ですが無料のWiFiが用意されています。レンタルWiFiの初期設定が済んだら、空港のWiFiに切り替えてナビの確認等をやったほうが利用料の節約になりそうです。空港にはStarbucksもあるのでちょっと寄ってみました。
f:id:tyoshikawa1106:20180924113616j:plain:w300


空港から市内へはBARTを利用しました。
f:id:tyoshikawa1106:20180924115343j:plain:w300

f:id:tyoshikawa1106:20180924124022j:plain:w300

f:id:tyoshikawa1106:20180924121159j:plain:w300

チケット購入の機械の使い方に慣れないため紙のチケットを買おうとしてICカードを間違えて購入してしまいました。Clipper Cardというらしいです。3ドルの追加料金が発生してました。利用してみて思ったのですが、紙のチケットよりも丈夫で使いやすかったので結果オーライな感じでした。
f:id:tyoshikawa1106:20180924120248j:plain:w300


BARTではPowell駅まで移動しました。会場のモスコーニセンターはパウエルの駅から歩いてすぐの場所にあります。
f:id:tyoshikawa1106:20180924124046j:plain:w300


パウエル駅をでたところの建物の雰囲気とかはけっこうお気に入りになりました。
f:id:tyoshikawa1106:20180924124426j:plain:w300

f:id:tyoshikawa1106:20180924124534j:plain:w300

f:id:tyoshikawa1106:20180924124539j:plain:w300

f:id:tyoshikawa1106:20180924124817j:plain:w300


会場のモスコーニウエスト周辺はこんな感じ。盛り上がってました。
f:id:tyoshikawa1106:20180924125513j:plain:w300

f:id:tyoshikawa1106:20180924125707j:plain:w300

f:id:tyoshikawa1106:20180924125725j:plain:w300

f:id:tyoshikawa1106:20180924125820j:plain:w300


カウンターに行って手続きを済ませると参加者バッチが配布されます。事前にメールでQRコードが送られてくるのでパスポートと一緒に見せられるようにしておくのが良いみたいです。

f:id:tyoshikawa1106:20180924131102j:plain:w300


この参加者バッチの手続きでいつも小さなトラブルに遭遇している気がするのですが、今回は名前と一緒にホテル名の入力が必要になりました。宿泊予定のホテルが選択リストに表示されていなくて手続きがうまくできませんでした。受付の人にあっちのカウンターで相談してみて下さいと言われて知ったのですがOtherという選択肢が用意されていました。(当たり前の選択肢なのに気づかなかった。。) Otherを選ぶと手入力でホテル名を入力できます。これで手続きが完了しました。


注意事項としてバッジ紛失した場合は再発行に150ドルかかりますと説明がありました。なくさないと思うので気にしてなかったのですが、よく考えるとけっこう高めの金額となっています。


会場では海外のSalesforce MVPのRakeshさんに会うことができ、記念撮影してもらえました。
f:id:tyoshikawa1106:20180924131532j:plain:w300



参加者バッジをもらった後は参加者"バッグ"をもらいに行きます。
f:id:tyoshikawa1106:20180924133023j:plain:w300

f:id:tyoshikawa1106:20180924133149j:plain:w300

f:id:tyoshikawa1106:20180924133515j:plain:w300


無事にバッグと水筒を受け取りました。
f:id:tyoshikawa1106:20180924133620j:plain:w300

f:id:tyoshikawa1106:20180924133658j:plain:w300


水筒はこちらのアプリと組み合わせてちょっとしたイベントを行うみたいです。

Fill it Forward

Fill it Forward

  • Green Menu Inc.
  • ライフスタイル
  • 無料


この後は他の日本から参加している方に誘ってもらってランチに行きました。モスコーニセンターすぐ近くのMetreonで待ち合わせしてSuper Duper Burgersというお店のハンバーガーを食べに行きました。おいしかったです。
f:id:tyoshikawa1106:20180924141029j:plain:w300



15:30頃に宿泊予定のホテルに向かいチェックインを済ませました。
f:id:tyoshikawa1106:20180924154620j:plain:w300


ホテルで休憩後、17:00頃に最近新しくオープンしたSalesforce Parkを観に行きました。Salesforce Tower近くにある誰でも入れる公園です。サンフランシスコの日没は19:00頃で17:00から18:00はまだ空が明るかったです。

f:id:tyoshikawa1106:20180924173906j:plain:w300


Salesforce Parkはこちらの建物の屋上にありました。
f:id:tyoshikawa1106:20180924180239j:plain:w300


特別何か面白いものがあるわけではなかったのですが、散歩コースにちょうど良さそうな広さでした。
f:id:tyoshikawa1106:20180924180531j:plain:w300

f:id:tyoshikawa1106:20180924180652j:plain:w300

f:id:tyoshikawa1106:20180924181311j:plain:w300

f:id:tyoshikawa1106:20180924183243j:plain:w300

f:id:tyoshikawa1106:20180924183422j:plain:w300

f:id:tyoshikawa1106:20180924180943j:plain:w300

f:id:tyoshikawa1106:20180924184337j:plain:w300



近くのSalesforceオフィスはこんな感じ。
f:id:tyoshikawa1106:20180924175708j:plain:w300

f:id:tyoshikawa1106:20180924175538j:plain:w300

f:id:tyoshikawa1106:20180924175852j:plain:w300



最後に夜の時間はエンバーカデロへ行ってみました。19:00ごろ、空は明るかったのですがお店はクローズする時間みたいです。目的のブルーボトルコーヒーは19時以降もオープンしてみました。

f:id:tyoshikawa1106:20180924185751j:plain:w300

f:id:tyoshikawa1106:20180924190222j:plain:w300

f:id:tyoshikawa1106:20180924191014j:plain:w300


エンバーカデロ周辺は夜景が綺麗なスポットが多かったです。
f:id:tyoshikawa1106:20180924193957j:plain:w300

f:id:tyoshikawa1106:20180924194230j:plain:w300

f:id:tyoshikawa1106:20180924194708j:plain:w300

f:id:tyoshikawa1106:20180924195139j:plain:w300

f:id:tyoshikawa1106:20180924200649j:plain:w300

f:id:tyoshikawa1106:20180924204318j:plain:w300

f:id:tyoshikawa1106:20180924204322j:plain:w300

f:id:tyoshikawa1106:20180924204756j:plain:w300

Memo:ホテルのWiFiにiPhoneで接続できなかったときの対応方法

宿泊しているホテルで無料WiFiが利用できたのですが、iPhoneで接続できなくてハマってしまったのでそのときの状況と解決方法のメモです。

状況
  1. WiFiのNetwork NameとPasswordの紙をもらう
  2. iPhoneで接続。なぜかPasswordを入力する場所が無い
  3. WiFiアイコンは表示されていてパッと見、接続できてそうだが、ネットに接続するとアクセス不可になる
  4. iPadで試す。Network Nameを選択するとWebブラウザが立ち上がりPasswordを入力できた。
  5. iPadは問題なくネットに接続できた。iPhoneではWebブラウザも立ち上がらない。


ざっくりこんな感じの状況でした。iPhoneの再起動やネットワークの再選択など試したのですが解決せず・・・。


で検索したところ下記の情報がヒットしました。
f:id:tyoshikawa1106:20180925165555p:plain

https://discussions.apple.com/thread/4507909


WiFiつないでPasswordの入力ページに移動しなかったときは自分でWebブラウザを起動して(今回はSafariを使用)、下記のURLを直接指定します。

www.apple.com


これでPasswordの登録画面があっさり表示されました。ブックマークやページの更新は試していたのですが、そちらでは解決せずURLの直接指定で解決ました。今回はiPhoneで駄目でiPadは問題なかったのですが、状況によっては逆のパターンもあるかもしれません。ちなみにMacBookはWiFiを選択したらわかりやすくPassword入力ポップアップが表示されて特に問題なく接続できました。

SFDC:Inside Dreamforce '18 Video

YoutubeでInside Dreamforce '18の動画リストが公開されていました。
f:id:tyoshikawa1106:20180923215403p:plain

Inside Dreamforce '18


下記のような動画がまとめられている再生リストです。

Inside Dreamforce '18: SWAG

Inside Dreamforce '18: DREAMOJI

Inside Dreamforce '18: The Heart of Dreamforce: The Campground


Inside Dreamforce '18: The Salesforce Events App

www.youtube.com

SFDC:レポートの検索条件にログインユーザの情報を動的に設定する方法

レポートの検索条件には$User.EmployeeNumberというようなグローバル変数を指定することはできません。こうした条件指定を行いたい場合は数式項目でフラグを用意する方法での対応が必要になります。

f:id:tyoshikawa1106:20180922131056p:plain

IF(EmployeeNumber__c = $User.EmployeeNumber ,true , false)


これでログインユーザの従業員番号情報と一致する従業員番号を持つデータを判別するといったことが可能になります。
f:id:tyoshikawa1106:20180922131153p:plain


f:id:tyoshikawa1106:20180922131253p:plain


動的に絞り込みたい条件分数式項目が必要になりますがこの方法で動的な条件指定が可能になります。詳細はこちらのヘルプにまとめられていました。


またURLパラメータをつかった絞り込みを行う方法があります。ClassicとLightning Experienceでパラメータの指定方法が異なるので設定の際には注意が必要ですが状況に応じて活用できそうです。

Lightning Experience での URL パラメータを介したレポートの絞り込み

SFDC:Dreamforce2018 - Contact usで問い合わせ

Dreamforce2018の登録情報で困ったことがあったのでContact usから問い合わせしてみました。ログイン後のMy INFOのメニューからアクセスできます。

f:id:tyoshikawa1106:20180922115356p:plain


f:id:tyoshikawa1106:20180922115513p:plain


Contact usのリンクをクリックすると表示される問い合わせフォームはこんな感じでした。氏名、メールアドレスとDreamforceの登録番号が必要になります。

f:id:tyoshikawa1106:20180922120012p:plain:w300


また問い合わせ内容によってTopicがわかれていました。

f:id:tyoshikawa1106:20180922115754p:plain:w300


問い合わせフォームに質問を入力すると登録完了の通知メールが来ます。数日後にサポート担当の方から回答メールが届く流れでした。

今回質問したこと

Dreamforceの参加登録を6月に行ったのですが8月から別の職場で勤務することになったので参加申込時に登録した会社名を変更する必要がありました。登録情報の変更ページを見ても会社名の変更ができないようになっていたので問い合わせフォームから相談しました。


ちなみに登録時にSalesforceアカウントで認証が必要になるのですがそちらはDeveloper Edtionのアカウントで登録していたので特に影響はありませんでした。

やりとりの流れ

「勤務先が変わったので登録した会社名を次の会社名にに変更したいです」
  ↓
「会社名の変更ですね。登録情報を確認したところ個人組織のアカウントで登録されているみたいです。ご希望の会社名に変更する場合はその会社の組織で認証登録が必要です。」
  ↓
「前の会社の名前のままにはできないので、別の内容に変更できませんか?」
  ↓
「Independent (独立/自営)への変更なら可能です。変更が適用されるのは3から5営業日です。」
  ↓
「ありがとうございます。お願いします。」


・・・という感じでやりとりが進み無事に会社名の登録情報が更新されました。参加登録時には会社名のチェックはそれほど厳しくありませんが、変更の場合は認証時のSalesforceアカウントでチェックが入るみたいです。


後は変更後の登録情報で改めてDreamforceの登録通知メールも届くようになっていました。そちらで正しく変更されているかを確認できました。


2019年以降のDraemforce参加登録後に困ったことがあれば同じようにContact usのような問い合わせページが用意されていると思います。サポート担当の方とのやりとりは英語になりますがGoogle翻訳レベルでも特に問題なくやりとりできました。

SFDC:Name項目のデータ型選択について

SalesforceオブジェクトのName項目とデータ型選択についてです。

f:id:tyoshikawa1106:20180919062825p:plain


Name項目はレコード作成の際に必須となる項目で、「テキスト型」と「自動採番型」の2種類から選択できます。
f:id:tyoshikawa1106:20180919062628p:plain


テキスト型は値を自由に入力したい場合に使用します。取引先名や商談名とよく目にする使われ方をしているデータ型です。
f:id:tyoshikawa1106:20180919063105p:plain


もう一つの自動採番型はデータ登録後に自動で値を生成してくれるデータ型です。重複しないユニークな値が生成されるので申請や請求などを管理するオブジェクトで利用できます。
f:id:tyoshikawa1106:20180919063358p:plain


f:id:tyoshikawa1106:20180919063431p:plain


自動採番型は指定した文字列を表示できるプレフィックスの機能も用意されています。文字数の上限がありプレフィックスが利用できる文字数も決まっているので長い値にしたい場合は注意が必要です。
f:id:tyoshikawa1106:20180919063739p:plain


プレフィックスの機能で「2018-01-01-00001」というように本日日付+自動採番された値という組み合わせの値を生成することができます。採番で00001というように5桁用意したとしてレコード数が5桁分使い切ると0に戻るのではなく6桁目を生成します。はじめに余裕を持って桁を確保しておくのがいいと思います。

ApexとName項目のテキスト型

ApexとName項目のテキスト型の組み合わせで一つ面白い使い方ができます。
f:id:tyoshikawa1106:20180919064732p:plain


上で記載したとおりテキスト型は必須項目のため画面から未入力で保存しようとするとエラーとなります。
f:id:tyoshikawa1106:20180919064946p:plain


ですがApexから登録する場合はこのエラー判定がスキップされます。
f:id:tyoshikawa1106:20180919065021p:plain


この方法でデータを作成するとName項目にはレコードIDがセットされて登録されます。
f:id:tyoshikawa1106:20180919065154p:plain


これはカスタムオブジェクトでのみ適用される仕様で標準オブジェクトの場合はApex経由でもエラーとなります。


この仕組みを利用してApexでデータを作成してName項目にレコードIDをセットして自動採番の代わりにしようと思いつく場合があるかもしれません。ですがレコードIDをセットして管理する方法は下記の問題が発生します。

ユーザが自由に編集可能

テキスト型のためユーザが自由に値を書き換えることが可能です。Name項目 = レコードIDというルールは保証されなくなります。もしもレコードIDを見える位置に表示したい場合は数式項目を用意した方が確実です。
f:id:tyoshikawa1106:20180919065902p:plain

重複可能

テキスト型はユニークチェックは実行されないため同じ値のデータを作成することが可能です。そのため自動採番の代わりとして運用しようとすると思わぬトラブルが発生します。Apexを経由して作成する前提のオブジェクトと考えたとしてもこうしたデータを作成できてしまう時点で品質が低下していまいます。
f:id:tyoshikawa1106:20180919070200p:plain

手作成によるデータ登録時の問題

Apexでの作成が前提としたルールがあったとしても状況に応じてどうしても手作業で新規データ登録を行う場面が出てくると思います。仮にBeforeトリガを用意して保存後に値を入れ直す処理を実装したとしてもユーザは一度何かしらの値を入力する必要があるため無用な混乱を招いてしまいます。
f:id:tyoshikawa1106:20180919070558p:plain


以上の理由からName項目にレコードIDをセットして自動採番の代わりにするという運用は個人的にオススメできません。無理に複雑な仕組みで運用するのではなく自動採番型で管理するのが良いと思います。

Name項目とルックアップ項目

Name項目はルックアップ項目で目立つ位置に表示されます。
f:id:tyoshikawa1106:20180919071254p:plain


自動採番された番号だと直感的に選択しにくいような用途のオブジェクトの場合はテキスト型で管理するのがいいと思います。ルックアップ検索時はName項目の他に別の項目を表示することが可能です。同じ値のデータと区別がしずらい場合はこの仕組みで判別できると思います。
f:id:tyoshikawa1106:20180919071611p:plain:w300

SFDC:LEXでも動くVisualforce開発のサンプルコードを作ってみました

Lightning Experienceでも動くVisualforce開発のサンプルコードを作ってみました。Lightning Design SystemとAngularJS 1をつかった開発のサンプルになります。

f:id:tyoshikawa1106:20180917222616p:plain

GitHub - tyoshikawa1106/apex-trailblazer-pack: Apex Trailblazer Pack

取引先検索画面

商談商品一括登録画面

VisualforceとJavascript

Visualforceの開発といえばapexタグをつかった開発ですが、2015年頃にHTML5とJavascript中心の開発が推奨されるようになりました。

f:id:tyoshikawa1106:20180917184027p:plain

f:id:tyoshikawa1106:20180917184051p:plain



2015年にはLightning Design SystemというCSSフレームワークも公開されました。独自タグを使わなくてもSalesforceのデザインに合わせた画面開発が可能になっているのでapexタグに頼らずにJavascript Remotingの仕組みで開発していくとより使いやすい画面を開発できると思います。

関連記事