Mendix初心者が１ヶ月で学んだこと

# はじめに

私は今年からSIerに入社した一年目です。

半年間の研修の後、Mendix(ローコード開発ツール)を用いた開発プロジェクトにアサインされました。

本記事では、Mendix初心者だった私が約１ヶ月業務でMendix触って得た知見を紹介します。

Mendixでのアプリ開発を検討している方はぜひ参考にして下さい。

結論としては、

### 「プログラミング経験者であれば、Mendixを使ったアプリ開発はたったの一カ月で実現できます！」

# Mendixの基礎知識
### ローコード開発とは

ローコード開発とは、ソースコードの記述量を最小限に抑えてシステム開発を行う手法のことです。

専用のプラットフォームやツールを用いることで、必要最低限の記述で開発ができるため、作業工数を削減し、短い開発期間で高品質かつ安定したシステム開発を実現できます。

### Mendixの概要

Mendixは、シーメンスが提供する、アプリケーション開発を迅速に構築、デプロイ、運用保守までをオールインワンで兼ね備えたローコード開発プラットフォームです。

昨今、IT人材不足が深刻化し、高速な開発が求められています。Mendixはそれらの課題を解決します！

従来のようにフロントエンドからバックエンドまで各領域に対応するエンジニアを揃える必要はなく、Mendix開発ではMendixエンジニアのみで効率的に開発を進めることができます。

これにより、チーム編成がシンプルになり、開発速度を大幅に向上させることができます。

コードの記述を最小限に抑え、直感的にアプリケーションを構築できる環境を提供します。

