# プラグインの開発と保存(チュートリアル)

本ページはQmonus SDKを使用しプラグインを初めて作成する人に向けて作成しております。開発の際の足がかりとしてお読みください。

目次



# 1. ワークスペースの作成

プラグインを作成する前に、前準備としてワークスペースを作成します。


# ワークスペースとは

Qmonus SDK における「ワークスペース」とは作成したプラグインなどを格納するディレクトリ、およびその作業空間を指します。
「プラグインディレクトリ」というディレクトリのパスを保持し、プラグインを編集する際に保存先を決定するといった役割を持ちます。※1


※1 「プラグインディレクトリ」など、Qmonsu SDKにおけるディレクトリの持つ役割については以下をご覧ください。

ディレクトリごとの役割について

Qmonus SDK ではプラグインの配置など、あらかじめ決められたディレクトリ構成に則り動作します。
本項ではチュートリアルの内容に関連する一部の役割を持ったディレクトリを抜粋し、下図を例に紹介します。

ディレクトリ構成例

[ユーザリポジトリ]
axis
├─ a_plugins
└─ senarios
└─ plugin_a.yml
└─ b_plugins
└─ senarios
├─ plugin_b1.yml
└─ plugin_b2.yml

  • axis
    リポジトリ配下に直接作成します。
    ディレクトリ名にこだわりがない場合は名称を変更しないでください。

    プラグイン基底ディレクトリ

    この axis ディレクトリは、Qmonus SDK にて「プラグイン基底ディレクトリ」と呼ばれています。
    作成済み、もしくはこれから作成するプラグインの配置箇所を定義すると共に、次項で説明する「プラグインディレクトリ」をまとめる役割を持ちます。 Qmonus SDK Labではユーザリポジトリのルートディレクトリにある axis ディレクトリをプラグイン基底ディレクトリとしてデフォルトで設定します。

    Qmonus SDK Lab のデフォルト設定 (プラグイン基底ディレクトリ)
    ユーザリポジトリ / axis

    プラグイン基底ディレクトリは Qmonus SDK から読み書き可能なディレクトリパスであればどこでも問題ありませんが、axis 以外の名前に変更する場合は起動パラメータを変更してください。


  • a_plugins
    プラグイン基底ディレクトリ配下に作成します。
    ディレクトリ名は自由に変更できます

    プラグインディレクトリ

    この a_plugins ディレクトリは、Qmonus SDK にて「プラグインディレクトリ」と呼ばれています。
    用途に応じてプラグイン分割したい場合や、環境に読み込むプラグインを限定させるといったことが可能です。次項で説明する「プラグインサービスディレクトリ」を格納するディレクトリになります。

    例えば「a」と「b」の2つのプラグイン群がある場合、それらを「a_plugins」と「b_plugins」としてプラグインディレクトリで分割し、用途に応じて管理するといったことが可能です。

    プラグインディレクトリの名称・配置例(赤字)

    axis
    ├─ a_pluguins
    └─ senarios
    └─ ( プラグイン1 )
    └─ b_pluguins
    └─ senarios
    ├─ ( プラグイン2 )
    └─ ( プラグイン3 )

    本チュートリアルにて作成するワークスペースはこの「プラグインディレクトリ」にあたるパスを保存することができ、プラグインの作成の際の保存先を簡単に指定することができるようになります。


  • scenarios
    プラグインディレクトリの配下に自動的に作成されます。
    ディレクトリ名は変更しないでください

    プラグインサービスディレクトリ

    この scenarios ディレクトリは、Qmonus SDK にて「プラグインサービスディレクトリ」と呼ばれるものの一つです。

    拡張子 .yml .yaml .json の、プラグインとして作成されたファイルを格納する役割を持ち、作成されたリソースごとに決められた名前のディレクトリが自動的に作成されます。

    プラグインサービスディレクトリはディレクトリ名により認識しているため、名称を変更しないでください

    このディレクトリ名はQmonus SDKの各種メタマイクロサービスの名称で予約されており、決まったディレクトリ名のみを該当のメタマイクロサービスのプラグインが格納されているディレクトリと認識しています。

さらに詳しい仕様を知りたい方はQmonus SDK ProgrammingGuide > FAQ > Q1. プラグイン配置 (opens new window)をご覧ください。



# ワークスペースの作成手順

