{"id":1936,"date":"2026-04-07T20:00:00","date_gmt":"2026-04-07T11:00:00","guid":{"rendered":"https:\/\/syuji-engineer.com\/?p=1936"},"modified":"2026-03-29T15:32:58","modified_gmt":"2026-03-29T06:32:58","slug":"apex%e3%83%88%e3%83%aa%e3%82%ac%e3%83%bc%e3%81%8c500%e8%a1%8c%e3%81%ab%e3%81%aa%e3%82%8b%e5%89%8d%e3%81%ab%e3%82%84%e3%82%8b%e3%81%93%e3%81%a8","status":"publish","type":"post","link":"https:\/\/syuji-engineer.com\/?p=1936","title":{"rendered":"Apex\u30c8\u30ea\u30ac\u30fc\u304c500\u884c\u306b\u306a\u308b\u524d\u306b\u3084\u308b\u3053\u3068"},"content":{"rendered":"\n<p>\u203b\u3053\u306e\u8a18\u4e8b\u306b\u306f\u30a2\u30d5\u30a3\u30ea\u30a8\u30a4\u30c8\u30ea\u30f3\u30af\u3092\u542b\u307f\u307e\u3059\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">TriggerHandler\u30d1\u30bf\u30fc\u30f3\u3067\u300c\u53d7\u4ed8\u7a93\u53e3\u300d\u306b\u5909\u3048\u308b<\/h3>\n\n\n\n<p>\u7d50\u8ad6\u304b\u3089\u8a00\u3044\u307e\u3059\u3002<\/p>\n\n\n\n<p>\u30c8\u30ea\u30ac\u30fc\u30d5\u30a1\u30a4\u30eb\u306b\u76f4\u63a5\u30ed\u30b8\u30c3\u30af\u3092\u66f8\u304d\u7d9a\u3051\u308b\u3068\u3001\u5fc5\u305a\u300e\u8ab0\u3082\u89e6\u308a\u305f\u304f\u306a\u3044\u30c8\u30ea\u30ac\u30fc\u300f\u304c\u751f\u307e\u308c\u307e\u3059\u3002<\/p>\n\n\n\n<p>\u89e3\u6c7a\u7b56\u306f\u3001\u30c8\u30ea\u30ac\u30fc\u30d5\u30a1\u30a4\u30eb\u3092\u300c\u53d7\u4ed8\u7a93\u53e3\u300d\u306b\u9650\u5b9a\u3057\u3066\u3001\u51e6\u7406\u306e\u4e2d\u8eab\u306fHandler\u30af\u30e9\u30b9\u306b\u4e38\u6295\u3052\u3059\u308b\u8a2d\u8a08\u306b\u5909\u3048\u308b\u3053\u3068\u3067\u3059\u3002\u3053\u308c\u304cTriggerHandler\u30d1\u30bf\u30fc\u30f3\u3067\u3059\u3002<\/p>\n\n\n\n<p>\u69cb\u9020\u3068\u3057\u3066\u306f\u30b7\u30f3\u30d7\u30eb\u3067\u3059\u3002<\/p>\n\n\n\n<pre class=\"wp-block-verse\">AccountTrigger.trigger\uff08\u53d7\u4ed8\u7a93\u53e3\uff1a1\u301c3\u884c\uff09<br>        \u2193<br>AccountTriggerHandler.cls\uff08\u30ed\u30b8\u30c3\u30af\u306e\u5b9f\u4f53\uff09<br>        \u2193<br>AccountService.cls\uff08\u30c9\u30e1\u30a4\u30f3\u30ed\u30b8\u30c3\u30af\uff09<\/pre>\n\n\n\n<p>\u30c8\u30ea\u30ac\u30fc\u30d5\u30a1\u30a4\u30eb\u306f\u3053\u308c\u3060\u3051\u306b\u306a\u308a\u307e\u3059\u3002<\/p>\n\n\n\n<pre class=\"wp-block-verse\">trigger AccountTrigger on Account (<br>    before insert, before update,<br>    after insert, after update, after delete<br>) {<br>    new AccountTriggerHandler().run();<br>}<\/pre>\n\n\n\n<p>\u3053\u308c\u3067\u518d\u5e30\u5236\u5fa1\u30fb\u30c6\u30b9\u30c8\u30fb\u53ef\u8aad\u6027\u306e\u554f\u984c\u304c\u307e\u3068\u3081\u3066\u7247\u3065\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<!-- \u6b21\u306b\u8aad\u3080\u30ab\u30fc\u30c9\uff1aHTML_BLOCK_NEXT -->\n<div style=\"border:1px solid #e5e7eb;border-radius:12px;padding:16px;margin:24px 0;background:#fafafa;\">\n  <div style=\"font-weight:700;margin-bottom:6px;\">\u6b21\u306b\u8aad\u3080<\/div>\n  <div style=\"margin-bottom:10px;line-height:1.7;\">\n    \u30c8\u30ea\u30ac\u30fc\u306e\u8a2d\u8a08\u3092\u6574\u3048\u305f\u3089\u3001\u6b21\u306fService\u30af\u30e9\u30b9\u306e\u5206\u3051\u65b9\u304c\u6c17\u306b\u306a\u3063\u3066\u304f\u308b\u3068\u601d\u3044\u307e\u3059\u3002<br>\n    Apex\u958b\u767a\u306e\u8a2d\u8a08\u5224\u65ad\u307e\u308f\u308a\u3092\u307e\u3068\u3081\u305f\u8a18\u4e8b\u306f\u3053\u3061\u3089\u3067\u3059\u3002\n  <\/div>\n  <a href=\"{\u6b21\u306e\u8a18\u4e8bURL}\"\n     target=\"_blank\" rel=\"noopener noreferrer\"\n     style=\"display:inline-block;padding:10px 14px;border-radius:10px;border:1px solid #111;text-decoration:none;\">\n    {\u6b21\u306e\u8a18\u4e8b\u30bf\u30a4\u30c8\u30eb}\u3092\u8aad\u3080 \u2192\n  <\/a>\n<\/div>\n\n\n\n<h3 class=\"wp-block-heading\">500\u884c\u306e\u30c8\u30ea\u30ac\u30fc\u3092\u524d\u306b\u3001\u624b\u304c\u6b62\u307e\u3063\u305f<\/h3>\n\n\n\n<p>Salesforce\u958b\u767a\u306e\u73fe\u5834\u3067\u3001\u3053\u3046\u3044\u3046\u30b3\u30fc\u30c9\u3092\u898b\u305f\u3053\u3068\u306f\u306a\u3044\u3067\u3057\u3087\u3046\u304b\u3002<\/p>\n\n\n\n<pre class=\"wp-block-verse\">trigger AccountTrigger on Account (before insert, before update, after insert) {<br>    for (Account acc : Trigger.new) {<br>        if (Trigger.isBefore &amp;&amp; Trigger.isInsert) {<br>            acc.Name = acc.Name.trim();<br>            \/\/ \u51e6\u7406\u304c\u3069\u3093\u3069\u3093\u5897\u3048\u3066\u3044\u304f...<br>        }<br>        if (Trigger.isAfter &amp;&amp; Trigger.isInsert) {<br>            \/\/ \u5225\u306e\u51e6\u7406...<br>        }<br>    }<br>}<\/pre>\n\n\n\n<p>\u6700\u521d\u306f\u6570\u5341\u884c\u3060\u3063\u305f\u306f\u305a\u304c\u3001\u6a5f\u80fd\u8ffd\u52a0\u306e\u305f\u3073\u306b\u81a8\u308c\u4e0a\u304c\u308b\u3002<\/p>\n\n\n\n<p>\u6c17\u3065\u3051\u3070500\u884c\u8d85\u3002\u300c\u3053\u3053\u89e6\u3063\u305f\u3089\u4f55\u304b\u58ca\u308c\u305d\u3046\u300d\u3068\u611f\u3058\u306a\u304c\u3089\u3001\u305d\u308c\u3067\u3082\u8ffd\u8a18\u3057\u3066\u3044\u304f\u3002<\/p>\n\n\n\n<p>\u958b\u767a\u6b741\u301c3\u5e74\u306e\u3046\u3061\u306b\u3001\u4e00\u5ea6\u306f\u3053\u306e\u30c8\u30ea\u30ac\u30fc\u306b\u5f53\u305f\u308a\u307e\u3059\u3002\u4eca\u56de\u306f\u305d\u306e\u30c8\u30ea\u30ac\u30fc\u3092\u6839\u672c\u304b\u3089\u76f4\u3059\u65b9\u6cd5\u3092\u3001\u5b9f\u88c5\u30b3\u30fc\u30c9\u4ed8\u304d\u3067\u6574\u7406\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\u76f4\u66f8\u304d\u30c8\u30ea\u30ac\u30fc\u304c\u58ca\u308c\u3066\u3044\u304f3\u3064\u306e\u7406\u7531<\/h3>\n\n\n\n<h4 class=\"wp-block-heading\">\u2460 \u518d\u5e30\u547c\u3073\u51fa\u3057\u304c\u6b62\u307e\u3089\u306a\u3044<\/h4>\n\n\n\n<p>\u30c8\u30ea\u30ac\u30fc\u5185\u3067\u30ec\u30b3\u30fc\u30c9\u3092\u66f4\u65b0\u3059\u308b\u3068\u3001\u518d\u3073\u30c8\u30ea\u30ac\u30fc\u304c\u767a\u706b\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<p>\u300c\u3068\u308a\u3042\u3048\u305a\u518d\u5e30\u9632\u6b62\u300d\u3067\u3088\u304f\u898b\u308b\u30b3\u30fc\u30c9\u304c\u3053\u308c\u3067\u3059\u3002<\/p>\n\n\n\n<pre class=\"wp-block-verse\">trigger AccountTrigger on Account (after update) {<br>    if (AccountTrigger.hasRun) return;<br>    AccountTrigger.hasRun = true;<br>    \/\/ ...<br>}<\/pre>\n\n\n\n<p>\u3053\u306e\u30d5\u30e9\u30b0\u306f\u30c8\u30e9\u30f3\u30b6\u30af\u30b7\u30e7\u30f3\u5185\u3067\u30ea\u30bb\u30c3\u30c8\u3055\u308c\u306a\u3044\u305f\u3081\u3001\u30d0\u30c3\u30c1\u51e6\u7406\u3084\u8907\u5408\u66f4\u65b0\u3067\u60f3\u5b9a\u5916\u306e\u52d5\u4f5c\u3092\u5f15\u304d\u8d77\u3053\u3057\u307e\u3059\u3002\u5404\u30c8\u30ea\u30ac\u30fc\u306b\u6563\u3089\u3070\u3063\u305f\u30d5\u30e9\u30b0\u306f\u3001\u3044\u305a\u308c\u7ba1\u7406\u3057\u304d\u308c\u306a\u304f\u306a\u308a\u307e\u3059\u3002<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">\u2461 \u51e6\u7406\u306e\u9806\u5e8f\u304c\u8ffd\u3044\u306b\u304f\u3044<\/h4>\n\n\n\n<p><code>before insert<\/code>\u3001<code>after update<\/code> \u306a\u3069\u8907\u6570\u306e\u30b3\u30f3\u30c6\u30ad\u30b9\u30c8\u304c1\u30d5\u30a1\u30a4\u30eb\u306b\u6df7\u5728\u3059\u308b\u3068\u3001\u300c\u3069\u306e\u30bf\u30a4\u30df\u30f3\u30b0\u3067\u3069\u306e\u51e6\u7406\u304c\u8d70\u308b\u304b\u300d\u3092\u30b3\u30fc\u30c9\u304b\u3089\u8aad\u307f\u53d6\u308b\u306e\u306b\u6642\u9593\u304c\u304b\u304b\u308a\u307e\u3059\u3002<\/p>\n\n\n\n<p>\u30ec\u30d3\u30e5\u30fc\u5de5\u6570\u304c\u5897\u3048\u3001\u30d0\u30b0\u306e\u898b\u843d\u3068\u3057\u306b\u3064\u306a\u304c\u308a\u307e\u3059\u3002<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">\u2462 \u5358\u4f53\u30c6\u30b9\u30c8\u304c\u66f8\u304d\u306b\u304f\u3044<\/h4>\n\n\n\n<p>\u30c8\u30ea\u30ac\u30fc\u672c\u4f53\u306b\u30ed\u30b8\u30c3\u30af\u304c\u6df7\u5165\u3057\u3066\u3044\u308b\u3068\u3001\u30c6\u30b9\u30c8\u30af\u30e9\u30b9\u304b\u3089\u300c\u7279\u5b9a\u306e\u30e1\u30bd\u30c3\u30c9\u3060\u3051\u3092\u547c\u3076\u300d\u3053\u3068\u304c\u3067\u304d\u307e\u305b\u3093\u3002<\/p>\n\n\n\n<p>\u30c6\u30b9\u30c8\u30ab\u30d0\u30ec\u30c3\u30b8\u3092\u4e0a\u3052\u308b\u305f\u3081\u306b\u30c7\u30fc\u30bf\u3092\u5927\u91cf\u306b\u7528\u610f\u3059\u308b\u5fc5\u8981\u304c\u751f\u307e\u308c\u3001\u30c6\u30b9\u30c8\u304c\u9045\u304f\u30fb\u8106\u304f\u306a\u3063\u3066\u3044\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\u300c\u76f4\u66f8\u304d\u3042\u308b\u3042\u308b\u300d4\u9078<\/h3>\n\n\n\n<p>\u73fe\u5834\u3067\u3088\u304f\u898b\u304b\u3051\u308b\u30d1\u30bf\u30fc\u30f3\u3092\u6574\u7406\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<p><strong>\u2460 \u518d\u5e30\u9632\u6b62\u30d5\u30e9\u30b0\u304c\u30c8\u30ea\u30ac\u30fc\u3054\u3068\u306b\u30d0\u30e9\u30d0\u30e9<\/strong> \u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u304c\u5897\u3048\u308b\u305f\u3073\u306b\u540c\u3058\u30d5\u30e9\u30b0\u3092\u5404\u30d5\u30a1\u30a4\u30eb\u306b\u30b3\u30d4\u30da\u3002\u7ba1\u7406\u306e\u8d77\u70b9\u304c\u3069\u3053\u304b\u308f\u304b\u3089\u306a\u304f\u306a\u308b\u3002<\/p>\n\n\n\n<p><strong>\u2461 \u30b3\u30e1\u30f3\u30c8\u3067\u300c\u3053\u3053\u304b\u3089\u3007\u3007\u51e6\u7406\u300d\u3068\u4ed5\u5207\u308a\u59cb\u3081\u308b<\/strong> 1\u30d5\u30a1\u30a4\u30eb\u304c\u30bb\u30af\u30b7\u30e7\u30f3\u5206\u3051\u3055\u308c\u59cb\u3081\u305f\u3089\u3001\u5206\u5272\u306e\u30b5\u30a4\u30f3\u3067\u3059\u3002\u30b3\u30e1\u30f3\u30c8\u3067\u6574\u7406\u3057\u3088\u3046\u3068\u3059\u308b\u307b\u3069\u3001\u8aad\u307f\u3065\u3089\u304f\u306a\u308a\u307e\u3059\u3002<\/p>\n\n\n\n<p><strong>\u2462 \u30c6\u30b9\u30c8\u30af\u30e9\u30b9\u3067DML\u3092\u5927\u91cf\u306b\u66f8\u304f<\/strong> \u300c\u30c6\u30b9\u30c8\u7528\u30c7\u30fc\u30bf\u3092\u7528\u610f\u3057\u306a\u3044\u3068\u30ed\u30b8\u30c3\u30af\u306b\u5c4a\u304b\u306a\u3044\u300d\u72b6\u614b\u306f\u3001\u8a2d\u8a08\u306e\u554f\u984c\u3067\u3059\u3002\u30c6\u30b9\u30c8\u304c\u91cd\u304f\u306a\u308a\u3001CI\u304c\u9045\u304f\u306a\u308a\u307e\u3059\u3002<\/p>\n\n\n\n<p><strong>\u2463 \u300c\u3053\u306e\u30c8\u30ea\u30ac\u30fc\u3001\u8ab0\u304c\u66f8\u3044\u305f\u306e\u300d\u6848\u4ef6\u306b\u306a\u308b<\/strong> \u30b3\u30f3\u30c6\u30ad\u30b9\u30c8\u3068\u30ed\u30b8\u30c3\u30af\u304c\u6df7\u5728\u3059\u308b\u3068\u3001\u8ffd\u8de1\u30b3\u30b9\u30c8\u304c\u8df3\u306d\u4e0a\u304c\u308a\u307e\u3059\u3002\u30b3\u30fc\u30c9\u30ec\u30d3\u30e5\u30fc\u3067\u6307\u6458\u3057\u306b\u304f\u3044\u300c\u7a7a\u6c17\u306e\u30d0\u30b0\u300d\u304c\u751f\u307e\u308c\u307e\u3059\u3002<\/p>\n\n\n\n<!-- \u554f\u3044\u30ab\u30fc\u30c9\uff1aHTML_BLOCK_ASK -->\n<div style=\"border:1px solid #e5e7eb;border-radius:12px;padding:16px;margin:24px 0;background:#fafafa;\">\n  <div style=\"font-weight:700;margin-bottom:6px;\">\u8003\u3048\u76f4\u3059<\/div>\n  <div style=\"padding-left:12px;border-left:3px solid #111;line-height:1.7;\">\n    \u3042\u306a\u305f\u306e\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3067\u3001\u6700\u5f8c\u306b\u30c8\u30ea\u30ac\u30fc\u3092\u89e6\u3063\u305f\u306e\u306f\u3044\u3064\u3067\u3059\u304b\u3002<br>\n    \u30fb\u305d\u306e\u3068\u304d\u3001\u30b3\u30fc\u30c9\u3092\u8aad\u3080\u306e\u306b\u4f55\u5206\u304b\u304b\u308a\u307e\u3057\u305f\u304b\u3002\n  <\/div>\n<\/div>\n\n\n\n<h3 class=\"wp-block-heading\">TriggerHandler\u306e\u5b9f\u88c5\uff1a3\u30d5\u30a1\u30a4\u30eb\u3067\u5b8c\u6210\u3059\u308b<\/h3>\n\n\n\n<h4 class=\"wp-block-heading\">\u2460 \u57fa\u5e95\u30af\u30e9\u30b9\uff08TriggerHandler.cls\uff09<\/h4>\n\n\n\n<p>\u518d\u5e30\u9632\u6b62\u3068\u5404\u30b3\u30f3\u30c6\u30ad\u30b9\u30c8\u3078\u306e\u632f\u308a\u5206\u3051\u3092\u62c5\u3044\u307e\u3059\u30021\u5ea6\u4f5c\u308c\u3070\u3059\u3079\u3066\u306e\u30c8\u30ea\u30ac\u30fc\u3067\u4f7f\u3044\u56de\u305b\u307e\u3059\u3002<\/p>\n\n\n\n<pre class=\"wp-block-verse\">public virtual class TriggerHandler {<br><br>    @TestVisible<br>    private static Map&lt;String, Set&lt;String>> bypassedHandlers =<br>        new Map&lt;String, Set&lt;String>>();<br><br>    private String handlerName;<br><br>    public TriggerHandler() {<br>        this.handlerName = getHandlerName();<br>    }<br><br>    public void run() {<br>        if (isBypassed(this.handlerName)) return;<br><br>        if (Trigger.isBefore) {<br>            if (Trigger.isInsert) beforeInsert();<br>            if (Trigger.isUpdate) beforeUpdate();<br>            if (Trigger.isDelete) beforeDelete();<br>        } else if (Trigger.isAfter) {<br>            if (Trigger.isInsert) afterInsert();<br>            if (Trigger.isUpdate) afterUpdate();<br>            if (Trigger.isDelete) afterDelete();<br>            if (Trigger.isUndelete) afterUndelete();<br>        }<br>    }<br><br>    protected virtual void beforeInsert() {}<br>    protected virtual void beforeUpdate() {}<br>    protected virtual void beforeDelete() {}<br>    protected virtual void afterInsert() {}<br>    protected virtual void afterUpdate() {}<br>    protected virtual void afterDelete() {}<br>    protected virtual void afterUndelete() {}<br><br>    public static void bypass(String handlerName) {<br>        if (!bypassedHandlers.containsKey(handlerName)) {<br>            bypassedHandlers.put(handlerName, new Set&lt;String>());<br>        }<br>    }<br><br>    public static void clearBypass(String handlerName) {<br>        bypassedHandlers.remove(handlerName);<br>    }<br><br>    public static Boolean isBypassed(String handlerName) {<br>        return bypassedHandlers.containsKey(handlerName);<br>    }<br><br>    private String getHandlerName() {<br>        return String.valueOf(this).substring(0, String.valueOf(this).indexOf(':'));<br>    }<br>}<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\">\u2461 Handler\u30af\u30e9\u30b9\uff08AccountTriggerHandler.cls\uff09<\/h4>\n\n\n\n<p>\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u56fa\u6709\u306e\u30ed\u30b8\u30c3\u30af\u3092\u3053\u3053\u306b\u96c6\u7d04\u3057\u307e\u3059\u3002\u4f7f\u308f\u306a\u3044\u30b3\u30f3\u30c6\u30ad\u30b9\u30c8\u306e\u30e1\u30bd\u30c3\u30c9\u306f\u30aa\u30fc\u30d0\u30fc\u30e9\u30a4\u30c9\u3057\u306a\u3044\u3060\u3051\u3067OK\u3067\u3059\u3002<\/p>\n\n\n\n<pre class=\"wp-block-verse\">public class AccountTriggerHandler extends TriggerHandler {<br><br>    private List&lt;Account> newList;<br>    private Map&lt;Id, Account> oldMap;<br><br>    public AccountTriggerHandler() {<br>        this.newList = (List&lt;Account>) Trigger.new;<br>        this.oldMap  = (Map&lt;Id, Account>) Trigger.oldMap;<br>    }<br><br>    protected override void beforeInsert() {<br>        AccountService.trimNames(this.newList);<br>    }<br><br>    protected override void afterInsert() {<br>        AccountService.createDefaultContacts(this.newList);<br>    }<br><br>    protected override void afterUpdate() {<br>        AccountService.syncToExternalSystem(this.newList, this.oldMap);<br>    }<br>}<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\">\u2462 \u30c6\u30b9\u30c8\u306e\u30dd\u30a4\u30f3\u30c8\uff1aHandler\u3092\u76f4\u63a5\u547c\u3076<\/h4>\n\n\n\n<p>\u91cd\u8981\u306a\u30ed\u30b8\u30c3\u30af\u306fHandler\u306e\u30e1\u30bd\u30c3\u30c9\u3092DML\u306a\u3057\u3067\u547c\u3073\u51fa\u3057\u3066\u30c6\u30b9\u30c8\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<pre class=\"wp-block-verse\">@isTest<br>private class AccountTriggerHandlerTest {<br><br>    @isTest<br>    static void testBeforeInsert_trimNames() {<br>        List&lt;Account> accounts = new List&lt;Account>{<br>            new Account(Name = '  \u30c6\u30b9\u30c8\u682a\u5f0f\u4f1a\u793e  ', BillingCity = '\u672d\u5e4c\u5e02')<br>        };<br><br>        Test.startTest();<br>        AccountService.trimNames(accounts);<br>        Test.stopTest();<br><br>        System.assertEquals('\u30c6\u30b9\u30c8\u682a\u5f0f\u4f1a\u793e', accounts[0].Name, '\u524d\u5f8c\u306e\u7a7a\u767d\u304c\u9664\u53bb\u3055\u308c\u3066\u3044\u308b\u3053\u3068');<br>    }<br>}<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\">\u30d0\u30a4\u30d1\u30b9\u6a5f\u80fd\u306e\u4f7f\u3044\u3069\u3053\u308d<\/h4>\n\n\n\n<p>\u30c7\u30fc\u30bf\u79fb\u884c\u3084\u30d0\u30c3\u30c1\u51e6\u7406\u3067\u30c8\u30ea\u30ac\u30fc\u3092\u30b9\u30ad\u30c3\u30d7\u3057\u305f\u3044\u3068\u304d\u306b\u4f7f\u3044\u307e\u3059\u3002<\/p>\n\n\n\n<pre class=\"wp-block-verse\">TriggerHandler.bypass('AccountTriggerHandler');<br>\/\/ ... DML\u51e6\u7406 ...<br>TriggerHandler.clearBypass('AccountTriggerHandler');<\/pre>\n\n\n\n<p>\u6ce8\u610f\u70b9\u304c2\u3064\u3042\u308a\u307e\u3059\u3002<\/p>\n\n\n\n<p><code>bypass()<\/code> \u3057\u305f\u307e\u307e\u51e6\u7406\u304c\u7d42\u308f\u308b\u3068\u3001\u540c\u4e00\u30c8\u30e9\u30f3\u30b6\u30af\u30b7\u30e7\u30f3\u5185\u306e\u5f8c\u7d9a\u51e6\u7406\u3082\u30b9\u30ad\u30c3\u30d7\u3055\u308c\u307e\u3059\u3002<code>finally<\/code> \u30d6\u30ed\u30c3\u30af\u3067\u5fc5\u305a <code>clearBypass()<\/code> \u3092\u547c\u3093\u3067\u304f\u3060\u3055\u3044\u3002<\/p>\n\n\n\n<p>\u307e\u305f\u3001Handler\u30af\u30e9\u30b9\u306e\u30b3\u30f3\u30b9\u30c8\u30e9\u30af\u30bf\u3067Trigger.new\u3092\u53c2\u7167\u3057\u3066\u3044\u308b\u305f\u3081\u3001\u30c6\u30b9\u30c8\u5185\u3067Handler\u3092\u76f4\u63a5\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u5316\u3059\u308b\u3068\u30a8\u30e9\u30fc\u306b\u306a\u308a\u307e\u3059\u3002\u30ed\u30b8\u30c3\u30af\u306fService\u30af\u30e9\u30b9\u306b\u5207\u308a\u51fa\u3057\u3001Service\u30af\u30e9\u30b9\u3092\u30c6\u30b9\u30c8\u3059\u308b\u8a2d\u8a08\u306b\u3059\u308b\u3068\u3053\u306e\u554f\u984c\u3092\u56de\u907f\u3067\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\u65e2\u5b58\u30c8\u30ea\u30ac\u30fc\u306e\u30ea\u30d5\u30a1\u30af\u30bf\u30ea\u30f3\u30b0\u306f\u3001\u6bb5\u968e\u7684\u306b<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>\u203b\u672c\u756a\u74b0\u5883\u3078\u306e\u9069\u7528\u524d\u306b\u3001\u5fc5\u305a\u30b5\u30f3\u30c9\u30dc\u30c3\u30af\u30b9\u3067\u52d5\u4f5c\u78ba\u8a8d\u3057\u3066\u304f\u3060\u3055\u3044\u3002<\/code><\/pre>\n\n\n\n<p>\u4e00\u6c17\u306b\u3084\u308d\u3046\u3068\u3059\u308b\u3068\u5371\u967a\u3067\u3059\u3002\u4ee5\u4e0b\u306e\u30b9\u30c6\u30c3\u30d7\u3067\u9032\u3081\u308b\u306e\u304c\u73fe\u5b9f\u7684\u3067\u3059\u3002<\/p>\n\n\n\n<p><strong>Step 1<\/strong>\uff1a\u307e\u305a <code>TriggerHandler.cls<\/code>\uff08\u57fa\u5e95\u30af\u30e9\u30b9\uff09\u3060\u3051\u8ffd\u52a0\u3059\u308b\u3002\u65e2\u5b58\u30b3\u30fc\u30c9\u306b\u306f\u89e6\u308c\u306a\u3044\u3002<\/p>\n\n\n\n<p><strong>Step 2<\/strong>\uff1a\u5f71\u97ff\u7bc4\u56f2\u304c\u6700\u5c0f\u306e\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\uff08\u65b0\u898f\u8ffd\u52a0\u4e88\u5b9a\u304b\u3001\u5909\u66f4\u983b\u5ea6\u304c\u4f4e\u3044\u3082\u306e\uff09\u30921\u3064\u9078\u3073\u3001Handler\u30af\u30e9\u30b9\u3092\u4f5c\u6210\u3057\u3066\u30c8\u30ea\u30ac\u30fc\u3092\u79fb\u884c\u3059\u308b\u3002<\/p>\n\n\n\n<p><strong>Step 3<\/strong>\uff1a\u30ab\u30d0\u30ec\u30c3\u30b8\u3068\u30ea\u30b0\u30ec\u30c3\u30b7\u30e7\u30f3\u30c6\u30b9\u30c8\u3092\u78ba\u8a8d\u3057\u305f\u3046\u3048\u3067\u3001\u6b21\u306e\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u306b\u7740\u624b\u3059\u308b\u3002<\/p>\n\n\n\n<p>\u5143\u306e\u30c8\u30ea\u30ac\u30fc\u30d5\u30a1\u30a4\u30eb\u3092\u6b8b\u3057\u3064\u3064\u3001Handler\u30af\u30e9\u30b9\u306b\u30ed\u30b8\u30c3\u30af\u3092\u8ee2\u8a18\u2192\u30c6\u30b9\u30c8\u5408\u683c\u2192\u53e4\u3044\u30ed\u30b8\u30c3\u30af\u3092\u30b3\u30e1\u30f3\u30c8\u30a2\u30a6\u30c8\u2192\u672c\u756a\u9069\u7528\u5f8c\u306b\u524a\u9664\u3001\u3068\u3044\u3046\u9806\u5e8f\u3067\u9032\u3081\u308b\u3068\u5207\u308a\u623b\u3057\u304c\u697d\u3067\u3059\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\u4eca\u65e5\u3084\u308b\u3053\u3068<\/h3>\n\n\n\n<!-- \u4eca\u65e5\u3084\u308b\u3053\u3068\u30ab\u30fc\u30c9\uff1aHTML_BLOCK_ONE -->\n<div style=\"border:1px solid #e5e7eb;border-radius:12px;padding:16px;margin:24px 0;background:#fafafa;\">\n  <div style=\"font-weight:700;margin-bottom:6px;\">\u307e\u305a\u306f\uff11\u3064\u3084\u3063\u3066\u307f\u308b<\/div>\n  <div style=\"line-height:1.7;\">\n    \u30fbTriggerHandler.cls \u30921\u3064\u4f5c\u3063\u3066\u3001\u6700\u3082\u30b7\u30f3\u30d7\u30eb\u306a\u30c8\u30ea\u30ac\u30fc\u306b\u9069\u7528\u3057\u3066\u307f\u308b\n  <\/div>\n<\/div>\n\n\n\n<h3 class=\"wp-block-heading\">\u6b21\u306b\u8aad\u3093\u3067\u307b\u3057\u3044\u8a18\u4e8b<\/h3>\n\n\n\n<p>TriggerHandler\u3067\u8a2d\u8a08\u3092\u6574\u3048\u305f\u3042\u3068\u3001Service\u30af\u30e9\u30b9\u3084Selector\u30af\u30e9\u30b9\u306e\u6574\u7406\u306b\u9032\u3080\u4eba\u304c\u591a\u3044\u3067\u3059\u3002<\/p>\n\n\n\n<p>\u6b21\u306fApex\u958b\u767a\u3067\u306e\u8a2d\u8a08\u5224\u65ad\u307e\u308f\u308a\u306e\u8a71\u3092\u66f8\u3044\u3066\u3044\u307e\u3059\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\u307e\u3068\u3081<\/h3>\n\n\n\n<p>\u76f4\u66f8\u304d\u30c8\u30ea\u30ac\u30fc\u304c\u62b1\u3048\u308b\u554f\u984c\u306f\u3001\u518d\u5e30\u30fb\u53ef\u8aad\u6027\u30fb\u30c6\u30b9\u30c8\u306e3\u3064\u3067\u3059\u3002TriggerHandler\u30d1\u30bf\u30fc\u30f3\u306f\u3053\u306e3\u3064\u3092\u307e\u3068\u3081\u3066\u89e3\u6c7a\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<p>\u5c0e\u5165\u30b3\u30b9\u30c8\u306f\u4f4e\u304f\u3001\u57fa\u5e95\u30af\u30e9\u30b91\u672c\u8ffd\u52a0\u3059\u308b\u3060\u3051\u3067\u59cb\u3081\u3089\u308c\u307e\u3059\u3002\u65b0\u898f\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306a\u3089\u521d\u65e5\u304b\u3089\u3001\u65e2\u5b58\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3067\u3082\u6b21\u306e\u30ea\u30d5\u30a1\u30af\u30bf\u30ea\u30f3\u30b0\u306e\u30bf\u30a4\u30df\u30f3\u30b0\u3067\u691c\u8a0e\u3057\u3066\u307f\u3066\u304f\u3060\u3055\u3044\u3002<\/p>\n\n\n\n<p>\u30c8\u30ea\u30ac\u30fc\u304c1\u301c3\u884c\u306b\u306a\u3063\u305f\u3068\u304d\u3001\u30b3\u30fc\u30c9\u30ec\u30d3\u30e5\u30fc\u304c\u304b\u306a\u308a\u697d\u306b\u306a\u308a\u307e\u3059\u3002<\/p>\n\n\n\n<!-- \u6b21\u306b\u8aad\u3080\u30ab\u30fc\u30c9\uff1aHTML_BLOCK_NEXT -->\n<div style=\"border:1px solid #e5e7eb;border-radius:12px;padding:16px;margin:24px 0;background:#fafafa;\">\n  <div style=\"font-weight:700;margin-bottom:6px;\">\u6b21\u306b\u8aad\u3080<\/div>\n  <div style=\"margin-bottom:10px;line-height:1.7;\">\n    \u30c8\u30ea\u30ac\u30fc\u306e\u8a2d\u8a08\u3092\u6574\u3048\u305f\u3089\u3001\u6b21\u306fService\u30af\u30e9\u30b9\u306e\u5206\u3051\u65b9\u304c\u6c17\u306b\u306a\u3063\u3066\u304f\u308b\u3068\u601d\u3044\u307e\u3059\u3002<br>\n    Apex\u958b\u767a\u306e\u8a2d\u8a08\u5224\u65ad\u307e\u308f\u308a\u3092\u307e\u3068\u3081\u305f\u8a18\u4e8b\u306f\u3053\u3061\u3089\u3067\u3059\u3002\n  <\/div>\n  <a href=\"{\u6b21\u306e\u8a18\u4e8bURL}\"\n     target=\"_blank\" rel=\"noopener noreferrer\"\n     style=\"display:inline-block;padding:10px 14px;border-radius:10px;border:1px solid #111;text-decoration:none;\">\n    {\u6b21\u306e\u8a18\u4e8b\u30bf\u30a4\u30c8\u30eb}\u3092\u8aad\u3080 \u2192\n  <\/a>\n<\/div>\n\n\n\n<p>Salesforce \u306f salesforce.com, Inc. \u306e\u767b\u9332\u5546\u6a19\u3067\u3059\u3002<\/p>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u203b\u3053\u306e\u8a18\u4e8b\u306b\u306f\u30a2\u30d5\u30a3\u30ea\u30a8\u30a4\u30c8\u30ea\u30f3\u30af\u3092\u542b\u307f\u307e\u3059\u3002 TriggerHandler\u30d1\u30bf\u30fc\u30f3\u3067\u300c\u53d7\u4ed8\u7a93\u53e3\u300d\u306b\u5909\u3048\u308b \u7d50\u8ad6\u304b\u3089\u8a00\u3044\u307e\u3059\u3002 \u30c8\u30ea\u30ac\u30fc\u30d5\u30a1\u30a4\u30eb\u306b\u76f4\u63a5\u30ed\u30b8\u30c3\u30af\u3092\u66f8\u304d\u7d9a\u3051\u308b\u3068\u3001\u5fc5\u305a\u300e\u8ab0\u3082\u89e6\u308a\u305f\u304f\u306a\u3044\u30c8\u30ea\u30ac\u30fc\u300f\u304c\u751f\u307e\u308c\u307e\u3059\u3002 \u89e3\u6c7a\u7b56\u306f\u3001\u30c8\u30ea\u30ac\u30fc\u2026<\/p>\n","protected":false},"author":1,"featured_media":1938,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-1936","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-uncategorized"],"_links":{"self":[{"href":"https:\/\/syuji-engineer.com\/index.php?rest_route=\/wp\/v2\/posts\/1936","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/syuji-engineer.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/syuji-engineer.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/syuji-engineer.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/syuji-engineer.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1936"}],"version-history":[{"count":1,"href":"https:\/\/syuji-engineer.com\/index.php?rest_route=\/wp\/v2\/posts\/1936\/revisions"}],"predecessor-version":[{"id":1937,"href":"https:\/\/syuji-engineer.com\/index.php?rest_route=\/wp\/v2\/posts\/1936\/revisions\/1937"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/syuji-engineer.com\/index.php?rest_route=\/wp\/v2\/media\/1938"}],"wp:attachment":[{"href":"https:\/\/syuji-engineer.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1936"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/syuji-engineer.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1936"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/syuji-engineer.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1936"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}