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
Cariot
July 21, 2016
0
5
Node.jsと仲良くなって Salesforceアプリケーション開発を楽しく行う / cariot-salesforce-summer2016tokyo
Salesforce Summer 2016 TokyoでLTした時の資料です。
Cariot
July 21, 2016
Tweet
Share
More Decks by Cariot
See All by Cariot
車両動態管理システムCariotの リアルタイム性を実現する技術 / cariot-mobility-night2
cariotinc
0
95
【プロダクト開発部】株式会社キャリオット会社説明資料 / cariot dev hiring
cariotinc
0
140
なめらか&リアルタイムな 動態管理を支えるCariotのAWS基盤 / cariot-xtech-jaws
cariotinc
0
5
Featured
See All Featured
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
330
21k
GraphQLとの向き合い方2022年版
quramy
44
14k
BBQ
matthewcrist
87
9.5k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
40
2k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
28
9.3k
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
4
400
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
11
1.3k
A designer walks into a library…
pauljervisheath
205
24k
Docker and Python
trallard
44
3.3k
The Cult of Friendly URLs
andyhume
78
6.2k
Fireside Chat
paigeccino
36
3.2k
Build your cross-platform service in a week with App Engine
jlugia
229
18k
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開発でも同じように •一般的なフロントエンド技術の導入