A5M2 ツール

A5:SQL Mk-2 神ソフトデータベースツール

2019年9月5日

A5M2
2019/09/05 追記

仕事がOracleを使ったパッケージ開発なんだけどデータベースを参照するのにMS-ACCESS使っている人が多い。10年近く使っているのがA5:SQL Mk-2(以下 A5M2 エーゴエムニと発音する派)でこれなしの開発なんかは考えられないぐらいである。どれくらい良いかを職場の人に説明するためにまとめておく。

この記事では以下のことについて解説している。

ココがポイント

  • A5M2を使うことのメリット
  • A5M2を使う時の注意点

システムエンジニアとしてA5M2を使い続けて10年以上の私が感じたメリットの数々を感謝の気持を込めて説明します。

松原正和さん作成
高機能かつ軽量な汎用SQL開発ツール / ER図ツール / フリーソフト (読み:エーファイブ・エスキューエル・マークツー)
https://a5m2.mmatsubara.com/





目次【本記事の内容】

1.A5M2を使うことのメリット

1-1.A5M2がない時代に起こった悲劇

A5M2がなかった時代のデータベース開発は大変だった。SI Object Browserはその当時からあった。しかし値段のせいでプロジェクトでは買ってもらえない。しかたなくSQL*PlusかAccessのリンクテーブルを使って開発するのだが、以下のような事件が度々起きた。

SQL*Plusはデータを参照するのには向かない。設定ファイルでいろいろいじってなんとか見やすい形にできる。しかしExcelのようにグリッドでデータを照会するのと比べて非常に見づらい。そのせいで大事なデータを見落として間違えた手順でデータ移行に失敗するケースが出た。それだったら、Accessを使ってリンクテーブルを使えば良いのではという意見があった。そうしたらリンクテーブルを開いている時に間違ってデータ更新をしたり、テーブルのデータを全件消してしまうような自体が発生した。

もう金だしてSI Object Browser買ったほうがコスト安く済むのではないのか?そう思い始めたときである。協力会社の人がA5M2使えば良いんじゃないですか?と提案してくれる人がいたのである。私はそれ以来のA5M2ファンである。

1-2.A5M2をダウンロード、インストール、データベースに接続

step
1

インストールするファイルをダウンロード

作成者様のサイトからA5M2 をダウンロードしよう。私が強くおすすめするのはA5M2をVectorからダウンロードするほうだ。なぜかというと後述するポータブルモードが利用できるからである。

A5M2

 

自分のパソコンが64bit版か32bit版か確認してインストールしてほしい。この確認方法を知らない人がシステム開発の現場でも結構いるのだ。私がおすすめする方法はエクスプローラーのPCで右クリック。プロパティを表示して確認する方法だ。

a5m2

A5M2

 

step
2

ダウンロードしたファイルを解凍して配置

ダウンロードしたファイルをわかりやすいところに配置しておきます。解凍したフォルダにはバージョン番号が含まれているのでA5M2などシンプルな名前に変えておこう。そして自分がわかりやすい場所に移動しておく。私はCドライブがSSDで速いのでc:\A5M2 に配置している。

 

A5M2フォルダの中にあるA5M2.exeを最初に起動する時にレジストに情報を登録するか、ポータブルモードで運用するか選択する画面が出てくる。セキュリティにそんなにうるさくないのだったらポータブルモードがおすすめだ。そもそもシステム開発の現場では単体テスト環境にせよ、結合テスト環境にせよパスワードが秘密にされていることの方が少ないだろう。

a5m2

a5m2

ポータブルモードを選択しよう

 

step
3

データベースに接続する

データベースに接続する設定おこなう。私はOracleを仕事で使っているので他のDBに接続したい人は適宜設定を読み替えてほしい。ただ、この方法はOracleクライアントを新ストールしていなくても設定する方法なので、別のデータベースソフトを使っている人はクライアントソフトのインストールが必要であろう。

a5m2

a5m2

Oracleクライント不要の直接接続を選択しよう

 

以上で接続の設定が完了だ。

1-3.A5M2を使うメリット

Oracle Client不要でつながる。