本手順によりワークスペースプラグインディレクトリを作成します。

  1. 上部メニューのAdmin Areaアイコンから「Warkspace」を選択します。

  2. 右上の「+」アイコンを選択します。

  3. ワークスペースのnameとpathを記入します。
    赤文字で記載されている「user-repository」は名前を変更する必要があります。環境に設定したリポジトリの名前に置き換えてください。

    項番 項目 記入例 説明
    1 name a_pluguins ワークスペースの名前を入力します。
    2 path /var/plugins/user-repository/axis/a_plugins プラグインの保存先として使用するプラグインディレクトリのパスを入力します。
    「user-repository」は名前を置き換えてください。


  4. 一覧に追加されていれば完了となります。

操作内容

本操作により以下の赤文字で記載されたディレクトリが開発環境内の/var/plugins/配下に作成されます。

[開発環境内]

/ var / plugins / user-repository
└─ axis
└─ a_plugins

# 2. プラグインの作成

本項では Hello, world!メッセージを応答するだけのAPIを作成し、開発環境内に保存するまでの流れを紹介します。

# HelloWorld.yml の作成

  1. 上部メニューのScenario as a Serviceアイコンから「Scenario」を選択します。

  2. 一覧が表示されている右上の三本線のアイコンを選択し、「Create New Scenario」を選択します。

  3. 設定値を入力します。

    項番 項目 記入例 説明
    1 category Tutorial シナリオのカテゴリを決定します。
    この情報はシナリオエディタでの階層表示のためのタグとしてのみ使用されます。
    2 workspace a_plugins シナリオのワークスペースを指定します。
    3 name HelloWorld シナリオの名前を決定します。
    他のシナリオと重複しない名前である必要があります。
    4 method GET APIとして待機するHTTPメソッドを指定します。
    5 uri /tutorials/hello APIとして待機するHTTPパスを指定します。
    6 transaction 未選択 トランザクションサービスと連携します。今回は利用しません。
    7 routing_auto_generation_mode 選択 API Gatewayにルーティングを自動作成するかを選択します。
  4. 一覧に赤い名前で追加されます。そのまま左下の「Scenario」を展開し、「script」を選択してください。

  5. 画面中央にscriptコマンドブロックが追加されます。右の欄に表示される Python code 記入欄を記入例にそって入力してください。

    記入例

    context.session.finish({"message": "Hello, world!"})
    
    
    1
    2
  6. 画面中央の「Save Scenario」を選択することで開発環境内に一時的に保存することができます。
    保存されると一覧画面に表示される文字が赤文字から白文字に変わります。

# 動作確認

作成したAPIを呼びだし確認します。呼び出し方法はいくつかありますが、ここではシナリオの[Try API Call]メニューから実行します。

  1. 画面中央の「Try API Call」を選択します。
  2. 画面右下の「Execute Debug」選択します。
  3. APIが実行され結果が表示されます。
    画面下にスクロールすると「{"message": "Hello, world!"}」が正しく返却されていることが確認できます。

操作内容

本操作により以下の赤文字で記載されたディレクトリ、ファイルが開発環境内に作成されます。
自動で作成される「senarios」についてはプラグインを読み込む際に必要となりますので名前の変更や削除は行わないでください。

[開発環境内]

/ var / plugins / user-repository
└─ axis
└─ a_plugins
└─ senarios
└─ HelloWorld.yml

# 3. Gitリポジトリへの保存

  1. 上部メニューのDashboard as a Service アイコンから「Code Editer」を選択します。

  2. 右側のターミナルで 2-1. 以降で紹介するコマンドを実行してください。

    2-1. ローカルGitリポジトリへ移動
    $ cd /var/plugins/user-repository
    ※「user-repository」は使用しているリポジトリ名に変更してください

    2-2. 変更があったファイルの確認
    $ git status -u

    2-3. 「HelloWorld.yml」をコミット対象に追加
    $ git add ./axis/a_plugins/scenarios/HelloWorld.yml

    2-4. コミット対象になったファイルの確認
    $ git status -u

    2-5. コミットの実行
    $ git commit -m "first commit on Qmonus-SDK"

    2-6. リモートリポジトリへ反映
    $ git push

  3. 登録したリポジトリに反映されていることを確認してください。




# 環境操作マニュアル

このチュートリアルは以下のドキュメントの「4.API開発チュートリアル」にある「Hello, world!」を参考にご紹介いたしました。
詳細な使い方やさらに発展した操作を行うチュートリアルを知りたい方は以下のドキュメントをご覧ください。