OutSystems「Web開発者への道」学習メモ(1)OutSystemsの概要

# これは？
ポルトガル発のアプリ開発向け高性能ローコード、OutSystemsについての学習メモです。

* そこに、トレーニング教材がある
* が、Inputだけで何往復したとて「え？　あ？」という感じでそうそう身にならない
* どんな学びもOutputなしには定着しにくいということ
(OutSystemsのトレーニングだから特段そうなのではない)

そこで、全体像だけでも学習メモとして記録することにしました。

:::note info
OutSystemsの公式トレーニング「Web開発者への道」で学べるレベルですので、そちらを行ったほうがより正確で確実で最新で、当然公式です。
* [トレーニングポータル](https://learn.outsystems.com/ja-jp/training)
* [Web開発者への道](https://learn.outsystems.com/ja-jp/training/journeys/web-developer-662)
* [OutSystemsの概要](https://learn.outsystems.com/ja-jp/training/journeys/outsystems-11-overview-621)
:::
:::note warn
このトレーニングの実践にはPersonal Environment用のアカウントを作成する必要があります。
* [OutSystemsのPersonal Environmentとは](https://success.outsystems.com/ja-jp/support/licensing/what_is_an_outsystems_personal_environment/)
:::

# OutSystemsとは

https://www.outsystems.com/

* エンタープライズ向のWeb/モバイルアプリの開発、デリバリーを支援
* ローコード開発環境でエンタープライズレベルのコードが生成できる
* 他システム連携も実現
* アプリやユーザーの管理・分析もできる

# コンポーネントとツール
| コンポーネント/<br>ツール | 分類 | 説明 |
|:------------|:------------|:------------|
| Platform Server | サーバー | アプリケーション実行の場 |
| Service Studio | 開発ツール | Web/モバイルアプリの<br>ローコードビジュアル開発環境 |
| Ingtegratuon Studio | 開発ツール | エクステンションを作成・管理できる |
| Service Center | 管理、運用ツール | Platform Serverの<br>管理コンソールWebアプリケーション |
| LifeTime | 管理、運用ツール | アプリケーションの<br>ライフサイクル全体の管理 |

## Platform Server

* アプリケーション実行の場
* アプリのコンパイル、デプロイ、管理、実行、監視を担当
* Service Studioから接続できる

## Service Studio
* OutSystemsローコードビジュアル開発環境
* Web/モバイルアプリを開発できる

### アプリの開発から公開までの流れ
* Service Studioでローコードアプリを作成し、Platform Serverに公開
   * アプリの各バージョンはPlatforam Databaseに保存される
   * Platform Serverがアプリをコンパイルし、最適化されたコードを生成
   * Platform Serverが標準のアプリケーションサーバーにデプロイ
      * アプリケーションサーバーが作成したアプリを実行
      (従来のデータベースと外部システムを使用)
      
## Ingtegratuon Studio
* エクステンションを作成・管理
* デスクトップツール
* 外部リソースと連携するためのアクセラレータも用意(.NETコード)
* 外部リソースを活用したエクステンションをサーバーに公開し、通常のOutSystemsリソースとしてService Studioで使用できる

## Service Center

* Platform Serverの管理コンソール
* Webアプリケーション(Webブラウザでアクセス可能)
* 開発インフラの確認
* 利用可能なアプリの把握
* プラットフォームや実行中のアプリが生成したログを検査
* 分析結果の収集
* 環境の各サーバーの管理

## LifeTime

* アプリケーションのライフサイクル全体の管理
* Service Centerの機能を拡張するWebアプリ
* 様々なステージング環境にわたってアプリケーションのライフサイクルを確認できる
* 開発環境→QA環境→本番環境へと途切れず追跡可能
* 各ユーザーやチームがそれぞれの環境やアプリで所持する権限レベルの管理
* インフラ内の全環境の確認、ライフサイクル内の配置変更
* アプリのパフォーマンス分析結果収集、ボトルネックの特定と修正
* Platform Serverの数を問わず、ライフサイクルをかんたんに管理

https://envader.plus/article/134

# そのほかお役立ちなもの

## コミュニティ、Forge、フォーラム

* Forgeはダウンロード可能なオープンソースコンポーネントのソース
* フォーラムがあり、ノウハウの共有がなされている

https://dandelions.co.jp/blog/blog/2022/11/24/2022-11-24/

# 機能

## 既存のほぼあらゆるシステムと連携

* 外部のシステムから既存のアプリケーションやコード、データをインポート
* OutSystemsプラットフォームと連携

:::note info
連携した情報はService Studioで使用できる。
:::

## Service Studioのローコードビジュアル開発

* データエンティティの設計や作成
* ビジネスロジックやプロセスの作成
* UIの視覚的な開発

:::note info
OutSystemsプラットフォームの1クリック公開機能で公開する。
:::
## 標準の最適化されたコード生成

* アプリケーションのコード→HTML、CSS、JavaScript、.NETコードが生成される
* Web/モバイルアプリの実行に必要なリソースすべてが含まれる

## 継続的インテグレーション、継続的デリバリー

* アプリケーションを開発環境→QA環境→本番環境へとデプロイ
* デプロイ中に整合性チェック(依存関係やコードのバージョンに問題がないか)
* ガバナンス(各ロールに、リソースごとに適切なレベルの管理やアクセス権が付与されているか)
* 完全なデプロイ後、生成したコードに監視機能が含まれる

https://envader.plus/article/44

## 柔軟なインフラへのインストール

* クラウドでも、オンプレミスでも、あらゆるインフラにデプロイ

## そして…


* 稼働が始まるとユーザーがフィードバックを送れるようになる
* 必要な変更を開発チームに提案→適宜変更を実装してアプリケーションを再公開

:::note info
このサイクルで継続的なイテレーションやバージョン管理が可能に。
:::