Mendixとエンジニアのお話〜1章：Mendixとの出会い編〜

# こんな記事を書いていきます
Mendixという開発ツールに触れる機会がありましたので、自分が覚えた知識の備忘録やメモを残しておこうと思い、筆を執りました。
ちなみに筆者は、新卒時デザイン事務所の内定を急に蹴って、新卒から未経験でIT業界に飛び込んだ破天荒です。
ずっとバックエンドエンジニアとして設計・開発に携わっており、初めてMendixという本格的なローコードツールを触りました。
プログラミング初学者の方、これからIT業界に入るぞ！という方にも伝わりやすいよう、専門用語はなるべく使わないことを、ここに誓います。（多分無理）
また、普段自分がどんなことを考えながら業務をしているか、などの個エンジニアのマインドなどを綴っていきたいなと思っています。真似できる部分がありそうだったら是非真似していただき、参考にならない部分があったら反面教師にしてください。
専門用語が飛び出してきたら、都度注釈を挟みながら、丁寧に解説していければと思います。

# Mendixとはなに？
ローコードアプリケーション開発プラットフォームです。（言ったそばから用語の嵐）

:::note
★開発
IT業界でいうと、「IT技術を使用した仕組み作りのこと」
IT技術を駆使して様々な仕組みを構築し、業務効率化を図ることがシステム開発の目的です。
例えば、毎日出勤や退勤の記録をする勤怠管理システムとかが想像しやすいでしょうか。
出勤、退勤の時刻記録を行うことで、業務時間や残業時間の計算、毎日記録していれば、月の合計値なんかも自動で表示してくれますね。

★ローコード
可能なかぎりソースコードを書かずに、迅速に開発する手法やその支援ツールのこと。
ソースコードは下の画像のような、呪文みたいなものです。（全然関係のないコードです。）
![LowCode](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3717305/6a7617a0-8e5b-dccb-1477-1b7ba1210768.jpeg)
システムやアプリケーションの開発において、「どんな動き（処理）をさせるか」を機械が理解できるように書いた文章のことを指します。
『ローコード』はできるだけ呪文を書かず開発を行う手法やツールのことになります。

★プラットフォーム
IT業界では、ITサービスやシステム、ソフトウェアを動かすのに必要な土台・基盤のことを指します。
:::

つまり、Mendixは、
**可能な限りソースコードを書かず開発を行うためのツールです。**

# Mendix君について知ろう
ざっくり、Mendixはローコードで開発を行うことができるツールですね〜ということがわかりました。
もっと雰囲気を知るために、公式サイトを覗いてみましょうか。
▼[Mendix日本語版ページ](https://www.mendix.com/ja/)
![MendixJP](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3717305/d9a38311-1656-925f-4505-ceb566a47898.png)
おしゃれだ！！
本社はオランダなんですね。かなり多くの国に波及しつつあるようで、今後日本での導入も増えそうだなと思いました。
カンパニーページもなんとおしゃれなこと。

▼[Mendixカンパニーページ](https://www.mendix.com/company/)
カンパニーページに『Mendix』の名前について記載がありました。
![MendixCompany](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3717305/12e064fc-c4a9-9e3d-021e-9eb288a0c1d2.png)
こういったツールの誕生背景や意味を知ることができると、今から使用するツールに対して愛着が湧いてくるので、使用するツールに対しては必ず事前に情報収集をするようにしています。

:::note
ツールを深く知り、理解しておくと、
・どんなことが可能か(What)
・どうすれば可能か(How)
などをザッと辺りをつけることができるようになるので、業務の効率や質が少なからず向上します。
そういった業務の仕方ができる人は、開発現場などでかなり重宝されます。
「頼れる・信頼できる存在」になることができるのでオススメです。
:::

# Mendixはこんなツール
Mendixで開発をする際は、主に3つの軸があります。

- ユーザインターフェース(画面)を作る
![Mendix画面_sample](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3717305/0f85d646-ff5d-ab87-eebe-4f506e6b4098.png)

::: note
★ユーザーインターフェース
ユーザー（利用者）と、製品・サービスをつなぐ接点（インターフェース）のことです。
略してUIと呼ばれます。
:::

- ビジネスロジック(マイクロフロー)を作る
![Mendixマイクロフロー_sample](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3717305/2b0d61f7-84c3-be28-4a73-0f8e55392cf5.png)

::: note
★（ビジネス）ロジック
システムとしての実際の様々なお仕事（処理）をする部分です。
例えば、ショッピングサイトなどで買い物をする時、ログインのためにユーザー名やパスワードを入力しますね。ユーザー名やパスワードを入力するのはUIの役割、ユーザー名とパスワードが合っているか照合する、などのUIからは見えないような処理がビジネスロジックの役割となります。
Mendixでは「マイクロフロー」と呼ばれます。
（余談）ユーザーの目では見えない、システムの裏側で処理を行うことから、バックエンドとも呼ばれ、このようなロジックの開発などを行う人をバックエンドエンジニアと呼びます。自分もバックエンドエンジニアとしてゴリゴリに開発をしていた人間です。
:::

- データ構造(ドメインモデル)を作る
![Mendixエンティティ_sample](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3717305/1b4081d7-9541-0930-f859-0ca7dec331b0.jpeg)

:::note
★データ
データベース、略してDBとも呼ばれます。
かなりざっくり言うと、データを管理するための入れ物のことです。
引き続きショッピングサイトの例でイメージすると、
①UIでログインのためのユーザー名、パスワードを入力する
↓
②ビジネスロジックでユーザー名、パスワードが合っているか照合する
では、②でユーザー名とパスワードを照合する際に何と照合するのでしょうか？
はい、ショッピングサイトで登録したユーザー名とパスワードですね。
登録したユーザー名やパスワードをはじめとする情報を保持しているのが、データベースです。
データ構造というのは、サンプルの画像で言うと「Customer」の大きな枠の中に、Name、ContractInfo、Descriptionと項目が入っていますね。
このように、どの情報を持つか、というデータの構造のことをデータ構造と言います。
またまたショッピングサイトの例に考えてみましょう。
「お客様情報」として大きな枠を作るとき、どんな情報が必要になるでしょうか。

・ユーザー名：ログインの情報として使用する
・パスワード：ログインの情報として使用する
・メールアドレス：商品の注文完了メール送信などで使用する
・住所：商品の発送で使用する
・お名前：商品の発送で使用する
...etc
ショッピングサイトとしては、上記のような情報が必要になりますね。
:::

他にも細々とした要素は多いのですが、Mendixでの開発は大きく分けて3つの軸でできています。
![MendixBase_sample](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3717305/3bed2ef4-b892-44a0-438d-d16932faed2d.png)

# 1章まとめ
Mendixというツールの概要について触れました。
既にIT業界に浸っている方には「こんなツールもあるんだな」と思っていただければ幸いです。
これからIT業界に入るぞ！という方にも「こんなツールがあるんだな」と思っていただければ幸いですし、前述した通り、真似できそうな部分があれば真似して、参考にならない部分は反面教師として、これからの成長材料にしていただければと思います。
次はもう少しMendixでの開発の話と、エンジニアチックなお話をできたらいいなと思っています。
未来の自分へ：頑張って5章くらい書いてください。

# 参考ページ
- Mendix公式HP：
https://www.mendix.com/ja/

- Mendix カンパニーページ：
https://www.mendix.com/company/