Activepiecesを用いたタスク自動化の手法ついて紹介します
目次
- あいさつ
- はじめに
- Activepiecesとはどんなツールですか?
- Activepiecesのライセンス形態
- Activepiecesのリポジトリ/レジストリ
- Activepiecesのセルフホスト/構築手順
- Activepiecesのセルフホスト版の利用開始手順
- まとめ
あいさつ
株式会社オプトにて、宮城県仙台市在住のインフラエンジニアをやっています、岩崎浩昭です。コロナ禍以降フルリモート勤務で業務を行なっています。広告運用系プロダクトやオウンメディアのIaaS/SaaS/PaaSなどを横断的に構築・運用しています。
はじめに
本記事は弊社内で、クローズドネットワークに閉じた環境で利用できるタスク連携ツールを調査した折、IFTTTやZapierと似た操作で、タスク連携、無人実行が可能なソフトウェアとして発見したActivepiecesについて、導入から活用方法まで解説していきます。この記事を見て、日々のルーチンワークから解放される方々が少しでも居ればと思います。
Activepiecesとはどんなツールですか?
Activepieces は、IFTTTやZapierの類似サービスです。フロー図を書くことで、各種ツールの連携を行うことができます。
Activepiecesのライセンス形態
クラウド版とセルフホスト版があります。以下はクラウド版のライセンス形態です。
(出典 : Pricing - Activepieces )
セルフホスト版は基本的に無料で利用できますが、エンタープライズ機能 (packages/ee フォルダー以下) を使用する場合は、
別途エンタープライズ用ライセンスの取得が必要になります。
GithubとDockerHubにホストされており、
特別な事情が無ければDockerコンテナでの起動を推奨します。
Activepiecesのリポジトリ/レジストリ
先述したコンテナは以下のホストにあります。サイズがそれなりに大きいので、Github並びにDockerHubのアカウントを所有していない場合は、無料アカウントで良いので取得を推奨します。
- Githubリポジトリ
https://github.com/activepieces/activepieces
- DockerHubレジストリ
https://hub.docker.com/r/activepieces/activepieces
Activepiecesのセルフホスト/構築手順
まず起動要件として、1CPU/メモリ2GB/ストレージ20GB程度が最低要件になります。要件を満たしていれば、ローカルサーバ、レンタルサーバ、クラウド、サーバーレス、どれでも問題ありません。
Docker CLIの場合
起動コマンドは簡単で以下のように実行します。
$ docker run -d -p 8080:80 -v ~/.activepieces:/root/.activepieces \ --restart always \ --name activepieces_container \ -e AP_QUEUE_MODE=MEMORY \ -e AP_DB_TYPE=SQLITE3 \ -e AP_EXECUTION_MODE=UNSANDBOXED \ -e AP_TEMPLATES_SOURCE_URL="https://cloud.activepieces.com/api/v1/flow-templates" \ -e AP_FRONTEND_URL="http://localhost:8080" \ activepieces/activepieces:latest
公式には
-e AP_EXECUTION_MODE=UNSANDBOXED -e AP_TEMPLATES_SOURCE_URL="https://cloud.activepieces.com/api/v1/flow-templates"
は載っていませんが、こちらを追加することで、トップページからサインアップが可能になります。 これらのオプションの詳細は公式ドキュメントに記載があります。 また、これらのオプションを付けない場合は、コマンドラインから、ユーザー生成コマンドを実行となります。
Docker Composeの場合
こちらは、設定ファイルを生成もしくは編集が必要で、DBの種別によっては、複数のコンテナが起動します。
$ git clone https://github.com/activepieces/activepieces.git
$ cd activepieces
$ sh tools/deploy.sh
#deploy.shの実行がうまくいかない場合は、.env.exampleファイルを.envにコピーし、ファイル内に必要な情報を記入することができる。
$ copy .env.example .env
$ vi .env #--内容ここから-- AP_ENGINE_EXECUTABLE_PATH=dist/packages/engine/main.js AP_ENCRYPTION_KEY=【書き換え箇所: openssl rand -hex 16 での乱数添付を推奨 例: ff1d79136392caac259f3e747b6a7999】 AP_JWT_SECRET=【書き換え箇所: openssl rand -hex 32 での乱数添付を推奨 例: 29e4696608c215f01f8b506e63a403d8c084f8ad98537fd1d794ac174e2e4602】 AP_ENVIRONMENT=prod AP_FRONTEND_URL=http://localhost:8080 AP_TRIGGER_DEFAULT_POLL_INTERVAL=5 AP_DB_TYPE=postgres AP_POSTGRES_DATABASE=activepieces AP_POSTGRES_HOST=postgres AP_POSTGRES_PORT=5432 AP_POSTGRES_USERNAME=postgres AP_POSTGRES_PASSWORD=【書き換え箇所: openssl rand -hex 32 での乱数添付を推奨 例: cf56515a36e38827cbef632bdccebc200db4ec4df455aee0535df361e874905a】 AP_EXECUTION_MODE=UNSANDBOXED AP_REDIS_HOST=redis AP_REDIS_PORT=6379 AP_SANDBOX_RUN_TIME_SECONDS=600 AP_TELEMETRY_ENABLED=true AP_TEMPLATES_SOURCE_URL="https://cloud.activepieces.com/api/v1/flow-templates" ---内容ここまで--
$ docker compose -p activepieces up
Activepiecesのセルフホスト版の利用開始手順
早速ですが、起動したらアクセスしてみましょう。ここで気になるのは、コンテナ起動時にAP_FRONTEND_URL="http://localhost:8080"
というオプションかと思いますが、こちらはコンテナ内のURLを固定するだけのようで、http://起動ホストIP or ホスト名:8080
にアクセスすると使用できます。
サインアップしましょう
氏名、メールアドレス、パスワードを入れて登録を実施します。
ダッシュボード
作成したユーザでログインを行うと、アカウントごとのダッシュボードが現れます。 サイドにメニューがあります
- Flow : フロー図を描くためのエディタに入ります
- Runs : フローの実行状況がわかります
- Connections : 部品として利用できるAPIやCredential、シークレットキーなどの一覧が確認できます
- Docs : マニュアルサイトを開きます
Build Flow
フロー図の作成ですが、Build Flowを選択すると、用意されたテンプレートを使うか聞いてきます。 ChatGPTやSlack、Google APIs、など生成AIやコミュニケーションツール、ビジネススィートのAPIもコネクタが用意されているので、AIチャットBotや自動翻訳、文書加工など多岐にわたったテンプレートが用意されています。また、Node.js、Python、TypeScriptなどのスクリプトを挟むことができるため、データパイプラインのようなものも作成可能です
作ってみよう
ここでは、定時になったらSlackに通知を出すBotを作ってみましょう。
用意する情報
- Slackの通知したいチャンネルのIncoming WebhookのURL
- 通知内容の書かれたjsonファイル
1.まず、テンプレートを使わないので、Start from scretch をクリックします。
2.1つ目のセルに、トリガーをどうするか、と書かれているので、クリックして、
右サイドに展開される、メニューから[Core]のタブを開き、[schedule] を選択します。
1つ目のセルのトリガーがスケジュールになり、どういったスケジュールにするか、プルダウンメニューで選択します。
毎朝、9:00に通知を出したいので、[Every Day]
を選び、実行時間は[9:00 am]
を、タイムゾーンは[GMT +9:00 Asia Tokyo]
を、土日は実行しないので[Run on weekends]
のトグルをオフにします。
3. 1つ目のセルに付いているコネクタの[+]
をクリックすると2つめのセルが選択できます。ここでは、Slackに通知を出したいので、検索にSlack
を入れて検索し、Slackを選択したいところですが、社内の事情でアプリの追加インストールができなかったため、http
で検索し[HTTP Sends HTTP requests and return responses]
を選びます。
リクエストを送るか、レスポンスを受けるか選ぶようになっているので、今回は、リクエストを送るだけなので[ Send Http Reqest ]
を選びます。
メソッドは、JsonをPOSTするので[POST]
を選択します。
URLには用意しておいたSlackのIncoming Webhook URLを記入します。
次にHeaders , Query params , Body を記入します。しかし、SlackのIncoming webhookでは、headersとQuery paramsは省略できるため、Bodyに投稿するJson形式のデータを記述します。書式は、SlackのAPIドキュメントにある、Building attachments を参照して下さい。今回は単純にメッセージを送るだけにしたので、以下のような形式のJSONを記載しています。
{ "channel":"#(送りたいch)", "username": "勤怠リマインドBot", "text": "朝の勤怠は実施しましたか?", "icon_emoji": ":ok_hand:" }
記入したら、一度[Generete Smaple Data]
からテストを送ってみましょう。[Tested Successfully]
が返ってきて
Slackにも投稿されていればOKです。
4.ここまで出来たら、フローに名前を付け、[Publish]
を押しましょう。
5. Homeに戻ると、ダッシュボードに作ったフローが表示されています。
最初に作ったフローはカテゴリ分けされていないので、できれば用途ごとにカテゴリ分けするといいでしょう。次に、[Status]にトグルがありますが、[publish]
した時点で有効になっていますので、まだ起動させたくない場合はOFFにしておきましょう。
業務に使えそうなアプリを作ってみよう
今度は、トリガーを時間ではなく、Google SpreadSheetが更新されたら、内容をChatGPTで誤字・脱字・表記の揺れチェックし、Slackに通知するフローを作ります。
用意するものは
- Google Drive Api/Google SpreadSheet Apiがスコープに入った、クライアントID/クライアントシークレット(jsonでも可)
- OpenAI APIのトークン
- SlackのIncoming Webhook URL
1.前述したフローと同様に、トリガーから順に設定していきます。サクッとコネクタを並べます。
2.[Google SpreadSheet] コネクタでトリガーに[New row]
を指定し、クライアントID/クライアントシークレットおよびファイルIDとシート名を組み込みます。
チームドライブにあるファイルを参照する場合は、[Include Team Drive Sheets]
のトグルを有効にします。
3.[ChatGPT] コネクタにトークンを記入し、モデルを指定します、ここでは[GPT-3.5 turbo]
を指定し、記入された内容を校正するようにプロンプトを記述します。
4.[HTTP] コネクタにSlack Incoming WebhookのURLを記述し、[ChatGPT] コネクタの [Response]
を JsonのBodyに入るように記述します。
{ "channel":"#(送りたいch)", "username": "GPT校正Bot", "text": "[Ask ChatGPT Response]", "icon_emoji": ":ok_hand:" }
5.出来上がったら、前述同様に[Publish]
します。
6.試しに指定したSpreadSheetに文章を記述してみましょう。
Slackにレスポンスが返れば完成です。
まとめ
Activepieces は、IFTTTやZapier同様に、ほぼノーコードでサービスを連携することができました。 使い始めに関しては、ローカライズはされていないため、言語の壁が感じられますが、複雑な内容はなく、テンプレートも多数用意されているため、目的と合致していれば短時間でフローを構築することができました。 毎日のルーチンワークやちょっとした処理を任せるには良いプラットフォームであると思います。 社内に閉じたネットワークでの動作が行えるため、企業ポリシーで外部のウェブアプリが使えないといった事情でも使うことができる点はとても良いと思います。 社内に閉じたシステムの自動化・連携といった、外部ウェブアプリでは対応が難しい業務の自動化もできる可能性があります。
Opt Technologies ではエンジニアを募集中です。カジュアル面談も可能ですので、下記リンク先よりお気軽にご応募ください。