しかもサーバー側がOracle9、10、11、12、ExaDataとか細かいバージョン違いを気にする必要なし(Oracle18はまだ試したことがない)。これがOracle Client使う場合だとサーバーに合わせたクライアントを使わないとたまにエラーになるときがある。周りの人は各バージョンのOracle Serverにアクセスしようとすると、まずはリモートデスクトップでお目当てのバージョンが入っている仮想PCにアクセスし、そこからSQL Developerなどでアクセスしているから一手間も二手間もかかってしまう。
さらにA5M2にはポータブルモードでインストールすることが可能なのが良い。データベースの接続設定を済ませたA5M2フォルダをとっておけばプロジェクトに新しく参画した人にフォルダごと渡せばすぐにDBに接続することができる。
大規模プロジェクトだと数百人の人が数十個のサーバーへの接続設定をやる工数が省けるかと思うとありがたい事この上ない。但し、他のデータベースだとクライアントが必要だからそうは簡単にいかないけど。

クエリーだって簡単に作れる

自分はSQLを作るのはそんなに気にならないので直書きするタイプだが、Accessの良いところはSQLがあまりわからない人でも簡単にクエリーが作れることだ。だがしかしさすがは神ツール。A5M2にもMS-Accessライクなクエリビルダーがある。SQLが苦手な人にも向いている。
A5M2

フィルタリングもA5M2は簡単

同じくMS-ACCESSのように選択した列で簡単にフィルタリング出来る。ちょっとびっくりするのが論理名でテーブルを表示しているときにでも該当の列でフィルタリングすれば物理名で条件式が設定されるところだ。ちょっと前までその事を知らずに論理名で場所を確認した後、物理名に戻してフィルタリングの条件式を手打ちしていた自分が恥ずかしい。
a5m2
a5m2

ソートも簡単

列をダブルクリックすればソートの切替もできる。ただ、複数列でやろうとすると物理名で設定するのでちょっと面倒。

実行計画もA5M2なら簡単に取れる

若かりしころOracle Masterを取得するのと、パフォーマンスチューニングのために呪文のようなコマンドを覚えたのは何だったのかと思うくらいボタン一つで簡単に実行計画が取れる。Full Scanを発生させるようなSQLを書いていないかプログラマが簡単にチェックできる。

データ取得も簡単

テーブルの中身をEXCELに簡単にコピペ出来る。自分のお気に入りはCtrl+Cでコピーしてそのままエクセルに貼り付ける方法。そうするとカラムの物理名と論理名が2段で表示される。エクセルのエクスポートするボタンもあるけどそれだとなぜか一つのセルに物理名と論理名が混ざってエクスポートされる。

データの登録も簡単

エクセルからデータを貼り付けてテーブルに挿入することが出来る。MS-Accessと同じ要領である。但し、後述のオートコミットになっている事は注意が必要だ。
a5m2
各種形式でのExportも簡単

特に気に入っているのがInsert文でのエクスポート。本番環境とかステージング環境とか勝手にデータを触れない場合、データの登録を依頼する時に使っていた。

SQLの実行も簡単

 MS-Accessでクエリーを組んでいるとどんどんクエリーオブジェクトが増えていってどれがどれだかわからなくなることがある。その点はA5M2も変わらないがSQL文が素で表示されているからクエリーの中身を開いて見る必要はない。また、カーソルで選択した部分だけを実行することができる。複雑なSQLを組んでいる時に部分的に選択して実行するとどこが悪い箇所が特定がしやすい。
また、最近実行したSQLは保存されていて、履歴から再実行できるようになっている。
a5m2

最近実行したSQLの履歴

SQLを手組しているときには入力補完もしてくれる。(少々重いが)Ctrl+Spaceキーで入力補完のウィンドウが起動する。
a5m2

入力補完の情報が表示される

データ移行でも使える

データ移行するときは元のシステムからエクスポートして新システムにインポートするけど、機能追加でテーブル定義が変わっているとインポートが簡単にできない。そんなときは移行元の古いテーブルをemp_old のような一時的なテーブルをつくってそこに突っ込みたいのだが、インポートコマンドだとテーブル名が違うということで怒られる。

CSVでのエクスポート・インポート機能があるのでテーブル名が違っても関係ない。

a5m2

a5m2

新システムにインポート

a5m2

インポートする時の細かい設定、列の要否やEncodingの指定など

スキーマ間でオブジェクトの比較が出来る

大規模プロジェクトだと個人ごとの開発環境を作るためにスキーマで分けて使っている人もいるだろう。また、パッケージ開発で顧客ごとにスキーマを分けてサーバーは一個というような開発環境の作り方をしているケースも有る。

