VSCodeでDb2 for IBM i をシュッと使う　まずは触ってみよう編

# 前置き✋
- IBM i でテーブル一覧を確認する際は、QUERYだけでなくSQLを使う機会も増えてきていると思います
- VSCodeでもDb2 for IBM i という拡張機能を入れることで、Db2 for iのテーブルレコードの処理が可能になります
- Db2 for IBM i とは、一言でまとめると、VSCodeでDb2 for i のデータの参照やSQLステートメントの実行が可能になります

# 環境前提
## IBM i 前提
- IBM i 7.5 TR4
    - TR3でも稼働確認済

## VSCode前提
- IBM i Development Packがインストールされていること
    - Db2 for IBM i：v1.0.0
        - ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3658740/1230ae58-04a8-41a3-5031-0db50396a46d.png)

        - pre-release版です
        - [Gitリポジトリ](https://github.com/codefori/vscode-db2i)
        - [ドキュメント](https://codefori.github.io/docs/extensions/db2i/)


# 事前作業
- Db2 for IBM i　の利用開始をするには、Code for IBM iの機能で事前に、IBM i の区画に接続する
    - 区画接続については、[こちらの記事](https://qiita.com/KOINULIB/items/b7259d93ec772effdef7#5pcibm-ivscode%E3%81%AB%E3%81%A6ibm-i%E3%81%B8%E6%8E%A5%E7%B6%9A%E8%A8%AD%E5%AE%9A%E3%82%92%E8%A1%8C%E3%81%86)をご参照ください
- 接続後、以下ポップアップが表示されるので、`Yes`を押下して、SQL Jobを開始する
    - ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3658740/28d8879e-1017-d8cd-7694-a83edc77b961.png)
- アクティビティバーのDb2 for i アイコンを押下
    - ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3658740/54c3cc93-e449-653c-f640-3f0eb0d180d5.png)

# 画面簡易説明
- 今回はまずは触ってみよう編なので、各エリアでできることを確認していきます
    - ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3658740/345f9f1a-3706-2f32-9ce0-123a365ac085.png)
## SCHEMA BROWSER
- 処理をしたいDBライブラリーやschemaを追加ができる
- `Manage Schema Browser List`を押下
    - ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3658740/7e9e6f86-b022-1b78-8cf5-03555c2e3c16.png)
- ライブラリー、schemaを検索し、追加したい対象にチェックを入れ、`OK`を押下
    - ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3658740/39cc62b7-0738-f173-6971-997d564a7316.png)
    - 追加できました！
        - ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3658740/fecbd0a4-6a2d-17c5-23d0-90d97d2c6ed0.png)
- 追加したライブラリー＞`Tables`と展開すると、テーブル一覧が表示できる
    - ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3658740/2cad6e9e-4b85-c847-160f-aefd29df88ad.png)
- テーブルの右側に`View contents`があるので、押下すると`Select *`が実行される
    - ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3658740/7493e600-7a2d-6f6a-a04c-57a9812a5dd0.png)
    - ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3658740/da390622-2c96-d7b7-3d53-ef3265cde615.png)
- SQLステートメントは、条件を追加して再実行することも可能
    - `SELECT * FROM KOINULIB.HINMSP as a where hnbang = 40100`に変更し、`Run SQL statement`を実行
    - ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3658740/f19c6358-2dd9-679d-dbf4-d54e6454511a.png)


## STATEMENT HISTORY
- 名前の通り、SQLステートメントの実行履歴が残るので、再実行の時に便利
    - ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3658740/a0a5e631-3cf9-fc68-00ad-601fc71f7972.png)

## EXAMPLE
- こちらも名前の通り様々なSQLの例があるので、加工したりそのまま使ったりと便利…！
    - ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3658740/3c7c9eb3-a35b-5de8-cbec-a47cce8e1dcc.png)
### DDL EXAMPLE
- Db2 for iでカラム追加したい…なんだっけな？WEB検索…ではなく、VSCodeのサンプルから検索してテーブル名やカラム名だけ修正すればよい。やっぱり便利…！
    - ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3658740/8f4cf1a9-7c7f-4625-0878-0ed450298fd6.png)
    - ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3658740/86ce7df4-644a-0b7a-81fa-4bd72e1db45d.png)

### DML EXAMPLE
- SQLステートメントなんてあまり使わないから構文すぐ忘れちゃう…そんな時もやっぱりEXAMPLE便利！
    - ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3658740/4951980b-dd48-337f-ae4f-748c7a7cba9b.png)
    - ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3658740/d013b99f-db09-9442-436d-dfc4462aa1c9.png)

### Notebooks
- ジョブごとのCPU使用率順位の確認もリアルタイムでできる。開発だけでなく運用でも使えそう
    - ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3658740/b6f96e66-1ac6-ac1f-3eb6-4afb8da70b23.png)
    - ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3658740/4ea7b436-4990-9b01-c4ed-b6132b81cf85.png)

### IBM i Services
- IBM i Servicesとは
-  [IBM i ドキュメント](https://www.ibm.com/docs/ja/i/7.5?topic=optimization-i-services)より抜粋
>システム提供の SQL ビュー、プロシージャー、および関数によりアクセスできる多数のシステム・サービスがあります。 これらは、システム API にコード化する必要なしに、情報のアクセス、変換、順序付け、およびサブセット化を行うための SQL インターフェースを提供します。
- 今回は、Group PTF適用状態の確認をします
- `PTF - Group PTF Currency`を押下
    - ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3658740/aa6b9060-b953-8cab-2ea7-bc28b26c2ecf.png)
- :arrow_forward:を押下後、`Open as Notebook`を押下してNotebookを開く 
    - ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3658740/dbc8b5da-e61a-ae1c-49c5-5f8df905c620.png)
- 実行結果イメージは以下の通り。WRKPTFGRPを5250画面で実行せずとも、ぱっと確認できます！
    - ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3658740/4d0b84cf-ce37-7f7b-7160-09389f7d468a.png)

## SQL JOB MANAGER
- IBM i 接続時に投入したSQL実行用jobの情報が確認できる
    - ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3658740/8e3a9bf2-0648-9515-14fd-6055522d1f14.png)

# おわりに
- Db2 for IBM iは、他にも様々な機能を提供予定とのことで、Visual Explain（SQL 文がどのように実行されるかを確認できるよう、SQL文の実行プランをグラフィカルに表示する機能）の完全releaseが楽しみです
- 私自身もまだ触り始めたばかりなので、これから便利機能をもっと探して、記事化していきたいと思います！