KanaLog~かなさんのSalesforce関連ログ~

自称「Salesforceキャンペーン芸人」のKanaさんのSalesforceに関する活動記録です。

Salesforce Spring'20の新機能を試してみました!

この記事は Salesforce 開発者向けブログキャンペーンへのエントリー記事です。

 

久々に日本限定のキャンペーンが開催され、自称Salesforceキャンペーン芸人としては参加せざるを得ない、かなさんです。

 

この機会に、気になっていたけどまだ試せていなかった「Salesforce Spring ’20 の新機能」に挑戦してみました!

 

 ●注目の新機能「SOQLクエリの権限チェック」

「SOQL クエリの WITH SECURITY_ENFORCED を使用した項目およびオブジェクトレベル権限チェックの有効化 (正式リリース)」

Salesforce開発者のみなさまはご存知と思いますが、Apex はシステムコンテキストで実行されるため、すべてのオブジェクトと項目にアクセスできます。

そのため処理の前に実行ユーザが対象のオブジェクト、および、項目に必要な権限があるのかチェックする必要があるのですが、それが結構手間だったりします。

そのため、「 WITH SECURITY_ENFORCED」でチェックを省力化できるならと大分期待を寄せていました。

 

●検証のために行ったこと

確認用の項目を作成し、取得するSOQL(Apex)と表示用のVFを作成しました。詳細は1.~5.を参照ください。(結果だけ見たい人は次の●へ進んでください)

1.オブジェクトにカスタム項目「権限確認用項目」(C_Item_T_TestItem__c) を作成し、標準プロファイルは参照不可とした

2.Apexを作成

f:id:endoukanako:20200323000450p:plain

3.VFを作成

f:id:endoukanako:20200323000514p:plain

4.VFのカスタムタブを作成

5.アクセス権限のない、標準プロファイルユーザで動作確認

 

●結果

1.SOQLで取得する項目にアクセス権限がない項目が含まれる場合(VFの「データ取得」ボタンを押下し、ApexのgetAccountListを実行した結果)

⇒想定通り、エラーになりました。アクセス権のない項目は取得できません!

f:id:endoukanako:20200323002551p:plain

 

2.SOQLのWHERE句にアクセス権限がない項目が含まれていてる場合(VFの「データ取得2」ボタンを押下し、ApexのgetAccountList2を実行した結果)

⇒想定に反し、アクセス権のない項目で絞り込まれたデータが取得できてしまいました・・・。

f:id:endoukanako:20200323002708p:plain

 

開発ガイドに「WITH SECURITY_ENFORCED を使用できるのは、SELECT および WHERE SOQL 句に限られます」と記載があり、WHERE句では使えると思ったのですが、

英語版に切り替えてみたところWHERE句で使えるかどうか非常に怪しい感じでした(英語力のある方誰かお願いします)。

 

●まとめ

SOQLで項目およびオブジェクトのセキュリティをチェックする「WITH SECURITY_ENFORCED」は、現時点では使いどころが限られる機能であることが分かりました。

今後改良されて、将来的にはSOQLでのセキュリティチェックは「 WITH SECURITY_ENFORCED」を付けるだけでOKになってくれると良いなと思います。

Japan Dreamin'に参加してきました

2020年1月25日(日)にAbema Towersで開催された「Japan Dreamin'」に参加してきました。

www.japandreamin.com

  

イベントは朝の10時から開催されていたのですが、家の都合で朝から行くことは難しく、ランチセッションから参加しました。

5つのトラックがあり、同時に気になるセッションが行われていて、どのセッションを聞こうかかなり迷いました。

最終的に、以下のセッションと懇親会に参加しました。

 

●各セッションと懇親会の感想

・パートナーとのビジネスを広げるmy Trailhead for Partner Community

 ご飯を食べながら聞く形式のセッション。my Trailheadのコンテンツは簡単に作れるものの、クイズは選択式のみ、社員とパートナーの両方には公開できない、コンテンツは個人ごとの管理で共有が大変(Zipで固めて送る)などの弱点が判明。これからの改良が待たれるところです。

 

