試験的: ZAPP ファイルを使用したアプリケーションの構成

ZAPP (Z アプリケーション) ファイルは Visual Studio Code から独立しており、開発者やそのチームが IBM Z® Open Editor で編集用にアプリケーション・コードを構成する方法を単純化する新しい試験的な手法として、このファイルが使用されます。 プロパティグループの設定でご覧になっているように、エンタープライズ・アプリケーションの構造を記述することに重点を置いているにもかかわらず、プロパティー・グループなどの構成設定は、 VS コード・ユーザーまたはワークスペース設定のいずれかとして入力する必要がありました。 実質的には、これらの構成設定は VS Code エディターから実際には独立しています。 つまり、プロパティー・グループを VS Code 外で再利用でき、他のエディターや IDE と併用できることに加えて、プログラムや他の類似のユース・ケースを構築するコマンド・ライン操作も可能です。

そのため、YAML ファイルや JSON ファイルなど、ソース・コードを使用して管理できる独立した表記でアプリケーションを記述し、将来さまざまなエディターやコマンド・ライン・ツールで読み取ることができる、ZAPP ファイルの新しい概念が作り出されました。 ZAPPファイルは、Java™のMaven POM(プロジェクトオブジェクトモデル)やNode.jsのpackage.jsonファイルのように、z/OS®エンタープライズアプリケーションに役立つものになることが期待されています。

この初期バージョンのZAPPは、いくつかのZ Open Editorのユースケースにしか対応していませんが、ユーザーコミュニティからのフィードバックにより、仕様項目の追加、ツールのサポート、コマンドラインインターフェイスの追加など、時間をかけて進化させることができるものと期待しています。 さらに、特定の時点で拡張 API とオープン仕様を提供し、他のユーザーもこれらを使用して ZAPP に寄与できるようにしたいと考えています。

ZAPP ユース・ケース

このZAPPの初期バージョンは、いくつかのアイデアに第一印象を与え、フィードバックを収集することを目的としています。 現在 ZAPP ファイルを使用して以下の構成を指定できます。

  • ローカルまたはリモート組み込みファイルを検索するためのプロパティー・グループ は、セクション プロパティグループの設定で説明されている設定の完全な代替手段を提供します。

  • IBM®言語サーバーがソースコードをどのように解釈するかに影響を与える言語固有のコンパイラー・オプションを定義するためのプロパティ・グループです。

  • RSE API用コードページマッピングは、ファイル名パターンとMVSへのアップロードおよびMVSからのダウンロード方法とのマッピングを定義するもので、MVS EBCDICコードページおよびマッピングファイルのセクションで完全に文書化されています。

  • Z Open Editorで編集中のプログラムをIBM Dependency Based Buildの提供によりリモートでビルドするためのユーザービルドです。 (この機能に関する詳細なドキュメントは、IBM Knowledge Centerでご覧いただけます)。

ZAPP ファイルの概要

開発ワークスペースにZAPPファイルを作成します。このディレクトリは、gitを使用している場合は通常.gitディレクトリを含むトップレベルのディレクトリであり、VSコードで**file > Open...**で開くトップレベルのディレクトリでもあります。 このディレクトリーには通常、ワークスペース設定を保管できる .vscode ディレクトリーも含まれています。以前このディレクトリーは、プロパティー・グループとユーザー・ビルド設定のホームでもありましたが、現在は代わりに ZAPP ファイル内に保管できます。

注:この現行バージョンの ZAPP では、単一ルートのVSコードとEclipse Che/Red Hat CodeReadyワークスペースワークスペースのみがサポートされています。

ZAPP ファイルを YAML ファイルとして編集するか JSON ファイルとして編集するかを選択でき、最上位ディレクトリー内に以下のどちらの名前を使用して作成するかを選択できます。 使用されているスキーマを YAML エディターや JSON エディターが認識できるように、以下のとおりに正確にこのファイルの名前を付ける必要があります。

  • zapp.yaml

  • zapp.json

