構造化データのDB変換と SQLite 用 ODBC ドライバ
VB2010Express と VS2017 に SQLite をサポートしているか,実際に調べてみた。
1)VB2010Express
2)VS2017
両者とも SQLite のサポートはないが,MySQL が VS2017 に追加されている。SQLite Core を導入すればいいとの情報が結構あり,試してみたがダメだった。
以前,LibreOffice BASE のデータベース Firebird 対応についてレポートした。同様に SQLite についても対応がないけど,ODBC ドライバを導入したら認識するようになった。
しかし,拡張子が .odb のみである。sqlite3 を用いて作成したサンプルの拡張子をこれに替えて読み込ませると立ち上がるのは Writer である。以前インストールした DB Browser for SQLite によれば正常に読み込むから,BASE は SQLite の作成はできても第三者の作成した SQLite データベースは読み込めない。BASE によりデータ構造を定義し,ODBC 経由で新規データベースを作成して, DB Browser を適用すると, SQL Cipher encryption 表示がポップアップしてだめである。
Visual Studio 用の ODBC ドライバも似たようなものかもしれないが,検索すると System.Data.SQLite が溢れている。VS のバージョンに応じて細かにプログラムが分かれている。多分実体は dll なのであろう。私のターゲットは Windows XP と 10 である。XP のレジストリを確認したら,.NET Framework 4.0 であった。使用しているMS開発環境は VB2010 Express と VS2017 である。VS2010 版に該当するのがありインストールしたが,VB2010 Express では,やはりだめであった。
開発言語を Java か,SQLite を正式採用している Ruby に変更するしかなさそうだ。どちらも Eclipse が対応している。Eclipse 上の Javascript のコーディングも慣れてきたので,今更C#でもないか。しかしシリアル通信とデータベースプログラムが分かれてしまいマルチタスクをどうするか。Ruby はOSを無視して並列処理プログラミングできるそうだ。XP マシンはサーバとして Slip21 の他に TCP/IP, HTTP, LAN バックアップをしているからOS管理下のマルチタスクが望ましい。その点,Java は安定しているだろうと思う。ほとんど停止する機会がないXPマシンの方が Java バージョンが自動更新になって新しい。
Windows XP 8.0.151-b12
Windows 10 8.0.91-b14
Ruby だと SQLite が組み込みだけど,Java だと JDBC ドライバが必要になる。
既存測定結果のデータベース化
Slip21 は固定長レコードで保存している。測定項目を大幅に増やすにはファイルを新規にしなければならない。データベースだとフィールド(項目)の追加削減ができる。レコードが可変長なのだろう。しかし,Java には構造体がないらしい。既存の保存データをデータベース化するにはプログラミングしなければならない。当然ながら Microsoft の開発環境なら簡単だが,もう VS2010 は配布されていないし,新バージョンの .NET Framework がXPに対応しない。
Slip21 のデータ形式 SQLite とするとしたら,候補はネット情報の多い Ruby と Java だ。本来なら,データ取得のシリアル通信部も新開発環境にしたいのだが,Java はもうサポートしていないし,Ruby のシリアル通信は不安定さがあるようだ。私のサーバはバックアップ用の他に Slip21 と HTTP を担わされている。FTP は自発だけどあとばひたすら待機している。このサービスは Win32 API が担っている。これをスクリプト言語の Ruby には荷が重いか。リアルタイム JVM は無料になるようだが,アプリケーションコードを見るとめまいがする。
シリアル通信は MSCOMM の使用継続が無難だろう。SQLite プログラミングを Ruby にすると,ユーザが Ruby をインストールしなければならないが,Java だとその必要がない。SQLite JDBC Driver を用いればデータベース操作ができそうだ。どちらにしようか。
足踏み
コーディングの手間,簡単さ,今後の Web プログラミングを考えたら Ruby がいいかなと思う。また PHP から遠ざかった。Eclipse を再インストールした際,Java だけでなく Ruby Python も同時にしておいてよかったと思う。TCP/IP 接続だけなら,Microsoft の呪縛から逃れるのだがそうもいかない。ちなみに Android は SQLite 組み込み済みだそうだ。組込系でも小さなデータベース帳票が使えれば何かと便利だ。家電自動車の IOT 化が何かと話題だけど,やはり個人の嗜好動向のデータタベース化が富を産むのかな。少し前は名簿くらいだったのにと思う。
Eclipse で Ruby プロジェクトを作成しようとしたら,インタプリタが定義されないと蹴られハマった。結局,ActiveScriptRuby を別途インストールした。Windows は少数派なのだろう。インタプリタ設定後の画面を示す。
実際にインタプリタを走らせると快適だ。これで文字列処理も楽になるだろうと思う。コンソールに出力してみた。
コードがエディタに記載されるので複雑な数式をハンドリングするには関数電卓より使い出がいい。学校教育には最適ではなかろうか。Eclipse を替えれば,Windows 95/98 の16ビットOSでも動作する。この言語を提唱開発したのがアカデミックと埒外の日本人とは痛快だ。
確かアルゴル系の言語創始者はヨーロッパの学者が多かったような記憶がある。さて才能なしのボケた老人が言語を習得するのにどれだけかかるだろうか。参考末尾の解説によれば,時代に取り残されないように毎年新言語に親しむとある。40年経過して,数言語でしかない私でも今年は JavaScript と Ruby の2言語を習得しないと,プログラムが捗らない。怖ろしい時代だ。
参考
- 関連記事
-
- MySQL vs SQLite on VS2017
- 構造化データのDB変換と SQLite 用 ODBC ドライバ
- オブジェクトとサルトル
コメント