・【アドミン/デベロッパー向け】ハンズオンで学ぶ!テクニカルアーキテクト体験ワークショップ

 デモシナリオを基にオブジェクト構成図をまずは個人で作成し、次にペアで話し合い、最後に4人で話し合ってまとめて最終版を作成し、投稿するというワークでした。
 標準オブジェクトを使うのかカスタムオブジェトにするのか、オブジェクトの関連を主従にするのか参照にするのか、アクセス権をどうするのか、どの情報をまとめてどの情報を分けるのかなど、迷うポイントがいっぱいありました。

 この悩むポイントは実務で悩むポイントとほぼ同じなので、もっと早く決定できるようになりたいと思います。

 また、人によって同じシナリオでも出来上がる構成図が違い、その考えを聞くことで違う視点に気づくことができました。

 

・LEX Mobileから紐解くSalesforceモバイル史

 途中から聴講。昔はimodeでSalesforceモバイルを動かすAppExchangeがあったものの、画面が狭いという問題点が。
 最新のLEXモバイルではLightning ページの種類に電話ができて、より簡単にカスタマイズできるようになり、使い勝手も向上しました。

 

・これで差がつく!プレゼン資料の作り方

 あえて全くSalesforceの話をしないというセッション。昨年からプレゼン資料の作り方で悩んでいたので迷わず参加しました。

 「読むことは書かない」「スライドは説明を補足するもの」という、知ってはいるものの出来てはいない資料作りのポイントをよい資料と悪い資料の対比でとても分かりやすく説明。

 また、「フォント」「カラー」「スパン」「アニメーション」の4つのキーワードをもとにやった方が良いポイントを端的に紹介。

 更に、参加者限定の上記の内容を満たすテンプレート配布まであり、最高でした!

 これからは「あれもこれも目立たせることはなにも目立っていない事と同じである。」という名言を胸に刻んで資料作成を行おうと思います。

 

・【誰でも参加可能】Trailhead バッジソン大会!

 参加する予定はなかったのですが、気が付いたら現場に連行されていました←

 とはいえ、最近Trailheadをあまりやれておらず、バッチを取得する良い機会になりました。時間内で何とか4バッチを取得し、景品までいただきました。

 

・チームSCTBのService Cloud王は俺だ!!

 アシスタントとしての参加し、クイズを盛り上げました。

 クイズには「Enterprise Editionのライセンス料は?」といった初級問題から、「Field Service Lightningのパッケージの提供元で最近買収された会社の名前は?」というマニアックな問題まで出題されました。

 9名の熱き戦いの結果、初代クイズ王はTeamspiritの畑本さんに決定しました!

f:id:endoukanako:20200126005630j:plain

 

・Closing Keynote

「コミュニティはとても大事ですごく力がある」ということが語られました。また、参加者にも「自分にとってのコミュニティ」についてコメントが求められ、短いながらコメントさせていただきました。

コメントしたお礼として「Hootie」(Salesforce Academyのフクロウキャラクター)のぬいぐるみをいただきました!これは、そろそろアストロからHootieになるっきゃないですね。

f:id:endoukanako:20200126010004j:plain

 

・懇親会

スポンサーによるLTを聞きつつ、飲んだり食べたり話したりしながら新旧の知人と交流を深めました。

また、豪華景品をかけたクイズもあり、「サンフランシスコのohanaフロアの階数」や「ベニオフの年齢」という頻出問題もあったのですが、全く分からず。 次回に備えて調べておこうと思います。

 

●まとめ

今回も大いに楽しみ、様々な人と交流することができました。

次回はそろそろ賑やかしからスピーカーやボランティアにシフトしていきたいと思っていたり。

では、またどこかのイベントか来年のJapan Dreamin'で会いましょう!

VS Code Meetup #2 - Live Share編に参加してきました

2020/01/23(木)に開催された「VS Code Meetup #2 - Live Share編」に参加してきました。

vscode.connpass.com

 

Live Share編と冠しているだけあって、「Live Shareという機能がどのようなもので、どんな使い方ができるのか」という発表とデモがメインでした。

