A5:SQL Mk-2

開発のこと、日々のこと

2022/07/02
から 松原正和
1件のコメント

A5:SQL Mk-2 25th ANNIVERSARY !!

実は、今年(2022年)は、A5:SQL Mk-2(のもととなったプログラム)の開発を開始してから、25周年になります。四半世紀開発してきたことになります。

最初のバージョンは、「あまのいわと 5.0」という名前で開発されていました。何のソフトウェアであるかもわからないですね。中二病です。

現存する最古のソースファイルのタイムスタンプには、1997/07/17のものがあります。おそらく、開発開始はこの2~3週間前ではなかったかと思います。

驚いたことに、このごく初期の開発版ですら Windows 11 でも動作します。Windowsの互換性はすごいですね。ただし、セットアップ時に少しエラーが出たのと、コントロールパネルからデフォルトプリンタの設定作業が必要でした。

これからあと何年開発を続けられるでしょうか?。このあとさらに25年開発して、50th Anniversary とか言ってみたいですね。

2022/07/02
から 松原正和
0件のコメント

Windows を仮想マシンで動作させるときの注意点 (Home edition 版の話)

Twitter でも書いたのですが、VMware Workstation で Windows 11 Home edition を動かしたときに、使い物にならないくらい遅い現象がありました。Windows 11だから悪いのか、新調したPCに何か問題があるのか、VMware Workstationに何か問題があるのか…なんだろうなと思ったのですが、原因は意外なところにありました。

タスクマネージャーで見てみると、CPU使用率が100%に張り付き、グラフ表示を論理プロセッサに切り替えることもできません。どうやら1論理プロセッサしか認識していないようです。

実は、VMware Workstation の設定で、プロセッサを「プロセッサ数:4」・「プロセッサごとのコア数:1」にしていたのですが、Windows の Home Edition はライセンス上、プロセッサ数(ソケット数)が1個に制限されているため、プロセッサ数を4に設定しても、1プロセッサしか認識せず、1プロセッサ・1コアの状態で稼働していました。遅いはずです。(Windows Update, OneDrive, その他のプロセスでCPUを奪い合っていました。)

以下のような設定(ダメな設定)にしていました。

これを以下の設定(大丈夫な設定)のように、「プロセッサ数:1」・「プロセッサごとのコア数:4」に修正しました。

起動直後なので、まだCPU使用率高いですが、100%に張り付くことはなくなりました。

そもそもなんでこんな設定にしてしまったかですが、VMware Workstation (16.2.3)で Windows 10向けの仮想マシンを作るとき(Windows 11のテンプレートはまだない)、初期設定が「プロセッサ数:2」・「プロセッサごとのコア数:1」になっていました。うっかりここのプロセッサ数だけ4に修正していたのが原因のようです。これは間違います(orz)。VMware Workstation 的には、Professional Edition (以上?)でしか検証していないのかもしれないですね。

ひょっとして Home Edition は仮想マシンでは動作させてはいけない制約とかあったっけと不安になりましたが、とりあえずそのようなライセンス上の制約は見つけられませんでした。

2022/06/04
から 松原正和
0件のコメント

A5:SQL Mk-2で補完機能を改善

Twitter で「次世代SQLクライアントArctypeを触ってみる」とかがいくつか呟かれていて、少し悔しかったのですが、見た目のセンスはともかく?機能的には負けてないぞとか思うわけです。特にA5:SQL Mk-2の補完機能は補完機能はサブクエリや共通表式(WITH句)も解釈し、未知の構文ですら機能する高度な機能です。

↑ 共通表式の中にサブクエリーを使っているようなケースでも補完します!!。
↑ 未知の構文(というか、これはスペルミスのような…?)でもある程度補完できます。

ところで、SELECT 句の中でカラム名にエイリアスをつけた場合、カラム名エイリアスは、GROUP BY, HAVING, ORDER BY 句で利用可能でしたが、これまでは対応していなかったのを対応してみました。

