Shoeisha Technology Media

CodeZine(コードジン)

記事種別から探す

Salesforceアプリ開発をオープンに――API/CLIによる操作や、GitHubと連携したCI/CDを実現するSalesforce DXとは?

「Salesforce World Tour Tokyo 2016」開発者向けセッションレポート

  • LINEで送る
  • このエントリーをはてなブックマークに追加
2017/01/24 15:00

 Salesforce Platform上で動作するアプリケーションの開発は、これまで独自の作法で進める必要があった。一方で、オープンな開発環境は大きく進化し、特に継続的インテグレーション(CI)や継続的デリバリー(CD)といったテストとリリースを自動化する仕組みと、それを支えるバージョン管理システムとの連携には目を見張るものがある。「常識」となりつつあるこうした開発環境への対応を、セールスフォース・ドットコムも新しい開発環境「Salesforce DX」で果たす。本稿では、昨年12月13日~14日に開催されたイベント「Salesforce World Tour Tokyo 2016」でSalesforce DXを紹介したセッション「Salesforce DX(Github) Deep Dive Salesforceの開発生産性向上のための新機能」の内容をレポートする。

目次

本稿で紹介するセッションの動画やスライドが閲覧できます

ガラパゴスな開発手法からの脱出

 セッションでSalesforce DXの紹介を行ったのは、セールスフォース・ドットコムでプロダクトマーケティング シニアデベロッパーエバンジェリストを務める岡本充洋氏。同氏はSalesforce DXが開発された背景から話を始めた。

セールスフォース・ドットコム プロダクトマーケティング シニアデベロッパーエバンジェリスト 岡本充洋氏
セールスフォース・ドットコム プロダクトマーケティング シニアデベロッパーエバンジェリスト 岡本充洋氏

 Salesforce Platform上で動作するアプリケーション(以下、Salesforceアプリ)の開発は、これまでSalesforce Wayとも呼ばれる独自の方法で行われることが多かったという。これは、いわばガラパゴスな開発手法であり、他のプラットフォーム上で近年行われているモダンなソフトウェア開発からは遠いものだった。米Salesforceは2011年にPaaSベンダの「Heroku」を買収したが、Herokuの創業メンバーであるAdam Wiggins氏が掲げた「12 Factor App[1]」などをはじめとするモダンなソフトウェアデリバリに必要な要件を、Salesforce自身が満たしていなかったのである。

Salesforce.comが掲げる「モダンなソフトウェアデリバリに必要な事」
Salesforce.comが掲げる「モダンなソフトウェアデリバリに必要な事」

 また、Salesforceアプリの開発では「正しいコード」、つまり継続して更新していくべきコードはOrg(ランタイム環境)中にあると考えることが多いのだという。しかし、本来はソースコード管理システムの中にあるものが正しいコードでなくてはならない。

「Salesforce DXはそういったところから変えていくことを目指しています。単一のOrgを開発者が共有するのではではなく、開発者単位でOrgの生成と破棄を自由にコントロールするのです。そのために、チーム開発および継続的デリバリーをサポートするサービスを提供する、開発生産性の向上や他システムとの連携を容易にするCLIツールを提供する、といったことが考えられています」(岡本氏)

 ソースコード駆動で素早い開発とデプロイ、オープンで業界標準に準拠した開発フローの取り込みと実現。Salesforce DXのリリースは、ガラパゴスからこうしたモダンな開発への船出となるようだ。

Salesforce DX以前と以降の比較
Salesforce DX以前と以降の比較

 なお、岡本氏が「基本的にはさまざまなツール、さまざまな考え方、サーバサイドのAPIなどをつなぎ合わせた集合体と捉えている」というSalesforce DXの機能群を表しているのが、次のスライドである。

Salesforce DXの機能群
Salesforce DXの機能群

 この後には、Salesforce DXが提供する各機能の紹介に話が移っていく。

[1]: [https://12factor.net/](https://12factor.net/)。日本語訳はこちら

ソース駆動開発――コードとメタデータをバージョン管理システムへ

 Salesforceアプリの他にない特徴の一つに「エンドユーザーによるカスタマイズ」がある。業務向けが多くを占めるSalesforceアプリならではかもしれないが、設定により業務に合わせて挙動や出力などを変えられる柔軟な仕組みをSalesforce Platformは提供している。ユーザーが行った設定はメタデータとしてサーバーに保管される。

「例えば、開発者がメタデータを使って作成したレポート書式を、ユーザーさんがちょっと変えました。よくある話です。そうなると“正しいソースコード”というのは、ユーザーさんが変更したSalesforce側のレポートのメタデータになるわけです。そうすると、それはバージョン管理システムに取り込まなくてはいけない」(岡本氏)

 この状況でソース駆動開発を行うためには、開発者の記述したコードだけでなく、本番環境にあるメタデータもいっしょにバージョン管理しなければならない。そのため、Salesforce DXではTooling APIなどが拡張され、ソースを同期するための「ソースシンクAPI」がリリースされる。これまでは開発者(ローカル)側とSalesforceアプリが稼働するサーバー側とで相互にメタデータなどをやりとりするためのAPIが提供されていたが、これをさらに拡張した形だ。

 ソースシンクAPIにより、開発者が提供した初期設定とエンドユーザーがカスタマイズしたメタデータのどちらが最新かを判断し、バージョン管理システムで一括管理することができるようになる。例えば、使い慣れたGitHubでコードを管理し、チーム開発をスムーズに進めるといったことも可能となる。

ソース駆動開発
ソース駆動開発

  • LINEで送る
  • このエントリーをはてなブックマークに追加

著者プロフィール

  • 市古 明典(編集部)(イチゴ アキノリ)

    CodeZine編集部3年目の44歳。宝飾店の売り子、辞書専門編集プロダクションの編集者(兼MS Access担当)を経て、2000年に株式会社翔泳社に入社。月刊DBマガジン(休刊)、IT系技術書・資格学習書の編集を担当後、2014年4月より現職。9月から翌年2月まではNFL観戦のため、常時寝不足。...

バックナンバー

連載:イベントレポート

もっと読む

おすすめ記事

All contents copyright © 2006-2017 Shoeisha Co., Ltd. All rights reserved. ver.1.5