OutSystemsのForgeにComponent公開してみた

# はじめに
[OutSystems愛知ユーザー会 #1](https://outsystems-chubu.connpass.com/event/137414/)で「近々、テストツールをForgeに公開します」と宣言したので、有言実行、やりました。今回はこれを通して学んだForgeにComponent公開するときに役立つ情報を紹介します。

# Forgeって？
[公式](https://www.outsystems.com/forge/)によると `The OutSystems Forge is a repository of reusable, open code modules, connectors, and UI components to help speed up app delivery time.` ということだそうです。Marketplaceのようなものですね。BSDライセンスモデルにもとづき無償でソフトウェアが公開されています。

# 今回公開したComponent
[SimpleTestingTool](https://www.outsystems.com/forge/component-overview/6475/SimpleTestingTool)という名前のテストツールです。特徴などはリンク先をご覧下さい。特筆すべきは2019/8/14時点でダウンロード数が1（自分が稼働確認用にダウンロードしただけ）です！よかったらダウンロードしてやって下さい。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/337041/53526869-aa1e-d9ed-56ee-122dee309087.png)

# 学んだこと - 公開手順
以下が本題で、公開手順を順番に説明していきます。

## まずはForgeのトップからNew Componentボタンをクリック
簡単！
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/337041/486e600b-9d6c-4747-3e66-1d0c3dea2040.png)

## OAPファイルをアップロード
次は開発したApplication（OAPファイル）をアップロードするだけなのですが、なぜファイルをアップロードしても次へのボタンが押せない・・・。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/337041/c8104ae8-1b66-8de0-cb45-772b730e6b36.png)

↑の画面、実はGoogle Chromeが日本語に翻訳してくれているのですが、どうもそれが悪さをしているらしく、翻訳をやめた後、再度ファイルをアップロードすることで解決しました（地味にはまった）。

また、可能な限りDemo用（使い方をわかってもらうため）のApplicationもアップロードするとよさそうです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/337041/6ec6c761-cf1f-8eee-99e9-5578a8d5a008.png)

そうすると、こんな感じで利用者はDemo用のApplicationもまとめてダウンロードできるようになります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/337041/8da83183-3b8f-e992-82b8-927c07f81ed7.png)

ちなみに参照が古かったりするとアップロードできませんので、Applicationをダウンロードする前にOutDatedになっていないか確認し、なっていればApplication単位でPublishするのがいいと思います。

## 詳細情報の記入
次のページでは以下を行います。

* アイコンの設定
* Componentの名前の設定
* プレビュー（トライ）が可能な場合、そのURLの設定
* Type（Web, Mobile, Services）の設定
* ComponentのSummaryの記入
* スクリーンショットの添付
* 詳細説明の記入
* Componentのバージョンの設定
* Componentの所有者の設定（個人かチームか）
* 必要な環境（OutSystemsのバージョン、Stack（All, Java, .NET、DBMS（All, MySQL, Oracle, SQL Server））の設定
* カテゴリーの設定
* タグ付け

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/337041/1756ab13-ce88-f5cd-a102-1c4f3cf3bbde.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/337041/dd2b2c8b-9175-6088-b126-c169e857bc60.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/337041/f325a13e-d544-c3ee-6119-4897347d2401.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/337041/4b0a50df-a3bc-a262-7c29-c080bcb788fc.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/337041/166cdd29-43d9-4fbf-d423-8417b08e86d4.png)

このうち詳細説明（Detailed description）に日本語を入力しても後で文字化けしてしまうので、ここは英語だけにするのがよさそうです。Summary（What does this component do?）は日本語を入力しても問題ありませんでした。

## Dependencyの確認
最後がDependencyの確認です。参照しているComponentが古いとアップロードできなくなっています。自分の場合はあるComponentがForge上OutSystems11では動かないということになっていたので（実際は動く）、ここでエラーが出て先に進めませんでした。このページからそのComponentの開発者にメッセージを送り、その方がすぐに対応してくれたのでよかったのですが、必ずしもそうはならないと思いますので、参照するComponentは最低限にした方がいいと思います。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/337041/bbad1a81-e17f-8bcf-18d5-3f924d353773.png)

## 最終確認、公開
そして最終確認をし、Publishボタンを押せば即日公開されます。審査が入るのかなぁと漠然と思っていたので、やや意外でした。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/337041/3ce01d6d-0b83-0ef5-6130-9946b97be508.png)

# 最後に
個人的には、思ったよりも簡単にForgeにComponent公開できると感じました。OutSystemsに慣れてきた頃に公開するためのComponent開発してみると、ちょうどいい緊張感が出るのではないかと思います（変なコードは書けないので）。