2018/07/06

バイナリファイルを SQLite に変換 App 自作

屋内外の気温湿度日照を測定記録したバイナリデータを SQLite データに変換するソフトをプログラミングした。ソートも一瞬で済む。SQLite は偉大なり。GridView のフィールド名欄をクリックするとソートされる。下の画像は照度をソートした結果だ。
SQLiteSort.png 

動作環境 Windows Home 10 4GB
プログラミングツール VS2017

書込み時間が意外と大きかったのでアップする。タスクマネジャによるとディスクアクセス時間は常に90%を超える。
 
結果
レコード数 フィールド数 ファイルサイズ 所要時間 処理レート   変換後ファイルサイズ 備考
12622      8                  641KB            21m37s 103ms/rec    500KB                   TWE
25744      9                 1308KB           42m06s 98.1ms/rec 1180KB                   TWE
17395      9                   884KB           31m55s 110ms/rec   680KB (ADC)          XBee
                                                        30m25s 105ms/rec  1564KB (Single)       XBee

考察
原始データの日付時間は VB Integer で保存しており,SQLite は  TEXT だからファイルサイズは増大するかなと思っていたが意外であった。実際の最大フィールド数は12個あるので,固定長レコードに空きが生じて可変長の SQLite のファイルサイズが減少したのだろう。

GridView に表示させ,ソートさせると一瞬である。Microsoft のコントロールが優れているのではなく,SQLite のせいだろう。

DB Viewer を用いて初めて SQL 構文により検索してみた。スプレッドシートにはない快適さである。レコード数が万を超えたらDBソフトだろう。

これまでレコード長増大を嫌い測定器数を制限していた。データベースの可変長レコードなら測定器数とフィールド項目追加も余り気にならなくなる。

XBee の時は ADC の値を Decimal で保存していた。データベースで検索する場合,物理量の方が便利である。温度,電圧に変換したら,ファイルサイズが 884 KB から 1564 KB に増えた。SQL で typeof を調べたら Single で保存されている。フィールドは INTEGER を宣言したのだが,暗黙の型変換をしない。
SQLiteTypeof.png 

VBAとの対比
Microsoft Access なら VBA を用いて,上述のバイナリデータ変換は多分簡単だろうと思う。データベースおよび VS2017の習得をしながら,プログラミングを始めたら1日の予定が9日にもなった。しかし,最新版の VBA はシリアル通信コントロールをサポートしていないようだし,VS2017 + SQLite なら,例えば .NET Framework 4 だと XP 以降の全OSで動作可能だ。記録時間間隔が15分程度なら 400MHz XP でも問題ないだろう。これで SQLite を Slip21 に組み込む目途がついた。

16bit OS時代の Excel97 ならシリアル通信マクロがあるが,疑似マルチタスクだし1箇月も経過するとクラッシュするのではないか。CUI のシングルタスクデータベースの方が恐らく信頼性が高いだろう。ただ dBASE 単体スタンドアロンではなくシリアル通信と FTP の共用となると,私のスキルでは MSDOS 環境だとお手上げである。大昔から UNIX はマルチタスクだった。TCP/IP とデータベースの進歩は合衆国の独壇場であった。Amazon Google の成功は運とか たまたまの偶然ではない。それなりの背景があったのだと思う。

規格保守と戦争ドラマ
ハンビーに車上戦闘する米海兵偵察大隊のドラマをみた。中近東およびアフリカのピックアップトラック市場は圧倒的にトヨタが強い。車体の堅牢さとパーツの調達容易さと保守期間が長いためである。滋賀は車社会である。ある小さな組織にビンテージ車に乗っている二人がいた。セリカとクラウンである。日産セドリックのビンテージを見た事がない。保守パーツが入手難なのだろう。

PCに入ったイーサネットカードの規格は恐ろしく古い。フォードが MAP 2.0 を提唱した頃には既に定着していた。100 Mbps の規格があった。電電公社が提唱した ISDN 規格は通信開放とともに忘れ去られた。

