Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Salesforce Functions (Java)で実装はどう変わるか
Search
CLB
July 01, 2022
Programming
0
470
Salesforce Functions (Java)で 実装はどう変わるか
Salesforce Functions の実装を試しました。
・ライブラリーの使用方法
・並列実行
CLB
July 01, 2022
Tweet
Share
More Decks by CLB
See All by CLB
Salesforce 大規模開発で留意するトピック集
altyjp
0
1.2k
Other Decks in Programming
See All in Programming
自分ひとりから始められる生産性向上の取り組み #でぃーぷらすオオサカ
irof
8
2.6k
“あなた” の開発を支援する AI エージェント Bedrock Engineer / introducing-bedrock-engineer
gawa
11
1.8k
[Fin-JAWS 第38回 ~re:Invent 2024 金融re:Cap~]FaultInjectionServiceアップデート@pre:Invent2024
shintaro_fukatsu
0
400
How mixi2 Uses TiDB for SNS Scalability and Performance
kanmo
30
11k
Multi Step Form, Decentralized Autonomous Organization
pumpkiinbell
1
660
第3回 Snowflake 中部ユーザ会- dbt × Snowflake ハンズオン
hoto17296
4
360
Ruby on cygwin 2025-02
fd0
0
140
チームリードになって変わったこと
isaka1022
0
190
Unity Android XR入門
sakutama_11
0
140
[JAWS-UG横浜 #79] re:Invent 2024 の DB アップデートは Multi-Region!
maroon1st
1
140
密集、ドキュメントのコロケーション with AWS Lambda
satoshi256kbyte
0
180
SwiftUI Viewの責務分離
elmetal
PRO
0
150
Featured
See All Featured
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
507
140k
How to Think Like a Performance Engineer
csswizardry
22
1.3k
How To Stay Up To Date on Web Technology
chriscoyier
790
250k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
47
5.2k
Writing Fast Ruby
sferik
628
61k
YesSQL, Process and Tooling at Scale
rocio
171
14k
Into the Great Unknown - MozCon
thekraken
35
1.6k
Typedesign – Prime Four
hannesfritz
40
2.5k
Fireside Chat
paigeccino
34
3.2k
The World Runs on Bad Software
bkeepers
PRO
67
11k
Gamification - CAS2011
davidbonilla
80
5.1k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
193
16k
Transcript
Salesforce functions (Java) で 実装はどう変わるか Sato Ryo
Hello! Sato Ryoです。(左はクレオです。) 仕事: ´ バックエンド( 業務処理の開発担当) です。 ´ Salesforce
歴 2.5 年くらいの初⼼者です。 趣味: • ネコ • キャンプ @altyjp
Salesforce functions GA 🎉 https://developer.salesforce.com/docs/platform/functions/overview
Java版の資料は少ない Node.js 版についてはいくつか資料がありますが、 Java版は資料が少ないように思います。 ´ クイックスタートガイド ´ https://developer.salesforce.com/docs/platform/functions/guide/create-function.html ´ しょっさん(Salesforce
の中の⼈)のブログ記事 ´ https://zenn.dev/sho7650/articles/f1b0c096847277 →Java 版を利⽤して気になった事を 検証していきたいと思います。
お品書き ´ ライブラリってどうなってるの︖ ´ 並列処理はできる︖効果ある︖ なお、実際のソースコードは以下にあります。 是⾮お試しください。 https://github.com/altyjp/Trying-SF-functions 注意事項︓ 問題により実際のFunctions
へのデプロイができなかったため、 本発表における実⾏時間などの値はローカル環境(MacBookAir 2018, Core i5, 8GB RAM)での実⾏結果を利⽤しております。 あくまで参考結果としてご覧ください。
ライブラリってどうなってるの︖ ´ Java で function を作成すると左記のようなファ イルが⽣成されます。 ´ Mavenを利⽤しているので、pom.xml に使いたい
ライブラリを記載することで利⽤する事ができます。
ライブラリが利⽤できるメリット ´ Apexではcsvなどを扱うライブラリ が無いため ⾃前で処理が必要になる。 ´ ライブラリを利⽤することで 安全かつ効率的にコーディング可 能。 //
opencsv で書き出す。 beanToCsv.write(accounts); // 出⼒ LOGGER.info(writer.toString()); // Account を Csv にする。 for(Account acc : accountList){ String accountId = acc.Id; String accountName = acc.Name; // ⾃前で組み⽴てが必要 String csvRow = '"' + accountId + '","' + accountName + '"'; csvStr.add(csvRow); } System.debug(csvStr); LibrarysampleFunction.java withoutLibrary.apex
並列実⾏は利⽤できる︖ 効果は︖
Apexでは並列処理を実装できないので ´ 重い処理でもforを利⽤しないといけない。 // 1000から5999までの素数を⾒つける for (Integer num : intList){
Boolean isPrime = true; for (Integer i = 2; i < num; i++) { if (Math.mod(num, i) == 0){ isPrime = false; break; } } // System.LimitException: Apex CPU time limit exceeded(10s以上) if (isPrime) { System.debug(num); } } processList.apex
Functions なら重い処理も爆速 ´ parallelStreamを利⽤して、複数のスレッドで処理を分散可能。 ´ 重い処理も⽐較にならない速度で実⾏できます。 ちなみに以下の処理、どのくらいの時間で終わると思いますか︖ // 1000から5999までの素数を⾒つける。 intList.parallelStream()
.filter(n -> isPrime(n)) .forEach(System.out::println); ParallelexecutionFunction.java
まとめ ´ ライブラリを利⽤することで安全かつ効率的に実装が⾏える。 ´ 特にCSVやyamlなどテキストデータを処理する場合。 ´ 他にはエクセル(.xlsx)などのこれまで対応できなかったバイナリファイルなども。 ´ 重い処理も並列実⾏で⾼速に実⾏できる。 ´
これにより、今までガバナ制限によって不可能だった処理も 1トランザクションで実⾏可能になるかもしれない。
Thank you!