MacでA5:SQL MK-2を使用する方法(無料のWineskinServer)

# はじめに
会社では、データベース接続ツールとして「[A5:SQL MK-2](https://a5m2.mmatsubara.com/)」（以降略名:A5M2）を使用しています。
自宅のMac環境でも使用してみようとWineskinServerで作成してみました。

MacでWineを使用してA5M2を動かす記事については、作者自身も書いています。自分の環境と違ってM1 Macです。

https://a5m2.mmatsubara.com/wp/?p=8950

他にも

https://future-architect.github.io/articles/20220225a/

# 環境
Mac Book Pro(2.3 GHz 8コアIntel Core i9) Monterey 12.0.1

# WineSkinの導入と設定
WineSkinダウンロード、最新のエンジンの導入、最新のラッパーを導入までは内容がかぶるので、サクラエディタの記事を参照してください。

https://qiita.com/yaju/items/f2825b6618055149f597

## ラッパーを作成
Installed Engine WS11WineCX64bit21.2.0 と Wrapper Version が Winskin-2.9.1.1 になりました。
![スクリーンショット 2022-05-13 21.13.13.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/14053/3037c49c-138d-4db4-43c5-5aba8a8e0ec8.png)
「Create New Blank Wrapper」をクリックし、好きな名前を設定( A5M2.app とか)し「OK」ボタンをクリックすればラッパーの作成が開始されます。他のWineskinServerのアプリケーションは終了しておいた方が良さそうです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/14053/1b9e4efb-e931-c83e-9922-10d93af35a57.png)
作成が終わり「view folder in Finder」をクリックすれば、設定した名前のWineSkinラッパーアプリが「/Users/ユーザー名/アプリケーション/WineSkin/」の下に生成されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/14053/a6e01dcf-43da-a23b-65cf-7f6059a67c36.png)

## A5:SQL MK-2を用意
現時点の最新版の64bit版 a5m2_2.17.2_x64.zip をダウンロードしました。そしてダウンロードフォルダ内にzipを展開しました。

https://www.vector.co.jp/soft/dl/winnt/business/se422726.html

## フォントのインストール
サクラエディタでフォントが文字化けする経験があったので、先にフォントをインストールしておきます。
A5M2.appの右クリックメニューにある「パッケージ内容を表示」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/14053/f4a30d61-420e-17d8-7679-b1cb4cadd4a9.png)

### fakejapaneseの導入
Wineは標準では普通のWindowsが標準搭載しているライブラリ、フォント類がかなり抜けています。必要に応じて「winetricks」を用いてこれらのライブラリ、フォントを導入できます。

wineskin.appをクリックすると設定画面が開きます。「Advanced」を選択すると詳細設定画面が開きます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/14053/46f1ae0b-b0f6-1f85-29d0-10da35e7db43.png)
詳細設定画面の「Tools」タブの「winetricks」を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/14053/49926e72-d8ae-daee-0b42-f231902722e1.png)
検索窓に「fakejapanese」を入力します。fontsの配下に「fakejapanese」が表示されてきます。これにチェックを付けて「Run」をクリックしてインストールします。
いろいろインストールされるのがパネルに表示され、終わると「Close」ボタンが有効になるので終了する。
フォントのダウンロードに少し時間がかかりますが、しばらく完了するまで待ちましょう。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/14053/51350ffa-3b11-abcf-3fdf-c257c82cce19.png)

これにより日本語環境に必要な、「MS (UI/P)Gothic」、「MS(P)Mincho」、MS(P)ゴシック」、「MS(P)明朝」などのフォント名が追加される。ただし、実際該当するフォントがインストールされるわけではなく、fakejapaneseという名の通りシステムにある何かの代替えとなる。

【2022/06/13追記】
「fakejapanese_ipamona」をインストールすると、依存している「fakejapanese」パッケージも同時にインストールされる。ipamonaフォントをインストールしなかった場合、適当なフォント置換を行っていないため可読性の低いフォントになる可能性がある。「fakejapanese_vlgothic」はメイリオフォントの代替フォントとなる。

https://scienceboy.jp/88io/2020/04/wine-customize/

「fakejapanese_ipamona」以外では「cjkfonts」もあります。

https://bigmoro.cocolog-nifty.com/blog/2021/04/post-2f6bff.html

## A5:SQL MK-2のインストール
設定画面で「Install Software」を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/14053/8ae76e5e-8e86-a15f-c277-9a3c4b0604f2.png)
「Move a folder inside」又は「Copy a folder inside」を選択します。今回は「Copy a folder inside」を選択しました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/14053/987fc9b4-91a6-d410-9678-342ae1efefca.png)
a5m2_2.17.2_x64フォルダを選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/14053/3f0fba7d-1fb3-879b-60ef-cdf453e5fbf0.png)
a5m2_2.17.2_x64の実行ファイルは正しいので、そのままOKボタンをクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/14053/175286cd-cd55-bc70-edbc-6ecd5252d924.png)

## アイコンの変更
標準ではwineskinのアイコンになっているので、A5:SQL MK-2用のアイコンに変更します。

Automator用のアイコン画像ファイルを保存します。一応、32x32サイズ変換してます。
https://a5m2.mmatsubara.com/image/A5M2_ICON.png

