営業日ベースの日数判定ロジックの実装方法

前書き センスのない会社ほどよく実装したがる「営業日ベースで〇日後に通知送りたい」や「○営業日後の日付が自動で入力されるようにしたい」といった要件への対応方法 ※推奨代替案:シンプルに「〇日後」で実装して後は運用回避 実装方針 「日付」項目と「休日フラグ」項目を持った「休日カレンダー」カスタムオブジェクトを作成し、それを用いて営業日数計算を行う。 例えば、2021/07/01(木)の三営業日を取得したい場合は…… Read More »

開発者コンソールのログレベルを変更する

前書き 作り込まれている組織でない限りあまり操作する機会はないかもしれませんが、デバッグログレベルの変更方法を備忘録も兼ねてご紹介します。 詳細は公式ヘルプ記事「開発者コンソールのログの操作」をご参照ください。 最適なデバッグログレベルについて デバッグレベルは以下のレベルが下に行けば行くほど高く(=記録が詳細に)なっていきます。 NONE… Read More »

Database.rollback()の簡単解説(初心者向け)

前書き 初心者の方向けにDatabase.rollback()の仕様と使い方について簡単解説しますノ Database.rollback()とは? Database.rollback()メソッドを利用することで、Database.setSavepoint()によって事前登録されていたsavepointまで処理をロールバックすることが可能です。 例えば↓の例では、4行目のDatabase.rollback(sp)によって2行目のSavepointまでロールバックされ、「色々な処理B」がなかったことになります。 実務で一番多いユースケース… Read More »

ApexでレコードIDからオブジェクトを判定する

前書き やり方色々ありますが、今回下記の三つをご紹介します。 ①sObjectTypeの一致判定②オブジェクト名の一致判定③オブジェクトPrefixの一致判定 本記事で用いる例:レコードIDからContactかどうかを判定する 推奨:sObjectTypeの一致判定 非推奨:オブジェクト名の一致判定… Read More »

標準レポートタイプの命名規則

前書き 「商品が関連する商品(Opportunities with Products)」といったレポートタイプの名前(※下記画像で表示される名前)に関する規則を見ていきます。 命名の法則1 子がカスタムオブジェクトの場合「親… Read More »

特定プロファイルのユーザとしてApexテストを実行する方法

前書き 通常システムコンテクストで実行されるApexテストに関して、任意のユーザコンテクストでの実行を行いたい場合、System.runAs()メソッドを利用します。 例えば、PlatformライセンスのユーザとしてApexを実行した場合に問題が発生しないかどうかをテストしたい場合、テストクラス内でPlatformライセンスのユーザを生成したうえでrunAsメソッドを用いることにより、PlatformライセンスのユーザとしてApex Testを実行することが可能となります。 サンプルコード(権限セットなしの場合) サンプルコード(権限セットありの場合)

Jonathan Rasmusson『ユニコーン企業のひみつ』を読む

1章:スタートアップとエンタープライズの違い スタートアップの特徴└イテレーションを重ねる(終わりなき循環)└「問い」を手掛かりとして「未知」の領域において「学習」と「発見」を繰り返していく└失敗してもよい└未知の領域を自力で開拓できる人材が必要└エンジニアチームに経営陣に準ずる強力な権限を付与する└ミッションドリブンで仕事を進める エンタープライズの特徴└計画を実行する(終わりのある線分)└「計画(プロジェクト)」に従って「既知」の領域において「既存業務の効率化」を行っていく└失敗してはいけない└言われたことをしっかりこなせる人材が必要└エンジニアチームに権限を付与しない└プロジェクトドリブンで仕事を進める 2章:ミッションとプロジェクトの違い ミッションの特徴└終わりがない└フィードバックがある└融通が利く(※急な方針転換OK)└自発的に考える力が滋養される└プロダクトにフォーカスしている プロジェクトの特徴└終わりがある└フィードバックがない└融通が利かない(※急な方針転換NG)└脳死メンバーを生み出す└計画通りに進めることにフォーカスしている… Read More »