何ヶ月かこそこそと裏で作ってたライブラリを公開しました。
よくあるExcel式データ駆動開発で、ファイルやシートを横断的に検索するのがキツいというのを感じていたので、気軽にデータ定義をするだけでExcelに入っているデータをリレーショナルデータベースで再構築できるといろいろ嬉しいんじゃないかなと思って作りました。
Excelからの読み込みとSQLiteへの流し込み以外の機能が無いので、結構小さめです。
どうってこと無いライブラリなので、すごいものを期待しないでください(GUI部分とかなーんにもないので)。
勉強になったこと。
C# の属性とリフレクション
勉強になったことがいくつかあって、まずはC#の属性とリフレクション。
属性については制限が結構キツイなっていうのをより正確に知ることが出来ました。 使える型が結構限られてて、いくつか妥協して作ってあったりします。
リフレクションに関しては、遅い処理になるためにどうするかみたいなのを色々知ることが出来ました。
Mono
それからMono。
Macで開発していたので、基本はMac上でMonoで動かしてWindowsではあとでちょこっとテストしてみる感じでした。
Monoは.NETで使える機能が使えなかったり、足りなかったり、動かなかったり、etc.
やはりやり始めると色々あるなと実感しました。
ユニットテストは書いてはいますが、バグは結構あると思うので、使ってみようって際にはお気をつけてw
心残りはCode Contracts がMonoでの対応が微妙すぎて、結局使わなかったことですね。。。 使いたかった。。。
SQLite
スマホ向けのアプリ開発でクライアントにデータをもたせるのに使えるんじゃないかってことでSQLiteに目をつけていたのですが、それの前準備としてこのライブラリを作ってみたというのが本音です。
SQLite自体、あまり大きくないデータに対してで言えば、SQLやRDBとしては申し分ないのではないかというのが今回触った感想でした。(SQLiteで手にあまるようなExcelデータはもとから間違っているようなものなので…)
ちなみにスマホアプリでC#な理由は、Xamarinだからです、はい。
全体的な感想
とりあえず作ってみようということで作ったところが大きくて、すぐに使える何か、と言うものにはなっていないですが、クラス書けばあとは10行未満でExcelからSQLiteに流し込めるっていうのは悪くないんじゃないかと思っています。
必要があれば、もう少し手を加えていこうかなと思っていますが、一段落はしたかなと思っています。
GUIツールにまで出来るようにしておくのがベストですが、一旦はここまでにしておきます。