Db2を使用する際に便利なのは、IBMi？VSCode？比較してみた

# 0. はじめに
Db2はIBMのデータベース管理システムで、主にIBMi(旧AS/400)上で使用される一方、
VSCodeのようなモダンな開発環境からも接続できます。
本記事では、VSCodeでDb2を使用する方法とIBMiのネイティブ環境でDb2を操作する方法を比較し、
それぞれの利点や使い勝手について主観を交えながら紹介します:writing_hand:

# 1. IBM iでDb2を使用する方法
IBM iは、Db2をネイティブでサポートしており、SQLクエリの発行やテーブル管理を直接行うことができます。
IBM iの環境でDb2を使用する際の主な方法は以下の通りです。
- ## 1-1. 環境設定
    - 5250エミュレータ（例: IBM i Access Client Solutions）
    - STRSQLコマンドやRUNSQLコマンドを利用してSQLを実行
- ## 1-2. 実操作
    下記以外にもいくつか方法はあるのですが、代表的なコマンドを簡易的に記します:no_mouth:
     ### 1-2-1. Db2データ挿入してみた
    ①STRDFUコマンド投入(入力後、実行)
    ![STRDFU.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3844144/f02f3b63-0b4e-acf7-641d-8c7fea536a3a.png)
    視覚的に入力できるのが:thumbsup:<br>
    ②STRSQLコマンド投入
    ![insert.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3844144/e92efdcb-16e1-9f8b-6660-267f371025fa.png)
     ### 1-2-2. Db2データ参照してみた
    ①DSPPFMコマンド投入
    ```
    DSPPFM FILE(LIBRARY/TESTDB)
    ```
    ![DSPPFM.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3844144/45fcfda0-08de-6539-f24f-162b4a65333e.png)
    ん…？なんだか文字化けしていますね:eyes:
    バイナリデータをそのまま表示するため、このような文字化けが発生するようなのですが
    5250エミュレータ操作する中で、このような文字化け問題は時折発生する気がします:thinking:
    
    ②STRSQLコマンド投入
    ![select sql.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3844144/93149bbd-ff00-15f8-e7ed-30759525a7e3.png)
            ↓
    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3844144/8888d057-1a14-83b5-8006-ec397822840c.png)
    今度は文字化けなく表示することができました。

# 2. VSCodeでDb2を使用する方法
VSCodeは、プラグインを追加することでさまざまなデータベースに接続でき、
Db2もその対象に含まれます。以下は、VSCodeでDb2を使用する際の手順です。
- ## 2-1. 環境設定
    以下リンクをご参照ください
    - [VSCodeのセッティング](https://qiita.com/RiSING_alpha-team/items/7b5c910c6df111a53ace)
    - [VSCode基礎知識](https://qiita.com/RiSING_alpha-team/items/9c247feb995a3b7c36d8)
    該当のライブラリが表示され、ライブラリ内のテーブルも閲覧できます。
    テーブル定義も視覚的に確認できるのが:thumbsup:
    ![vscode1.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3844144/1a2733a3-a300-0739-e79a-84b674f15345.png)
    テーブル名右横にある、メモ帳のようなマークのView contentsをクリックすることで
    新しいファイルが起動されます
    ※View contents実行後は、自動でSELECT文実行
    ![vscode3.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3844144/4e854ddf-1cfc-c92f-350b-808ab0b0ff44.png)

  
- ## 2-2. 実操作
     ### 2-2-1. Db2データ挿入してみた
    SQLを入力し、Run SQL statementを実行します。今回は欲張って2レコード挿入します。
    ![vscode4.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3844144/8dbc9569-450e-5988-9376-48e373ca7ac7.png)
     
     ### 2-2-2. Db2データ参照してみた
     ![vscode5.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3844144/5b66ac06-43b9-89b3-4da5-740b92c857f3.png)
    追加した２レコードが参照できることを確認できました。
    文字化けなどの問題もありませんでした:clap:

- ## 2-3. おまけ
    Db2用のSQLサンプルクエリをまとめておくと、
    必要なときにすぐに参照できるのも利点だと感じました。
    毎回SQLを一から記載しなくても、サンプル編集で簡略化が可能です。
    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3844144/b1399f03-28f6-54d9-2571-9befda468108.png)
    ※`TESTDB_insert.sql`としてサンプル保存した例      

# 3. IBMiとVSCode比較
4つの観点で、IBMiとVSCodeを比較してみました。
|項目|IBMi|VScode|
|:---:|:---:|:---:|
|UI/UX|テキストベース|モダンなGUI|
|環境|標準搭載で特別なインストール不要|クライアントツールのインストール、プラグイン追加|
|柔軟性|IBMi固有環境|マルチDB対応が容易|
|パフォーマンス|ローカル環境で高速かつ安定|クライアント依存、ネットワーク越しのアクセス|
|導入|IBMiのコマンド操作への適応|GUIベースで比較的簡単|

# 4. まとめ
VSCodeでのDb2利用は開発効率や柔軟性に優れ、特に複数のデータベースや言語を扱う場合に便利です。
また、SQL発行も簡易的に行えるので、ささっと確認できるのは便利な点のひとつです。
一方、IBM iのネイティブ環境でD2を操作する方法は、パフォーマンス面でのメリットがあると感じました。
好みもあると思いますが、それぞれの環境に合わせて、最適な選択が必要ですね！