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
Node.jsと仲良くなって Salesforceアプリケーション開発を楽しく行う / car...
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
Cariot
July 21, 2016
55
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Node.jsと仲良くなって Salesforceアプリケーション開発を楽しく行う / cariot-salesforce-summer2016tokyo
Salesforce Summer 2016 TokyoでLTした時の資料です。
Cariot
July 21, 2016
More Decks by Cariot
See All by Cariot
AI時代における開発生産性との向き合い方/cariot-ai-kenshou-meetup-03
cariotinc
2
190
AWSにおける公開APIのリノベーション術/cariot-jaws-ug-lunch-36
cariotinc
1
270
10年続くJavaシステムの進化を支える戦略 API・DB・キャッシュの互換性設計/cariot-jjug-ccc-2026-s
cariotinc
0
300
Amazon Bedrock AgentCore GatewayとSalesforceで実現する汎用クエリAIエージェント/cariot-meguro-lt
cariotinc
1
210
AWSのサービス終了に備えるシステム運用 / cariot-cloud-shokudo
cariotinc
0
180
はじめてのAI機能企画 / cariot-pm-hub-lt-night
cariotinc
0
350
車両動態管理システムCariotの リアルタイム性を実現する技術 / cariot-mobility-night2
cariotinc
0
370
【プロダクト開発部】株式会社キャリオット会社説明資料 / cariot dev hiring
cariotinc
0
1.1k
なめらか&リアルタイムな 動態管理を支えるCariotのAWS基盤 / cariot-xtech-jaws
cariotinc
0
55
Featured
See All Featured
Imperfection Machines: The Place of Print at Facebook
scottboms
270
14k
Measuring & Analyzing Core Web Vitals
bluesmoon
9
990
Gemini Prompt Engineering: Practical Techniques for Tangible AI Outcomes
mfonobong
2
500
Have SEOs Ruined the Internet? - User Awareness of SEO in 2025
akashhashmi
0
460
What’s in a name? Adding method to the madness
productmarketing
PRO
24
4.1k
The Language of Interfaces
destraynor
162
27k
Documentation Writing (for coders)
carmenintech
77
5.5k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
25
2k
Avoiding the “Bad Training, Faster” Trap in the Age of AI
tmiket
0
220
Producing Creativity
orderedlist
PRO
348
41k
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
16
2.1k
Build The Right Thing And Hit Your Dates
maggiecrowley
39
3.4k
Transcript
と Salesforce Summer 2016 Tokyo 2016-07-21 株式会社フレクト 遠藤 匠 Node.jsと仲良くなって Salesforceアプリケーション開発を楽しく行う
〜 〜
自己紹介 •遠藤 匠 •株式会社フレクト Cariot事業部 •業務 • コネクテッド・カーサービス「Cariot」の開発・運用 •Salesforce歴:1年半
2016/05/09 AppExchangeにて公開
開発環境 パッケージ リリース環境 (DE) インポート (retrieve) デプロイ 個人開発環境 (DE) デプロイ・テスト
CIサーバ(Jenkins) push ソースコード取得 CI環境 (DE) テスト
ツール コード管理 チケット管理 ビルド 依存関係解決 Salesforceへのデプロイ・エクスポート・テスト JSforce Metadata Tools POINT
Force.com移行ツールを使ってない理由 • JavaよりもXMLデータの加工が簡単(ライブラリが揃っている) • メタデータのデプロイ、エクスポートの際に、メタデータやpackage.xmlな ど、XML形式ファイルの加工を行う必要があった •ローカルでのSPA開発のためのエコシステムとの統一性 • 全部Node.jsで統一できる •
逆に、Force.com移行ツールと比較しての短所は? • Jenkins連携(ant-salesforce-ciによるApexテスト、カバレッジレポート) • くらい?
JSforceでもレポート出力できる
JSforce版 ant-salesforce-ci (一部) JSforce Metadata Toolsの テスト実行結果を元に、 JUnit形式のレポートを出力 (カバレッジレポートも仕 組みは同じ)
デプロイ HTML CSS JS その他 メタデータ JS 静的リソース (zip) Visualforce
コンポーネント zip化 package.xml gulp-webpack gulp-zip gulp-html-replace Webフォント 一部、自作gulpプラグイン (日英切り替え) ファイルパスをNFCに変換 UTF-8-MAC(NFD)対応
HTMLをVFコンポーネント(ページ)に変換 <!-- build:hoge --> <!-- endbuild --> で囲んだVisualforce用の <apex:component> タグに置換
(置換箇所は複数定義可) xxx-meta.xmlファイルも 変換と一緒に作成 (xmlbuilderという ライブラリを利用)
エクスポート ①package.xmlの書き換え ・ワイルドカードが使えないメタデータについて、 listMetadataで取得して書き換える ・Report ・Dashboard ・Document ・CustomObject ・Layout ・Report/Dashboard/Documentはいきなり
リストで取得できないので、まずフォルダ名を 取得する ②package.xmlを元に メタデータを取得
ローカル開発の勘所 • Salesforceへの依存をApex(JavaScript Remoting)だけに最小 化する • ローカルではモックを利用 • 同一コードで環境(ローカル or
Visualforce)を判断させる必要があ るので、やむなくtypeofで判断 • Remotingではなく、RemoteObjectという手もあるが、マークアップ が面倒だし、DML、クエリはApex側にすべて寄せた方がよい気がする • Visualforceタグの利用は最小限に留める • <apex:page><apex:component><apex:attribute>くらい • {! } の利用も最小限に留める • 静的リソース中のJSにこれがあると解釈できない
まとめ •JSforceを使ってメタデータとうまく付き合おう •ローカルでSalesforceアプリケーションをさくさ く開発できる •GitHub FlowやCIなどのプラクティスを Salesforce開発でも同じように •一般的なフロントエンド技術の導入