Salesforce Platform Advent Calendarのエントリ全部コメントする

JSforce 2.0のアナウンスを計画してはや２年、今年こそはAdvent Calendarに間に合うかと思いましたが、残念ながら間に合いませんでしたので、別企画となります。なおタイトルは「池の水全部抜く」的に読んでください（遠）

お気づきの方がいたかどうかはわかりませんが、今回のAdvent Calendarには実はほぼ全エントリに対してTwitterでコメントしていました。もう今回はこれだけでまとめてやろうと思い、他人の褌で相撲を取ることにします。まあトリらしいのでこれでいいのでは。最初から間に合わないことを見越してやってたのかどうかについてはノーコメントで。

## 2018年 Salesforce Platform Advent Calendarエントリへのコメント

### -1日目

<blockquote class="twitter-tweet" data-lang="en"><p lang="ja" dir="ltr">-1日目のAC、意識高い / Salesforce DX + Vue.js + TypeScriptでISVパッケージ開発 <a href="https://t.co/bgXcwA9BSh">https://t.co/bgXcwA9BSh</a></p>&mdash; Shinichi Tomita (@stomita) <a href="https://twitter.com/stomita/status/1068388246244061185?ref_src=twsrc%5Etfw">November 30, 2018</a></blockquote>
<script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

正式エントリではないですが最近流れるようにエントリが出てくるco-meeting木村さんのやつ。Vue.jsはともかくTypeScriptは結構ISVの人たちのアプリでも使われていると聞いています（当社独自調査）ので違いをチェックしてみるといいのでは。

### 1日目

<blockquote class="twitter-tweet" data-lang="en"><p lang="ja" dir="ltr">プロセスビルダー、ワークフローよりいいのは間違いないんだけど、数式評価だったり微妙なところで仕様おかしくて辛い（かといって今さら変えるとBreaking Changeだしな） / Lightning プロセスビルダーで通知を考える - チームスピリットデベロッパーブログ <a href="https://t.co/stkWKFPRsA">https://t.co/stkWKFPRsA</a></p>&mdash; Shinichi Tomita (@stomita) <a href="https://twitter.com/stomita/status/1069048121508847616?ref_src=twsrc%5Etfw">December 2, 2018</a></blockquote>
<script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

プロセスビルダーNoCoderにとって素晴らしいものではあるのですが、モダンなくせに何故そのUXというのが多い謎奴ですね。内部エンジンがフローと同じってところも残念さが漂います。フローについては、いままでその時代遅れのFlash UIに総ツッコミがあたってましたが、エンジン自体も一度書き直したほうがいいという持論です。

### 2日目

<blockquote class="twitter-tweet" data-lang="en"><p lang="ja" dir="ltr">カスタムメタデータ、誰がいじるものとしてデザインするかによるかな。開発者向けならまさにDIではプロパティファイルみたいなもんなので / カスタムメタデータ型でApexコーディングをもっと楽しくする <a href="https://t.co/743c1UO7mk">https://t.co/743c1UO7mk</a></p>&mdash; Shinichi Tomita (@stomita) <a href="https://twitter.com/stomita/status/1069049840871530497?ref_src=twsrc%5Etfw">December 2, 2018</a></blockquote>
<script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

偉そうにコメントしてますがカスタムメタデータそんなに触ってないです。

### 3日目

<blockquote class="twitter-tweet" data-lang="en"><p lang="ja" dir="ltr">Nullableな返値の扱い方法についてなど / Apex開発で押さえておきたいポイント - その3 - Qiita <a href="https://t.co/GkFA2yhSxA">https://t.co/GkFA2yhSxA</a></p>&mdash; Shinichi Tomita (@stomita) <a href="https://twitter.com/stomita/status/1069747935133364224?ref_src=twsrc%5Etfw">December 4, 2018</a></blockquote>
<script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

