A5:SQL Mk-2

開発のこと、日々のこと

2025/02/17
から 松原正和
0件のコメント

A5:SQL Mk-2 で AWS の Secrets Manager からパスワードを取得してDB接続する

AWS のシークレットマネージャーからパスワードを取得してDBに接続したいことがあります。AWSマネジメントコンソールから読み取ってもよいですが、ローテーションされていると毎回参照するのも大変です。

A5:SQL Mk-2ではコマンド実行でワンタイムパスワードを取得して、DB接続する機能があります。以下のようなシークレットからパスワードを取得して、DB接続するパターンを考えてみます。

次のような GetPassword.bat バッチファイルを用意します。

@echo off

rem aws コマンドのために、AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY を引数から取得
set AWS_ACCESS_KEY_ID=%2
set AWS_SECRET_ACCESS_KEY=%3
set AWS_REGION=%4

rem 取得したいシークレットの名前または ARN
set SECRET_ID=%1

rem ------------------------------
rem Secrets Manager から password を取得
rem ------------------------------
powershell -NoProfile -Command ^
    "(aws secretsmanager get-secret-value --secret-id %SECRET_ID% --query SecretString --output text | ConvertFrom-Json).password"

awsコマンドがインストールされている必要があります。awsコマンドを使用するために、AWSアクセスキー・AWSシークレットアクセスキー・AWSリージョンが必要となります。
このため引数として、シークレット名・AWSアクセスキー・AWSシークレットアクセスキー・AWSリージョン を渡します。コマンドラインから実行すると以下のようにパスワードが標準出力に出力されます。
(AWSアクセスキー・AWSシークレットアクセスキー はマスクしています。)

A5:SQL Mk-2 では、データベース登録画面の「その他」タブで「ワンタイムパスワード生成コマンド」の欄に以下のように入力します。

ワンタイムパスワード入力例

C:\…\GetPassword.bat <シークレット名> <AWSアクセスキー> <AWSシークレットアクセスキー> <AWSリージョン>

A5:SQL Mk-2のログイン時、パスワードは空のままにします。

以上で接続すると、GetPassword.bat が実行され、その実行結果(標準出力)をパスワードとしてDBに接続されます。

上記の例では、AWSアクセスキー・AWSシークレットアクセスキーをバッチファイルの引数として渡していますが、OSの環境変数としてあらかじめ設定する・バッチファイルに埋め込むなど使いやすいように改造して使ってみてください。

2025/01/13
から 松原正和
0件のコメント

A5:SQL Mk-2 Version 2.20.0 不具合情報

A5:SQL Mk-2 Version 2.20.0 の不具合情報について記載します。

これらの不具合については、ベータ版によって修正されています。