合衆国がファーウェイの通信機器輸入規制を実施した。テンセントに搭載する合衆国製チップの販売も差し止めた。NAND メモリの価格がどこまで安くなるのか見当がつかないけど,チップにデータベース搭載が当たり前になり,困難とされていた顔認証,ありとあらゆる探索がAIとデータベース化により進む。自動車の自動運転ができるくらいなら,兵器への応用は比較的簡単だろう。合衆国工兵は何に着目しているのだろう。原爆開発は米陸軍工兵が主導し,米海軍原潜炉はウェスチング社商用炉設計が原型である。合衆国の SMR にしてもロスアラモスとかの国研がないと NRC も機能しないだろう。国研=軍研究は当たり前である。防大の卒業生(歩兵科)が熊本大と東工大しか院生として受け入れてもらえないと嘆いていた。米陸軍士官学校の首席は工兵配属もしくは進学するならハーバードメディカルスクールだったりする。また,逆にハーバード医大卒が現在の陸軍参謀総長である。どちらの軍組織が柔軟か,当たり前だろう。「失敗の本質」の経営本の時代と何も変わらない。

戦略とか大げさに言う前に,兵站の充実とコミュニケーション問題だろうか。家人が日大問題で標語のようになったと言っていた。球技と言えども基本は戦いである。ブリーフィングがいい加減だったと言いたいのか。米海兵ドラマを見ていたら,制作経費節減のためか,やたらブリーフィング場面が多い。軍曹が伍長に地図を元にブリーフィングする。NBA の戦術説明と大した違いがないのか。伍長が質問し,軍曹が答える。軍曹は職業軍人である。その後兵卒は移動戦闘準備を始める。隊列を組んだ車上移動である。最後尾の補給トラックに隊長が乗車している。先頭車のキャプテンは実戦経験のある軍曹である。女が全く出てこない戦争ドラマである。

補給トラックを警護する女性戦闘兵を冷やかすシーンは明らかなセクハラである。監督は英国出身女性である。
SusannaWhite.jpg 

左の軍曹は化学兵器防御を考慮した戦闘服を着用している。フードと裾に着目。裏面コーティングもしくは裏打ちされている。通気性が悪くイラクでの着用は大変だっただろうと思う。若狭のドカ雪に出動した陸自には耐寒耐雪用外套すらなかった。当然,簡易化学防護服とか核防護服の在庫もないのだろうと思う。北鮮から化学ミサイルとか核ミサイルを撃ち込まれても,避難救助作業できる防護服がない。陸自は何を何から守るのか考えていない戦前同様の軍隊である。朝鮮有事の際,邦人避難警備に当たる警備兵には対化学兵器防護服を着用しての訓練はされているのだろうか。訓練映像を見る限り通常の戦闘服だった。防毒マスクの携行もなかった。変な陸自である。米海兵は防毒マスクを携行しての訓練を常日頃行う。当然,北鮮を想定しているのだろう。トランプが北鮮の体制保証をしたので,北鮮が南下侵攻を開始したら,自衛隊は単独でソウルの邦人保護せねばならなくなった。陸自は出動を拒否する可能性の方が高いか。北鮮は大量破壊兵器の存在を示唆するだけで,陸自出動をビビらせられる。原発事故と同じような状況が現出するだろう。ヒトラーはポーランドフランス侵攻の際,前線に赴く全ての国防軍兵士に防毒マスクを携行させた。国家指導者として彼は当たり前だった。陸自はいつになったら,防毒マスクを携行するようになるのだろう。

下の写真はソウルで訓練する韓国兵。派手な総合火力演習の前に,防毒マスク着用の警備訓練が先だろう。冷戦期たけなわの頃,ドイツ連邦軍は地道に兵士を防護する毒ガス戦装備を改良していた。陸自に,兵に対する愛が感じられないのは伝統だろうか。毒ガス弾を中国戦線で使用した旧陸軍の伝統ノウハウはどこに消えたか。有事の韓国に派兵される自衛隊員は民需品を自弁で装備するのだろう。海外派遣される自衛隊員用の衛生キットは余りにもお粗末なので,隊員は自弁で装備している。その代わり,給与は米英と比較すると高い。
Mask.jpg 

家人によれば,米英では戦争映画とかドラマを女性が監督するのは普通だそうだ。偵察機 U2の兵装担当と解析担当にも女性空軍兵がいた。米空母の発艦キャプテンは女性黒人兵(大尉)だった。制作の HBO は男向けの有料チャンネルをターゲットにしているから,女子供に媚びる必要がないそうだ。男向けの番組を女が監督する。海兵ハンビー車側は遮光ネットとか背嚢満載である。

