AS/400展望台

DB2 UDB開発用のツール改善



ポール・コンテ著

iSeries用アプリケーションの開発者は長年に渡り、あらゆる開発においてSEUなどといったグリーンスクリーン・ツールを使用してきました。WindowsベースやLinuxベースのWebSphere Development Studioクライアント(WDSc)やRemote System Explorer(RSE)の使いやすいグラフィック編集ツールやグラフィック・デバッグツールが登場したことで、iSeries用アプリケーションの開発者は、Java開発だけでなく従来のRPGやCobolプログラミングにおいても最新の開発環境を使用することができるようになりました。

それでは、データベースの開発作業についてはどうでしょうか。本稿では、WDScやiSeries NavigatorといったIBMの最新のクライアントベースのツールをいくつか紹介します。

WDScデータベース・ツール

WDScは最高級拡張可能開発ツール・プラットフォームであるオープンソースのEclipseプラットフォームをベースとしています。IBMを始めとするベンダーは、「プラグイン」を書くことでEclipse上で実行できるようなツールを提供しています。このプラグインは基本的にはJavaコードで書き、Eclipseの標準に従うことで相互運用性が保たれます。Eclipseのプラグインはパースペクティブを実装します。パースペクティブは特殊なエディタやビューの集合です。たとえばある開発者は適当なエディタを使用して、Java、RPG、SQLなどのコードを記述します。また別の開発者はビューを使用して、ナビゲーション、コード生成、デバッグなどといったさまざまなタスクを実行します。

従来のデータベースDDS(およびその他の)コーディングに対して、WDScはRemote System LPEXエディタを提供しています。このグラフィック・エディタには、カラー・コーディング、文法チェック、プロンプト機能などのコーディング支援機能があります。iSeriesアプリケーションの開発者は、長きに渡って時代遅れとされていたSEUを、ようやく優れたエディタに置き換えることができました。LPEXは基本的なSQLソースコードの編集機能(カラー・コーディングなど)も提供していますが、本格的なステートメント・ビルダは備えていません。

WDScのその他のデータベース・ツールはSQL用のものですが、SQLが業界標準のデータベース言語であり、しかもIBMが戦略的にiSeries用のデータベース開発およびランタイム・インタフェースであるとしている唯一のデータベース言語であることを考えるとこれは当然のことです。本稿で述べるWDScツールは、WDScがベースとしている製品―WebSphere Studio Site Developer(WSSD)―の一部であるデータ・パースペクティブに含まれています。

以上のように、iSeriesアプリケーションの開発者は、新しいデータベース・ツールと新しいJavaツールおよびHLLツールを手に入れました。しかしこれには注意が必要です。現在のリリース(5.1)のデータ・パースペクティブは、iSeries用のDB2を完全にはサポートしていません。これについては、利用可能なツールおよびその使用についての私の考えを簡単に要約します。

データ・パースペクティブには図1図2に示す通り、3つのビューと5つのエディタがあります。DBサーバー・ビューではiSeriesに接続し、データベース・オブジェクト定義をインポートすることができます。残念ながら、このビューが認識できるのはスキーマ(ライブラリ)と基本テーブル(物理ファイル)だけです。DBサーバー・ビューを私が試用してみたところでは、データベースのエイリアスがインポートされていましたが、AliasesフォルダではなくTablesフォルダに置かれていました。データベース・ビュー、索引、トリガ、ストアード・プロシージャ、ユーザー定義関数(UDF)、ユーザー定義タイプ(UDT)はインポートできませんでした。

DBサーバー・ビューのSQL生成ツールが生成するコード中には、カラム属性がそれほど広範に含まれているわけではありません。サポートされていない属性には、OS/400のシステム名(For節)およびVarCharカラム用のAllocate節も含まれています。UDTもカラム定義では認識されません。データ定義ビューのテーブル・エディタにも同様の制限があります。

データ定義ビューのビュー・ビルダ(図2)は、SQLステートメント・ビルダと同様のマルチペインのユーザー・インタフェースを使用しています。(ビュー・ビルダでは、ステートメント・ビルダはSelect文の節だけを表示します。)ビュー・ビルダは適切なSelect文を作成することでビューの定義を支援します。このツールは便利なのですが、不正なCreate View文(Order By節を含んだ文など)が作成されてしまうことがあるので注意してください。

