Workato：Windows環境へのWorkato Connector SDK (SDK CLI)のインストール手順

# はじめに

Workatoには、カスタムコネクタの開発環境として、Workato Connector SDK (SDK CLI)というRuby Gemが提供されています。

SDK CLIを使用することで、Workato上ではなく、WindowsやMac等のローカル端末上で普段使用しているテキストエディタやIDEでカスタムコネクタのコーディングを行ったり、ローカル環境上でカスタムコネクタのテストが行えるようになるため、カスタムコネクタの開発時の生産性が向上します。

# WindowsへのSDK CLIのインストール

SDK CLIは基本的にはRubyが動作する環境であればOSに関係なく動作します。LinuxやMacであれば、Workatoのドキュメントに記載の手順通りに進めていくことで、ほとんどの場合は特につまづくことなくSDK CLIをインストールすることが可能です。

しかし、Windowsの場合はやや癖があり、手順通りに行ってもインストール途中でエラーとなり、インストールにつまづく場合があります。また、SDK CLIインストール以前の話として、Rubyのインストール手順そのものにやや癖がありますので、Windows上でRubyの開発を行った経験のない方にとっては所々に現れる癖がハードルとなります。

そこで、今回はWindows上でスムーズにSDK CLIのインストールを進められるよう、手順をまとめました。Windows上でこれからWorkatoのカスタムコネクタ開発を進めたい方（Workato上のエディタでのカスタムコネクタ開発からステップアップされたい方）の参考になりましたら幸いです。

# 手順
::: note
以下の手順は管理者ユーザーで実施してください。
（コマンドライン操作も管理者で実施してください）
::: 

## MSYS2のインストール

以下より最新版のインストーラー（exeファイル）をダウンロードし、インストールします。

https://repo.msys2.org/distrib/x86_64/

## RubyInstaller2のインストール

Workato-connector-sdkはRuby 2.7.xを推奨していますので、Ruby 2.7.xのインストールを進めます。（3.0.x, 3.1.xも利用可能とはされていますが、推奨バージョンで進めることとします）

https://docs.workato.com/developing-connectors/sdk/cli/guides/getting-started.html

以下より最新版のRuby2.7.xのインストーラー（exeファイル）をダウンロードし、インストールします。

https://rubyinstaller.org/downloads/archives/

インストールモードは、`Install for all users` を選択します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/64876/97669ba6-4bc1-70d1-be46-616e6a5643a6.png)

インストールオプションはデフォルトのままとします。
（チェックが一部外れている場合は、全てのチェックを付けます）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/64876/e38246ea-a5a8-38d0-7338-52d396f1f0b4.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/64876/4bef04b8-2ed1-afda-8b62-0815cc626608.png)

インストールが完了すると、次の画面が表示されます。
`Run 'ridk install' to set up MSYS2 and development toolchain` にチェックが入っている状態で、「Finish」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/64876/1834e7ad-884c-ad62-5b85-048c16ba605a.png)

「Finish」をクリック後、次の画面が表示されます。デフォルトで1,3が選択されていますので、そのままEnterキーを押下します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/64876/de2bf08d-a0d3-efa9-7dce-b4f8e03767ce.png)

Enterキーを押下後、MSYS2およびMinGWの開発ツール類のインストールが開始します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/64876/b2aa3978-21ad-53e2-3ae5-d1d5148a8125.png)

:::note warn
RubyInstaller2よりMSYS2をインストールしようとすると、以下のように 404 Not Foundとなり、MSYS2のインストールに失敗する場合があります。以下のエラーが発生した場合は、上記「MSYS2のインストール」を参考にMSYS2のインストールを行い、その後 `ridk install` コマンドを実行して再度やり直してください。
:::

```posh
MSYS2 seems to be unavailable
Verify integrity of msys2-x86_64-20221028.exe ... Failed
Download https://repo.msys2.org/distrib/x86_64/msys2-x86_64-20221028.exe
  to C:\Users\OHNO~1.TOM\AppData\Local\Temp/msys2-x86_64-20221028.exe
Installation failed: 404 Not Found
```

## Rubyバージョンを2.7.xに切り替え

RubyInstaller2で複数のRubyをインストールしている場合は、次のコマンドでバージョンを2.7.xへ切り替えます。

```
ridk use
1 - C:/Ruby27-x64       ruby 2.7.8p225 (2023-03-30 revision 1f4d455848) [x64-mingw32]
2 - C:/Ruby33-x64       ruby 3.3.5 (2024-09-03 revision ef084cc8f4) [x64-mingw-ucrt]
Select ruby version to enable: 1
Disable C:/Ruby27-x64 in current shell
Disable C:/Ruby33-x64 in current shell
Enable C:/Ruby27-x64 in current shell

ruby -v
ruby 2.7.8p225 (2023-03-30 revision 1f4d455848) [x64-mingw32]
```

## icuのインストール

workato-connector-sdkのインストール時にicuを要求されますので、事前にicuをインストールします。

```p
ridk exec pacman -S mingw-w64-x86_64-icu icu-devel icu
```

## charlock_holmes のインストール

以下のコマンドで手動インストールします。

```
gem install charlock_holmes -- --with-icui18nlib=icuin --with-icudatalib=icudt --with-icu-dir=c:\msys64\mingw64
```

## tzinfo-data のインストール

SDK CLIの実行時にtzinfo-dataを要求されますが、何故かworkato-connector-sdkのインストール時にインストールされないため、個別にインストールします。

```
gem install tzinfo-data
```

## workato-connector-sdk のインストール

以下の内容を参考に、worakto-connector-sdkをインストールします。

https://docs.workato.com/developing-connectors/sdk/cli/guides/getting-started.html

```
gem install workato-connector-sdk
```

:::note warn
workato-connector-sdk のインストール時に以下のエラーが発生した場合は、上記「icuのインストール」および「charlck_holmesのインストール」を実施ください。
:::

```
gem install workato-connector-sdk
Temporarily enhancing PATH for MSYS/MINGW...
Building native extensions. This could take a while...
ERROR:  Error installing workato-connector-sdk:
        ERROR: Failed to build gem native extension.

    current directory: C:/Ruby27-x64/lib/ruby/gems/2.7.0/gems/charlock_holmes-0.7.9/ext/charlock_holmes
C:/Ruby27-x64/bin/ruby.exe -I C:/Ruby27-x64/lib/ruby/2.7.0 -r ./siteconf20241106-6768-5dtyx3.rb extconf.rb
checking for -licui18n... no


***************************************************************************************
*********** icu required (brew install icu4c or apt-get install libicu-dev) ***********
***************************************************************************************
*** extconf.rb failed ***
Could not create Makefile due to some reason, probably lack of necessary
libraries and/or headers.  Check the mkmf.log file for more details.  You may
need configuration options.
```

## 動作確認

以下のコマンドを実行し、プロジェクトを作成します。

:::note warn
以下のコマンドを実行すると、bundle installが実行され、必要なgemのインストールが開始されます。環境によっては、プロジェクト作成が完了するまでに数分～数十分程度の時間を要する場合があります。（本コマンドを一度実行済みの場合は、数秒～数十秒程度でプロジェクトの作成は完了します）
:::

```
workato new test-project
```

インストールが正常に完了すると、次のようなメッセージが表示されます。

```
Bundle complete! 7 Gemfile dependencies, 59 gems now installed.
Use `bundle info [gemname]` to see where a bundled gem is installed.
The new Workato Custom Connector project created at test-project.

Now, edit the created file. Add actions, triggers or methods and generate tests for them

cd test-project && workato generate test
```

# 参考情報