9. ベータから1.0.0へ

どんなソフトウェアパッケージでもそうですが、パッケージの機能変更によって以前のバージョンとの互換性がなくなることも時折り避けがたく発生します。特にSwarmのような試験的なパッケージではあり得ることです。

我々はユーザが新しいリリースに移行するときに発生するすべての問題を編纂して、ここに掲げようという1つの試みに挑戦してきました。これを隈なく読み、あなたのアプリケーションを新しいリリースで稼動するために必要な事項を拾い出してください。

  1. 最大かつ最も思うままに行かない問題は、新しいrandomライブラリに起因します。この問題を扱う方法はrandomライブラリのドキュメンテーションで説明しています。

  2. swarmobjectライブラリの新しいパッケージからは、むしろ好都合な問題が生じます。このライブラリへのインターフェイスは、defobjcollectionsライブラリの同期をもたらしました(さまよっている残りのライブラリは、後のリリースでこれに従うでしょう)。このインターフェイスの変更に関連する問題の解決は、objectbaseライブラリのドキュメンテーションで詳述されています。

  3. 新しいactivityライブラリにも、1.0で導入された好ましい非互換な機能が2つあります。activityライブラリは多くの部分が変更されましたが、ほとんどはすべて厳密に等しく稼動します。非互換性の詳細はactivityライブラリのドキュメンテーションに記載されていますが、以下で手短かに紹介しましょう。

    • activityライブラリは高いレベルで構造上の変更がなされ、
      swarmActivity
      変数は名前が変わりました。あなたのアプリケーションでこの変数を使っていたなら、おそらくBatchSwarmの中だと思われますが、その場所では、
      [self getActivity]
      を使用することが推奨されます。これは新しいメッセージで、
      getSwarmActivity
      メッセージの代わりをします。ただし、古いメッセージも下位互換のために残されています。

    • 以下のマクロはなくなります。
      getCurrentActivity()
      あなたのコードでこの古いgetCurrentActivity()が使われているなら、それはもう機能しません。このマクロは主にactivityライブラリのインターナルへのアクセスを目的として使用されるので、さほど幅広くはないでしょう。他のどれかのマクロをアプリケーションに使ってください。

  4. Zoneの背景概念のほとんどはそのままですが、その機能は大きく改善され、拡張されました。あなたのコードがかなり古い場合、気をつけなければならない非互換性が1つあります。それはdropFrom:メッセージがなくなったことで、仮にそれが最近のリリースに存在していても動作はdropと同じです。これが利用されているところはすべてzone引数を使わず、単にdropメッセージに置き換えてください。SwarmObjectのサブクラスは、以前インスタンス変数に含まれていたzoneへのアクセスから制限を受けるようになりました。代わりに、getZoneメッセージを使用しなければなりません。