正直Null Pointer Exceptionの回避をNull安全でないApexでやるのは無理筋だとおもいますし、Arrayで返すとか空レコードを返すとかしても規約をわかってないと別のよくわからないエラーを招くだけなので、あまり意味なくないかなと思っています。

### 4日目

<blockquote class="twitter-tweet" data-lang="en"><p lang="ja" dir="ltr">LEXパラメータ渡しヘルプに書いてある＝サポートされてんのか / Lightning移行のTips - Qiita <a href="https://t.co/uQ6T85YjAt">https://t.co/uQ6T85YjAt</a></p>&mdash; Shinichi Tomita (@stomita) <a href="https://twitter.com/stomita/status/1069750504400478213?ref_src=twsrc%5Etfw">December 4, 2018</a></blockquote>
<script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

LEX云々より呼び出し方法が公式に規定されているというのが重要というのは皆さんおわかりいただけるかと。他アドオン系コンポーネントについては導入の容易さと天秤にかけてケースバイケースかな。

### 5日目

<blockquote class="twitter-tweet" data-lang="en"><p lang="ja" dir="ltr">Text-based UIってインストーラとかしかあまり使わんのでちょい勿体無い感ある / [Salesforce] 真の開発者コンソールを作ってみた <a href="https://t.co/4uaOZAbUd3">https://t.co/4uaOZAbUd3</a></p>&mdash; Shinichi Tomita (@stomita) <a href="https://twitter.com/stomita/status/1071048162398195712?ref_src=twsrc%5Etfw">December 7, 2018</a></blockquote>
<script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

正直誰得なんですけど、田実さんの場合は明確に自分得だとおもうので、それでいいとおもいます。

### 6日目

<blockquote class="twitter-tweet" data-lang="en"><p lang="ja" dir="ltr">SOQL項目補完Language Serverでやれるはずなんだけどなあ / IntelliJ IDEA と有償プラグインで作るSalesforce開発環境 - Qiita <a href="https://t.co/aL0nofFS2D">https://t.co/aL0nofFS2D</a></p>&mdash; Shinichi Tomita (@stomita) <a href="https://twitter.com/stomita/status/1071053381370732544?ref_src=twsrc%5Etfw">December 7, 2018</a></blockquote>
<script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

IntelliJ使ってないんですけど世の中には賢いやついっぱいありますね。あとやり方はわかってるけどやらない、とか、製品化まではしたくない、みたいな作りっぱなしのやつ。Salesforceに限らずですけど開発者向けツールの開発コストを投資回収するって茨ですよね。

### 8日目

<blockquote class="twitter-tweet" data-lang="en"><p lang="ja" dir="ltr">Remote Objectの各メソッドApexで上書き出来たんか、でもそれもはやRemotingで十分なんでは。クエリはsoql-secure 的な何かあれば / Visualforce リモートオブジェクトのつらみと TypeScript でラッパーの作成 - My note <a href="https://t.co/K3DRqG6g6t">https://t.co/K3DRqG6g6t</a></p>&mdash; Shinichi Tomita (@stomita) <a href="https://twitter.com/stomita/status/1071203782787182594?ref_src=twsrc%5Etfw">December 8, 2018</a></blockquote>
<script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

