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

# これは？
ポルトガル発のアプリ開発向け高性能ローコード、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/)
:::

# この先についてさらなる注意書き

:::note warn
一応自分用にメモりながら進みますが…。
* そもそも正確ではない可能性があります
* あくまでもこの時事を記載した時点のものです
* 全部書けるはずもなく「いっそ読まずにトレーニング行け」ではあります
(ここまでも別に全部書いてはいない)
* ココだけ見て理解できるような粒度ではないでしょう
(ほとんど虚無のスカスカなセクションもあります)
* あくまでも「一人の記録を参考程度に見る」にとどめてください
:::

## Service Studioの概要

### 概要
#### Service Studioとは

OutSystemsのローコードビジュアル開発環境です。

* アプリやモジュールの作成
* データモデルの定義
* Webアプリやモバイルアプリ向けUIを作成
* ビジネスプロセスやタイマー（バッチ処理）を定義
* アプリをデバッグ

#### インストールと接続

https://www.outsystems.com/downloads

* 実行可能ファイルをダウンロードしてインストール
* 環境(サーバー)に接続(クラウドでも、オンプレでも)
* 開発環境でありつつ、Platform Serverに公開するクライアントでもある

#### Environmentタブ - アプリケーション

アプリケーション情報や開発(構成モジュール)、依存関係、モバイルの場合配布情報等が確認できる。

* サーバーのアプリケーションを一覧表示
* 新しいアプリケーションを作成
* Forgeで入手したコンポーネントをインストール
* 新しいアプリを開く


##### Environmentタブ詳細
1. アプリケーションの情報
1. Developタブ
1. 依存関係
1. 配布


#### Module Workspaceタブ

* アプリを開くとローコード表現でアプリを開くワークスペースタブが使える
* TrueChange機能でモジュールが有効かチェックできる(有効なモジュールのみ公開できる)
* モジュールタブでは環境を切り替えられる

#### Forgeタブ

ダウンロードして接続先のサーバにインストール可能なコンポーネントが含まれている。

* モバイルアプリ用とWebアプリ用の追加コンポーネント
* ダウンロード数と評価数
* コンポーネントの注目度
* OutSystemsのサポートの有無

### 要素

* ワークスペースから様々な要素にアクセスできる
* 4つのタブがレイヤーに対応している

| タブ | 画面左 | 画面中央 | 画面右 | 備考 |
|:------------|:------------|:------------|:------------|:------------|
| インタフェース | ウィジェット | ライブプレビュー | | 階層の移動は<br>ブレッドクラム<br>便利 |
| プロセス<br>ロジック | ロジック<br>フローで<br>使用する要素 | ロジックの<br>ビジュアル表現 |  | |
| データ |  | データモデルや<br>エンティティを<br>データテーブル<br>として確認 | 要素ツリー<br>データ要素 | |

### アプリケーションレイヤー

#### プロセスレイヤー

| 要素 | 説明 |
|:------------|:------------|
| プロセス | ビジネス<br>プロセス手動/自動タスク |
| タイマー | スケジュールされたアクション<br>優先順位<br>タイムアウト |

#### インターフェースレイヤー

| 要素 | 説明 |
|:------------|:------------|
| UIフロー |  |
| 画像 |  |
| テーマ | ルック＆フィール |
| スクリプト | JavaScript |

#### ロジックレイヤー

| 要素 | 説明 |
|:------------|:------------|
| クライアントアクション | デバイス上で実行 |
| サーバーアクション | サーバー上で実行 |
| ロール | 匿名、登録済み、カスタムロール |
| 例外 |  |

#### データレイヤー

| 要素 | 説明 |
|:------------|:------------|
| エンティティ図 |  |
| エンティティ |  |
| ストラクチャ |  |
| クライアント変数 |  |
| サイトプロパティ |  |
| リソース |  |

### 1クリック公開

#### 緑の「1クリック公開」ボタンを押す
* OutSystemsサーバーは新バージョンとして登録
* コードを生成コンパイルしてアプリケーションサーバにデプロイ
* プロセス中データベースの更新も実行(ロジックやデータモデルの同期が確保される)
* 発行ログが表示される、完了すると通知される
* 完了すると青の「ブラウザで開く」ボタンに変わる

#### 青の「ブラウザで開く」ボタンを押す
* ブラウザで動作確認できる

:::note info
モバイルアプリなら、スマホのエミュレータが開く。
:::

#### 公開後も
* 必要ならモジュールメニューで「他のバージョンを開く」でいつでも切り替えられる
* 必要に応じて別のバージョンを開いてロールバックできる

#### 衝突(競合)の対応
* 複数人で作業していると衝突(競合)が起きる
* マージして公開も、上書き公開もできる
   * 基本的にはちゃんとマージしよう
      * 比較ツールで横並び比較できる
      * ハイライト表示にチェックを入れてマージしよう