データ定義ビューにはSQLストアード・プロシージャを作成するためのウィザードが用意されています。このウィザードはパラメータ宣言と変数宣言を生成し、内蔵している4つのテンプレートからサンプル文を挿入します。ストアード・プロシージャ・アンドUDFエディタ(基本的なソースコード・エディタ)を使用してストアード・プロシージャを完成させます。iSeries用DB2のUDFの作成や編集はできませんでしたが、UDFツールはWindowsデータベースのローカルのDB2 UDBでは問題なく動作しました。
完全なステートメント・ビルダを使用すると、Select文だけでなくInsert、Delete、Updateなどの文も構築することができます。文を作成したらiSeries接続で実行させることもできますし、ソースコードをストアード・プロシージャ・エディタ(またはLPEXエディタ)中にカット・アンド・ペーストすることもできます。

テーブル、ビュー、ストアード・プロシージャ定義を作成したら、適切なSQLのCreate文を生成して接続先のiSeries上で実行させることができます。これには数回のクリック操作が必要ですが、コツをつかめばすばやく行うことができるようになります。

まとめますと、現リリースのWDScデータベース・ツールは、ビュー、ストアード・プロシージャ、Select文、Insert文、Delete文、Update文を作成するのに便利です。特にステートメント・ビルダは、LPEXエディタでHLLソースコードを編集する際に、RPGへの組み込みSQLやCobolプログラムのコーディングに大変便利です。

iSeries Navigatorツール

WDScの代わり、あるいはこれを補完するツールとして、iSeries Navigatorのデータベース開発ツールを使用することができます。iSeries Navigatorは開発およびシステム管理の両方を目的としたものですが、本稿では開発用の部分だけについて説明します。もちろん、開発およびテストの段階で、テスト用のデータベースを管理する必要がありますので、iSeries Navigatorの管理機能のことも覚えておいてください。

iSeries Navigatorツールにアクセスするには、ナビゲーション・ツリーでiSeries接続を開いてデータベース・カテゴリを表示し、選択したデータベースを開きます(通常は各iSeriesにデータベースは1つだけですが、複数個ある場合もあります)。選択したライブラリまたはライブラリ中のオブジェクトに対してポップアップ・メニューを選択することでツールを起動します。また、Database Navigatorから起動できるツールも多数ありますが、これについては後述します。

ライブラリに対するポップアップ・メニューからはテーブル、ビュー、エイリアス、ジャーナル、ストアード・プロシージャ、UDF、UDTを新規に作成することができます。またこのポップアップ・メニューからSQLソースコード・ジェネレータを起動することもできます。これについては後述します。

データベース・オブジェクトを作成するためのさまざまなNew Xxxダイアログでは、iSeriesの機能用のDB2およびSQLのすべてとは言わないまでも、そのほとんどがサポートされています。たとえばNew Aliasダイアログでは、他のプラットフォームのDB2にはない機能であるデータベース・ファイル・メンバー仕様がサポートされています。iSeriesの包括的なサポートは、標準やiSeries固有のオプションを多数備えているオブジェクトを作成する際に特に有用です。たとえばNew Tableダイアログには、10文字システム名のようなiSeries用拡張などの、ページに関連するすべてのカラム属性用の状況依存ページがあります。iSeries Navigator New TableツールはWDScの同様の機能に比べて明らかに優れたものとなっています。

新しいオブジェクト・ダイアログはiSeriesをサポートするためのすばらしい機能を備えていますが、文法的に複雑な定義を行うことのできるSQLオブジェクト用のインタフェースは基本的なものしか提供していません。たとえば、New Viewダイアログには、ビューの定義の一部として複雑なSelect文を構築する際の支援機能がありません。同様に、New SQL ProcedureダイアログおよびNew SQL Functionダイアログはきわめて基本的な機能で、サンプルのSQL文を一覧表示して選択させる機能を提供しています。次に説明するSQL Assistツールは、文を構築する別の手段を提供していますが、基本的な文構造しかサポートしていません。

ライブラリに含まれているオブジェクト(ベース・テーブル、ビュー、索引など)用のポップアップ・メニューからは、そのオブジェクトの属性(オブジェクトの定義も含む)の表示、オブジェクトの削除、オブジェクトからのSQLソースコードの生成が可能です。ほとんどのデータベース・オブジェクト用の記述をそれに対応したPropertiesダイアログで修正することはできますが、他にできることはあまりありません。通常、オブジェクトの定義を変更するには、そのオブジェクトを削除して再作成する必要があります。

しかしベース・テーブル用のPropertiesダイアログでは、カラムを直接追加したり削除したりできます。この同じダイアログからそのテーブルに関連した制約、索引、トリガを表示、作成、削除することができます。(これらの項目を修正するには、一旦削除して再作成しなければなりません。)テーブルのトリガを有効化、無効化することもできます。

