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
48
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
160
AWSにおける公開APIのリノベーション術/cariot-jaws-ug-lunch-36
cariotinc
1
260
10年続くJavaシステムの進化を支える戦略 API・DB・キャッシュの互換性設計/cariot-jjug-ccc-2026-s
cariotinc
0
290
Amazon Bedrock AgentCore GatewayとSalesforceで実現する汎用クエリAIエージェント/cariot-meguro-lt
cariotinc
1
190
AWSのサービス終了に備えるシステム運用 / cariot-cloud-shokudo
cariotinc
0
170
はじめてのAI機能企画 / cariot-pm-hub-lt-night
cariotinc
0
350
車両動態管理システムCariotの リアルタイム性を実現する技術 / cariot-mobility-night2
cariotinc
0
350
【プロダクト開発部】株式会社キャリオット会社説明資料 / cariot dev hiring
cariotinc
0
1k
なめらか&リアルタイムな 動態管理を支えるCariotのAWS基盤 / cariot-xtech-jaws
cariotinc
0
53
Featured
See All Featured
sira's awesome portfolio website redesign presentation
elsirapls
0
320
Git: the NoSQL Database
bkeepers
PRO
432
67k
How to Think Like a Performance Engineer
csswizardry
28
2.7k
Skip the Path - Find Your Career Trail
mkilby
1
180
Leveraging Curiosity to Care for An Aging Population
cassininazir
1
460
<Decoding/> the Language of Devs - We Love SEO 2024
nikkihalliwell
1
280
A Tale of Four Properties
chriscoyier
163
24k
Max Prin - Stacking Signals: How International SEO Comes Together (And Falls Apart)
techseoconnect
PRO
0
360
Introduction to Domain-Driven Design and Collaborative software design
baasie
1
930
Leo the Paperboy
mayatellez
8
2.1k
Game over? The fight for quality and originality in the time of robots
wayneb77
1
240
ReactJS: Keep Simple. Everything can be a component!
pedronauck
666
130k
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開発でも同じように •一般的なフロントエンド技術の導入