Mendixでは、アプリケーションの開発において、比較的プログラミング経験が少ない方でも、ドラッグ＆ドロップ操作で機能の構築やデータの処理が可能です。(Mendixが公開している簡単な[デモ動画](https://www.mendix.com/wp-content/uploads/MainPageAnimationV5.mp4))

また、Javaを組み込めるため、複雑な処理にも対応できます。

## Mendixの特徴（できること）

この章では、Mendixの主な特徴についてご紹介します。他の機能などはこちらを参照してください！

### データモデル

Mendixでは、データモデルを視覚的に設計することができます。エンティティ（データの構造）や属性（エンティティのフィールド）、関連（エンティティ同士の関係）を直感的に作成でき、データベースの設計が簡単に行えます。

また、Mendixは自動でデータベースとの同期を行い、データの整合性を保つことができます。
![domain-model-with-data-hub.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3932392/af773b4f-9167-1449-e0cd-9cf3a0f7c964.png)



### 画面設計

Mendixでは、ドラッグ＆ドロップで画面の設計ができます。

画面要素（ボタン、テキストボックス、リストなど）を直感的に配置し、ユーザーインターフェースを簡単に構築できます。

レスポンシブ対応も容易に行えるため、モバイル端末にも対応したアプリケーションが作成可能です。
![screen-design.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3932392/6a712faf-684d-a3a3-d37c-696eee859c9f.png)


### ビジネスロジック

Mendixでは、ビジネスロジックを「マイクロフロー」という視覚的なワークフローとして構築します。

これにより、プログラムの流れをコードなしで表現でき、データ処理や条件分岐を簡単に実装できます。

また、外部APIとの連携も簡単に行えます。
![microflow-editor.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3932392/9ecde454-a57e-07c3-84f4-21f310c5467d.png)

### 便利なツールの紹介
##### 開発環境(Mendix Studio Pro)

Mendix Studio Proは、Mendixでのアプリケーション開発を加速するためのローコードIDEです。

豊富な機能を備え、開発からデプロイ、運用までの一連の作業を支援します。

以下のリンクでダウンロードできます。

[Mendix Studio Proダウンロード](https://www.mendix.com/platform/ide/)

無料でも利用できるので是非ご活用ください！

##### クラウド(Mendix Cloud)

Mendix Cloudとは、Mendixアプリケーションに最適化されたPaaSです。

クラウド運用の手間を省き、開発に集中することができます。

こちらもぜひご活用ください！

[Mendix Cloudの公式ページ](https://www.mendix.com/ja/mendix-cloud/)

# １ヶ月間の学習ログ

|# |実施内容  |コメント|
|---|---|---|
|０週目	|基礎知識の勉強	|Mendix AcademyでMendixの基礎を二日で習得！|
|１週目	|既存アプリの調査	|アプリの動きを見て、ソースコードを見ただけで構造が理解出来た！|
|２週目	|既存アプリへの新機能開発	|簡単なフローを作成するだけでAPI連携が可能に！|
|３週目	|０からアプリ開発①	|細かな機能開発につまずくも、先輩に頼って解決！|
|４週目　|０からアプリ開発②	|ほぼほぼの機能を自分で作成できるようになった！|


### ０週目　基礎知識の勉強

Mendix Academyの[Become a Rapid Developer](https://academy.mendix.com/link/paths/31/Become-a-Rapid-Developer)を二日ほどかけて受講し、Mendixの基礎を習得しました。

Mendix初心者の方には、まずはRapid DevelopperのLearning Pathを実施することをオススメします！

Academyには公式のLearning Pathが多く提供されているので、これらを実施するだけでMendixの多くの機能を学ぶことが出来そうです。

### １週目　既存アプリの調査

Mendixの開発プロジェクトにアサインされた最初の１週間目はとにかく既存アプリの中身を見ていました。

アプリの見方の流れとしては以下の通りで行いました。おおまかには「アプリの動きを確認→ソースコードを確認」といった流れです。

Menixはソースコードを見るだけで理解できます。既存のアプリを見ることはMendixの開発方法を網羅的に知ることが出来て非常に有効です。

##### STEP1　ローカルでアプリの起動・確認

Mendixはアプリをローカル実行出来るので、環境を破壊することなくアプリの動きを確認することが出来ます。

Mendix Studio Proを用いてアプリを起動し、ブラウザで動作を確認しました。このステップでは、アプリの全体像や構造をつかみました。

##### STEP2　Mendix Studio Pro上で画面設計の確認

STEP1で確認した画面とMendix Studio Pro上で実際に作成されているページとの関連を見て、どのように画面設計がなされているかを理解しました。

##### STEP3　データモデルとビジネスロジックの確認

STEP2で確認したページに関連したデータモデル（ドメインモデル）やビジネスロジック（マイクロフロー）を確認しました。

ここでは、データがどのように扱われ、処理されるのかを把握しました。

### ２週目　既存アプリへの新機能開発
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3932392/5526e40d-b405-fb82-446a-f344a861b212.png)

既存Mendixアプリと社内チャットアプリとのAPI連携に取り組みました。

スマホからMendixアプリで確定ボタンを押した際に、チャットに確定内容が通知されるような機能でした。

Mendix Cloudには外向きのクライアント証明書を設定する項目や環境変数を設定する項目があり、簡単に連携することができました。

処理の流れ自体もGUIベースで直感的に記述することができ、APIのレスポンスを受け取ってアプリ内で処理を行う流れは非常にスムーズに実装できました。

### ３〜４週目　０からアプリ開発
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3932392/8a686768-6926-dda1-ddd4-4b5d5f66bf0d.png)

新規アプリのPoC（Proof of Concept）開発の一部を任されました。

これまでExcelで管理されていた社内システムをMendixアプリに代替しようとするプロジェクトでした。

API連携のように特定の機能だけでなく、いくつかの要件が絡む開発が求められました。

この期間では、直感的に開発できない部分もあり、いくつかの課題に直面しました。

### つまづいたポイントと解決方法

##### ①どのツールを用いるのが最適な実装なのか分からない

Mendixには単純な画面設計を行う際にも複数のツールが用意されています。

これらのツールのうちどれを用いるのが最適か判断に悩みました。。。

既存アプリの実装方法を参考にしたり、幸運にもMendixの扱いに長けた先輩がいらしゃったので助けていただきながら各ツールへの理解を深めました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3932392/e7a30fa2-7675-bea0-06c8-a545f15be936.png)

↑画面設計の際に使用できるツールの例

##### ②バグの発生個所が分かりづらい

Mendixではローカルで実行した際に、ブラウザ上のみではエラーの発生個所を特定することはほぼ不可能でした。

Mendix Studio Proには、デバッガ機能があるので、これを用いて一つずつデータの流れを確認してバグを取り除くことができました！
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3932392/53cb77f7-f13b-64cc-56ec-9472da48801c.png)

# Mendixについて感じたこと
### Mendixの良い点・悪い点
##### 良い点
- **直感的なインターフェース**：UI設計やロジックの実装が視覚的に行えるため、プログラミング経験が少ない人でも理解しやすいです。
- **柔軟な開発**：Javaを組み込めるため、ローコードによくある制約の厳しさが感じられませんでした。
- **爆速でできる環境構築**：無料で使える開発環境のMendix Studio Proがとにかく便利で、他のツールをインストールせずともすぐにMendix開発に取り込めます。
##### 悪い点
**日本語の情報不足**：Mendixに関する日本語でのリソースが少なく、公式ドキュメントやフォーラムでの情報を得るのに苦労した点がありました。
→こちらに関しては、ブラウザの翻訳機能や生成AIなどを駆使することで対応致しました。
### どんな人に向いているか？

開発未経験の方でも、簡単なアプリ作成が可能です。

ただ、複雑な処理の開発に関しては、プログラミング経験がある方のほうが有利に働くことはあると思います。

条件分岐や反復処理などの基礎的な概念さえ持って入ればすぐに使いこなせるようになると思います！