Generate SQLダイアログはライブラリや他のデータベース・オブジェクトのポップアップ・メニューから利用でき、これを使用すると1つまたは複数のデータベース・オブジェクトに対してSQLのCreate文など(他にもAlter文やDrop文など)を生成することができます。iSeries機能用のSQLと生成されたものをコントロールするための複数のオプションに対するさまざまなサポート機能があります。iSeriesのSQLを生成するのであればWDScの同様の機能よりもこちらの方が断然良い選択と言えます。(とはいえ、iSeries Navigatorの生成オプションは、マイクロソフト社がSQLサーバー製品に対して提供している同様のツール―こちらも使用してみたのですが―に比べるとかなり限定されたものとなっています。)またiSeries Navigatorツールは、DDSから作成された「レガシーの」物理ファイルおよび論理ファイル用のCreate文も生成します。

Run SQL Scriptsツールを使用すると、1つ以上のSQL文を構築して実行することができます。(このツールは、iSeries Navigatorツリー中のデータベースに対するポップアップ・メニューから、あるいはiSeries Navigatorウィンドウの下部にあるDatabaseタスク・ペインから起動してください。)Run SQL Scriptsダイアログ(図3)には、文の入力エリアと結果およびメッセージ表示エリアがあります。

文の作成の手始めとして、予め構築されている100あまりのサンプルから挿入することができます。あるいは、SQL Assistツール(図4)を使用して、Select文、Insert文、Update文、Delete文を構築することもできます。前述の通りSQL Assistはきわめて簡単な構造の文だけをサポートしており、ユーザー・インタフェースもどちらかというと貧弱です。私見では、Select文、Insert文、Update文、Delete文の作成については、WDScのSQLステートメント・ビルダの方がより優れたサポートを提供していると思います。

しかし、テストおよび性能チューニング用ワークベンチとしては、Run SQL Scriptsツールの方がはるかに機能が豊富です。SQL文を実行できるという以外に、ストアード・プロシージャを呼び出してパラメータの戻り値、結果セット、メッセージを確認することができます。また、文をデバッグ・モードで実行してオプティマイザのフィードバックを受け取り、Visual Explainツールを使用して文がどのように処理されたのか、その詳細を包括的に確認することもできます。データベースの開発には、開発中および運用開始後も性能評価とチューニングが常につきものです。Visual Explainツールはこの用途には大変有用なツールです。

最後に説明するツールはDatabase Navigatorです。このツールは選択したデータベース・オブジェクト間の関係のマップをグラフィック表示します。Database Navigatorを使用するには、まず「マップ」を作成します。このマップはデータベース・ファイルとしてiSeries上に格納されています。次にDatabase Navigatorウィンドウを使用してマップにオブジェクトを追加し、マップ中のオブジェクトに対して操作を実行します。この様子を図5に示します。オブジェクトのアイコンを右クリックすると、属性の表示、SQLの生成などといった、前述のiSeries Navigatorのメイン・インタフェースからも利用可能な操作がポップアップ・メニューで表示されます。ほとんどの操作に対して、Data Navigatorのデータベース表現を使用したいという開発者もいます。私自身としては、メインのツールとして使用するよりは、関連するオブジェクトの一時的な「作業セット」をすばやく定義するときに使用するのが最も有用であると思います。

その他の豊富な機能

IBMのさまざまなツールについてごく簡単に説明しました。是非ご自分でも納得のいくまで試してみて、ご自分の開発ニーズにとってどれが最も有用なのか判断なさってください。最後に1つアドバイスを。最初のうちはわかりづらく感じたり、やりたいことができないと思えたりしてもそのツールを見限ったりしないでください。その良さがわかるまでにしばらく時間がかかるツールもあるからです。慣れてしまったらお気に入りのツールになってしまったというツールも複数あります。さらに、LPEXエディタ、WDScデータビュー、iSeries Navigatorなどの複数のウィンドウ間で、SQLソースコードを「カット・アンド・ペースト」してコピーするといったローテクの技術も忘れないでください。

ポール・コンテ氏はベル・データ鰍フ業務提携先Penton Media, Inc. が発行しているiSeries NEWSのシニア・テクニカル・エディタです。同氏はオレゴン州ユージン市でトレーニングおよびコンサルティングを行っているPCES社の社長です。



↑このページのトップへ
TOPPAGE

BELLDATA, Inc. Copyright reserved.