推奨される形式である YAMLを使用することにした場合は、 レッドハット YAML VS コード拡張機能をインストールすることをお勧めします。 この VS Code 拡張機能は、ZAPP で役立つコード補完、資料、フォーマット設定機能を提供します。 Z Open Editor は、Red Hat YAML 拡張機能のインストール済み環境を自動的に認識し、VS Code のユーザー設定内でこの拡張機能用に ZAPP スキーマを構成できます。 また、YAML 形式の ZAPP に関するコード・スニペットがサポートされているので、いち早く生産性を高められます。

JSON を使用する場合、デフォルトの VS Code JSON エディターもコード補完とフォーマット設定は提供しますが、現在スニペットは提供していません。

Z Open Editor が Red Hat YAML 拡張機能または VS Code JSON と連動するように自動構成されていることを確認するには、VS Code のユーザー設定内で以下の項目を見つけてください。 これらの項目は Z Open Editor の始動後に追加されるはずです。

"yaml.schemas": {
  "file:///Users/user1/.vscode/extensions/ibm.zopeneditor-1.1.0/resources/zapp-schema-0.0.1.json": [
    "zapp.yaml"
  ]
},
"json.schemas": [
  {
    "fileMatch": [
      "/zapp.json"
    ],
    "url": "file:///Users/user1/.vscode/extensions/ibm.zopeneditor-1.1.0/resources/zapp-schema-0.0.1.json"
  }
]

これで、最初の ZAPP ファイルを作成する準備ができました。

構成設定セットの優先順位

:これは実験的な新機能であるため、ユーザーおよびワークスペースの設定で ZAPP ファイルの内容を指定する前の方法は依然として有効であり、以前のバージョンの Z Open Editor で作成したすべての設定を引き続き使用することができます。 しかし、さまざまな場所の設定をミックス・アンド・マッチすることはできません。

Z Open Editor では、以下の順序でプロパティー・グループとユーザー・ビルドの設定が検索され、最初に検出されたセットのみが使用されます。

  1. ワークスペース・ディレクトリー内の zapp.yamlです。

  2. ワークスペース・ディレクトリー内の zapp.jsonです。

  3. ワークスペース・ディレクトリーにある .vscode/settings.json 。これは、「設定」メニューを使用して入力する VS コード・ワークスペース設定です。

  4. 「環境設定」メニューを使用して入力するユーザー設定。これは、ご使用のオペレーティング・システムに応じて、 異なるユーザー固有のロケーション に保管されます。

ZAPP ファイルの例

次の場所にあるサンプルの GitHub リポジトリーを複製して、ZAPP の利用を開始することができます。

https://github.com/IBM/zopeneditor-sample.

すべてのバリエーションを試して最適解を判別できるように、このリポジトリーには以下の設定ファイルが含まれています。

  • zapp.yamlファイル

  • zapp.jsonファイル

  • 既存のワークスペース設定

:前のセクションに記載されている 優先順位ルール に従って、 zapp.json ファイルを試す必要がある場合は、最初に zapp.yaml ファイルを削除するか、名前を変更する必要があります。

zapp.yaml フファイルには、以下の内容が記述されています。

name: sam
description: Wazi's code samples with COBOL, PL/I, and HLASM applications
version: 1.1.0
author:
  name: IBM CORPORATION

property-groups:
  - name: cobol-local
    language: cobol
    type: local
    syslib:
      - "**/COPYBOOK"
    libraries:
      - name: MYFILE
        locations:
          - "**/COPYLIB"
  - name: pl1-local
    language: pl1
    compilerOptions: not(!)
    type: local
    syslib:
      - "**/INCLUDES"
  - name: hlasm-local
    language: hlasm
    type: local
    syslib:
      - "**/ASMCOPY"
  - name: zowe-mvs
    type: mvs
    system: zos1000.example.com
    syslib:
      - USER1.SAMPLE.COBCOPY
    libraries:
      - name: MYLIB
        locations:
          - USER1.SAMPLE.COPY