↑ SELECT句で指定した、「受注番号」「 顧客番号」 のようなカラム名エイリアスがGROUP BY句で補完できます。(WHERE句では補完されません)

また、これまで「テーブル別名.」の後で補完機能を使うと、キーワードが補完候補に出てきてしまっていましたが、構文的におかしいので出さないようにしました。

他のSQLクライアントでは、SQL Server Management Studio (Microsoft) が、かなり高度な補完機能を持つようです。あとは、DataGrip は有償でそこそこのお値段もしますが、外部結合から JOIN の ON 句を生成出来たりかなり高度な補完機能を持つらしいですね。(DataGripは使ったことないですが。)

2022/05/05 追記

FROM句でテーブル名エイリアス(サブクエリーのエイリアス)の後ろにカッコで括ってカラム名エイリアスを書く構文にも対応できるようにしました。

2022/02/27
から 松原正和
0件のコメント

コマンドラインからA5:SQL Mk-2をインストールする(Wingetコマンドから または Zipファイルから)

Wingetコマンドでインストールする場合

コマンドプロンプトから次のようにして、winget を使用してA5:SQL Mk-2をダウンロードできます。

winget install "A5:SQL Mk-2" --id "9NSBB9XTJW86"
ここで、--id "9NSBB9XTJW86" は、A5:SQL Mk-2の識別子を指定しています。なくても動作するのですが、万が一 "A5:SQL Mk-2" という名前の別のソフトウェアがマイクロソフトストアで公開された場合、そちらをダウンロードしてしまわないように指定しています。

実のところ、--id "9NSBB9XTJW86" を指定すれば、 "A5:SQL Mk-2" の文字列指定は不必要なのですが、それだとなんのアプリケーションをインストールするのかわからないくなるので、"A5:SQL Mk-2" の文字列も残しています。

コマンドを実行すると、「マイクロソフトストアを使用するか」と「A5:SQL Mk-2をインストールするか」の質問が表示されるので、各々 Y を入力するとインストールすることができます。

完全にインストールを自動化するには以下のようにします。
winget install "A5:SQL Mk-2" --id "9NSBB9XTJW86" --accept-source-agreements --accept-package-agreements

ここでは、–accept-source-agreements は、マイクロソフトストアをソフトウェアのインストール元として使用することを許可するオプションです。

同様に、–accept-package-agreements は、A5:SQL Mk-2 をインストールすることを許可するオプションです。

注意点として、マイクロソフトストアを事前に起動して、自身のアカウントでサインインしておく必要があるようです。PCのキッティングには少し使いづらいかもしれません。

Vector 等からダウンロードしたZipファイルを展開する場合

上述の Winget を使う方式は、マイクロソフトストアにあらかじめサインインしている必要があり、PCのキッティングには少し使いにくいので、ダウンロード済みのZipファイルからインストールする方法を紹介します。

あらかじめ、VectorからZipファイルをダウンロードしておき、コマンドプロンプトから上記のコマンドを指定します。

PowerShell Expand-Archive -Path a5m2_2.17.1_x64.zip -DestinationPath C:\App\A5M2

スタートメニューにA5:SQL Mk-2を登録するには、あらかじめ A5M2.exe へのショートカットを作っておき、C:\ProgramData\Microsoft\Windows\Start Menu\Programs\ 配下にコピーします。(ショートカットのリンク先は、”C:\App\A5M2\A5M2.exe” など、実際に実行ファイルを指している必要があります。)

この作業は管理者権限で起動されたコマンドプロンプトで作業します。

mkdir "C:\ProgramData\Microsoft\Windows\Start Menu\Programs\A5 SQL Mk-2(x64)"
xcopy "C:\data\A5M2.lnk" "C:\ProgramData\Microsoft\Windows\Start Menu\Programs\A5 SQL Mk-2(x64)"

2022/02/13
から 松原正和
0件のコメント

A5:SQL Mk-2で多くなりすぎたタブを整理する

A5:SQL Mk-2を使っているとしばしばタブの数が多くなり、使いづらくなってきます。

