OpenLayers 3 を使ってみよう(その0:はじめに:地理院地図を表示)に OpenLayers 3 に関する投稿の目次があるので参考にしてみて欲しい。
これまで,2014年9月から OpenLayers 3 を使ってみよう(その0:はじめに:地理院地図を表示)として,ちょこちょこと OpenLayers 3 の使い方について書いてきた。
2017年1月にはその OpenLayers 3 の最新バージョンが 3.20.1 になっていた。
いやぁ,早いもんだねぇ,と思っていたら,2017年2月に入ってしばらくすると,OpenLayers のバージョンが 4.0.1 にあがっている…。い,いつの間に?という衝撃を感じた。
しかし,せっかく OpenLayers 3 の使い方について書いてきたので,OpenLayers 4.0.1 についても書こうと思ったのが,今回のお話し。
実は,2017年2月に見た時は,OpenLayers 4.0.0 だった。
でも,多くの場合と同じように最初のリリースはバグが結構ああったみたいで,すぐにバグフィックス版が 4.0.1 として出たのだった。
以前,OpenLayers 2 が OpenLayers 3 に上がった時には,大幅な変更があり,それまで作っていたサンプルを一から書き直す感じだった。
今回,OpenLayers 3 が OpenLayers 4.x.x になったので,どれだけ変わったんやろ?と思ったが,実はいうほど中身は変わっていない。
しかし,なぜメジャーバージョンが 3 から 4 になったのか?
それは,バージョン番号の付け方の方針を変えたから,ということみたい。
OpenLayers のサイトの complete list of releases:v3.0.0 以降の全バージョンの更新情報の中の,v4.0.0 の所に書いてあるのだが,今回,
--------------------------------
バージョン番号の付け方を Semantic Versioning(セマンティック バージョニング) に従うことにしたため,
--------------------------------
らしい。
この,Semantic Versioning は何かというと,バージョンは A.B.C(-xxx) のようにつけ,「A」がメジャーバージョン,「B」がマイナーバージョン,「C」がパッチバージョン,とするというもの。「-xxx」はプレリリースバージョン(パッチを出す前の不安定版)の時につけてもいい,となっている。具体的には,「4.0.1」や「3.20.1」が正式リリース版の例,「4.0.2-alpha」や「1.0.0-0.3.7」みたいなのがプレリリース版の例である。
ちゃんとしたルールは Semantic Versioning やセマンティック バージョニングを見て欲しいが,ざっくり書くと以下のようになるみたい。
(i) メジャーバージョンは,開発版は「0」で始まる(0.xx.yy みたいなやつ)。これは不安定なので,そのバージョンを使ってアプリケーションを作ってトラブルになってもそれは文句を言うな,というやつ。
(ii) メジャーバージョンの「1」以降は正式なリリース版とみなされる。メジャーバージョンは「後方互換が保てない時」には番号を増やす。逆に言うと,メジャーバージョンが上がっていると,後方互換が保たれていないので,アプリケーションコードを見直さないといけないことを意味する。
(iii) マイナーバージョンは,メジャーバージョンがあがれば「0」から開始する(リセットされる)。マイナーバージョンは,後方互換性が保たれた状態で,関数等に機能の追加があった時など,変更があった際にあげる。つまり,基本的にはアプリケーションコードはそのままでも正しく動作するはず,である。
(iv) パッチバージョンは,マイナーバージョンが上がればリセットされる。パッチバージョンは基本的にバグフィックスや,機能が思ったように動いていない時の修正版である。
つまり,パッチバージョンが上がると動作が「正しく」なるはず。アプリケーションのコード自体はいじる必要はない。
(v) パッチ等のプレリリース段階の場合は,A.B.C の後に,「-xxx」のように追加して記載する。プレリリースバージョンはあくまでテスト用であり,安定を求めてはいけない。いつコードが書き換えられるかわからないので,信用してはいけない。
ほかにも細かく書いてあるけど,だいたいこんな感じみたい。
となると,今回 OpenLayers 3 が OpenLayer 4.0.1 になったというのは,「後方互換が保たれていない」ことを意味している。
しかし,逆にこれからは,メジャーバージョンが上がったら気をつければいいので,ある意味安心である。
以前,OpenLayers が 3.7.0 に上がった際には,ol.FeatureOverlay が廃止されたり,ol.source.KML が廃止されて,ol.source.Vector と ol.format.KML を使うように変更されたりして,「後方互換は保たれていなかった」。
また,OpenLayers 3.11.0 に上がった際には,ol.format.KML のオプションの初期値が変更された。
それって後方互換はあるって言うのかなぁ?
個人的にはアプリケーションのコードを変更しないといけなかったので,後方互換は破られた,と感じた。
このように,以前はマイナーバージョンが上がると後方互換を気にしないといけなかったが,今回は後方互換の保持はメジャーバージョンの数字で判断できるようになったことになる。
それでは,具体的にどこが変わったのか…。
例えば,ol.View の fit メソッドの引数が変更になった。
これまで,map.getView().fit(extent, map.getSize()); としていたものが,map.getSize() はいらなくなったらしい。逆に指定したい時は,オプションとして追加するらしい。
他にも animation がらみで幾つかのメソッドが廃止になったらしい。
私の作っているものでは,今回のバージョンアップでは,ol.View の fit メソッド以外は問題なかった。
fit メソッドも getSize() 関数は無視されて問題なく動いたが,OpenLayers 4 を使う場合には変更しておこうと思う。
0 件のコメント:
コメントを投稿