設定画面で「Advanced」を選択します。
IconのBrowseボタンをクリックして、A5:SQL MK-2のアイコン「A5M2_icon.jpg」を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/14053/56647cf6-fe8c-c2d0-e080-9b00b3db9029.png)
直ぐには変わらないかも知れない、後でA5M2.appの右クリックメニューの「情報を見る」でプレビューを見るといいかも。

# A5:SQL MK-2の起動
今回はレジストリを選択しました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/14053/e5dacfca-e9f2-113e-7797-0d855824ae95.png)
PostgreSQLでデータベース`mydb`にて、`books`テーブルの中身を表示しています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/14053/279aceb9-3be0-f42d-6ac2-5175bb592762.png)

# PostgreSQL環境作成
順番が逆になりますが、PostgreSQLインストールしデータベース`mydb`と`books`テーブルを作成しました。

## PostgreSQLインストール
最新版をインストールする場合、postgresqlを指定します。
```
% brew install postgresql
% psql --version
psql (PostgreSQL) 14.3
``` 

## PostgreSQLを起動する
```
% brew services start postgresql
==> Tapping homebrew/services
Cloning into '/usr/local/Homebrew/Library/Taps/homebrew/homebrew-services'...
remote: Enumerating objects: 2000, done.
remote: Counting objects: 100% (509/509), done.
remote: Compressing objects: 100% (176/176), done.
remote: Total 2000 (delta 348), reused 441 (delta 325), pack-reused 1491
Receiving objects: 100% (2000/2000), 548.53 KiB | 2.62 MiB/s, done.
Resolving deltas: 100% (903/903), done.
Tapped 1 command (45 files, 700.4KB).
==> Successfully started `postgresql` (label: homebrew.mxcl.postgresql)
```

## データベース一覧を表示
```
% psql -l
                          List of databases
    Name     | Owner | Encoding | Collate | Ctype | Access privileges 
-------------+-------+----------+---------+-------+-------------------
 postgres    | yaju  | UTF8     | C       | C     | 
 template0   | yaju  | UTF8     | C       | C     | =c/yaju         +
             |       |          |         |       | yaju=CTc/yaju
 template1   | yaju  | UTF8     | C       | C     | =c/yaju         +
             |       |          |         |       | yaju=CTc/yaju
(3 rows)
```

## データベース作成
```sql
% psql postgres
postgres=# create database mydb;
postgres-# \q
```

### テーブル作成
```sql
% psql mydb
psql (14.3)
Type "help" for help.

mydb=# create table books(id integer, name text);
CREATE TABLE
```
### テーブルにデータを追加
```sql
mydb=# insert into books values (1, 'はらぺこあおむし');
INSERT 0 1
mydb=# insert into books (id, name) values (2, 'ぐりとぐら');
INSERT 0 1
mydb=# \q
```

## role postgres does not exist
テスト接続したら「role postgres does not exist」エラーになりました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/14053/3787dfe6-255c-1df8-d49b-a672b917afca.png)

検索したところ、解決するには`postgres`ユーザーを作成する必要があるそうです。

### postgresユーザー作成
```
% createuser postgres
% psql -U postgres
psql (14.3)
Type "help" for help.

postgres=> \du
                                   List of roles
 Role name |                         Attributes                         | Member of 
-----------+------------------------------------------------------------+-----------
 postgres  |                                                            | {}
 yaju      | Superuser, Create role, Create DB, Replication, Bypass RLS | {}
```

### 権限追加
```
% psql postgres
psql (14.3)
Type "help" for help.

postgres=# alter role postgres with superuser createdb createrole；
ALTER ROLE
postgres=# \du
                                   List of roles
 Role name |                         Attributes                         | Member of 
-----------+------------------------------------------------------------+-----------
 postgres  | Superuser, Create role, Create DB                          | {}
 yaju      | Superuser, Create role, Create DB, Replication, Bypass RLS | {}
```

### オーナー変更
データベース`mydb`のオーナーを`postgres`に変更します。

```
postgres=# alter database mydb owner to postgres;
ALTER DATABASE
postgres=# \l
                             List of databases
   Name    |  Owner   | Encoding | Collate | Ctype |   Access privileges   
-----------+----------+----------+---------+-------+-----------------------
 mydb      | postgres | UTF8     | C       | C     | 
 postgres  | yaju 　　　　　　　　| UTF8     | C       | C     | 
 template0 | yaju 　　　　　　　　| UTF8     | C       | C     | =c/yaju         +
           |       　　　　　　|          |         |       | yaju=CTc/yaju
 template1 | yaju 　　　　　　　　| UTF8     | C       | C     | =c/yaju         +
           |       　　　　　　|          |         |       | yaju=CTc/yaju
(4 rows)
```

これでテスト接続ができるようになりました。

# 最後に
これでMacでも動作することが出来ました。
A5:SQL MK-2は日本人の方が作成していますし、掲示板に書けば回答して頂けるので応援したいです。

データベース接続ツールとしては、「DBeaver」もいい感じです。

https://zenn.dev/datsukan/articles/d1d5aa1148e3b4