[soql-secure](https://github.com/stomita/soql-secure) ってのはこれなんですけど、まあ[こちらの記事](https://qiita.com/stomita/items/d51f64af277ac16df14b)をご覧ください。Remote Object については、残念ながら使い所あまりない、というのが個人的な見解です。ページに宣言的に項目指定するのも過剰なんですよね。

### 9日目

<blockquote class="twitter-tweet" data-lang="en"><p lang="ja" dir="ltr">この中だとワークフローはもう使うことないかもな &gt; プロセス自動化 / Salesforce上で業務プロセスを組むときの考え方 - 吸血猫の言葉綴り <a href="https://t.co/cKCPTHQBb0">https://t.co/cKCPTHQBb0</a></p>&mdash; Shinichi Tomita (@stomita) <a href="https://twitter.com/stomita/status/1072007238821113862?ref_src=twsrc%5Etfw">December 10, 2018</a></blockquote>
<script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

なのですが、プロセスビルダーだけでやってるとHigh Transaction環境？でいろいろと不都合が出ることがあるそう。まじか。
ワークフロー捨てられないのはOutbound Messagingやらなきゃいけないときくらいかと思ってた。
やはりフローのエンジン一度捨ててスクラッチで書き直したほうがいいのでは。

### 10日目

<blockquote class="twitter-tweet" data-lang="en"><p lang="ja" dir="ltr">デバッグできるスキルがあるかどうかで有利になるの正しいと言えば正しい / TrailheadのハンズオンのChallengeでエラーになった時のデバッグ方法について - 　KanaLog～かなろぐ～ <a href="https://t.co/kIx5a4DFD7">https://t.co/kIx5a4DFD7</a></p>&mdash; Shinichi Tomita (@stomita) <a href="https://twitter.com/stomita/status/1072008467714428928?ref_src=twsrc%5Etfw">December 10, 2018</a></blockquote>
<script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

Trailheadやってないマンですが、eラーニングで自分でデバッグできるとか、すごい環境です。いつかやるときに覚えておきます。

### 11日目

<blockquote class="twitter-tweet" data-lang="en"><p lang="ja" dir="ltr">Connect Japan上陸とほぼ同じにAC入れてるのでこれはインサイダーなのでは？ / Service Essentials と Amazon Connect を使ってコンタクトセンターを構築してみた話 - Qiita <a href="https://t.co/RiIvDspgtr">https://t.co/RiIvDspgtr</a></p>&mdash; Shinichi Tomita (@stomita) <a href="https://twitter.com/stomita/status/1072650817029705729?ref_src=twsrc%5Etfw">December 12, 2018</a></blockquote>
<script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

もちろんネタなんですが、ほんとにAdvent Calendarのためにインサイダー情報ゲットしてたなら笑える。っていうかAmazon Connectほんとに既存のビジネスの破壊者であるのでみんなやるといい（やってない）

### 12日目

<blockquote class="twitter-tweet" data-lang="en"><p lang="ja" dir="ltr">トリガ作れないのでEUに入力させる用途での代替では時に厳しいなという印象 / AppExchangeアプリにおけるカスタムメタデータ型の利用について <a href="https://t.co/SZCAloMYdC">https://t.co/SZCAloMYdC</a></p>&mdash; Shinichi Tomita (@stomita) <a href="https://twitter.com/stomita/status/1073028533792825344?ref_src=twsrc%5Etfw">December 13, 2018</a></blockquote>
<script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

偉そうにコメントしてますがカスタムメタデータそんなに触ってないです（再）

### 13日目

<blockquote class="twitter-tweet" data-lang="en"><p lang="ja" dir="ltr">これ見た感じOIDCなんだけどプラグイン必要なのかな / Salesforce カスタム認証プロバイダプラグインの作成 及び LINE アカウントで Community Cloud に SSO ログインする - Qiita <a href="https://t.co/axPcglhWO6">https://t.co/axPcglhWO6</a></p>&mdash; Shinichi Tomita (@stomita) <a href="https://twitter.com/stomita/status/1073141851878608896?ref_src=twsrc%5Etfw">December 13, 2018</a></blockquote>
<script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

実はカスタム認証プロバイダプラグイン作れるのこのエントリ見るまで忘れてたんですが、なんとなくこれはプラグイン開発なしでも行けるやつのような気がしました、少なくともLINEのほうがOIDC準拠してるなら外部認証プロバイダでOpenID Connect選べばいけたような。試してないんですが。

### 14日目

<blockquote class="twitter-tweet" data-lang="en"><p lang="ja" dir="ltr">PK-chunking というかBulk queryやる機会が全然ないの、やっぱ案件の質の違いかな / SalesforceのBulk APIをPK-chunkingでJava clientから使うサンプル <a href="https://t.co/3E5u416nzV">https://t.co/3E5u416nzV</a></p>&mdash; Shinichi Tomita (@stomita) <a href="https://twitter.com/stomita/status/1073740349804138496?ref_src=twsrc%5Etfw">December 15, 2018</a></blockquote>
<script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

っていうかJSforceでもPK-ChunkingサポートはよとかIssueで言われてて、いやおれbulk queryなんて殆ど使わんし、っていうギャップがあります。

### 15日目

<blockquote class="twitter-tweet" data-lang="en"><p lang="ja" dir="ltr">この機能できた理由は分かるんだけどなんでこういう実装になったのかよくわからんやつ（特にコンポーネントの方） / Lightningのガイド付きアクションリストでSalesforce上のプロセスを標準化しよう <a href="https://t.co/X0A69V6yG9">https://t.co/X0A69V6yG9</a></p>&mdash; Shinichi Tomita (@stomita) <a href="https://twitter.com/stomita/status/1073793132079112192?ref_src=twsrc%5Etfw">December 15, 2018</a></blockquote>
<script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

アクションリスト、仕組み自体は汎用的になっていてなるほどよさげなんですけど、ユーザに見せるものとしてこのコンポーネントのUIが常に適切なのかかなり疑わしいという直感を持っています。まあオブジェクト公開されてるっぽいのでそこはカスタム作ればよいのかも。

### 16日目

<blockquote class="twitter-tweet" data-lang="en"><p lang="ja" dir="ltr">逆にデバッグ実行はレコード登録されるほうが直感とあってるかなと思った / 新しいフローを試してみた。 - ピヨピヨ奮闘記 <a href="https://t.co/xnKkNuRvsC">https://t.co/xnKkNuRvsC</a></p>&mdash; Shinichi Tomita (@stomita) <a href="https://twitter.com/stomita/status/1074159060771991553?ref_src=twsrc%5Etfw">December 16, 2018</a></blockquote>
<script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

とにかく、フローは衣装が変わってても、中身がアレなので。
デバッグもまだ辛いなあという印象。

### 17日目

<blockquote class="twitter-tweet" data-lang="en"><p lang="ja" dir="ltr">こういうのでいいんだよこういうので or そういうのもあるのか、的な / BlenderでSalesforce アストロくんのペーパークラフトを作る - Qiita <a href="https://t.co/En43yPrpQE">https://t.co/En43yPrpQE</a></p>&mdash; Shinichi Tomita (@stomita) <a href="https://twitter.com/stomita/status/1074482117793406976?ref_src=twsrc%5Etfw">December 17, 2018</a></blockquote>
<script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

アストロくん（⇐警察案件）

### 18日目

<blockquote class="twitter-tweet" data-lang="en"><p lang="ja" dir="ltr">まとめに対して本当に申し訳ないですがlwc出た今もうAuraにはあまり関与せず行きたい（行けるとは言ってない） / Aura コンポーネントを構成する各ファイルとその使い方まとめ - Qiita <a href="https://t.co/OghmGwhK2a">https://t.co/OghmGwhK2a</a></p>&mdash; Shinichi Tomita (@stomita) <a href="https://twitter.com/stomita/status/1074838756757139456?ref_src=twsrc%5Etfw">December 18, 2018</a></blockquote>
<script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

LWCアナウンス来年のtrailheadXじゃなかったんですかー！
先生、打ち合わせと違うじゃないですかァァ～!!!（担当） 

### 19日目

<blockquote class="twitter-tweet" data-lang="en"><p lang="ja" dir="ltr">マッピング設定面倒だったりエンドユーザが必要な場合は弊社製品でどぞ(マ) / Data connector for Salesforceを試してみた（GoogleSpreadSheetとSalesforceを連携） <a href="https://t.co/HphyhWijlO">https://t.co/HphyhWijlO</a></p>&mdash; Shinichi Tomita (@stomita) <a href="https://twitter.com/stomita/status/1075160795812528128?ref_src=twsrc%5Etfw">December 18, 2018</a></blockquote>
<script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

実際問題、エンドユーザ（非管理者）が使うのは、Google Sheetではちょっと厳しいと思ってますが、
すくなくともデータローダよりはいいでしょうね。

### 20日目

<blockquote class="twitter-tweet" data-lang="en"><p lang="ja" dir="ltr">リストビュー固定のやつユーザ毎っぽいのだけど管理者が指定したいケースの方が多いのでは / Salesforce Spring&#39;19 PickUp - Qiita <a href="https://t.co/f4djbJXZXe">https://t.co/f4djbJXZXe</a></p>&mdash; Shinichi Tomita (@stomita) <a href="https://twitter.com/stomita/status/1075607189262237696?ref_src=twsrc%5Etfw">December 20, 2018</a></blockquote>
<script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

これ改善するのに一体何十年かかったのか。つまり実はClassicの呪いだったのか。

### 21日目

<blockquote class="twitter-tweet" data-lang="en"><p lang="ja" dir="ltr">とりあえずlwcはlocalでunitテストできるのでよいな（人権レベルの発言） / Lightning Web Components をほんのちょっぴり体験した <a href="https://t.co/Y80jh7whIF">https://t.co/Y80jh7whIF</a></p>&mdash; Shinichi Tomita (@stomita) <a href="https://twitter.com/stomita/status/1075873818185351168?ref_src=twsrc%5Etfw">December 20, 2018</a></blockquote>
<script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

ほんとにこれ人権なのでわざわざコメントいらないやつ。

### 22日目

<blockquote class="twitter-tweet" data-lang="en"><p lang="ja" dir="ltr">セルジオさんの凄さがなかなか伝わりにくい文章なのではよ年収を公開(ry / 某認定テクニカルアーキテクトの自己評価ととある1日 <a href="https://t.co/Mm9CDCWXHF">https://t.co/Mm9CDCWXHF</a></p>&mdash; Shinichi Tomita (@stomita) <a href="https://twitter.com/stomita/status/1076619606280744960?ref_src=twsrc%5Etfw">December 22, 2018</a></blockquote>
<script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

ちょっとだけ仕事したことありますがまじで有能な人なので。

### 23日目

<blockquote class="twitter-tweet" data-lang="en"><p lang="ja" dir="ltr">誕生日くらいテロとして全く問題ないレベル、今すぐ全管理者はコピペ実行で / Apex一括処理で、取引先責任者が全部かしゆかにする <a href="https://t.co/F6lTcbAcj6">https://t.co/F6lTcbAcj6</a></p>&mdash; Shinichi Tomita (@stomita) <a href="https://twitter.com/stomita/status/1076660925216641025?ref_src=twsrc%5Etfw">December 23, 2018</a></blockquote>
<script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

安定のやつ

### 24日目

<blockquote class="twitter-tweet" data-lang="en"><p lang="ja" dir="ltr">SOAP/WSDL=&gt;Swagger/OASの現在。ところでFirewall内部への接続って最新どうなってるんでしたっけ / Salesforceの外部サービスを理解して未来に備える <a href="https://t.co/td6yemwwOD">https://t.co/td6yemwwOD</a></p>&mdash; Shinichi Tomita (@stomita) <a href="https://twitter.com/stomita/status/1077351720068341760?ref_src=twsrc%5Etfw">December 24, 2018</a></blockquote>
<script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

Mulesoftは触ってないのでまた今度。

## まとめ

プライベートの事情もあり、あまりコミュニティイベントには出られませんが、引き続きオンラインで皆様の奮闘を見守っております。新しい年もよろしくおねがいします。