1. Oracle Database, IBM Db2, Microsoft SQL Server に接続してインデックスを列挙するような処理をした後に、アプリケーションを終了できない不具合があります。(以下スクリーンショットのような状態

また、インデックスを列挙するような処理を複数回行った時もエラーが表示されます。

アプリケーションが終了できない場合、タスクマネージャから終了するしかなくなります。

2. MySQL で接続したSQLエディタで、MySQL の関数が太字の黒字で表示され、キャレットの位置がずれる。

この不具合は、フォントを MS ゴシック 以外に変更するとキャレットの位置ずれは修正されます。MySQL の関数が太字の黒字で表示されるのは想定外の挙動であるため、修正されます。

3. スキーマ間のデータ転送機能で一部データ型でエラーが起こる

スキーマ間のデータ転送機能を使ったときに特定の数値型のデータが含まれていると、`The parameter has different data type` エラーになります。

「複数行インサートを使用する」のチェックを外すと発生しなくなりますが、転送速度は遅くなります。

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

A5:SQL Mk-2 Version 2.20.0 の新機能ご紹介

A5:SQL Mk-2 Version 2.20.0 を公開しました。ここではその新機能についてご紹介します。

様々な新機能が追加されましたが、ここでは以下の新機能に絞って説明を行います。

  1. AIアシスタント機能
  2. テキストエディタコンポーネントの置き換え
  3. SSH経由の接続で、Windows OSに付属する ssh.exe を利用できるように変更

1. AIアシスタント機能について

1.1 使う前に

AIアシスタント機能を使うには、オプションダイアログからAI機能を有効にして、使用するAIサービスを登録、設定をする必要があります。例えば、OpenAI の ChatGPT を使用するには、OpenAI Platform でアカウントを登録し、支払い情報を登録してAPIキーを発行する必要があります。

例えば ChatGPT を使用するには、オプションダイアログのAIタブで サービスOpenAI – ChatGPT v1 を指定し、APIキーを登録、モデルを選択する必要があります。

Open AI Platform は ChatGPT Plus などのチャットサービスとは異なるサービスです。ChatGPT Plusに登録していても別に Open AI Platform に登録する必要があります。AI APIの料金は基本的に従量制です。(単価は使用するモデルにより異なります。)

AIサービスは以下のサービスに対応します。

  • Anthropic – Claude
  • Google – Gemini
  • Microsoft – Azure OpenAI
  • OpenAI ChatGPT
  • Ollama (これのみローカルにインストールするソフトウェアで、APIキーの発行は不要です)

1.2 AIアシスタントペイン

オプションダイアログからAIサービスの設定が完了したら、SQLエディタでメニューから [SQL(S)] – [AIアシスタント(AIペインの表示)(I)] または、Ctrl+I でAIアシスタントペインを開くことができます。

AIアシスタントペインでは様々な質問をすることができます。チャットではないので、前回質問の結果に対しての続きの質問はできません。

AIにSQLを書いてもらう事も出来ますが、AIにデータベースやSQLについて教えてもらうことを主眼に置いた機能です。

他のSQLクライアントのAIアシスタントでは、SQLを直接作ってもらったりすることが多いですが、A5:SQL Mk-2のAIアシスタントペインでは説明を付けてもらう事ができるので、生成されたSQLをより深く理解する事ができます。

AIの回答中のコードはそのままSQLエディタで実行したり、クリップボードへコピーをすることができます。

1.3 コメントからSQLを生成

SQLエディタに書いたSQLコメントからSQL自体を記述してもらうことができます。基本的にカラムやテーブルに対してコメントが付きますが、コメントなしで生成することもできます。

生成されたSQLはテキストエディタ中でコメントの直下に挿入されます。

1.4 SQLにコメントを付加してもらう

よくわからないSQLにコメントを付加してもらうことができます。テキストエディタ中のSQLが直接書き換えられます。

結果が気に入らない場合は「元に戻す」(Ctrl+Z)で戻すことも可能です。

1.5 SQLの解説を依頼

SQLの解説をAIアシスタントに依頼することができます。この機能はAIアシスタントペインが自動で開き、質問して回答を得ることができます。

1.6 SQLのエラーをAIに質問

SQLでエラーがあった場合にエラーダイアログが表示されますが、ここでエラーの原因と修正案をAIに質問することができます。この機能では、AIアシスタントペインが開いて自動的に質問・回答を得ることができます。

※AIの回答は必ずしも正確でない可能性があります。

1.7 SQLの実行計画からSQLを改善(パフォーマンスチューニング)をしてもらう機能

SQLの実行計画画面からSQLを改善してもらうことができます。AIアシスタントペインが開いて自動的に質問・回答を得ることができます。

※AIの回答は必ずしも正確でない可能性があります。

1.8 DBのテーブルやカラム・ER図のエンティティや属性に論理名をつけてもらう機能

テーブル名やカラム名はしばしば英語や英語を短縮したような名前が使用されわかりにくいこともあります。AIに論理名をつけてもらうことで分かりやすくすることができます。

論理名は日本語以外の言語でつけてもらうこともできます。

2. テキストエディタコンポーネントの置き換え

これまでのプロプライエタリのテキストコンポーネントからオープンソースのテキストエディタに置き換えを行いました。これは将来的にA5:SQL Mk-2本体をオープンソースにするための準備の一環です。

これまでのテキストエディタコンポーネントは古い設計で動作速度も遅かったですが、新しいテキストエディタコンポーネントはこれまでのエディタよりも高速に動作し、64bit版ではカラー絵文字も使用できます。(🍣とか🍺とか)

ただ、これまでのテキストエディタコンポーネントとは多少挙動の異なるところもあるはずなので好みの問題はあるかもしれません。

(コードの折り畳みや矩形選択などができなくなってしまいました)

※A5:SQL Mk-2本体をオープンソースにするといっても、早くても10年後とかの話になるかと思います。

3. SSH経由の接続で、Windows OSに付属するssh.exe を利用して接続できるように変更

これまではA5:SQL Mk-2内蔵のSSHライブラリまたは putty(plink.exe)経由での接続のみでしたが、Windows OSに付属するようになった ssh.exe 経由での接続もサポートするようになりました。

.ssh_confingの記述で多段SSHで接続したり、ssh-agent 経由で鍵ファイルのパスフレーズを管理したりできます。

最後に

Version 2.20 はAI機能に対応したり、近年のアップデートの中でもかなり大型のアップデートとなったように思います。これらの機能が皆様のDB開発のお役に立てればと思います。

2024/02/01
から 松原正和
0件のコメント

A5:SQL Mk-2 Version 2.19.0

A5:SQL Mk-2 Version 2.19.0 がリリースされました。

主な新機能・変更点をまとめてみたいと思います。

以前開いていたタブをわかりやすくする機能

タブを開きすぎると「さっき使っていたタブどれだっけ?」となることがあります。これを改善するためタブをマウスオーバーすると最近使ったタブ(7個まで)の上に数字がポップアップして分かりやすく表示されるようにしました。

HTML形式のテーブル定義書のレイアウト変更

HTML形式のテーブルレイアウトはこれまで Excel のテーブル定義書のレイアウトをできるだけ再現したものになっていましたが、HTML形式のテーブル定義書は独自レイアウトのものに変更しました。

ER図のリバース生成時にリレーションシップを類推

これまでER図のリバース生成時には外部キーが定義されていないとリレーションシップの線が引かれませんでしたが、テーブル名・カラム名から類推してリレーションシップを再現する機能を追加しました。

例えば m_product テーブル(親)の id 列に対し、別のテーブル(子)に product_id があると、リレーションシップであると推定します。他のテーブルにid列があってもリレーションシップとは推定しません。

サロゲートキーでもナチュラルキーでも複合主キーでもある程度動作するように設計したはずですが、あくまでも「推定」の機能なのでテーブル名・カラム名の命名規則によってはうまく生成されないこともあるかもしれません。

論理削除された行をグレー表示する機能

DBの論理削除は賛否両論あるかと思いますが、よく見る設計であるかと思います。論理削除された行をWHERE句に似た条件式を条件式を指定することでグレー表示する機能を実装しました。

条件式にはWHERE句に似たフィルター式を指定できます。PostgreSQL を参考にした演算子を実装しています。

注意点(このパーサー&評価器の特徴)として「存在しない列はエラーとならず、存在しない列との演算はすべて FALSE として扱われる」というのがあります。やや怪しげなルールにも思えますが、この性質のおかげでデータベース全体で論理削除の条件がテーブルごとに違っても条件式を共有できます。

ワンタイムパスワードをコマンド実行の結果から入力する機能

データベースのログイン時のパスワードとして、ワンタイムパスワード(OTP)を要求するものがありますが、任意のコマンドの実行結果(の1行目)をパスワードとしてログインする機能を実装しました。

ERエディタで画像を配置したとき、絶対パスだけでなく相対パスでも画像ファイル名を指定できるように変更しました。

MacOS の Wine 上で動かしたとき、データベースツリーが表示されない不具合修正

追加機能ではないですが、Version 2.18系では MacOS 上の Wine で動作させたとき、データベースツリーが表示できない不具合がありました。(Wine のバージョンにもよるかもしれません)

この不具合も修正しました。

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

眼鏡をかけているときにマスクをして曇りにくくする方法

X でも書きましたが、眼鏡をかけているときにマスク(よくある不織布のマスク)をして曇りにくくする方法です。

やり方は簡単で、マスクをきちんと装着し、ノーズフィッターも顔にできるだけフィットさせた状態で、ノーズフィッターの両端を5~10mmほどつまんで前側に折り曲げるだけです。60~90度くらいでしょうか。

完全にではないかもしれませんが、これだけでかなり曇りにくくなるはずです。

追加のコストや面倒な手順もいらず、歩きながらもできます。折り曲げたところが少し食い込む感じがするのと見た目が少し影響しますが、いつでも戻すことができますので曇りが気になるときだけするということもできます。

いくつかのマスクの銘柄で試してみましたが、程度の差はあるにせよどの銘柄でも効果はあるようでした。ノーズフィッターが長めの銘柄の方がよいかもしれません。

紐がゆるいと効果がでにくいので、自分のサイズに合ったマスクをするとよいかと思います。

2023/11/19
から 松原正和
0件のコメント

PCでゲームしないのに GPD G1 を導入してみた話

自分のPC環境は 4K ディスプレイ2台構成していますが、ノートPCの内蔵GPUには少々荷が重いなあと感じていました。Excelのスクロールがもたついたり、Delphi 開発環境も比較的重めです。なので、外付けGPUというのには以前から興味がありました。

ただ、外付けGPUボックスは大きなものが多く、市販のディスプレイカードも電力食いなものが多いです。

GPD G1 はモバイル向けのAMD Radion RX7600M XT を積んでおり、筐体サイズも外付けGPUボックスとしてはかなり小型で、比較的低消費電力です。ノートPCのドッキングステーションとしての機能も持ちます。

ノートPCへの接続には USB 4 を使用します。OcuLink というコネクタも併用できるそうですが、そんな端子、普通のノートPCにはないですし OcuLink はホットプラグ不可だそうです。USB 4 接続は一応ホットプラグ可能ですが、起動中に取り外すときは、いろいろアプリケーションを終了した後、OSのデバイスの取り外し機能から外さないといけないようです。(面倒くさいからそのまま取り外したりしますが…)

エイヤと注文してみたものの、導入当初はなかなかにトラブル続きでした。

試してみたPCは Lenovo Thinkpad X1 Carbon Gen 10 (以下 Thinkpad X1)と Lenovo Thinkpad T14 Gen 1 (Thinkpad T14)です。

Thinkpad T14 の方は「このデバイスが使用できる空きリソース不足しています」と表示されて GPD G1 を認識しませんでした。よく分かりませんでしたが、Thinkpad T14 に元からなぜか内蔵されていた GeForce MX250 がそもそも要らないなと思っていたのでデバイスマネージャで無効化したところ、認識するようになりました。(ディスプレイ出力は CPU 内蔵のGPU から出力され、GeForce MX250 はデバイスとしては繋がっているが何に使えるのか本当によくわからない…ディープラーニングとかにでも使えばよいのだろうか?)

問題は、Thinkpad X1 の方です。

  • 接続して起動するとGPD G1がうまく認識されず、ログイン画面がノートPCの画面にも表示されない(何かの待ちのような挙動?)
  • ログイン後に接続するようにしても、たまに認識しないことがある?
  • スリープまたは休止すると、すぐにスリープ・休止が解除され、しかも GPD G1 が認識されないことが多い。
  • GPD G1でディスプレイアダプタ (AMD Radion RX7600M XT)を認識しても、なぜかGPD G1経由で接続したキーボード(HHKB Professional JP)が認識しないことがある

割と致命的です。色々調べたところ、Windows に標準で付属する PnPUtil というコマンドで、USB 4 のホストルーターをリセットすると GPD G1 を再認識できるようでした。

これをできるだけ簡単に運用できるように、以下のバッチファイルを書いてみました。

PnPUtil /restart-device "PCI\VEN_8086&DEV_463E&SUBSYS_22E717AA&REV_02&USB4_MS_CM\3&11583659&1&6A"
PnPUtil /restart-device "PCI\VEN_8086&DEV_466D&SUBSYS_22E717AA&REV_02&USB4_MS_CM\3&11583659&1&6B"

/restart-device の後ろに指定するのは、PnPUtil /enum-devices コマンドで表示されたデバイス一覧の中から、「USB4 (TM) ホスト ルーター (Microsoft)」のインスタンスIDです。USB 4 ポートが2つあるので2行記述しています。PCによって、リセットすべきデバイスは異なるかもしれません。

なお、デバイスのリセットは管理者権限でしか実行できないため、このバッチファイルはデスクトップにショートカットを作り、管理者権限で実行するようにショートカットのプロパティで指定します。

これで、最低限「認識されない」状況は回避できましたが、あまり使い勝手が良いとは言えません。

Thinkpad T14 でもそうでしたが、どうもデバイスの何かのリソース確保あたりが怪しそうです。GPD G1 はUSB 4で接続されますが、内部的には USB 4 で PCI-e バスをトンネリングして接続されているようです。何か使わないデバイス(PCのリソースを使っていそうな内部的に直接PCに接続されているデバイス)を無効化するとよいかもしれません。

…デバイスマネージャを眺めていると、「AMD High Definition Audio Device」という見慣れないものが…。どうも、GPD G1 というか、AMD Radion RX7600M XT に内蔵されているオーディオデバイスのようです。確かに、GPD G1 からディスプレイ経由で接続されているスピーカーから音が出ています。

が、うちで使用しているディスプレイ(LG 24UD58-B)のオーディオ出力はとても音質が悪いですし、つないでいるスピーカーもかなり安いものです。Thinkpad X1 の内蔵オーディオのほうがかなりマシな印象…。

(LG 24UD58-B は画質の面では文句ないですし、価格も安めで、24インチで選べる数少ない4Kディスプレイです。オーディオ機能がちょっと残念なだけ)

試しに、「AMD High Definition Audio Device」をデバイスマネージャで無効化してみました。この状態で試してみたところ、GPD G1 が認識しないということがなくなり、スリープ・休止も問題なく、キーボードが認識されないということもなくなったようでした。まだ、トラブルが完全に解消できたかわかりませんが、しばらくこれで運用してみようと思います。

(「AMD High Definition Audio Device」を無効にしたくない場合は、(USB接続ではなく)PCに直接接続されているデバイスを何か代わりに無効化するとよいのかもしれません。)

なお、ドッキングステーションの機能としては、ディスプレイ出力は Display Port が2つ、HDMI が一つついています。HDMI は 4K ディスプレイをつなぐと、なぜか 50Hz で出力される?らしいので Display Port で接続する方がよいのかもしれません(よくわかりません)。

USB ポートは Type-A が3つのみなので本当はもうちょっとほしいところ。Type-C も1つは欲しいところでしょうか。SDカードリーダーも内蔵されていますが、差し込むのが少し硬く、GPD G1の配置によっては使いにくいように感じました。

他の方の参考になれば…。

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

SQLの実行計画の読み方

今回は、SQLを書く上で特にパフォーマンスに影響のあるSQLの実行計画の読み方について解説します。実行計画はデータベース製品によってさまざまに差異がありますが、ここでは比較的どのデータベース製品でも共通する内容について解説します。

実行計画とは記述したSQLが実際にデータベースの内部でどのように処理されて結果を返すか、その処理方法を記述した情報です。

A5:SQL Mk-2では、SQLエディタで実行計画を見たい SQL の上にキャレットがある状態でメニューから [SQL(S)] – [SQLの実行計画(J)] または、Ctrl+E で表示できます。

表示の仕方はデータベース製品ごとに異なりますが、多くのデータベース製品ではツリー状の情報として表現されます。(このため A5:SQL Mk-2でもツリービューで実行計画を表示します。)

ツリーのリーフ(端)から処理が行われ、ルート(根)に向かって絞り込み・結合・集計・ソートを行いながら処理されていきます。

まず見るべきは、無駄なテーブルの全体読み込みが発生していないか確認することです。テーブル全体読み込みは、データベースの種類によって表現が異なりますが、TABLE ACCESS FULL (Oracle)・「Seq Scan (PostgreSQL)・ALL (MySQL) などと表示されます。 A5:SQL Mk-2ではこれらの処理は赤字で表示されます。

このとき、マスターテーブルのような、件数の少ないテーブルは全件読み込みが発生していたとしてもそれほど気にする必要はありません。多くの場合、小さなテーブルはデータベースのバッファキャッシュ(メモリ)から高速に読みだされます。大きなデータを持つトランザクションテーブルが全件読み込みになっている場合は注意が必要です。あと、赤字でないからと言って全件読み込みが発生していないとは言い切れないので注意が必要です。

大きなデータのテーブルで全件読み込みが発生している場合、インデックスの追加を検討する必要があります。絞り込みを行っているカラム・結合を行っているカラムでインデックスの追加を検討します。

また、サブクエリーを使っているSQLなどではサブクエリーの見直しを検討するのもよいかと思います。

インデックスの有無で後述するテーブルの結合方式も変わってきます。

テーブルの結合の仕方について。

テーブルの結合はデータベース製品によって様々ですが、大きく分けると内部的にネストループジョイン・ハッシュジョイン・ソートマージジョインの3つの方式が使い分けられることが多いです。(データベース製品によっては特定の結合方式がないケースや別の結合方式がある場合もあります。)

基本的にはどの方式が採用されるかはデータベース製品自体が選択します。それぞれについて説明します。

  • ネストループジョイン

ネストループジョインはそれぞれのテーブル(あるいはサブクエリーの結果セット)を2重ループで結合させる処理と思えばよいです。ただし、一般的には内側のテーブルはループではなくインデックスによるアクセスで実現されます。外側のテーブルは小さめのテーブル(全件スキャンかも)で、内側のテーブルは大きなテーブル(インデックス付き)のようなケースで使用されます。

外側のテーブル・内側のテーブルは必ずしもSQLでの記述順序とは限りません。(多くのデータベース製品ではどちらが外側・内側かは自動的に判断されます。)

  • ハッシュジョイン

ハッシュジョインは、片側のテーブル(データベースが小さいと見積もったテーブル)が結合するキー項目でメモリ上のハッシュテーブルに格納されます。もう片方のテーブルを読み込みつつ、ハッシュテーブルと突き合わせます。ハッシュテーブルを作成する処理が前処理として必要になります。

  • ソートマージジョイン

ソートマージジョインは、双方のテーブルともあらかじめ結合条件のキー項目でソートします。その後、マージ処理でキー項目を突き合わせつつ結合を行います。双方のテーブルをソートするための前処理が必要となります。またテーブルが大きくメモリに読み込めない場合、一時ファイル等に書き出されます。キー項目にインデックスが付く場合、インデックスを使ってテーブルを読み込むことでソートの代替とすることがあります。

これら3つの結合方式のうち、どれを採用するか(どれが速いと考えられるか)はデータベース製品自身が判断しますが、ハッシュジョイン・ソートマージジョインについては前処理が必要であることがパフォーマンスに影響する場合があります。結果的に結合結果の表の件数が少ない場合、前処理に時間がかかる分、ハッシュジョイン・ソートマージジョインは遅くなりがちです。また、全件結果を返す時間はともかく、最初の1件を返し始める時間は遅くなります。逆にネストループジョインは最初の1件目を返すのが速い代わりに全件返す時間は遅くなる場合があります。思い通りの結合方式になっていない場合は、インデックスを追加したり、書き方を変える必要があります。

いくつかのデータベース製品では「ヒント句」などを指定することで、どのような結合方式を採用するか・どのインデックスを使うかをある程度制御できます。

できるだけ高速な読み込み方法・結合方法を採用するために、判断基準として各データベース製品は統計情報(データの件数や種類・偏り等々)をバックグラウンドで収集します。多くの場合は自動で採取されます。大量データを投入した直後などは統計情報が実データとあっておらず、遅い実行計画になってしまうことがあります。この場合、手動で統計情報を取得するコマンドがあったりするので、それを活用すると速い実行計画になることがあります。

この記事では実行計画の読み方・パフォーマンスチューニングに関する考え方はここまでにします。遅いSQLがある場合はこの実行計画を見ながら、どのようにSQLを修正する・インデックスを追加するを考えていくことになります。

2023/05/05
から 松原正和
1件のコメント

A5:SQL Mk-2 Version 2.18.0 で導入された「ワークスペース」について

A5:SQL Mk-2 Version 2.18.0 が 2023/5/4 に公開されました。

今回のバージョンからワークスペースの機能が組み込まれています。起動時にいきなり選択画面が出てくるので、これまでA5:SQL Mk-2を使用されていた方は少しびっくりされるかもしれません。

ワークスペースはすべての設定とDBの登録情報、開いているファイルの情報をひとまとめにしたものです。
ワークスペースを切り替えることで複数の案件を簡潔に切り替えることができ、ファイルの開きすぎも抑えることができます。
ワークスペースの情報はレジストリまたは設定ファイルに保存されます。

ワークスペースはレジストリ・設定ファイルそれぞれで名前を持たないデフォルトワークスペースと名前付きのワークスペースを持ちます。デフォルトワークスペースもリネームを行うことで、名前付きワークスペースに変更することができますし、名前を空にすることでデフォルトワークスペースにすることもできます。

ワークスペースのような機能はいらないよという方は「起動時に表示する」のチェックを外すと、起動時に表示されなくなります。(前回起動したワークスペースが起動されます。)

再度、ワークスペースを使用したくなったら、メニューより、[設定(P)] – [ワークスペースの起動と管理(Z)…] またはスピードボタンより再度ワークスペース選択画面を表示できます。

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 は仮想マシンでは動作させてはいけない制約とかあったっけと不安になりましたが、とりあえずそのようなライセンス上の制約は見つけられませんでした。