私のチームは、拡張機能のリクエストの受付窓口を担当しています。私たちの手元には重要性の高いリクエストが多数寄せられており、そうしたリクエストはすぐに承認され、通常であれば翌月の更新プログラムで早々にリリースされます。しかし、お応えできないリクエストも少なくなく、却下となった後に詳細についてお問い合わせいただくこともあります。また、対応が難しいリクエストを一度に大量に申請されるお客様も一部にはいらっしゃいます。そうすると、こちらもまとめて却下せざるを得ません。せっかくお送りいただいても残念ながら「無駄」になってしまうのです。
この記事では、拡張機能のリクエストを申請する際の心得をご紹介します。リクエストが真っ先に承認されるよう参考になさってください。
※本稿は、Microsoft Corporation の Michael Fruergaard Pontoppidan が「Tips for logging extensibility requests」として2018年9月15日にポストしたブログの参考訳です。
1. 環境が整うまでリクエストは申請しない
オーバーレイヤー化した 7.x バージョンをお使いの場合、リクエストを申請できる状態が整っているとは言えません。オーバーレイヤー化したコードには、拡張機能のリクエストを 1 対 1 で対応付けられないからです。一般的に、オーバーレイは拡張機能にリファクタリングできるため、追加で対応することはありません。マイクロソフトのデータでは、80 ~ 90% のオーバーレイが既にサポートされており、拡張機能のリクエストは不要となっています。
参照: オーバーレイから拡張機能への移行
2. 既にサポート済みの機能でないか確認する
マイクロソフトは毎月数百件もの拡張機能のリクエストに対応しています。7.3 などの古いコードで機能を調べるのは適切ではありません。最新の月次更新プログラムを提供して最新バージョンにアップデートしてください。
参照: Finance and Operations, Enterprise Edition (2017 年 7 月) の拡張機能の変更
3. プラットフォームの拡張機能を理解する
プラットフォームには、拡張機能を作成するためのリッチな機能が豊富に用意されています。詳細を確認して、それらを活用しましょう。
参照: 拡張機能の作成、ブログ記事「X++ は世界で最も拡張性の高い言語 (英語)」
4. 拡張点を整理する
ソリューションを拡張機能に移行する一環として、必要な拡張点をローカルで実装することをお勧めします。プロセス内でイテレーション、テスト、修正、試験運用を行うとよいでしょう。そうすることで、リクエストすべき拡張点が明確になるはずです。
参照: 拡張コードの作成、オーバーレイを拡張機能にリファクタリングするためにモデルの制限を緩和
5. 置き換えが可能な形のメソッドはリクエストしない
置き換え可能な範囲が小さければ許容されますが、そうでないなら害になります。砂糖やカフェインと同じです。「置き換え可能」とは、単にツールのないオーバーレイを意味します。マイクロソフトはこうした対応を可能な限り避けているため、大掛かりなメソッドを置き換え可能にするようなリクエストをお送りいただいても、却下されてしまいます。リクエスト時には、お客様の要件をしっかり満たす、メソッド抽象化のリファクタリングをご提案ください。
6. 既存メソッドへのパラメーターの追加をリクエストする前に再度検討してみる
下位互換性の問題から、パラメーターの追加には対応しかねます。もちろん、オプション パラメーターの追加にも応じられません。多くの場合、こちらのブログで紹介しているテクニック (英語) を用いれば、パラメーターを追加しなくても要件を満たすことができます。それでもなおパラメーターが必要となる場合には、相応の説明を添えてリクエストを申請してください。既存メソッドの廃止や新規メソッドの導入を検討いたします。
参照: ブログ記事「拡張可能な X++ – メソッドの署名 (英語)」、コード破損につながる変更
7. ビジネス シナリオを説明する
マイクロソフトでは、そのリクエストによってエンド ユーザーにどのようなメリットがあるのかを知りたいと思っています。たとえば「<特定の業界や業種> では、<ペルソナ> が <作業の詳細内容> を実行できる必要があります。<クリックの場所や入力内容など、ペルソナの具体的な操作説明> が可能になることで、それに対応できます」といった形で説明してください。
8. ワークフローで対応できるフォームをリクエストしない
マイクロソフトでは、拡張機能のリクエストに基づいて 1 つずつワークフロー対応フォームを作成することはありません。その代わり、プラットフォームの拡張機能としてワークフローでの対応をサポートしています。
*This post is locked for comments