tyoshikawa1106のブログ

- Force.com Developer Blog -

SFDC:AppExchangeアプリでのバージョン番号の管理について

TrailheadでAppExchangeアプリ開発で必要になるパッケージのバージョン番号の管理について紹介されていました。



例えば次のバージョンがあるとします。→ AppXバージョン2.1.3


この場合は下記のように考えればいいみたいです。

  • メジャーバージョン番号(2)。メジャーバージョン番号が変更されたことは、製品の大幅な大幅な変更を意味します。
  • マイナーバージョン番号(1)。フィーチャを追加したり、製品で目立つものを変更したりすると、マイナーバージョン番号が変わりますが、以前と同じように機能します。
  • パッチのバージョン番号(3)。パッチのバージョン番号は、製品をパッチで更新するたびに変わります。

f:id:tyoshikawa1106:20170621004950p:plain



ルールをきちんと決めておくと余計な混乱が起きないように開発を進められそうです。

追記

「製品の最新バージョンはバージョン3.1.4です。あなたの製品の次のマイナーバージョン番号は何ですか?」とチャレンジにありました。
マイナーバージョン番号は真ん中の1なので次のマイナーバージョンでは2になります。なので 3.2.4・・と勘違いしたのですがマイナーバージョンが変わった場合はパッチのバージョン番号も0に戻ります。

ということで3.1.4の次のマイナーバージョンは3.2.0になります。

SFDC:AppExchangeアプリ開発でのアップデートの種類について

TrailheadにAppExchangeアプリ開発に関するモジュールを進めていた所、アップデートの種類について紹介がありました。


製品のアップデートには二つの考え方があるようです。

  • パッチ -製品の動作に影響を与えない、美容UXアップデートやバグ修正などのマイナーな変更。
  • アップグレード - 製品の動作や顧客とのやりとりの仕方を変える機能の新旧の変更。


英語のモジュールを無理やり日本語変換したものですがこういった考え方についての内容もありました。
f:id:tyoshikawa1106:20170621004515p:plain

SFDC:StandardControllerのaddFieldsとApexテスト

standardControllerのaddFieldsを利用すればクエリを投げずに追加で項目を取得することが可能です。

private void SampleController(ApexPages.StandardController stdController) {
    stdController.addFields(new List<String> {'Sample__c', 'Sample__r.Name'});
}


便利な処理ですが、テストクラスで下記エラーが発生することがあります。

System.SObjectException: You cannot call addFields when the data is being passed into the controller by the caller.


エラーの発生はテストクラス内で次のように対象オブジェクトをnewするような処理を書いたときに発生します。

SampleController cls = new SampleController(new ApexPages.StandardController(new Demo__c()));


回避方法を検索したところ、Test.isRunnningTestを利用する方法になるみたいです。

if (!Test.isRunningTest()) { 
    stdController.addFields(new List<String> {'Sample__c', 'Sample__r.Name'});
}      

参考

SFDC:Force.com移行ツールでApexクラスの削除

環境構築はこちら。


こんな感じにファイル一式を用意できれば大丈夫です。
f:id:tyoshikawa1106:20170618221225p:plain


build.propertiesで対象組織のユーザIDとパスワードを指定できます。
f:id:tyoshikawa1106:20170618221318p:plain


今回は例としてsample.pageを削除します。
f:id:tyoshikawa1106:20170618221455p:plain


removecodepkgフォルダにdestructiveChanges.xmlがあります。そこで削除対象のページ・クラスを指定します。
f:id:tyoshikawa1106:20170618221659p:plain


処理実行前にsalesforce_ant_39.0フォルダの下のフォルダに移動してください。

cd /Users/tyoshikawa1106/tools/salesforce_ant_39.0/src

ページ・クラス指定後に削除処理を実行します。

$ ant -Dpackage.xml=package.xml -f build.xml undeployCode


ant -Dpackage.xml=package.xml -f build.xmlまでは共通でその後が処理によって異なります。こちらはbuild.xmlファイルに実行できる処理が記載されています。
f:id:tyoshikawa1106:20170618222043p:plain


実行すると次のようになります。
f:id:tyoshikawa1106:20170618222810p:plain


実行後に対象ページにアクセスしようとすると削除されていることを確認できます。
f:id:tyoshikawa1106:20170618222851p:plain


無条件に削除できるのではなく、別のコンポーネントで呼び出したりされているときちんとエラーとなります。
f:id:tyoshikawa1106:20170618222936p:plain


運用組織の場合は通常のリリースと同じでApexテストが実行されます。

SFDC:Chatter で共有ボタンをクリック時に画面がフリーズしたときに確認すること

Internet Explorer の互換表示機能を有効化しているとChatterの共有ボタンをクリック時に画面がフリーズする現象が発生しているそうです。詳細についてはヘルプで紹介されていました。

f:id:tyoshikawa1106:20170618173813p:plain

Help | Training | Salesforce


Salesforceでは古いバージョンのブラウザはサポート対象外になっているので出来る限り最新版のブラウザを利用するようにした方が良いみたいです。
f:id:tyoshikawa1106:20170618173958p:plain

Help | Training | Salesforce

SFDC:数式で再現するEXCELのPV関数

EXCELには投資の現在価値を返すためのPV関数が用意されています。こちらをSalesforceの数式項目で再現する方法についてです。
f:id:tyoshikawa1106:20170618171718p:plain


PV関数に必要な項目は下記の3つです。これでPV関数の計算を行うことができます。

  • 利率
  • 期間
  • 支払額

f:id:tyoshikawa1106:20170618171924p:plain


数式の内容は下記の通りです。

( (PvAmount__c) * ( (1+PvRate__c) ^ PvTerm__c -1)) / ( PvRate__c *((1+PvRate__c)^PvTerm__c))

f:id:tyoshikawa1106:20170618172015p:plain



これでEXCELのPV関数と同じ値を算出できると思います。

EXCEL・PV関数

f:id:tyoshikawa1106:20170618172121p:plain:w300

Salesforce・数式

f:id:tyoshikawa1106:20170618172440p:plain


このように同じ結果を算出できました。プラスかマイナスかは簡単に切り替えができると思います。

関連記事