こういう時に困るのが、開発環境を作り時に流すスクリプトのバージョンを間違えて、テーブルのカラムに過不足があるとか、制約が違うとかでアプリケーションが正しく動かないときがある。
A5M2だったらスキーマ間のオブジェクトを比較することができるので、新人君が仮に間違えてデータベース環境を作ったとしてもすぐに違うところをチェックすることができる。トラブルに陥った時にチェックする時にたまに使用している。

a5m2

カラムが大量にあるテーブルで目的のカラムに素早く移動できる。

2019/10/31 追記

長い間使っていて、つい最近知った事。

今までなんでこんな事に気づかなかったのか。

数百カラムあるテーブル。

データビューを見ながら目的の列にたどり着くのが大変。一生懸命スクロールしていました。

でもテーブルビューにしてそのカラム名のところでダブルクリックする

A5M2

この予備1でダブルクリックすればデータビューに切り替わってそのカラムに自動的に切り替わる。

A5M2

なんでこんな事を今まで一生懸命スクロールして列を探していたのかというレベルの目からウロコ。

 

2.A5M2を使うことの注意点

2-1.A5M2を使う時のおすすめ設定

SQL入力支援のピリオドの入力でSQL入力支援を実行するは切っておく

SQLの入力支援自体は非常にありがたい機能なんだけど、ピリオドを打つと入力支援のためにテーブル名や列名を読み込みに行くのに非常に時間がかかるときがある。自分が覚えているテーブル名.列名 の場合でも問答無用で入力支援が立ち上がろうとしてもっさりな感じになるので切っておく。でもテーブルが数百、カラムの物理名がわけのわからん命名規則のシステムはコメント文で説明をつけておくと入力支援のときにも論理名が出てきて非常に助かる。本当に必要なときになったらCtrl+Spaceを押せばそれで良いと思う。

メインメニューの設定→オプションから

a5m2

入力補完を.(ピリオド)で起動されないようにしておく。

最大レコード件数には注意する。

初期設定で1万レコードが取得できる最大件数になっている。以前の現場でよくあったのが全件データを取得したつもりが実は1万件しか取っていなくてデータ移行に失敗するとか。それに怒ったお偉いさんが最大件数を5万件ぐらいに設定しとけ!って怒り出すし。それやっても結局5万件超えたら意味ないね。最終的には同じWhere句でCountして最大件数が5万件超えてないかチェックさせられる始末。
a5m2
SQLを実行した時に何件取得できているのかチェックしよう。上限だと下記のような表示になっていることがある。
a5m2

テーブル定義書のリバースエンジニアリング

最近、新しいプロジェクトに取り組んでいて、旧バージョンのパッケージを最新化する案件をやっているの。まあ、最新版の機能についてはある程度抑えているから大丈夫だろうと思ったら、旧バージョンが無茶苦茶カスタマイズしているわけ。バージョンアップすると言ってもインフラ基盤とかアーキテクチャの更新だけで、その無茶苦茶カスタマイズしているから、パッケージの知識が役に立たないの。

そんな時もA5M2があればとりあえず、テーブル定義書をリバース・エンジニアリングできます!サクッとできる。制約とかインデックスとかトリガーもバッチリで目次も自動生成してくれるので助かる。

 自動コミットしない設定にする

初期状態で自動コミットするようになっている。テーブルを開いて参照しかしていないつもりが手が滑ってうっかり更新してしまうことがある。RDBなんだからちょっと変えてもロールバックすればよいだろうと思ってうかつに更新すると痛い目見る。自分だけが使う単体テスト環境でも無い限りはトランザクションを有効にする事をおすすめする。
a5m2

2-2.Version 2.14.3 2019/08/17が神アプデ

バージョンアップされて少し時間が空いたのだが最近使っていると明らかにCtrl + Spaceキーでの入力補完が早くなっている。今までちょっともたついた感があったのがだいぶ改善された。バージョンアップ履歴を見ると数千個テーブルが有るような場合と書かれているのだが、私が携わっているシステムはせいぜい500テーブルぐらい。まだバージョンアップしていない人は確認してほしい。

 まとめ

データベースを使った開発をするならA5M2を使ってみよう。
データベースがOracleだったらOracle Client入れるまえにA5M2をいれて
クライアント無しでつながる快適さを実感しよう。

注意すべきは上限1万件と自動コミットになっている事。
今の仕事でこのソフトが無かったら多分1時間は残業増えているよ。

 

-A5M2, ツール
-,

Copyright© ビジネス中学 , 2019 All Rights Reserved.