このシンプルな例では、4 つのプロパティー・グループが定義されています。 最初の3つはlocalタイプで、各言語のzopeneditor-sampleプロジェクトのインクルードファイルの場所を定義しています。 各プロパティー・グループに定義されているプロパティーのスペルは、 ワークスペース/ユーザー設定のためのドキュメントとまったく同じであり、完全性を表すためにプロパティグループ参照ページにリストされています。

ここでの違いは、これらのプロパティー・グループがエディター設定に混在しなくなったため、YAML でより効率的に編集できるようになったことです。

コード補完を使用した zapp.yaml ファイルの編集

コード補完では、Red Hat VS Code YAML 拡張機能がインストールされており、前述のように構成されている必要があります。 以下のように試すことができます。

  1. type: mvsのある行の後ろにカーソルを置き(34行目あたり)、Enterキーを押して新しい行を開始します。

  2. Ctrl +Space キーを押して、コード補完のドロップダウンを開きます。

ここには、まだここに追加できる 2 つのプロパティー ( 言語 および compilerOptions) が表示されます。これらのプロパティーは、このリモート mvs プロパティー・グループではまだ指定されていません。

プロパティー・グループのコード・スニペットを使用した zapp.yaml ファイルの編集

ZAPP は、以下のように素早く新しいプロパティー・グループを入力できるように、コード・スニペットも提供しています。

  1. ファイルの最後にある空の行にカーソルを置きます。

  2. Ctrl +Space を再度押すと、ドロップダウン内で 4 つのコード・スニペットがリストされます。

  3. 下に移動して、Enterキーを押して、ZAPPリモートMVSのプロパティグループを選択します。

  4. 新しいプロパティー・グループが挿入され、プレースホルダーが強調表示されます。

  5. その他のグループをクリックしたり入力したりする前に、プレースホルダーがまだ強調表示されている間に、Tab キーと Shift+Tab キーを使用してプレースホルダー間をナビゲートし、名前、言語 (別のドロップダウンを使用)、syslib 項目の値を入力します。

  6. 新しいプロパティグループの最後に、新しい行を追加し、- USER1.SAMPLE.INCLUDESのような新しい値を入力して、別のsyslibエントリを追加します。

有効な YAML ファイルを提供する必要があることに留意してください。 syslibのエントリではJSONの文字列配列が必要でしたが、YAMLでは各値に-使った順序付きリストとして入力する必要があります。

完全な ZAPP ファイル用のコード・スニペット・テンプレートもあります。 以下のように試すことができます。

  1. zapp.yamlの現行エディター・ウィンドウで、「すべて選択」を実行し、ファイルの内容をすべて削除します。 ファイルは Git で管理されるので、後で削除を撤回できます。

  2. 空のドキュメントの最初の行と列で、 Ctrl+Space キーを押しながら、 ZAPP Template スニペットを選択します。 下部までスクロールする代わりに、このスニペット名を入力できます。

  3. ローカルとリモートのプロパティー・グループが含まれるスニペットが挿入されました。 続いて、必要に応じて変更できます。

Ctrl+Space を使用する以外に、以下の手順に従って、アクセス可能な VS Code のスニペット・ギャラリーからスニペットを挿入することもできます。

  1. Cmd+Shift+P (Mac) または Ctrl+Shift+P (Windows) を押します。

  2. ドロップダウンからスニペットの挿入を選択します。 スニペットを入力して、リストを絞り込むことができます。

構文エラーの検討

無効な YAML プロパティー名または誤ったスペルのプロパティー名を入力して無効な zapp.yaml ファイルを作成すると、 Red Hat YAML 拡張 によって「問題」ビューに構文エラーが表示されます。 以下のように試すことができます。

  1. 任意のプロパティーから 2、3 文字を削除して、誤ったスペルにします。

  2. VS Code の問題ビューに切り替えます。 表示されない場合は、表示 > 問題表示メニューを使用します。 この時点で、このビューには発生した構文エラーと、このエラーが発生した行と列が表示されます。