吊り穴のないルータ
20年以上 400MHz PC の上にハブ(アクセスポイント)化ルータを置いていた。PC背面の配線に腕を入れると,必ずと言っていいほどPC上面から落としてしまう。写真のように現行より 0.8m 上に吊るした。多少ともワイヤレス状況が改善されるかな。米海兵はかつての航空兵のようなインターコムの代わりにワイヤレスヘッドギアを取り付けている。
APhooked.jpg 

申し訳程度のベース部品を作るくらいならフック用の穴を明けて欲しい。青色 LED も外光が入ると視認性に乏しい。LED の発光を停止する機能を施すなら視認性の良い赤色でもいいのではないか。Amazon.com だとシャレた壁掛け用ベースが $18 だ。

参考
2018/06/22

VS2017 初体験と SQLite on WindowsXP

開発環境 Windows10 Home,VS2017
ターゲット WindowsXP Home,Platform .NET Framework 4

コンソール APP 動作検証
言語  C#
プロジェクト Windows Desktop Console APP

結果はOKだけれど,IDE が VB2010 の頃とは細部がかなり異なっていて 戸惑った。

SQLite APP 動作検証
言語  VB
プロジェクト Windows Desktop Form APP
結果
サンプルプログラムがターゲットで動作するには System.Data.SQLite.dll の他に SQLite.Interop.dll が必要だ。Entity のややこしい設定をせずに済んだ。SQLite.Interop.dll のおかげだろうか。ADO.NET の動作仕組みを理解せずともコーディングできそうだ。

VB2010 からのプロジェクト移行
VB2010 はプロジェクトおよびソリューションがエクスポートできる。VB3 から VB4 への移行はフォームデザイナをコピーするだけで済んだが,VB2010 になると不可になりプロジェクト全体をコピーしなければならなくなり,がっかりした。何かいい方法がないかと検索したら,ヘエーと思うような方法があった。その代わり,ソースはそのまま使うのでバックアップという意味合いはなくなり,簡単に元に戻せなくなった。

今回,はじめて同一ソリューション内に複数のプロジェクトを設定してみた。バージョン管理とプロジェクト管理を対応させていくつもりだ。

Eclipse が共有ファイルにアクセスできないという理由のためだけに結果的に1箇月間放置したあげく Visual Studio に戻った。Visual Studio Installer が用意しているツールをみると Android iOS IoT への展開を目指しているようだ。Eclipse の開発元は IBM だったし,合衆国の基幹産業はITなのだと実感させられる。90年代に購入した VB4 のデータベースリファレンスブックが厚さ 3cm もあり,めげてしまったけど,やっとDBに取りかかれるようになりそうだ。といっても,どうやって手をつけたらいいのかわからない。

米海兵用数学演習書
西欧には中世スコラ学で築いた知の体系があり,Book と本とでは異なる概念でもある。厚さに怯む事もなかったのかとも今では思う。ただし当時は必要性が余りなかったのも事実だった。日本のブッキング自動化は国鉄の MARS が嚆矢だろう。提唱者は戦中,東大航空研所属で戦後の GHQ 指令により鉄道技研に移籍した。東大に復学して自動設計を提唱していたが,内容がチンプンカンプンだった。データベースの Model の抽象化も全くわからない。

私の古臭いプログラムは構造体に溢れているけど,.NET Framework だと構造体が切り捨てられておらず助かる。しかし,プログラムの可変性を阻害しているのも事実だ。DB はこの拡張性がキモなのだろうと思う。それ故 Java には構造体がないのだろうか。

日本の教科書が全く使えない理由の一つにプアな索引がある。昔,NHK の放送番組を見ていたら,中国の経済学部学生は英語の分厚い大型テキストを使用していた。これでは日本経済は勝てないなとそのとき実感したものだ。圧巻は生化学のテキストだ。大判の分厚い英語版テキストは見ているだけで楽しい。合衆国のドラマを見ていたら,小学生の教科書も大判で分厚い。「知」に対する精神が日本と対極だろうと思う。