このとき、タブ部分の Shift+マウスオーバーでタブ内容のプレビューを行うことができます。

また、Shift+タブの×ボタンで、保存の確認ダイアログなしでタブを終了することができます。

この2つのShiftキー操作とタブ操作を使うことで、不要なタブをプレビューで探し出し、×ボタンを押すことでどんどんタブを閉じることができます。

また、タブは、ドラッグ&ドロップで移動することができます。

これらの操作で、タブを整理し使いやすくできます。

2022/01/22
から 松原正和
0件のコメント

A5:SQL Mk-2 Version 2.17.0 は Windows XP で動かないのか?

2022/01/22 にA5:SQL Mk-2 Version 2.17.0 を公開しました。

(同梱の history.txt では、2021/10/23 となっていますが、これは誤りです)

ところで、readme.txt を見るとわかるのですが、Version 2.17.0 から動作環境のOSが Windows Vista ~ となっています。これは、開発環境である Delphi 11 でビルドされた実行ファイルのサポートが Windows Vista 以降のためです。

ただ本当に動作しないのかというと、Delphi 11 にパッチを当て、実行ファイルの PEヘッダでサポートする最小OSバージョンを 5.1 に変更してやることで動作するようになるようです。ただ、全機能が正しく動作するかは確認できていません。起動して、DB接続とSQL実行を少し試した程度です。

もちろん、Windows XPでいまさら開発する人たちがいるとは思わないのですが、ごく古いFA等のシステムでは、きっとWindows XPは現役かと思います。きっとPC-9801 の MS-DOS で動作するシステムも現役でしょう。

PC-9801のMS-DOS ではさすがに動作しようがありませんが、A5:SQL Mk-2はごく古いシステムのトラブルシューティング等でも使われることを想定しているので、本当は動作環境に Windows XPも含めたかったのですが、Delphi 11が対応しない方針である以上、正式に動作環境に加えるのは残念ですが断念しました。

ただ、もし Windows XPで動作に問題がある場合でも、報告していただければできる限りは対処したいと思いますので、不具合を発見した場合は、掲示板にでも書いていただけるとありがたいです。

なお、Windows 2000では起動も失敗するようです。これは、残念ですが対応は難しそうです。

2021/05/04
から 松原正和
0件のコメント

Arm Mac (M1 Mac) 上で Wine を使ってA5:SQL Mk-2を動作させる方法

Arm Mac (M1 Mac)で、Wineを使ってA5:SQL Mk-2の動作に(とりあえず)成功したので、ここに手順を記します。
まだ安定しない場合もあるかと思うので、その場合は掲示板等で報告していただけるとありがたいです。
なお、Rosetta 2について記述していませんが、必要に応じてインストールするかOSが聞いてくるはずです。

前提(条件)

OS バージョン : Mac OS 11.3
Wineバージョン : Wine 5.0
A5:SQL Mk-2 Version 2.16.0 beta 35以降(Version 2.16.0の正式版が公開されたらそちらを使用)

A5:SQL Mk-2のダウンロードと展開

Vector からダウンロードする。
64bit版をダウンロードすること。

Homebrew のインストール

公式サイト

シェルから以下のコマンドを実行

インストール処理の最後に表示されるメッセージに従って以下を実行する。
(異なるコマンドが提示されたらそちらを実行する)

Wine のインストール

公式サイト

シェルから以下のコマンドを実行

winetricks のインストール(日本語フォントのセットアップ)

winetricks のインストールと日本語代替フォントのセットアップを行う。

winetricks 本体のインストール

MS ゴシック等の代替フォントをインストールする。

必須ではないが、必要に応じてメイリオフォントの代替フォントをインストールする。

RetinaMode

近年の Macでは、4Kまたはそれ以上のFullHD を超える解像度のディスプレイが多い。
Wineではこのまま実行すると、各ドットが縦横2倍にスケーリングされた表示になってしまう。
高解像度のディスプレイの場合は、それを活かすためにWineの設定を変える必要がある。
以下のコマンドでレジストリエディタを起動する。(レジストリエディタ自体、スケーリング表示されているはず)