Live Shareを全く知らなかったので、プロジェクトはもちろん、サーバーやターミナルも共有することができ、チャットや音声でやり取りしつつ共同作業したり、デバックができることに驚きました。

イベントでは、大阪会場のPCのVSCodeのプロジェクトを東京会場のPCに共有し、東京会場の人にデバッグ実行してもらって不具合個所を特定するというデモが行われ、

「ラーメンの画像を投入しその画像がラーメンかどうか判定するアプリ」のバグ(うどんの画像を投入しても”次郎”と判定されてしまう)の原因(ラベルの判定後に特定値を再設定している)が見事特定されました。

 

また、セッションやLTを通して、VSCodeを複数開く場合に枠の色を変えられる「Peacock」や時間をトラッキングしてくれる「WakaTime」という拡張機能はもちろん、「拡張機能の右下に出てくる歯車のマークからバージョン指定して拡張機能をインストールできる」などの有用な情報を知ることができました。

早速、自分で利用するとともに、チームと情報共有しようと思います。

ただ、セッションやLTが盛り上がりすぎたためか時間が押してしまい、スポンサーセッションが5分からひと言に、ネットワーキングがすべてカットになってしまったのは残念でした。

 

●次回の開催予定

次回は2月に「拡張機能」をテーマに開催予定とのこと。

イベントの公開が待ち遠しいですね!

新機能であそぼ

この記事は Salesforce Platform Advent Calendar 2019 - Qiita 22日目の投稿です。
 
Salesforce Spring'20のSandboxプレビューとリリースの日程が発表された今日この頃。皆様いかがお過ごしでしょうか、かなさんです。
リリースノートは読んでみたけど、試してみないと分からない。早く試したい!という、Sandboxプレビュー待ちという貴方に朗報です!
Salesforceにはアップグレード後の機能をいち早く試せる「プレビュー組織」があります。
 

●プレビュー組織とは

プレビュー組織の特徴は以下の通り。
・Sandboxプレビューより先にバージョンアップが行われる
 リリースノートが出るよりも早く新機能を体験できます
・自動的にバージョンアップされる
 一度取得すれば毎シーズン自動的にバージョンアップされます
・個人で取得できる
 「会社のSandboxには社外から接続できない・・・」なんて貴方も安心です
 
Spring'20のプレビュー組織は以下のページより取得することができます。
(注意)プレビュー組織の取得ページのURLはバージョンごとに異なります。古いバージョンのURLだと組織は取得できなくなるようです。
 

●新機能を見つけてバッチもゲット!

また、Trailblazer Communityの「* Release Readiness Trailblazers *」というグループでは、バージョンアップごとに「Treasure Hunt」という企画が行われています。
「Tresure=宝物(新機能)」を見つけて共有しようという催しで、参加するとTrailblazer Communityのプロファイルにレコグニションのバッチが付与されます。

f:id:endoukanako:20191221205716p:plain

●最後に
プレビュー組織を利用すれば、今すぐに新機能を試すことができます。
休日に、年末年始の長期休みに、新機能で遊んで、あわよくばカッコイイバッチをGETしちゃいましょう。
(別に日本人の参加者が他にいないから寂しがってるわけなんかじゃないんだからねっ!) 

くたばれ!日本語ドキュメント

この記事は「Salesforce Advent Calendar 2019」の9日目の記事です。

qiita.com

 

皆さんこんにちは。SWAG大好き!かなさんです。

初日の方がかなりかっ飛ばした記事を書いてくれたため、思わず「こいつは負けていられねぇ・・・」とインパクト重視のタイトルをつけてしまいました。

後悔はしていないっ!←

 

Salesforceとは

この記事を読んでるほとんどの方がご存知とは思いますが、念のため解説。

Salesforceアメリカ生まれ、アメリカ育ちの「企業と顧客をつなぐ顧客管理ソリューション」です。詳細は公式を参照してください。

www.salesforce.com

 

●日本語でおけ?

Salesforceは世界中に展開しており、複数の言語で利用することが可能です。

もちろん、日本語でも!