学生時代,アメリカンスクールの高校生に数学家庭教師のアルバイトをしていた。数学の高校教師から個人的に渡されたという自習書は米海兵学校の使い古された 分厚い微積分演習書だった。レベルは日本の中学校から始まり,実に広い応用範囲をカバーしていて幾何も含まれていた。こんな自習書を勉強して海軍士官として何の役に立つのか。しかも米軍の高級将官の学歴をみると,人文系ばかりである。合衆国中高の数学レベルが低いので,軍学校は基礎的な数学教育に力を入れるのだろうか。経済学も微積は必須だし,ORとか兵站は差分形式で記述するから,当たり前のような気もする。

日本海軍は日英同盟の時代,英国から対潜ORを学んだ筈なのだが,その成果は海兵教育あるいは海軍大学校で活かされる事はなかった。戦後,熱心にORを取り入れようとしたのが国鉄で,それに頑強に抵抗したのが国労動労だった。日本の海兵には,難しい数学の問題を解けないと入学できなかったのだが,数学を応用するという精神はなかったようだ。単に入校選抜のためのようだった。当時の最難関校は一高,陸士と海兵だった。三高(京大)は希望者が少なかったのか入試がなかった。父は進学したかったが,祖父が許さなかった。長兄は親に勧められても進学しなかったそうだ。変な序列があった。今でも,皇太子さまと秋篠宮さまとでは皇居を公式に出入りする門に差別があるそうだ。

ある組織に入ったら,正門を通れるのは入社式と退職の日だけとの説明を受けた。小中高と正門は使えなかったので何の疑問もなかった。大学だけが同じであった。防大生は通用門だけらしい。江戸城は多くの門があり,藩主の格式により登城する門が異なった。門と言えば,朝鮮光化門,中国天安門,ベルリン ブランデンブルグ門,パリ凱旋門だろうか。京都には巨大な門が建設されたけど,焼失すると再建されなかった。映画羅生門をみると,車馬が通るための構造物ではないとすぐわかる。江戸期,庶民に門構えの家はどんな豪商であろうと許されなかった。明治になると,やたら庶民が門塀を造り始め出した。門だけがあって塀のない家がある。アマゾン制作のドラマをみていたら,成金の日本人のところにアメリカ人の古物商が訪れると,使用人に表玄関から勝手口に回るように言われ,憤慨するシーンがあった。李朝時代の大通りは官僚が通ると,礼儀作法がやかましいので庶民は裏通りを通るようになった。明洞である。Google Earth で平壌をみると,通りは立派だが通行に寄与していると思えない。現代北鮮に李朝官僚制が息づいている。金日成正日父子の眠る巨大廟がある。東京にも大正昭和天皇の陵がある。日朝両国の権威主義は似通っている。改革開放と天安門事件を弾圧した鄧小平は散骨した。彼の廟はない。祖先崇拝の強い中国では珍しい。武家政権時代の傀儡だった天皇年代記を無視すれば,徳仁皇太子は5代目である。一方,北鮮は3代目の独裁者である。両国とも中華の革命思想が根付かなかった。また啓典の民の申命革命とも無縁であるのがよくわかる。北鮮なら特攻も玉砕も可能だろう。朝鮮戦争に参戦した PLA 人民解放軍兵士は投降するのが当たり前であった。PLA 兵士には自我があり,それが PLA の強さにもなり,自我のない日朝兵士は集団でないとその力を発揮できない。恐らく日朝の将軍は独断専行の決断ができないだろう。独断専行とは降伏である。将軍だけがその決定ができる。日本陸軍は皆無であった。恐らく陸自の将官も北鮮の将官もできないだろう。降伏決断は正恩だけだ。日本の場合,首相にその権能はない。内閣が決める。一人でも反対者がいたら,内閣不一致で降伏できない。イタリアは議会が独裁者を追放して降伏を決議した。日本の国会にこの種の権能を期待するのは無理だろうし,それだけの権威もない。中国との戦争は不可能である。

Financial Times が米朝関係緩和に最も弱い立場にある日本と伝えている。日本の軍官僚はどんな策謀を巡らしているのだろうか。恐らく戦前同様,内閣は何も知らないだろうと思う。国民を単なる徴用対象としかみない不遜な官僚達である。議会制度が機能していればと思うがなかなかそうならない。

