プログラマ38の日記

主にプログラムメモです。

【Salesforce】Apex開発で気をつけていること

自分がApexでの開発で気をつけていることのメモです。 Salesforce IDの項目はID型で定義する。 トリガでの他オブジェクトの作成/更新処理を作り過ぎない 項目自動更新とトリガを混在させない そこでしか使わない処理は無名ブロックで囲み変数のスコープを限…

【Salesforce】Force.com移行ツール(Force.com Migration Tool)で指定するコンポーネント名をselect可能なSオブジェクト

件名がやたら長くなってしまいました。 オブジェクトのメタデータは、オブジェクトの情報をまとめて取得する方法と、カスタム項目、リストビュー、レコードタイプ、入力規則、カスタムボタンまたはカスタムリンクを個別で取得する方法があります。個別で取得…

【Salesforce/VBA/ツール】直接カスタム項目を作成するExcelマクロを作成しました

前回、ロールを作成するExcelマクロを作成しましたが、同様にカスタム項目を作成するExcelマクロを作成しました。メタデータAPIを使用している点など仕組みは前回と同じになります。 ダウンロードはこちらから。 Salesforceの項目作成は10項目程度であれば画…

【Salesforce/VBA/ツール】直接ロールを作成するExcelマクロを作りました

Salesforceの環境構築をする際に、ロールの設定を行いますがロールの作成や更新を簡単にするためのExcelマクロを作成しました。 ダウンロードはこちらからになります。 マクロでは、メタデータAPIを使用しますので実行するユーザは該当するシステム権限が必…

【Salesforce】テストクラスの作成で思うこと

SalesforceのApex開発を行う場合、本番環境にリリースするためにテストクラスを作成する必要があります。 設定とちょっとのトリガなどの開発であれば、テストクラスの作成はさほど大変ではないのですが、サイトやコミュニティで多くの画面を作りこむ場合、テ…

【Salesforce】カスタムボタンのJavaScriptで注意すること

Salesforceでは、標準レイアウトにカスタムボタンを配置してアプリケーションを作成していきます。(Lightning Experience ではなくClassicを対象とした場合です) 自分がカスタムボタンの作成時に注意することのメモです。 環境依存の文字列はカスタム表示…

100記事書いてみて思ったこと

今回がちょうど101回目になります。 100回書いてみて思ったことと、これからやってみたいことを書いてみようと思います。 [思ったこと] 文章を書くのが下手 プログラマとしてドキュメントを書くことは多く、今までそれなりに書いてきましたが、あらためて文…

【雑記/Java】最近のJavaで辛いなと思ったこと

自分は他の言語はあまりやらないので、Javaプログラムがメイン言語となっています。 なので、何か作ろうと思ったらコマンドラインのプログラムもJava、GUIのプログラムもJavaで済まそうとしてしまいます。 言語の拡張や新しい仕組みの導入などは無条件に受け…

【CSV】DBクライアント ExecuteQuery でH2 Databaseを使う

CSV

前回CSVの加工の方法の1つとして紹介した「H2 Database」を使う方法です。 前提として、「Execute Query」と「H2 Database」のモジュールはダウンロードしていることとします。 次の内容です。 「Execute Query」を起動する。 JDBCドライバを設定する。 接…

【CSV】CSVファイルを加工する方法

CSV

CSVを加工する機会は多いと思います。データのやり取りはなんだかんだでCSVが主流で、Salesforceのデータローダでもインポート、エクスポートはCSVを使います。 自分がよく使うCSVの加工するやり方について書きます。 ちなみに、一番よく使うのは6の「H2 Dat…

【Salesforce】Shift_JISのテキストファイルを作成して添付ファイルに登録する

SalesforceのApexプログラムの中で、Shift_JISのCSVファイルを作成したい時があります。 Salesforceの文字列とバイナリは、StringとBlobを使いますが、その際のエンコーディングはUTF-8となります。 そこで、エンコーディングをShiftJISにするために工夫が必…

【Java】UnixでJavaプログラムを動かした時にはまった思い出

プログラマになって間もない頃、単純なOracleへのデータ連携用プログラムを担当しました。処理はShift_JISのCSVファイルをいくつか値を変換してOracleにロードするものだったので、通常は、1.Oracleへワークテーブルを用意し、2.「sqlldr」へデータを投…

【DWH/SQL】データマートの作り方メモ

DWHで使い勝手を向上するため、粒度の異なる複数のファクトを加工して1つのデータマートを作成する時があります。 例えば、次のようなデータマートを作成します。 インプットデータ 商品別、年月別の見込みデータがある。 商品別、年月日別で実績データがあ…

【Salesforce】SOQLやビューでよく使う日付の検索条件文字列

ビューやSOQLでは、当日を起点にして何日前や何日後といった条件を指定したい時があります。 たくさんある中でよく使う書き方のメモです。 ビューでの日付の検索条件文字列 Salesforceのリンクはこちらです。 日付の検索条件リテラル コメント 過去n日間 演…

【Salesforce/SQL】検索条件でのnullの扱いの違いについて

Salesforceではデータの取得でSOQLを使います。一般的なRDBのSQLと似ていますが、結合処理や、検索の指定がSQLと異なります。 検索条件でのnullの指定と検索結果について、SOQLとSQLの違いがあるのでメモです。 次のデータをサンプルとしてSOQLとSQLで検索結…