Red Hat YAML 拡張機能がインストールされていない場合でも、以下のようにして Z Open Editor で提供される単純なエラー・リストを出力ビューに表示できます。

  1. 出力ビューに切り替えます。 表示されない場合は、表示 > 出力表示のメニューを使用します。

  2. 「出力」表示の右側で、ドロップダウンから IBM Z Open Editor を選択します。

  3. 構文エラーをいくつか作成します。 Red Hat の拡張機能ではエラーが即時に表示されるのに対して、この場合は保存を試行するまでエラーが表示されないことに注意してください。

  4. 構文エラーのあるファイルを保存します。 これで、出力表示にshould NOT have additional properties(additionalProperty:lauage)などなどのエラーメッセージが表示されるようになります

表示されているように、この場合の出力の方がはるかに単純で、行番号がありません。 Red Hat 拡張機能は、アウトライン表示を生成する完全な YAML 言語サーバーが含まれているので、ZAPP ファイルを編集するソリューションとしてはるかに優れています。

zapp.yaml ファイルのフォーマット設定

Red Hat YAML 拡張機能には、ZAPP ファイルの一貫したフォーマット設定を行う別の機能があります。 あちこちで異なる字下げを使用した場合は、以下の 2 つのフォーマット設定の方法のいずれかを使用するだけで、ファイル全体のフォーマットを訂正できます。

  • ショートカット Shift+Option+F (Mac) または Shift+Alt+F (Windows) を使用します。

  • Cmd+Shift+P (Mac) または Ctrl+Shift+P (Windows) を押し、 文書のフォーマットを選択するには「フォーマット」を入力します。

既存のプロパティー・グループの ZAPP ファイルへの変換

旧バージョンの Z Open Editor とプロパティー・グループを併用しており、これらのプロパティー・グループを ZAPP に変換しようとしている場合は、1 つか 2 つの単純な手順で変換できます。

  1. プロパティー・グループを zapp.json ファイルにコピーします。

  2. (オプション) zapp.jsonzapp.yamlに変換します。

詳細な手順を以下に示します。

  1. 空のオブジェクト { }を持つ空の zapp.json ファイルを作成します。

  2. JSON ファイルのコード補完を使用して、名前、バージョン、作成者などの必須プロパティーとオプション・プロパティーを入力します。

  3. 以前にプロパティー・グループを保管していた VS Code のワークスペースまたはユーザーの設定ファイルを開きます。

  4. 設定ファイルからプロパティー・グループ項目全体を切り取り、それを zapp.jsonのオブジェクトの中に貼り付けます。 結果は、以下の JSON オブジェクトのようになります。

    {
      "name": "sam",
      "zopeneditor.propertygroups": [
        {
          "name": "SAM-Copybooks",
          "type": "local",
          "syslib": ["**/COPYBOOK", "**/INCLUDES", "**/ASMCOPY"]
        }
      ]
    }
  5. "zopeneditor.propertygroups"" プロパティー・グループ"に変更する。

  6. Shift+Option+F (Mac) または Shift+Alt+F (Windows) を押して、ファイルをフォーマット設定します。

  7. インクルード・ファイルが解決されるかどうかをテストします。

この結果のファイルは以下のようになります。

{
  "name": "sam",
  "property-groups": [
    {
      "name": "SAM-Copybooks",
      "type": "local",
      "syslib": ["**/COPYBOOK", "**/INCLUDES", "**/ASMCOPY"]
    }
  ]
}

以下のようにして、別のサード・パーティー VS コード拡張を使用して、有効な zapp.json ファイルを zapp.yaml ファイルに容易に変換できます。

  1. そのような変換を実行できる VS コード拡張機能をインストールします。例えば、YAML+JSONなどです。

  2. この拡張機能により、zapp.json ファイルを右クリックして、 YAMLに変換するを選択できるようになりました。

  3. 結果のファイルを zapp.yml から zapp.yamlに名前変更します。

  4. プロパティー・グループが正しく解決されるかどうかをテストします。