Salesforceのバージョンアップに備える

いよいよWinter'14のバージョンアップが近づいてきました。 すでにSandBoxのアイコンがシロクマになってていて、時の早さに驚いた方も多いのではないでしょうか?

今回は、バージョンアップ時に、気を付けなければいけないことをまとめてみます。

※この記事では、以下の用語を使い分けさせていただきます。 ・バージョンアップ :Salesforceが実施する年3回のバージョンアップのこと ・リリース/Deploy :Salesforce上で開発しているアプリケーションの運用環境への反映

1.バージョンアップ時期

Salesforceは年3回メジャーバージョンアップを行います。直近4回では下記の日程でバージョンアップが行われました。(Winter'14はこれからです。)

過去のバージョンアップ日

Winterが10月、Springが2月、Summerが6月に行われ、いずれも月の下旬ではなく、おおよそ各月10日前後に実施されています。 かなり季節先取りですね。

2.バージョンアップ時のスケジュール

過去のバージョンアップも今回のWinter'14のバージョンアップと同様のスケジュールでユーザにプレビュー期間などが提供されています。 Winter'14のバージョンアップスケジュールを例に、日本ユーザがよく利用されているインスタンスでのバージョンアップタイミングをまとめてみました。

バージョンアップスケジュール

3.各期間ごとのタスクと考慮点

それでは、図で記した各期間ごとに実施しておきたいタスクと考慮点をあげていきましょう。

A期間
バージョンアップから次のバージョンアップ告知までの期間です。
考慮点フルSandBoxのリフレッシュタイミングを考慮しておきましょう!

バージョンアップの告知前の期間にフルSandBoxをリフレッシュする必要が出てきた場合には、そろそろ来るであろうバージョンアップ告知を念頭に実施可否を判断しましょう。フルSandBoxは一度リフレッシュすると29日間リフレッシュできません。次のB期間中にリフレッシュできないなんてことにならないように気を付けます。
B期間
いよいよ次のバージョンアップの準備が始まります。 バージョンアップ告知が行われ、プレビューに参加するかどうかを判断する重要な期間です。 この期間にリフレッシュされたSandBoxは、リフレッシュ前のインスタンスと異なるインスタンスに作成されます。(CS5→CS6, CS6→CS5に変更される。)

タスク プレビュー参加計画の策定

例えば、Sandboxを1つのみ利用可能な組織でのアクションを考えてみましょう。

①プレビューに参加を希望する場合

SandBoxがこの時点でCS6インスタンスに作成されている場合、リフレッシュを実施しCS5に移行しておく必要があります。もちろんSandBoxをリフレッシュするということなので、それまでにSandBox上で開発していたリソースを移管する必要がでてきます。ApexやVisualforceだけであれば、ローカルに保存しておき、リフレッシュ後のSandBoxに保存するという方法で対応できますが、オブジェクトを追加し、かつ複雑な項目レベルのセキュリティを設定済などの場合は検証作業含めて、それなりの作業量になるため作業スケジュールを立てる必要があるでしょう。

②プレビューに参加を希望しない場合

開発中のアプリケーションのリリース日がバージョンアップ日より前である場合には、こちらを選択することになると思います。もし、開発中のSandBoxがCS5インスタンスにある場合には、リフレッシュを行い①でのリソース移管と同様の対応をとる必要があります。

C期間
プレビュー開始前の準備期間です。 この期間にSandBoxを更新した場合はCS6のインスタンスにSandboxが作成されるため、プレビュー対象外のSandBoxになります。

タスク リリースノートの確認

この期間にリリースノート(まずは英語版から)が提示されるので、リリース内容を確認しておきます。Apexで開発予定の機能がバージョンアップにより標準機能で対応可能になるなんてこともあります。必ず目を通すようにしましょう!

上記タスク以外にも、プレビューに利用するデータの準備や必要に応じて、バージョンアップ前後を比較するためのキャプチャを用意しておきます。 SandBoxのバージョンアップは週末に行われますが、時間をあらかじめ確認しておきましょう。フルSandBoxに対して初期データ移行のリハーサルを予定していた週末が実はバージョンアップの日で、なんてことは経験したくないですよね?

D期間
プレビュー期間中です。 この期間にSandBoxを更新した場合はCS6のインスタンスにSandboxが作成されるため、プレビュー対象外のSandBoxになります。

タスク 新機能検証

『新機能を早速使いたい!』という場合は、この期間にプレビュー環境を利用して開発を進めることになります。新機能が想定していた通りの機能かどうか?利用ユーザも含めてカスタマイズと検証を進めます。

考慮点 運用環境へのリリースは要注意!

SandBoxがバージョンアップ済の場合に運用環境へのリリースでエラーになることがあります。 開発プロジェクトの立案時に、バージョンアップまで考慮にいれたリリース日を策定できればよいのですが、実際にはなかなか難しいことの方が多いでしょう。気が付けばバージョンアップ直前にリリース日が計画されていて、かつ、B期間は開発のピークだったのでとても上記②対応なんてとれていないという状況になりがちです。

エラーとなる主な原因は次の2つです。
  1. バージョンアップで追加された新しいApexメソッドやVisualforceタグを使いたい衝動に負けてしまった。
  2. 新機能で追加された標準機能がある。
対処方法としては、
  1. 新機能の箇所をコメントアウトするなどしてリリースするしかないですが、そもそもリリースタイミングで正式に運用環境利用できる機能かどうかは実装時に気を付けておきましょう。
  2. メタデータを直接修正したXMLファイルをAntツールなどでDeployする。 または、SandBoxのカスタマイズを横目に、運用環境に同じ設定を施すといった力技で対応する。

等が考えられますが、できうる限りこれらの対応は避けたいところです。

万が一、バージョンアップ日とリリース日が重複している場合は、バージョンアップにかかる停止時間など以前に比べると大幅に短縮されているとはいえ、スケジュールの変更を再考したほうがよいでしょう。

4.まとめ

バージョンアップ時の考慮点をまとめます。

プレビュー対象のSandBoxと対象外のSandBoxがある。 上記例では、CS5はプレビュー対象SandBox、CS6が対象外SandBoxとなります。 通常はSandBox更新時に作成先のインスタンスを選択できませんが、バージョンアップリリース間に限り、指定された期間に適切なアクションをとることで作成先インスタンスを指定することができます。
運用環境とSandBox環境でバージョンが異なる。 SandBox環境が先にバージョンアップされてしまい、運用環境にリリースできないことがあります。
フルSandBoxのリフレッシュタイミング フルSandBoxは一度リフレッシュすると29日間リフレッシュできません。

5.最後に

Salesforce認定○○』な皆さんは、更新試験の受験までが、バージョンアップですよね??