見出し画像

サービスや製品における互換性とは

互換性

みなさん、こんにちは。はせちです。
突然ですが『互換性』という言葉を聞いて何を想像するでしょうか。
システムの後方互換性を想像した人は多いのではないでしょうか。

今回は、一般的な後方互換についての話題ではなく、提供機能についての互換性について記載してみたいと思います。

後方互換性

今回の話の流れとは外れますが折角なので少し触れておきます。
後方互換性の説明は、wikipediaによると 次の通りでした。

後方互換性(英語: Backward compatibility)
古いシステム向けのデータなどが新しいシステムでも全て使用できること。

https://ja.wikipedia.org/wiki/%E4%BA%92%E6%8F%9B%E6%80%A7

invoiceAgentにおいての後方互換性も同様で、保存してある文書や、設定済みのカスタムプロパティや操作権限、さらにWeb APIを利用したお客様のプログラムが、たとえ製品がバージョンアップしても利用し続けられることが『後方互換性がある状態』だと考えています。

invoiceAgentのWeb APIは、Web API単位でのバージョンアップ戦略を取っています。例えば、指定した文書の詳細情報(メタ情報)とカスタムプロパティの情報を取得する『Documents Get(Ver. 15)』は以下のように表現されます。

http://<hostname>:44230/spa/service/documents_v15/<id>

次の考え方でinvoiceAgentを設計しているため、Web API毎にバージョンを用意しています。

  • Ver. 15で入った機能追加を利用したいお客様には、
    Ver. 15のWeb APIを利用して頂く

  • Ver. 15で入った機能追加を利用する必要がないお客様には、
    これまでお使いのVer. 14以前のWeb APIをそのまま利用して頂く

  • これからWeb APIを利用されるお客様には、
    最新版のバージョンのWeb APIをご利用して頂く

機能の互換性

ところで「機能の互換」についての定義は何かと聞かれたら、
みなさんは何と答えるでしょうか。
私は『お客様の現在の運用を維持できること』と答えると思います。

過去にあった失敗からの学び

invoiceAgentでは、文書属性となるカスタムプロパティの変更するUI操作において、複数の文書に対して違ったカスタムプロパティの値を一括設定することができませんでした。
唯一複数の文書を選択し(以下の例では請求書2と請求書3に)、同じカスタムプロパティの値を設定することはできていました。

アップデート前のカスタムプロパティの更新

あるアップデートにおいて、複数の文書の各々のカスタムプロパティを自由に設定できるように機能拡張しました。開発段階では『同じ値を一括でセットすることができなくなる』ことは理解していましたが、エディタのコピー&ペーストにより同じ値を複数ペーストしてもらうことで代替可能と判断していました。

アップデート後のカスタムプロパティの一括更新

しかし、アップデートして直ぐにお客様より『複数の文書に同じ値をセットすることができなくなった。エディタで可能だが手間がかかるようになった』とご連絡を頂きました。
機能としてはエディタ操作により代替手段は維持できていましたが、お客様が画面操作のために消費する時間が伸びてしまっていたのでした。

アップデート前のカスタムプロパティの更新機能を使えるように急ぎ対処しましたが、何日かは運用負担をかける結果となってしまいました。

お客様の業務負担にならないように機能変更を考えることは、
互換性の維持には欠かせない事だと、再認識するきっかけとなりました。

不具合への考慮

機能追加以外のケースとして、サービスや製品不具合のためにやむを得ずに修正が必要な場合もあります。仕様に問題がある場合は、このケースになってしまうことが多いです。

オンプレミスでの方針は『動作(挙動)が変わってしまうものはリリースノートに記載したうえで修正していく』というものでした。お客様がアップデートを行う際には、リリースノートを確認したうえでアップデートをして頂ける(不都合があればアップテートをしない選択がある)というクッションがありました。

しかしクラウドの時代になり、アップデートはサービス提供側のタイミングでの実施となりました。お客様は不都合があるかどうかわからないし、アップデートを拒否することができない状況になっています。

そこで、invoiceAgentのクラウドサービスは『お客様の業務を止めないこと』を大前提として、不具合だとしても 多くのお客様が利用している機能であれば、仕様として提供し続け、不具合を塞いだ機能を選択できるように機能を提供していく方針で開発をしています。

テストの工数など手間がかかる方針ですが、お客様にはご案内を続けて、いずれは正しい仕様のほうに切り替えてもらい、最終的には元々あったものを廃止したいとの考え方で対応しています。

まとめ

現在使っているシステムにアップデートが入ったとしても、
次のような事はあってはならないことです。

  • 同じ運用をしていたのに結果が変わるようになってしまった

  • 同じ運用をしていたのに非常に時間がかかるようになってしまった

  • そもそも同じ運用を続けることができなくなってしまった

十分に気を付けてアップデートを実施していますが、
お客様からの連絡により事象に気づき、
すぐに対処したというケースはゼロではありません。

同じ問題を再発させないように、サービスや製品に関わる全ての人が、
問題を見逃さないように注意して開発を行っています。
機能の互換性維持には、今後も継続して重視してまいります。

この記事が気に入ったらサポートをしてみませんか?