【Salesforce】最終更新日(LastModifiedDate)とSystem Modstamp(SystemModstamp)の違い

最終更新日(LastModifiedDate)とSystem Modstamp(SystemModstamp)は、今まで特に意識もせず、同じタイムスタンプが入っているなーぐらいの認識でした。 ですが、「レコードの作成時に監査項目を設定」を有効化して、最終更新日(LastModifiedDate)に直接タイ…

【Salesforce】Communityの共有セットでのデータ共有で気をつけること

Communityで、Customer Communityというライセンスの時に気をつけることのメモです。(Customer Community Plus、Partner Communityは関係ありません) 共有ルールは使えず、共有セットを使う 1に伴い、Sharingのオブジェクトは使えない 1に伴い、共有セットの…

【Java】Interfaceやabstract classが何となく理解できた時の思い出

最初のプログラム言語はJavaでした。インスタンスやクラス、インターフェースや抽象クラス、キャストなど色々な横文字が大量に出てきて何が何やらわからず、苦労した思い出があります。(当時、WebObjectsというAppleのWebフレームワークを利用していました) …

【Salesforce】重複ルールで作成・編集を許可している時の、標準画面以外からのデータの登録について

Salesforceで、重複ルールという機能があります。(前はなかったのですが、とても欲しかった機能でした。実装されてちょっと嬉しかったです) 重複ルールの設定次第では、重複レコードが他にあった際に警告は出るが保存できるということができます。 この設…

【Excel】セルの表をtableタグで出力するマクロをバージョンアップしました

以前、Excelの表をhtmlのtableタグに変換するマクロを作成しました。 crmprogrammer38.hatenablog.com 使っていくうちにやっぱりこうしたほうがいいかなとか考えていき、次のように改良しました。 マクロの中でセルの値をValueで取得していた箇所をTextで取…

【Salesforce】APIの「renderEmailTemplate」「renderStoredEmailTemplate」を使ってみた

前回SalesforceのAPIについて書きました。使ったことのないメソッドが増えているなーと思い、まず「renderEmailTemplate」「renderStoredEmailTemplate」を使ってみました。 「renderEmailTemplate」 String endpoint = "https://login.salesforce.com/servi…

【Salesforce】APIで用意されている機能について

SalesforceにはいくつかのAPIが用意されています。こういうことをやりたいときにこれを使えばいいというのがわかるようにまとめてみました。Rest API、Bulk APIは外していて、SOAP APIに限定しました。(APIVer40の時に書いています) メソッド 処理内容 どのA…

【SQL】Window関数を理解できた時の思い出2

SQL

前の続きです。 crmprogrammer38.hatenablog.com Window関数では、Windowの中で並び替えをした順番に各行で計算する仕組みがあります。例としては累計の計算になります。(BIツールで、ランニングサムの名称がついていたりします) 以下の年別累計の項目は、…

【SQL】Window関数を理解できた時の思い出

SQL

はじめてのデータベースは、Oracle8でした。 その時はWindow関数自体なく、検索条件と結合条件を入り混じるSQLを書いていました。 その後Oracle9になって、SQLも変化していましたが、Window関数とは距離を置いていました。あまり使う必要性を感じなかったの…

【SQL】よくやってしまう間違い(割り算や型変換)

SQL

気を抜くとすぐ忘れてしまうのでメモ。(メモしたから忘れないわけではないですが) 書き方の例でnullif関数を使っていますが、適宜データベースで用意されている関数に置き換えが必要です。 SQLの割り算では分母が0の時はnullに変換する 0除算エラーの対策…

【Salesforce】直接XMLでSalesforce APIを操作する

WebServiceのSOAPメッセージのデバッグについて書きました。 crmprogrammer38.hatenablog.com これを行うことで、SOAPメッセージが拾えるので、xmlをpostして、xmlで結果が返ってくるというシンプルな処理でSOAP APIを行うことができます。wsdlクライアント…

【Java】JavaのWebServiceライブラリのクライアントプログラムでSOAPメッセージをデバッグする

前に、いくつかのJavaライブラリでSalesforceのSOAP APIを扱うという内容を書きました。 crmprogrammer38.hatenablog.com さらに追記で、上記のJavaライブラリでSOAPメッセージをデバッグするやり方になります。 Axis1.4 log4j.propertiesで指定します。なの…

【Java】「Apache Velocity」と「StringTemplate」の性能を比べてみる

前回StringTemplateの記事を書きましたが、Apache Velocityと性能を比べてみました。 Apache Velocityではまったこと テンプレートの書き方を忘れていて、テンプレートで変数のプロパティを指定する場合getterが必要でした。。 例えば、Apache Velocityのテ…

【Java】「StringTemplate」ライブラリを使ってみました

Javaで、「StringTemplate」のライブラリを使ってみました。 はじめに Javaのテンプレートエンジンは、Apache Velocityを代表として色々なものがあると思います。VelocityはVTLが使いやすいのですが様々な理由でVelocity以外が使いたいときもあると思います…

【Salesforce】Apex開発で最初の頃にやってしまった間違い

Java開発の後、Salesforceの開発を始めたのですが、当初色々間違いや勘違いがありました。思い出すことがあったので書いてみます。 booleanの変数の扱い Javaですとboolean変数は true/false のプリミティブ型で、Booleanと書くとオブジェクトとなりますが、…