藩主の子供でも次男以下は部屋住みで終わる。優秀だったりすると,小藩の婿養子となり実績を積むと幕閣に引き上げられた。昭和の政治家も無能な息子に継がせず,婿を迎え後継とした。大店の商家もそうだ。エジプトのファラオは男系継承ではなかったそうだ。ファラオの娘と結婚した有力者がファラオとなった。有力者とは神官とか軍人だったのだろうか。第二次世界大戦後にもなって,極東の日朝両国が古代エジプトよろしく巨大陵墓を築くのは実に興味深い事実である。

プログラミングの本は K&R のC言語以来,購入していない。久しぶりに取り出して読むと「構造体の昔からある例は,給料支払いレコードである」とあった。古代シュメール人が穀物の出し入れの記録に文字を発明して以来,記帳が文明の曙となった。貨幣を発明しその記帳も必要になった。国庫を預かる神官役人が不正をはたらくのは古今東西を問わない。西欧の議会はそのために発達したとも言えそうだ。国庫=権力の関係があるから,その権力に無数の利権がまとわりつく。

米海兵学校の演習書のサイズは大判の新書くらいだ。ポケットには入らないが,小さな雑のうに入る。空き時間にでも自習したのだろうか。日本軍に徴兵されたインテリが辛かったのは自由時間のない事だったそうだ。米空母くらいの規模になると,艦内に教育コースが設けられている。水兵から提督にまでなった人もいる。日本海軍は水兵からだと特務士官となり,最高位は大尉である。下卒に対する指揮権はない。学歴偏重は明治から昭和の間に起きた。そう言えば,高校で買わされた数研の問題集も小判だったと思い出す。

父は魚雷学校に入学させられたが,公式の丸暗記だったそうだ。ルートの値を筆算で素早く求められる。小学校しか教育を受けていないので,海軍が父にとり最高の数学教育だった。方程式も知っていた。

ルートもサインも学校教育で不評である。スマホの電卓にはルートすらない。関数電卓のアプリをインストールしなければならない。受験のためだけの数学教育をするくらいなら,他の教育をした方がいいだろうと思う。シリコングラフィックスとネットスケープを創業したジムクラークは米海軍通信兵出身だった。合衆国市民権と大学進学奨学金目当てに入隊する若者がいる。ドロップアウトした少年が海軍に入り,高卒資格を取り大学に入りスタンフォードの准教授になった。そして起業だ。日本ではあり得ない人生かなと思う。そう言えば,北海道農学校に赴任したクラーク先生が Boys, Be ambitious と言ったらしい。 

少年工科学校を出て防大,日商岩井に入りジュリアナを成功させた起業家がいたと思い出した。彼も少年時代,不遇だった。以前,私の子供が通っていた自由学校の同級生が少年工科学校を希望して,校長が説得し断念させたという話を聞き,いろんな意味でなるほどと思った。

GitHub 買収
GitHub が Microsoft に買収された。これまで GitHub のプログラムは使い方がわからず避けてきた。マネーに関して抜け目のない Microsoft だから普及するのかな。

参考
2018/06/15

MySQL vs SQLite on VS2017

Ruby on Eclipse は共有ファイルへのパスが通らず,MinGW でも確かめたら同様であった。

VB2010 Express は Windows 10 でも動作しているので,再度 VS2010 について検索したらダウンロードができるようになっていた。インストールを試したら,VC++ の古いランタイムがないと蹴られた。

Microsoft の VS2017 をお使い下さいとのメッセージに誘われ再考した。起動すると .NET Framework のバージョンが指定できるではないか。.NET Framework 4 を選択し,Hello をコンソールに表示するプログラムを XP で試したら,動作した。ただしレスポンスが遅い。

Help を表示させたら,VS2017 は .NET Framework 4.7 であった。MySQL がインストールされている。以前,SQLite on VS2017 が動作しなかったので MySQL について再度 調べてみた。LibreOffice Base がこれに対応しているし,レンタルサーバは MySQL がほとんどだ。 しかし,私のサイトである さくら ライトは SQLite だ。MySQL は GPL 条項がある。配布しようと思ったら,ソースも添付し改変自由にしなければならない。商用目的はOKだ。VS2017 にインストールされている MySQL for Visual Studio の扱いはどうなるのだろう。ソースを開示するにしてもその範囲はどこまでか。SQLite をリトライする。