HKEY_CURRENT_USER\Software\Wine\Mac Driver を開き(「Mac Driver」 はないので作成)、文字列型で RetinaModeY に設定する。

次に winecfg を起動する。

スケーリング表示がデフォルトの 96dpi になっているので、ディスプレイのサイズや解像度に応じて好みの値に修正する。(24〜27インチの4Kディスプレイなら168〜192dpiくらい?)

A5:SQL Mk-2の実行

A5:SQL Mk-2のzipファイルを展開したフォルダで以下を実行

Automatorを使って実行する場合

Automatorでは、書類の種類を「アプリケーション」として以下のように「シェルスクリプトを実行」で起動するようにする。

Automator用のアイコン画像ファイル
上記アイコン画像を開いて、画像をコピーしておく。
ファインダーからアプリケーションフォルダで、A5:SQL Mk-2のAutomatorのアイコンを選択し、右クリックメニューから「情報を見る」を選択する。
左上のロボットのアイコンをクリックし、選択状態になったら、⌘Command+Vでペーストすると画像を変更することができる。

2021/04/04
から 松原正和
0件のコメント

A5:SQL Mk-2 で MySQL のジオメトリ型のテキスト表示を実装中…ちょっと困り中

PostgreSQLについては、Version 2.15系からテキスト形式(EWKT形式)でGeometry型を表示できるようになったものの、他のDBではテキスト形式表示できていませんでした。ようやく、MySQLのGeometry型をテキスト形式で表示できるように修正中。

ちょっと困っている(これのせいで実装が遅れていた)のが、PostgreSQLとは緯度経度が逆ということ。PostgreSQLでは Point(経度 緯度) のような形式でテキストを扱うのに対し、MySQLでは Point(緯度 経度) 形式で扱います。地図表示のライブラリでのテキスト形式の扱いもPostgreSQLと同様、Point(経度 緯度)のようです。

POINT(35.713768 139.777254) で入力すると出力時にはPOINT(139.777254 35.713768) で出てくるとかトラブルの原因になりそうで不安です。…どうしよう。

2021/03/27
から 松原正和
0件のコメント

A5:SQL Mk-2 で#FFFFFF形式の色表示

Web開発をするときに、DBに色値を格納することもあると思います。一般的には #FFFFFF形式で表される色値です。

開発中のベータ版で、色値として判定される文字列がDBに格納された場合に、色表示を行うロジックを作ってみました。

少し悩ましいのが、データ型やカラム名は特に判定せず、データが#FFFFFF形式の場合に 色表示してよいのかということ。色値を表すDBのデータ型は(普通は)ありませんし、”COLOR” や “COL” をカラム名に含むもの…と判定して出すのもなんだかイマイチです。

あと、red や blue などの名称で色を表現することもありますが、今のところこれは非対応…どうすべきか。いるのか?。

誤判定して色表示してしまうと少し表示がうるさい感じかなとも思いますが、特に困るものでもないような気もします。何かご意見などあればいただけると嬉しいです。

~追記~

名称でもカラー表示するようにしました。

…商品マスタ(とか)に “Salmon” とか”Tomato”と入っていたら色表示されてしまいますが…とりあえず、良いことにしましょう。

2021/02/21
から 松原正和
1件のコメント

CSV/TSVファイルからテーブル作成(インポート)

A5: SQL Mk-2 Version 2.16.0 beta 23で「CSV/TSVファイルからテーブル作成(インポート)」機能を追加しました。CSVファイルから型を類推して新規テーブル作成&インポートする機能です。

各カラムの型は変更することもできます。

これまでもこの機能の要望はあったのですが、テーブルはきちんと設計してから作る派なので、簡単にテーブルを追加するような機能はつけていませんでした。(DB管理者から怒られそう?)

CSV(TSV)からふらっとテーブルを作るような需要というのは多いもんでしょうか…。