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
15
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
200
【プロダクト開発部】株式会社キャリオット会社説明資料 / cariot dev hiring
cariotinc
0
280
なめらか&リアルタイムな 動態管理を支えるCariotのAWS基盤 / cariot-xtech-jaws
cariotinc
0
8
Featured
See All Featured
Stop Working from a Prison Cell
hatefulcrawdad
271
21k
Become a Pro
speakerdeck
PRO
29
5.5k
GraphQLとの向き合い方2022年版
quramy
49
14k
For a Future-Friendly Web
brad_frost
180
9.9k
Done Done
chrislema
185
16k
Typedesign – Prime Four
hannesfritz
42
2.8k
Designing Experiences People Love
moore
142
24k
[RailsConf 2023] Rails as a piece of cake
palkan
57
5.9k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
285
14k
Rebuilding a faster, lazier Slack
samanthasiow
84
9.2k
How to train your dragon (web standard)
notwaldorf
97
6.3k
We Have a Design System, Now What?
morganepeng
53
7.8k
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開発でも同じように •一般的なフロントエンド技術の導入