VS2017Help.png

Microsoft のデータベース根幹は ADO.NET らしい。その説明を読むと,頭がクラクラする。前回 失敗した System.Data.SQLite の実体は ADO.NET だった。
System.Data.SQLite is an ADO.NET provider for SQLite.
Wiki の説明によれば,素人には Entity Framework を介してコーディングするのが無難だろう。サンプルコードを検索したら,VB で記述されている実例があった。System.Data.SQLite は VC++ の後継であるC#で記述せずともいいのか。C# を習得するメリットは何だろうと思う。
「より短く書きたい」「より美しいコードを書きたい」「より良いコードを書きたい」という気持ちは、本来はプログラマーの本源的な欲求であり、それこそが逆にプログラマーを成長させていく糧とすら思える。そういう志向が薄いエンジニアは、プログラマーというよりは、IT作業員とかIT土方と称するに近い。
VB でコーディングするのは土方らしい。軍隊に譬えれば,VBは工兵でC#は歩兵とか通信兵かな。目的のプログラムが手間をかけずに実現できればいい。C#の習得をやめて,VBを継続する事にした。Microsoft の ADO.NET の安全基準コードはVBで記述されている。Microsoft はハンガリアン記法をやめたらしい。FORTRAN を覚えて以来,親しんできたけど今では異端か。C#より SQL を覚えようと思う。

Windows XP の古いPCでも 1GB のメモリがあれば VS2010 を参考最下尾のサイトから入手できる。但し,言語リストから日本語がなくなっているのは何故だろうか。

Languages.png 
障害は古い VC++ の入手だろうか。SQLite と合わせて情報収集の面白いプログラムができるかもしれない。収集データの検索解析はDB ビューアを用いて高スペックPCでやればいいだろう。できるだけ手抜きしたい。

下の写真はゴーヤのネットを高所に張った時に使用したフックだ。これで雨樋うけを通した紐を引っ掛けた。
Hook.jpg 

追記
上手くいかなかった可変長レコードが配列宣言位置を見直すと,動作するようになった。ただしコードが増えると,元と同じ状態になる。18/06/17

参考
2018/05/21

構造化データのDB変換と SQLite 用 ODBC ドライバ

VB2010Express と VS2017 に SQLite をサポートしているか,実際に調べてみた。

1)VB2010Express
VB2010Express.png 

2)VS2017
VS2017.png 

両者とも SQLite のサポートはないが,MySQL が VS2017 に追加されている。SQLite Core を導入すればいいとの情報が結構あり,試してみたがダメだった。
VS2017SQLite.png 
 

以前,LibreOffice BASE のデータベース  Firebird 対応についてレポートした。同様に SQLite についても対応がないけど,ODBC ドライバを導入したら認識するようになった。
SQLite.png 

しかし,拡張子が .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 は少数派なのだろう。インタプリタ設定後の画面を示す。
RubyInterpreter.png 
実際にインタプリタを走らせると快適だ。これで文字列処理も楽になるだろうと思う。コンソールに出力してみた。
Ruby.png 

コードがエディタに記載されるので複雑な数式をハンドリングするには関数電卓より使い出がいい。学校教育には最適ではなかろうか。Eclipse を替えれば,Windows 95/98 の16ビットOSでも動作する。この言語を提唱開発したのがアカデミックと埒外の日本人とは痛快だ。

確かアルゴル系の言語創始者はヨーロッパの学者が多かったような記憶がある。さて才能なしのボケた老人が言語を習得するのにどれだけかかるだろうか。参考末尾の解説によれば,時代に取り残されないように毎年新言語に親しむとある。40年経過して,数言語でしかない私でも今年は JavaScript と Ruby の2言語を習得しないと,プログラムが捗らない。怖ろしい時代だ。

参考

2018/05/11

オブジェクトとサルトル