そして、年に3回あるバージョンアップの内容を記した「リリースノート」も、開発者向けのドキュメントも、QAを扱うヘルプも、果ては資格試験も日本語でOKです!

最高ですね!

 

そんな装備で大丈夫か?

「な~んだ、日本語だけで全然問題ないじゃん」と思った貴方。危ないですよ!

各種ドキュメントにも記載されていますが、Salesforceで正とされるのは英語版です。

具体的には以下の通り。

・ドキュメントで翻訳版と英語版で差異があった場合、正しいのは英語版

・ヘルプも最新情報は英語版

・リリースノートで更新情報が記載されるのは英語版だけ

予算の都合で、ある時点の英語版を各言語へと翻訳し、翻訳後は更新されなためこのような対応になるようです。

 

気を付けないと、

「知りたい情報が出てこない」「機能のリリース延期に気が付かない」なんてことに。

かなさんは最近ナレッジの調査をしてて、オブジェクトリファレンスを全部見たのにナレッジ関連のオブジェクト「Knowledge__ka」「Knowledge__kav」の情報がないなーと不思議に思ってたら、ふと英語に切り替えた拍子に両方とも出てきて泣きました。

(画像は「Salesforce および Lightning プラットフォームのオブジェクトリファレンス」のバージョン47.0の日本語版と英語版。同じ版は思えないほどKnowledgeの項目数が違う)

f:id:endoukanako:20191208172224p:plain

日本語版

f:id:endoukanako:20191208172500p:plain

英語版

 

●自衛するしかない

英語力が皆無なので、母国語である日本語でドキュメントに触れられるのはとてもありがたいです。とはいえ、 たまに不意打ちでやられるとかなりキツい。。。

そのため、可能な方は英語版を。私のように全編英語が難しい人間は、ヘルプやドキュメントなどで少しでも違和感を感じたら英語版を見て自衛しましょう。たいていはGoogle翻訳で何とかなります。←

なお、ヘルプのあるTrailblazer communityはログインしてると言語が切り替えられないので注意してください。(下図参照。非ログイン時に表示されている言語切り替えが、ログイン時には表示されなくなる)

f:id:endoukanako:20191208175323p:plain

非ログイン状態

f:id:endoukanako:20191208175254p:plain

ログイン状態

 

●最後に

ドキュメントやヘルプ、リリースノートは「英語版が正版」という注意点を知ったうえで、上手に付き合っていきましょう!

Dreamforce関連のQuestが追加されました

Dreamforceの発表に伴い、関連するTrailheadQuestが追加されました。
毎年恒例の「Developer Keynote」「Admin Keynote」に「Mule」が加わり、今年は3つとなりました。
・DREAMFORCE ’19 DEVELOPER KEYNOTE
 
いずれも期間中に対象のTrailmixを完了させることで、オリジナルのバッチが取得できます。
また、Muleは更に抽選で景品(パタゴニアのジャケット)がもらえるチャンスも!
 
楽しんで新情報を知りつつ、更に景品もゲット。
締め切りに気をつけて取り組んで見て下さい。
 

Salesforce Developers Meetup 22でフローに関するLTをしました

2019年10月23日(水)に株式会社テラスカイさんで開催された「Salesforce Developers Meetup #22」でLTをしました!

trailblazercommunitygroups.com

 

●LTについて

基本は技術的なTopicを扱う会のなのですが、今回はあえて標準機能のフローについてLTさせていただきました。というのも、「開発しないとできなかった処理のスケジュール実行が、開発なしでできるようになった!」ことを多くの方に知ってもらいたかったためです。

開発に比べるとやや力不足の感もありますが、要件によっては十分対応でき、標準機能によるカスタマイズの広がりを実感できるものとなっています。

今後のアップデートにも大いに期待が持てそうです。

www.slideshare.net

 

●次回の予定

次回のSalesforce Developers Meetupは、12月6日(金)に株式会社チームスピリットさんにて毎年恒例のDreamforceのフィードバック会となります。

参加者から最新情報を聞けたうえ、お土産までもらえちゃうかも!?

どうぞ奮ってご参加ください。

trailblazercommunitygroups.com