よく聞くけど、「SharePoint リストの 5,000 件問題」ってなんなの?Hirofumi Ota
Microsoft 365 Virtual Marathon 2022 でお話した資料です。
Microsoft 365 Virtual Marathon
https://www.m365virtualmarathon.com/
Microsoft 365 Virtual Marathon 2022 Japanese Track
https://connpass.com/event/243871/
よく聞くけど、「SharePoint リストの 5,000 件問題」ってなんなの?Hirofumi Ota
Microsoft 365 Virtual Marathon 2022 でお話した資料です。
Microsoft 365 Virtual Marathon
https://www.m365virtualmarathon.com/
Microsoft 365 Virtual Marathon 2022 Japanese Track
https://connpass.com/event/243871/
「TECH x GAME COLLEGE #21」 2019/06/05 登壇資料
https://techxgamecollege.connpass.com/event/130420/
【Laravelを用いたゲームサーバーのチューニング】
主にDB周りの話題で、
・速度を出す
・水平分散をする
という観点で
Laravelをゲームサーバーで用いた際にチューニングしてきたことを紹介します。
「TECH x GAME COLLEGE #21」 2019/06/05 登壇資料
https://techxgamecollege.connpass.com/event/130420/
【Laravelを用いたゲームサーバーのチューニング】
主にDB周りの話題で、
・速度を出す
・水平分散をする
という観点で
Laravelをゲームサーバーで用いた際にチューニングしてきたことを紹介します。
6. #sfdg
だいたいこんな感じ
trigger ContextExampleTrigger on Account (before insert, after insert, after delete) {
if (Trigger.isInsert) {
if (Trigger.isBefore) {
// Before Insert で何か処理したいことなど
} else if (Trigger.isAfter) {
// After Insert で何か処理したいことなど
}
} else if (Trigger.isDelete) {
// After Delete で何か処理したいことなど
}
}
21. #sfdg
トリガのサンプル
trigger AccountTrigger on Account (before insert, before update, after insert) {
AccountTriggerHandler handler = new AccountTriggerHandler(Trigger.isExecuting, Trigger.size);
handler.addObserver(new TriggerOperation[]{TriggerOperation.BEFORE_INSERT, TriggerOperation.BEFORE_UPDATE},
new AccountTriggerHandler_Validation());
handler.addObserver(new TriggerOperation[]{TriggerOperation.AFTER_INSERT},
new AccountTriggerHandler_FeedToXXX());
switch on Trigger.operationType {
when BEFORE_INSERT {
handler.onBeforeInsert(Trigger.new);
}
when BEFORE_UPDATE {
handler.onBeforeUpdate(Trigger.old, Trigger.new, Trigger.oldMap, Trigger.newMap);
}
when AFTER_INSERT {
handler.onAfterInsert(Trigger.new);
}
}
}
• トリガで処理したい内容を、適度な大きさで
分割する
• 分割したApexクラスを、処理したい順番でト
リガハンドラに保持させる
22. #sfdg
分割したApexクラス側の実装 (1)
public without sharing class AccountTriggerHandler_Validation
implements BaseTriggerHandler.ObserverTrgBeforeInsert, BaseTriggerHandler.ObserverTrgBeforeUpdate {
public AccountTriggerHandler_Validation(){}
public List<SObject> onBeforeInsert(List<SObject> newAccounts){
for(Account acc : (List<Account>)newAccounts){
// Some Validation Process...etc
System.debug('onBeforeInsert: ' + acc);
}
return newAccounts;
}
public List<SObject> onBeforeUpdate(List<SObject> oldAccounts, List<SObject> updAccounts,
Map<Id, SObject> oldAccountMap,Map<Id, SObject> updAccountMap){
for(Account acc : (List<Account>)updAccounts){
// Some Validation Process...etc
System.debug('onBeforeUpdate: ' + acc);
}
return updAccounts;
}
}
• Before Insert, Before Updateの
時だけ反応する
23. #sfdg
分割したApexクラス側の実装 (2)
public without sharing class AccountTriggerHandler_FeedToXXX
implements BaseTriggerHandler.ObserverTrgAfterInsert {
public AccountTriggerHandler_FeedToXXX() {}
public void onAfterInsert(List<SObject> newAccounts){
for(Account acc : (List<Account>)newAccounts){
// Some Process
System.debug('onAfterInsert: ' + acc);
}
}
}
• After Insertの時だけ反応する