私の世代だと,オブジェクトと言えば英文法のオブジェクト S+V+O だろう。モジラは「もの」と説明している。日本語の生き物,ものがない,ものがたり,のように非常にあいまいである。対物レンズの原語はオブジェクト,UFO がある。物,物体の訳から「もの」の説明になったのだろう。

英語には Body もある。力学の教科書に Free Body Diagram (FBD) がある。私の青年期はこれにつきる。同じ物理ながら,光学の Object と力学の Body の使い分けがはっきりしていると思う。

厳密な学としての哲学が全く発達しなかった東洋思想(インドを除く)の末裔でもある私にも,何故西洋が Object に拘るのかわからない。カントは「物自体」について,延々書き連ねてる。その大著が2冊もある。西欧の学問は先達の再現,批判から始まる。これを始めたのは神学者である。そのベースはアリストテレスとユダヤ知恵学である。スコラ哲学として結実した。これに匹敵するのは古代インドのウパニシャッド哲学しかない。

近代西洋人の体に染みついている考え方に「終わりのはじまり」がある。全知全能の神とその神とつながる預言(者)がテーマである。預言者はもう死んでいないし,天使(御使)はなかなか現出しないから聖書を漁る。西欧は近代を推進しながら,衰退するのではないかという預言者的な先駆者が現れた。キルケゴールとニーチェだ。シュペングラーの「西洋の没落」はベストセラーになった。古代インドが極めた無の思想である。時間は無意味である。ヘーゲル流の能天気な思想(世界精神)はマルクスに継承され,ロシア,中国カンボジアでは大災危となった。

一方,近代数学の隆盛から数論,集合論そして数学基礎論が大学で風靡して,哲学でもその影響を受け,現象学が生れた。創始者はフッサールである。ユダヤ系だけど,白いユダヤ人である。日本人は出自を関連づけようとするが,ほとんど無意味である。合衆国の日系人が外観は日本人でも中味はアメリカ人と同じである。ただ,幼少期に受けたユダヤ教育の影響は潜在意識としてあるだろう。

その現象学がフランスにも広がり,若き日のサルトルがカフェテリアで友人からコップ自体について,現象学の話を聞き,愕然としたそうだ。Object,Body,Appear がキーワードになったのだろうと思う。コップを認識する自分がいる。コップ,自分そして世界について,友人は多分,延々と語ったのだろう。

我々が存在と言うと,思い浮かべるのは何か。英語だと Being である。Let it be,の Be である。私は大層な哲学事典を持っている。存在の項を読んでんもチンプンカンプンである。数年前,暇になった頃,アリストレスを読んで西欧の「もの」について氷解した。アリストテレス(ハイデガー)は「もの」について説明するのに道具について語るのである。サルトルが驚愕したガラスのコップもヒトが製作したものである。どんな形状がいいのか。肉厚はどうすればいいか。模倣したかもしれない。模倣もヒト故だろう。私は粘土細工をする猿を知らない。

JavaScript は簡単なオブジェクト指向言語らしい。jQuery が動作しない。VB の DLL 地獄を思い出した。
JavaScript において、オブジェクトはプロパティと型を持つ独立した存在です。カップを例に考えてみましょう。カップは様々な特性(プロパティ)をもったもの(オブジェクト)です。
ではなぜ変数が必要なのでしょうか。何か面白いプログラミングをするには変数が必要です。
JavaScript (JS) は軽量で、軽量なインタプリタ型、あるいは JITコンパイルされる、 第一級関数を備えたプログラミング言語です。
読んでいると,頭が疲れて眠くなる。ヒトは大脳を使うと眠くなる。日本族は一日の始まりが太陽がのぼる朝だけど,啓典の民の一日の始まりは日没後だ。この感覚は中近東に行かないと,実感できないらしい。カイロ大学に留学した哲学の教授から知った。労働(骨折り仕事)を終えた後,神との1:1の対話が始まる。神は創世記以来,姿を現出しないので預言者以外の凡人は聖書を読む。

あー。。。この2日ほどの動作不具合がわかった。JavaScript はインタプリタなのか。コンパイラのような最適化は期待できない。高度な関数に騙された感じだ。とりあえず,Google 先生に尋ねても最後は Mozilla の啓蒙書になった。マニュアル,律法,福音書は私のなかでは混然としている。啓蒙書はゲマラの構造に近い。彼らは意識していないだろうけど,そうなっている。そういう論理構造なのだと思うしかない。

