見出し画像

Blenderのバージョン表記がセマンティックではない、というお話

「Blender 2.81aの"81"とか"a"って何ね?」って実際の生活で聞かれることは無いですが、スレッドやらなんやかんやは立っていたりするわけで。

Blenderのバージョニングは特殊でSemverにしたがっていないように見えます。

バージョンをセマンティックに

はい、そうですね。これはしばしば話題になります。

えっ、「『バージョンがセマンティック』って言ってる『セマンティック』ってそもそも何?」ですか?「バージョンの並びを見て『大きく変わった』、『小さく変わった』がわかりやすくなるようにすること」っていう感じですかね?

2.80は「にーてんはちじゅう」

ああそうそう、2.80を「2.8.0」って誤って表記される方をたまに見ますが、「80」です、はちじゅう。

ちなみにバージョン番号の後に"a"とか付くのは「影響の大きいバグを修正した版」で、彼らはメンテナンスリリースとか言っているようですが、いわゆる緊急リリースの扱いです。

2.79から2.80で説明すると、 2.70-2.79 は 2.7x 、 2.80-2.89 は 2.8x と「シリーズ」として何となく区切られている現状。これを「セマンティックに」っていうのであれば、2.79の次はレンダリングエンジンが廃止・追加とかゲームエンジン廃止とかめちゃくちゃ大きく変わってるので 3.0.0 (またはもっと大きく飛ばして28.0.0)にすべき、ってところなのかな、と思います。

仮に、「ファイル互換性の破壊」や「手順の変わるようなUIの変更」がメジャーバージョンアップの契機だとすると、直近でも「メジャーバージョンが2つ上がってないとおかしい」という風に。

2.79->2.80(Blender内蔵レンダラの廃止、BGEの廃止、Eeveeレンダラ搭載、ほか多数)
・ 2.80->2.81(シェーダーノードの拡張によるファイル非互換性、AIデノイズ機能追加、Dynamic Remesh機能追加、スカルプト機能の刷新)

まあもちろんわからんでもないですよ。とはいえ「0.01上がる度に大きい機能が付いてくる」っていうところ、開発サイクルが「ラピッドリリース」のそれなので、「Webブラウザとかとリリースサイクルは一緒なんだけど、それらがバージョン上がってるの、あなた達気にしてる?」って聞き返したいくらいには「それって意味あんの?」っていう印象しかないですね、個人的には。

「開発がフリーダムすぎる」っていうのもそれはそれで面白いと思いますので(だからマイナーなままなんだ、とかその辺のツッコミはナシで)。

ロードマップの目標は「3.0」。

まあでも.blendファイルの最初の数バイトに格納されている形式が"2.XX"な感じなのと、先にもう3.0までのロードマップが出ちゃってるので「今はその議論のタイミングじゃあないよね?」っていうのが妥当な線といったところ。

OSで認識できる.blendファイルのバージョン情報から

file コマンドもこうだし。

$ file patterns.blend 
patterns.blend: Blender3D, saved as 64-bits little endian with version 2.81
$ 

定義(macOS High Sierra)も。

$ pwd
/usr/share/file/magic
$ ls -l blender
-rw-r--r--  1 root  wheel  1194 10  7  2017 blender
$ cat blender

#------------------------------------------------------------------------------
# $File: blender,v 1.7 2017/03/17 21:35:28 christos Exp $
# blender: file(1) magic for Blender 3D related files
#
# Native format rule v1.2. For questions use the developers list
# http://lists.blender.org/mailman/listinfo/bf-committers
# GLOB chunk was moved near start and provides subversion info since 2.42

0		string	=BLENDER	Blender3D,
>7		string	=_		saved as 32-bits
>>8		string	=v		little endian
>>>9		byte	x		with version %c.
>>>10		byte	x		\b%c
>>>11		byte	x		\b%c
>>>0x40		string	=GLOB		\b.
>>>>0x58	leshort	x		\b%.4d
>>8		string	=V		big endian
>>>9		byte	x		with version %c.
>>>10		byte	x		\b%c
>>>11		byte	x		\b%c
>>>0x40		string	=GLOB		\b.
>>>>0x58	beshort	x		\b%.4d
>7		string	=-		saved as 64-bits
>>8		string	=v		little endian
>>9		byte	x		with version %c.
>>10		byte	x		\b%c
>>11		byte	x		\b%c
>>0x44		string	=GLOB		\b.
>>>0x60		leshort	x		\b%.4d
>>8		string	=V		big endian
>>>9		byte	x		with version %c.
>>>10		byte	x		\b%c
>>>11		byte	x		\b%c
>>>0x44		string	=GLOB		\b.
>>>>0x60	beshort	x		\b%.4d

# Scripts that run in the embedded Python interpreter
0		string	#!BPY		Blender3D BPython script
$ 

「3.0から本気出す」でいいと思います

まあ、バージョン番号を開発側がどう刻んでくるのかは分かりませんが、3.0まであと0.20しかないわけですね。そう遠い未来でもなさそうな気がします。

なので「3.0から本気出す」でいいと思う、っていうのが個人的な見解です。

See Also:



お読みいただきありがとうございます。サポートいただいた分はおやつのグレードアップに使おうかと思います。スキ、SNSにシェアもよろしくお願いします!