MIDIWindの環境設定で、CoreDataを使ってみようと思った。CoreDataといえば一般的にはドキュメントベースなアプリケーションで使われることが多いが、環境設定だって視点を変えれば初期設定ファイルというドキュメントを編集していることになるので、応用は可能だと思った。
しかし、このような使い方をしようとすると、ちょっと面倒な問題が発生する。CoreDataはファイルの保存も含めて面倒を見てくれるフレームワークだが、この場合ファイルの保存は自前でコードを書かなければならない。
これは、初期設定ファイルに限った話ではなく、例えばSMFなんかのように既にファイル形式が規格で決まってるものは、CoreDataでは扱いづらい。Persistent Object Storeを自由にカスタマイズできればいいのになぁと思ったりもする。
が、よく考えて見ればそれでもうまく行かない。仮にSMFに対応したPersistent Object Storeを作ったとして、「モデル」はどうするのか。結局、モデルもSMFに対応させなければ意味が無いわけで。そして、CoreDataはモデルとファイル形式の間に依存関係がないような作りになってるっぽい。特定のファイル形式に対応したモデルって作れるのだろうか?また、特定のモデルに対応したPersistent Object Storeって作れるようになってるのだろうか?
ただ、以前のドキュメントベースアプリでは、ファイルを読み書きするコードを自前で書いていたので、今回のようなケースでCoreDataを使ったからといってコード量が増える訳ではなさそうだが。ちょっとスッキリしない実装にはなるかもしれない。