第二次世界大戦中,米陸軍は大量のパイロット養成にせまられた。その数10万人である。分厚いマニュアルを渡される。飽きさせないためなのか,コーヒーブレイク,コラム風に女性のカットが挿入されていた。父は海軍に徴用され,魚雷学校に入学させられた。講義の間,教本を渡され,講義を終えると回収するのだそうだ。多分,大した厚みのものではないだろうと思う。今でも日本の教科書は薄い。どうも,日本人は純化,単純化を好み,西欧は体系化システミック指向が強い。そのいい例が日本仏教である。門徒(浄土真宗)と創価学会は古代インド仏教の哲理精神とは真逆である。それを最もらしく説いたのが西田哲学だった。とにかく難解である。漢語ばかりで私には歯が立たなかった。

一方,ラッセル ヤスパースらの哲学啓蒙書は簡明である。ラッセルは西洋中世哲学の泰斗でもある。親鸞日蓮の自著は漢語である。彼らは中国語で思索していた。多分,漢文の素養があった西田もそうであろう。日本人は仏教を漢語で考えたせいか,中途半端になってしまった。今では西田哲学は全く顧みられない。漢文を解する日本人がどれだけかを考えれば,親鸞日蓮思想でも自明だろう。現代中国人の方が鎌倉仏教の理解が早いだろうと思う。そして中国語の言語構造から推察するに,オブジェクト指向は日本人より理解習得は早いと思う。

明治の草鞋を靴に替えたようには簡単にIT革命はいかないだろう。奈良期に仏教を受容して,日本人なりに身丈に応じて改変するのに鎌倉期までの期間が必要だった。いくら何でも時間がかかり過ぎだろう。

オブジェクトはどうなるのか。政府はプログラミング教育を小学校に導入するという。英語教育を始めて 150 年。間に合わないというか,もう絶望的だな。高校の英語教師が英語とは現国だと言っていた。確かに受験英語を考えるとそうだ。英語教育ではなく,国語教育だったのか。日本では 英語=漢文 だったのだ。日本語を知らないネイティブの人に英検を受験させたら,殆ど落第である。二重の意味で英語教員は酷い状況にある。英語と国語が苦手だったせいか,授業がつまらなかった。

今,思えば B-29 のオペレーションマニュアル本,買っておけば良かったと後悔している。平安期の僧侶はできそこの悪い学者だった。ただ中国語を少し解しただけである。それと現代の英語教員が被るのは何の因縁だろうか。給与待遇を合衆国のように,教員より介護職に手厚くしなければならない。合衆国のいい会社ランキング上位は何と病院である。自民党文教族と厚労族のどちらの声が大きいか,自明だろう。チャリティ精神のない悲しさでもある。日本の仏教系大学に医学部は皆無である。西欧はイスラム医学の影響を受けて,大学に神学と医学を設置した。日本では考えられないが,坊主(僧侶)が医師でもあった。

日本海軍特攻は「非理法権天」をモットーとした。海軍に付き合わされた陸軍特攻基地知覧では,散華した特攻隊員は鬼子扱いで,死後は牛乳瓶に野花が一輪飾られるだけだったという。合衆国兵士が戦死すると,葬儀に際し棺は星条旗で掛け,礼砲の栄誉が与えられる。特攻は自発的な行為だから栄誉はなしになったのか。「特攻は統帥の外道である」とか一見,仏教用語が多用され仏教の死生観と結び付けられている感がある。仏がわかるようでわからない。神仏に関心がないせいだろうか。両親は神棚と仏壇を拝んでいた。自衛官が戦死すると,どうなるのだろうか。

XMLHTTPRequest
JavaScript がインタプリタとして考えて,コーディングしたら TWE.txt を localhost:8080 Console 表示できるようになった。しかし Chart.js にデータを受け渡そうと,変数をグローバルにすると動作しない。検索したら,論外のようだ。Chart 関数を $.ajax に放り込んでみたら,案の定エラーだ。とほほの説明をもても「通信成功時の処理」とあり,ダメだろう。

XMLHTTPRequest なる「おまじない」が必要のようだ。

参考