OrangeNBTの実装に向けての検証とテスト等
LevelDBはgoogleが開発したSQLiteみたいなデータベースです。MinecraftのBedrock版でワールドの保存に使われてます。C#で実装しなおすのは極めて車輪の再発明です。ライブラリがどれがいいのか考えるだけの記事です。
LevelDBはCでの実装が公式に公開されてます。https://github.com/google/leveldb
.NETでは動きません。DLLImport等使えば動くと思いますけど……。
理想のライブラリの条件を上げましょう
・追加のDLLいらない。NativeDLLもできればいらない。
・ソースコードのまま導入できる。いわばオープンソース
・.NET Standardで動いてほしい。動かなくても改造可なら改造する。
・ライセンスにソースコードの開示を求める条項がないこと。このライブラリの利用者もおそらく継承されるため
・別に高機能は求めてない。低レベルでもいい。うごけばそれでいい。
ざっとググってみた限り以下のライブラリを見つけたので検証していきます。
LevelDB.NET
https://github.com/neo-project/leveldb
ライセンス:BSD-3。(可)
githubを見る限りcppファイル等しかない。下記のReactiveExtensionのことでしょうか?
LevelDB sharp
https://github.com/meebey/leveldb-sharp
ライセンス:BSD-3。(可)
ネイティブDLLの使用:あり(unix等で動かないっぽい?)
ReactiveExtension LevelDB
https://github.com/Reactive-Extensions/LevelDB
ライセンス:Apache License, Version 2.0(可)
ネイティブDLLの使用:あり(厳しい)
IronLevelDB
https://github.com/tg123/IronLeveldb
ライセンス:MIT(可)
ネイティブDLLの使用:なし
しかし、githubのREADMEをよく読むと、「This project is still under hard working」このプロジェクトはまだ作業中みたいなこと書いてあるし、読み込み関数しかまだ書いてないぜ見たいこと書いてある……。むむむこれに期待したいけど……厳しい。
Nugetの上位のそれっぽいやつもリンク切れてたり。ライセンスがよくわからなかったり……
そもそもMOJANGのLevelDBは若干改造されたやつである。圧縮方法がどうも違うらしい。
https://github.com/Mojang/leveldb-mcpe
うううむ……どうしようか。
.NET Standardにするとやはり、ネイティブDLLはない方がいいわけで。(うざい・使いにくい・各自コンパイル面倒くさい64bit/32bitでも変わる)
やはり……車輪の再発明しちゃう?