20200406のNode.jsに関する記事は5件です。

【node.js】bookshelfとknexを使ってCRUD操作

expressを使ったbookshelfの操作方法について書かれております。

Bookshelfとは

SQLを使わずデータベースを使うことができるORM

Bookshelfは、 Knex SQLクエリビルダー上に構築されたNode.js用のJavaScript ORMです。 Promiseベースのコールバックインターフェイスと従来のコールバックインターフェイスの両方、トランザクションサポート、eager / nested-eagerリレーションのロード、ポリモーフィックな関連付け、1対1、1対多、および多対多のリレーションのサポートを備えています。
PostgreSQL、MySQL、SQLite3で動作するように設計されています。

knexとは

Bookshelfは、内部で「クエリービルダー」と呼ばれるknexモジュールを利用しています。ですから、インストールの際には、まずknexを入れておく必要があります。

良く分からないけど、Bookshelfを使う際にはついてくる物らしい。。。

モジュールのインストール

npm install --save knex
npm install --save bookshelf

Bookshelfの初期設定

var knex = require('knex')({
    client: 'mysql',
    connection: {
        host    : '127.0.0.1',
        user    : 'root',
        password: '',
        database: 'データベース名',
        charset : 'utf8'
    }
});

var Bookshelf = require('bookshelf')(knex);

var Mydata = Bookshelf.Model.extend({
    tableName: 'Mydata(テーブル名)'
});

上記のコードで行っている事は、
knexのロード、
knexの初期設定、
Bookshelfのロード、
モデルの作成

モデルとは?

テーブルにアクセスするオブジェクトです。
これを使って、テーブルのデータをCRUD操作します。

モデルの項目追加

hasTimestamps:true タイムスタンプのデータをレコードに追加する
user: function() {return this.belongsTo(テーブル名) 他のテーブルの値を取得可能にする

これでBookshelfの初期設定は完了しました。
いよいよ、CRUD操作をしていきます。

Bookshelfのメソッド

Bookshelfで操作する際に使用するメソッドです。使いながら覚えていきましょう。

fetchAll 全てのレコードを取得する物
then データベースアクセス完了後の処理をコールバック関数として設定します。
catch thenを実行した時にエラーが発生した時の処理です。
save オブジェクトの引数をテーブルに保存する処理をします。
where 検索する対象に条件を設定して絞り込む
fetch 最初の一つだけレコードを取り出す。
fetchPage 得られたページ番号を元にレコードを取り出します。
orderBy レコードを並べ変える。
query 複数項目をチェックすする

レコードを取り出す

全レコードを取り出す

new Mydata().fetchAll().then((collection) => {
  -----取得できた場合の処理-----
}).catch((err) => {
  -----エラー発生時の処理-----
});

レコードを保存する

新しいレコードの追加をしていきます。

router.post('/add', (req, res, next) => {
  new Mydata(req.body).save().then((model) => {
    ー追加した後の操作ー
  });
});

検索

router.post('/', (req, res, next) => {
  nex Mydata().where('id', '=', req.body.fstr).fetch().then((collection) => {
    取得後の操作
  }
}

レコードを並べかえる

router.get('/:page', (req, res, next) => {
  nex Message().orderBy('created_at', 'DESC').fetchAll().then((collection) => {
    取得後の操作
  });
})

orderByについて

第一引数にフィールド名、第二引数には「ABC」「DESC」の何かを指定します。
(DESCなら降順、ABCなら逆順)

複数項目をチェックする

router.post('/', (req, res, next) => {
  var nm = req.body.name;
  var pw = req.body.password;
  Mydata.query({where: {name: nm}, andWhere: {password: pw}})
    .fetch()
    .then((model) => {
      取得後の操作
    }
}

関数query()に関して

where:{name: nm} nameの値が変数nmである
andWhere:{password: pw} それに加えて、passwordの値が変数pwである

ページネーション

Bookshelfを使う事で、ページネーションも使えるようになります。

router.get('/:page', (req, res, next) => {
  var pg = req.params.page;
  pg *= 1;
  if(pg < 1){pg = 1; }
  new MyData().fetchPage({page:pg, pageSize:3}).then((collection) => {
    取得した後の操作
  })
  .catch((err) => {
    エラーを取得した後の操作
  }
}

関数.fetchPageに関して

page 現在のページ番号
pageCount ページ数(最後のページのページ番号)
pageSize 1ページ辺りのレコード数
rawCount レコードの総数

参考

node.js超入門第2版

Bookshelfとは
https://bookshelfjs.org/

paginationプラグイン
https://github.com/bookshelf/bookshelf/wiki/Plugin:-Pagination

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Azure QnA Makerを使ってローカルで動くQ&A ChatBotを作ってみた

前提

  • ローカルにNode.js環境があること(ない人はNode.jsをインストールしておいてください)

概要

QnA Makerとは、公式に下記のように定義されています。

データに自然な会話レイヤーを簡単に作成するクラウドベースの自然言語処理 (NLP) サービスです。 これは、特定の自然言語入力に対して、カスタム ナレッジ ベース (KB) の情報から最も適切な回答を見つけるのに使用できます。

要は、Q&Aを事前に登録しておくと、ユーザーの質問に対してAPIコールによりベストな回答を選んで返してくれるというものです。日本語に対応しているのでQ&A Chatbotを作成することに適しています。

この記事では、Azure QnA Makerを使ってローカルで動くChatBotを作成し、Emulatorを使って実際にBotと会話することをゴールとしています。
chatbot.png

以下の手順でローカルにBotを構築していきます。この回でコーディングは特にしませんが、Botアプリで利用する言語はNode.jsです。

  • 1. QnA Maker ServiceとKnowledge baseの構築
  • 2. ローカルでBotアプリを構築
  • 3. Bot Framework EmulatorをインストールしてBotに接続
  • 4. リソースの後片付け(お金がかからないように)

下記についてはこの記事で説明しないのでご注意ください。

  • Botアプリのロジックについて
  • 生成されるAzureリソースの役割について

1. QnA Maker ServiceとKnowledge base(KB)の構築

QnA Portalにログインして、「Create a Knowledge base」を押下。
基本は、遷移先のページに書いてあるSTEP通りに進めていきます。
create-kb-overview.png
※画面は見切れてるけどSTEP4まであるよ。

STEP1 Create a QnA service in Microsoft Azure.

「Create a QnA service」を押下すると、AzureのQnA Maker作成画面に遷移します。そこで下記のように入力し、作成をクリック。
価格レベルはF0とFを選択すれば無料になります。僕の場合は無料枠を既に使ってしまったので、S0とBを選択しました。
とはいえお金がかかるのは嫌なので、このチュートリアル後にすぐに消そうと思います。記事の後半でそのことに触れているのでお金かかる怖いやりたくないって思う人も不安がらなくて大丈夫です。

無料の場合↓
create-qna-service-for-free.png

ちょっとお金かかるよって場合↓
create-qna-service-for-fee.png

しばらくすると、「デプロイが完了しました」と画面に表示されます。先ほど指定したリソースグループをみると下記のようにいくつかのリソースが作られていることが分かります。成功です。
azure-resources.png

STEP2 Connect your QnA service to your KB.

QnA Portalに戻って「Refresh」すると、Azure QnA Service欄で先ほど作ったリソースが選べるようになります。
日本語のQnAを作りたいのでLanguageはJapaneseにします。
connect-to-kb.png

STEP3 Name your KB.

ここはなんでもいいです。好きな名前をつけてください。
name-kb.png

STEP4 Populate your KB.

KBにQnAを登録します。QnAが記載されたページのURLを指定してもいいんですが、実用的な側面を考えて今回はTSVファイルを指定することにします。使うTSVファイルは手抜きですがこんな感じでいきます。
kb-data-tsv.png
「+ Add file」を押下し、作成したTSVファイルを指定しましょう。
Chit-chatはなくてもいいですが、愛着のあるBotを作成したいのでひとまずFriendlyを選択します。
populate-kb.png

STEP5 Create your KB

「Create your KB」を押下してKBを作成しましょう。完了すると、今回作成されたKnowledge baseのEDIT画面に遷移します。
先ほど作成したTSVファイルの内容と、Chit-chatで指定したFriendlyなQnAが登録されているのが分かります。
kb.png

右上の「Save and train」を押下して学習を行い、「Publish」タブの「Publish」を押下してエンドポイントを発行します。エンドポイントは後程使います(SETTINGタブからいつでも見れるので、画面をそのままにしておく必要はありません)。
KBの構築は以上になります。

2. ローカルでBotアプリを構築

ソースコードはSampleとして提供されているものを使用します(1から書くとめちゃくちゃ大変)。

1. BotBuilder-Samplesリポジトリをクローン

実際に利用するソースはQnAの呼び出しまで提供してくれている下記のSampleになります。
https://github.com/microsoft/BotBuilder-Samples/tree/master/samples/javascript_nodejs/11.qnamaker

2. KBへの接続情報を記述

QnA Maker Portal画面を開き、作ったKBのSETTINGタブの「Deployment details」を参照しながら、.envファイルに下記のように記述します。

MicrosoftAppId=
MicrosoftAppPassword=
QnAKnowledgebaseId=[POST /knowledgebases/{この部分}/generateAnswer]
QnAEndpointKey=[Authorization: EndpointKey {この部分}]
QnAEndpointHostName=[Host: {この部分}]

3. パッケージのインストール

TerminalやCMDなどで11.qnamakerディレクリに移動し、npm installコマンドを実行します。

4. Botの起動

続いてnpm startでBotを起動します。

3. Bot Framework EmulatorをインストールしてBotに接続

このページからご自身の環境に合わせたAssetsをダウンロードし、インストールします。
Bot Framework Emulatorとは、主にローカルでチャットクライアントとして動作するテスト用のデスクトップアプリ(ツール)です。
Emulatorを立ち上げると、Visual Studio Codeを触っている人には見慣れた画面が現れます。Microsoft製品なので当然ですが。
bot-framework-emulator.png

「Open Bot」を押下し、Bot URLにhttp://localhost:3978/api/messagesと入力して「Connect」をクリックすると、EmulatorからローカルのBotにアクセスできるようになります。
connect-to-bot.png

試しに「Qiitaとは」などとBotに話しかけてみましょう。期待通りに返してくれるはずです。
また、「こんにちは」などと話しかけると、Friendlyに応答してくれます。
chatbot.png

4. リソースの後片付け(お金がかからないように)

無料枠で構築した人は特にお金はかからないのでそのまま放置しても大丈夫です。

Azureのリソースグループ画面へ移動し、今回構築したすべてのリソースにチェックをつけ、削除ボタンを押します。
確認のための質問がありますが「はい」を入力して削除してしまいましょう。
resource-group.png

おわりに

AzureのQnA Makerを使ってかなり簡単に機械学習を用いたQ&A Chatbotを作ることができました。
KBにいろいろなQnAを登録することで、いい感じに表記ゆれを吸収し、目的の回答を得ることができるので是非試してみてください。

ただ正直Microsoftのドキュメントが分かりにくい…
なのでこのような記事を書きましたが、もっとQiitaにChatbot系の記事が増えると嬉しい限りです。

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Azure QnA Makerを使ってローカルで動くChatBotを作ってみた

前提

  • ローカルにNode.js環境があること(ない人はNode.jsをインストールしておいてください)

概要

Azure QnA Makerを使ってローカルで動くChatBotを作成し、Emulatorを使って実際にBotと会話することをゴールとしています。
chatbot.png

以下の手順でローカルにBotを構築していきます。この回でコーディングは特にしませんが、Botアプリで利用する言語はNode.jsです。

  • 1. QnA Maker ServiceとKnowledge baseの構築
  • 2. ローカルでBotアプリを構築
  • 3. Bot Framework EmulatorをインストールしてBotに接続
  • 4. リソースの後片付け(お金がかからないように)

下記についてはこの記事で説明しないのでご注意ください。

  • Botアプリのロジックについて
  • 生成されるAzureリソースの役割について

1. QnA Maker ServiceとKnowledge base(KB)の構築

QnA Portalにログインして、「Create a Knowledge base」を押下。
基本は、遷移先のページに書いてあるSTEP通りに進めていきます。
create-kb-overview.png
※画面は見切れてるけどSTEP4まであるよ。

STEP1 Create a QnA service in Microsoft Azure.

「Create a QnA service」を押下すると、AzureのQnA Maker作成画面に遷移します。そこで下記のように入力し、作成をクリック。
価格レベルはF0とFを選択すれば無料になります。僕の場合は無料枠を既に使ってしまったので、S0とBを選択しました。
とはいえお金がかかるのは嫌なので、このチュートリアル後にすぐに消そうと思います。記事の後半でそのことに触れているのでお金かかる怖いやりたくないって思う人も不安がらなくて大丈夫です。

無料の場合↓
create-qna-service-for-free.png

ちょっとお金かかるよって場合↓
create-qna-service-for-fee.png

しばらくすると、「デプロイが完了しました」と画面に表示されます。先ほど指定したリソースグループをみると下記のようにいくつかのリソースが作られていることが分かります。成功です。
azure-resources.png

STEP2 Connect your QnA service to your KB.

QnA Portalに戻って「Refresh」すると、Azure QnA Service欄で先ほど作ったリソースが選べるようになります。
日本語のQnAを作りたいのでLanguageはJapaneseにします。
connect-to-kb.png

STEP3 Name your KB.

ここはなんでもいいです。好きな名前をつけてください。
name-kb.png

STEP4 Populate your KB.

KBにQnAを登録します。QnAが記載されたページのURLを指定してもいいんですが、実用的な側面を考えて今回はTSVファイルを指定することにします。使うTSVファイルは手抜きですがこんな感じでいきます。
kb-data-tsv.png
「+ Add file」を押下し、作成したTSVファイルを指定しましょう。
Chit-chatはなくてもいいですが、愛着のあるBotを作成したいのでひとまずFriendlyを選択します。
populate-kb.png

STEP5 Create your KB

「Create your KB」を押下してKBを作成しましょう。完了すると、今回作成されたKnowledge baseのEDIT画面に遷移します。
先ほど作成したTSVファイルの内容と、Chit-chatで指定したFriendlyなQnAが登録されているのが分かります。
kb.png

右上の「Save and train」を押下して学習を行い、「Publish」タブの「Publish」を押下してエンドポイントを発行します。エンドポイントは後程使います(SETTINGタブからいつでも見れるので、画面をそのままにしておく必要はありません)。
KBの構築は以上になります。

2. ローカルでBotアプリを構築

ソースコードはSampleとして提供されているものを使用します(1から書くとめちゃくちゃ大変)。

1. BotBuilder-Samplesリポジトリをクローン

実際に利用するソースはQnAの呼び出しまで提供してくれている下記のSampleになります。
https://github.com/microsoft/BotBuilder-Samples/tree/master/samples/javascript_nodejs/11.qnamaker

2. KBへの接続情報を記述

QnA Maker Portal画面を開き、作ったKBのSETTINGタブの「Deployment details」を参照しながら、.envファイルに下記のように記述します。

MicrosoftAppId=
MicrosoftAppPassword=
QnAKnowledgebaseId=[POST /knowledgebases/{この部分}/generateAnswer]
QnAEndpointKey=[Authorization: EndpointKey {この部分}]
QnAEndpointHostName=[Host: {この部分}]

3. パッケージのインストール

TerminalやCMDなどで11.qnamakerディレクリに移動し、npm installコマンドを実行します。

4. Botの起動

続いてnpm startでBotを起動します。

3. Bot Framework EmulatorをインストールしてBotに接続

このページからご自身の環境に合わせたAssetsをダウンロードし、インストールします。
Bot Framework Emulatorとは、主にローカルでチャットクライアントとして動作するテスト用のデスクトップアプリ(ツール)です。
Emulatorを立ち上げると、Visual Studio Codeを触っている人には見慣れた画面が現れます。Microsoft製品なので当然ですが。
bot-framework-emulator.png

「Open Bot」を押下し、Bot URLにhttp://localhost:3978/api/messagesと入力して「Connect」をクリックすると、EmulatorからローカルのBotにアクセスできるようになります。
connect-to-bot.png

試しに「Qiitaとは」などとBotに話しかけてみましょう。期待通りに返してくれるはずです。
また、「こんにちは」などと話しかけると、Friendlyに応答してくれます。
chatbot.png

4. リソースの後片付け(お金がかからないように)

無料枠で構築した人は特にお金はかからないのでそのまま放置しても大丈夫です。

Azureのリソースグループ画面へ移動し、今回構築したすべてのリソースにチェックをつけ、削除ボタンを押します。
確認のための質問がありますが「はい」を入力して削除してしまいましょう。
resource-group.png

おわりに

AzureのQnA Makerとを使えばかなり簡単に機械学習を用いたQnA Chatbotを作ることができました。
KBにいろいろなQnAを登録することで、いい感じに表記ゆれを吸収し、目的の回答を得ることができるので是非試してみてください。

ただ正直Microsoftのドキュメントが分かりにくい…
なのでこのような記事を書きましたが、もっとQiitaにChatbot系の記事が増えると嬉しい限りです。

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

macOS環境構築雑多メモ

macの最近の環境構築。winもほぼ変わらないと思うのでURL見つけておこう。

  • homebrew
  • git
  • nodebrew
  • npm

インストール内容

homebrew

$ /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

...
  ==> The Xcode Command Line Tools will be installed.

  Press RETURN to continue or any other key to abort

RETURNしてpassword入力

  Already up-to-date.
  ==> Installation successful!

git

$ brew install git

参考にしたサイト
https://qiita.com/micheleno13/items/133aee005ae37c28960e

nodebrew

$ brew install nodebrew

参考にしたサイト
https://qiita.com/mame_daifuku/items/373daf5f49ee585ea498

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Serverless Components はオレたちの未来を劇的にスケールさせるか

Serverless.inc 社より、Serverless Components がついに GA されました。

近年のアプリケーション開発では、いくつかの SaaS を組み合わせることで超高速に開発を行うことができます。例えば「認証は Auth0、ホスティングは Netlify、バックエンド API は AWS Lambda を使用する」といった具合です。このように複数のサービスを組み合わせることで、Undifferentiated Heavy Lifting な作業を排除できます。開発者は価値を生み出すビジネスロジックにのみ集中できるようになるのです。

以下はサーバレスアーキテクチャの例です。複数の SaaS を組み合わせて構築しています。

architecture.png

SaaS を組み合わせるだけで、一定の機能群を作り上げることができる時代になりました。しかし、それにしても複雑な管理は残ります。アプリケーション開発者は複数のサービスを手作業で組み合わせなければならず、構築と構成管理に一定の複雑度を残してしまいます。

そこで、Serverless Components です。

Serverless Components は、全てのクラウドベンダー、 SaaS ベンダーに対してインフラとアプリをプロビジョニングします。すでに提供されているコンポーネントを組み合わせるだけで即座にアプリケーションを構築できます。

従来 Serverless Framework は function と event は簡単に定義できていましたが、インフラリソースをプロビジョニングするためにはどうしても Cloudformation を定義する必要がありました。
また、プロビジョニングできる対象も AWS や GCP などの特定のクラウドベンダーのサービスにしか対応しておらず、Auth0 などを使用する場合は自前で構成管理をする必要がありました。Serverless Components なら様々な SaaS に対応できます。

コンポーネント

Serverless Component は React のコンポーネントと同じ構造に基づいています。個々のコンポーネントを参照したり、複数のコンポーネントを同時に作成できます。

先の例をコンポーネントを使用して構築すると以下のように分解ができます。もちろん、より小さくコンポーネントを分割することもできます。ここでは最小の意味のある単位で分割した場合を図示しています。

components.png

サーバレスコンポーネントは、高次のユースケース(ウェブサイト、ブログ、請求システムなど)を中心に構築されています。関係のない低レベルなインフラの詳細は抽象化され、代わりに単純な構成が提供されます。例えば、S3 の静的サイト公開設定や、ログ記録、暗号化設定などはユースケースに対しては意識する必要はありません。事前に設定済みのコンポーネントを使用すれば良いのです。

これはソフトウェア開発における基本的な考え方 関心の分離 (Separation of Concerns: SoC) に基づいていますね。確かに Infrastructure as Code をやっていると、インフラリソースの細部まで理解して構築する必要があり、多大な学習コストを要していました。

ServerlessComponents を使用したウェブサイト

さて、まずは最もシンプルなアプリケーションを Serverless Component を使用して構築してみましょう。
ここでは、GitHub のリポジトリでも例としてあげている サーバレスウェブサイト を構築することにします。

今回構築するウェブサイトは、AWS S3 でホストされます。無料の AWS ACM SSL 証明書で保護された AWS Route 53 のカスタムドメインでアクセスします。さらに、静的コンテンツは、AWS Cloudfront を使用して迅速かつグローバルに配信されます。

website.png

従来このような構成を実現する場合、ServerlessFramework に直接 Cloudformation を書き下し、各リソース間の詳細な設定と依存関係を意識する必要がありました。数百行の Cloudformation のテンプレートが必要でしょう。

Serverless Components を使用する場合はこれだけです。

component: website
name: website
inputs:
  src:
    src: ./src
    hook: npm run build
    dist: ./dist
  domain: geeawa.ga

驚異的なほど、シンプルです。
component: website として、website コンポーネントを使用することを宣言し、そのコンポーネントに渡す設定値を input: にて指定しています。ただ、それだけです。

Serverless Components を使用してウェブサイトを構築する

実際に website コンポーネントを使用してこの構成を作ってみましょう。

Install

まずは最新バージョンの Serverless Framework をインストールします。

$ npm install -g serverless

Create

サンプルとして、以下のようにテンプレート URL を指定して構築します。

$ serverless create --template-url https://github.com/serverless/components/tree/master/templates/website
$ cd website

次に、.env ファイルを使用して AWS アクセスキーの情報を記載しましょう。.envファイルは website のルートディレクトリに作成します。

AWS_ACCESS_KEY_ID=XXX
AWS_SECRET_ACCESS_KEY=XXX

ディレクトリ構成は以下のようになっているはずです。

|- src
  |- index.html
|- serverless.yml
|- .env

Deploy

あとはデプロイをするだけです。

$ serverless deploy

デプロイが完了すると以下のようにウェブサイトの URL が発行されます。Cloudfront へ配信が完全に完了するまでに少し時間がかかることに注意してください。

serverless ⚡ framework
Action: "deploy" - Stage: "dev" - App: "landing-page" - Instance: "landing-page"

bucket:    website-089y5jm
bucketUrl: http://website-089y5jm.s3-website-us-east-1.amazonaws.com
url:       https://d2u9prrumf2g64.cloudfront.net
domain:    https://www.geeawa.ga

以下のようなサイトがデプロイされています。

page.png

Dev Mode

さらに興味深い機能として Dev Mode があります。開発中にソースディレクトリの変更を監視し、保存すると即座にデプロイできます。

sls.gif

Remove

作成されたインフラを破棄する場合は、serverless.yml ファイルが含まれているディレクトリで次のコマンドを実行するだけです。

$ serverless remove

コンポーネントを自作する

コンポーネントを自作するためには以下の2つのファイルが必要です。

  • serverless.component.yml: ServerlessComponent の定義を記入します。
  • serverelss.js: ServerlessComponent のコード(実装)を記述します。

serverless.component.yml

コンポーネントをサーバーレスレジストリ内で利用できるようにするためには serverless.component.yml を作成する必要があります。

# serverless.component.yml

name: express # 必須 コンポーネント名
version: 0.0.4 # 必須 バージョン
author: eahefnawy # 必須 著者
org: serverlessinc # 必須 開発組織名
description: Deploys Serverless Express.js Apps # 任意 説明
keywords: aws, serverless, express # 任意 registry.serverless.comで検索するときに引っかかるキーワード
repo: https://github.com/owner/project # 任意 ソースコードのリポジトリURL
license: MIT # 任意 ライセンス
main: ./src # 任意 コンポーネントのソースコードが格納されているディレクトリ

serverless.js

serverless.jsには以下のように実装していきます。React の思想にインスパイアされており、Component を継承したつくりになっています。deploy, removeなどの Function を書いていくことになります。

// serverless.js

const { Component } = require("@serverless/core");

class MyBlog extends Component {
  async deploy(inputs) {
    console.log("Deploying a serverless blog"); // --debug モードで実行するとログが出力されます。
    this.state.url = outputs.url; // stateに保存する
    return outputs;
  }
}

module.exports = MyBlog;

deploy() は必ず書く必要があります。deploy() は、コンポーネントが何らかのクラウドリソースを作成するためのロジックが存在する場所です。serverless deploy コマンドを実行すると、常に deploy() メソッドが呼び出されます。

このクラスに他のメソッドを追加することもできます。remove() ではサーバレスコンポーネントが作成したクラウドリソースを全て削除します。

他にもメソッドはいくつでも追加できます。コンポーネントを追加機能付きでプロビジョニングしたい場合などに拡張できる作りになっています。

Serverless Components は test(), logs(), metrics() 機能を備えたコンポーネント、またはデータベースコンポーネントの初期値を確立するためのコンポーネント seed() の開発に着手しているようです。

メソッド以外の deploy() メソッドはすべてオプションです。すべてのメソッドは、inputs 個別の引数ではなく単一のオブジェクトを取り、単一のオブジェクト outputs を返します。

まとめ

クラウドや SaaS ベンダーのリソースを統一的に管理し、再利用可能にするプラットフォームが Serverless Components です。

現在公式が提供しているコンポーネントは 67 種類(2020/04/06 現在)です。
まずは AWS や Kubernates 関連がラインナップし始めています。急激に拡大しています。もう 本当に必要なものだけを実装し、組み合わせるだけ という開発スタイルに変わりはじめています。

これこそがクラウドテクノロジーの目指していたところかもしれません。さらなる発展が楽しみですね。

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む