Modern DevOps with FileMaker ｜ローコードツール(FileMaker)でDevOps

本記事は、Claris Engage 2020 Modern DevOps: Making the Switch  (https://www.youtube.com/watch?v=Sk23B6rvPZo )をもとに作成しました。
# はじめに
ローコード開発ツール「FileMaker」を使用してDevOpsを実現する方法を記載します。
<img width="700" alt="未来" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/184509/0bc6a9bc-fd1e-f813-1155-987e66a02ad4.png">

# FileMakerとは？
今流行のローコード開発ツールの１つです。
業務担当の方でも高速で業務アプリを開発でき、導入した月から業務が変わる夢のツールです。
詳細は公式ページをご覧ください。(https://www.claris.com/ja/)


# DevOpsとは？
>DevOpsは、ソフトウェア開発手法の一つ。開発 (Development) と運用 (Operations) を組み合わせたかばん語であり、開発担当者と運用担当者が連携して協力する（さらに両担当者の境目もあいまいにする）開発手法をさす. by Wikipedia

DevOpsでは無い時は、運用担当者が要件定義にて意見を言い、開発者が設計→開発→テストと行った後に運用担当者がテストを行なっていましたが
DevOpsでは、分割された機能ごとにリリースし、運用者からのフィードバックを高速で得ます。

システム開発において、完璧なものを見せるのではなく、プロセスを共有していく　今どきな開発手法です。

# FileMakerで行うDevOpsの概要
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/184509/c9df44cf-b24e-a706-c514-9397f58c3a0a.png)
FileMakerのファイル（.fmp）にはデータとコードの情報が一緒に保存されています。
他のプログラム言語のようにデータ部分とコード部分が別れていません。

FileMakerでDevOpsを行うには、この複雑なファイルを品質を落とすことなく機能を速く提供することが必要です。

# FileMakerでDevOpsを行う方法
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/184509/b7c78d2e-a78d-d20a-440a-68a9d423b2e4.png)
上の図のように開発→テスト→デプロイ（機能を提供）→モニター→計画　という流れを速く品質を落とさずに実施する必要があります。

## 自動テストと自動デブロイ
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/184509/f18facd8-e497-9ad2-3dae-4e0c58ec1022.png)
開発→テスト→デプロイ　を高速化するためには
テストとデプロイを自動化する必要があります。

テストとデプロイを自動化するためにはコードのバージョン管理が必要です。

### バージョン管理
バージョン管理とは
>ソフトウェアソースコード・ドキュメント・画像・音楽など、様々な電子ファイルは段階を経て編集される。編集の過程で履歴を保存しておけば、何度も変更を加えたファイルであっても過去の状態や変更内容を確認したり変更前の状態を復元したりできる。バージョン管理システムの基本的な機能は、このファイルの変更内容・作成変更日時の履歴保管である。

ソースコードのバージョンを管理して、戻したい時にもとに戻したりすることです。

FileMaker以外ではコードは英数文字で記述されています。
しかし、FileMakerはバイナリで保存されているため一般的なバージョン管理システムではそのまま管理することができません。

### FileMakerでバージョン管理を行う方法
XMLで保存を行い、XMLファイルをバージョン管理します。
変更の反映はApp Upgrade Toolで行います。
詳細は別記事にて解説します。

## 自動テスト
テストとは、開発を行なった後に、要件通りの成果物が作成できたかを確認する行為です。
この世には　手動テストと、自動テストの２種類のテストがあります。
・手動テスト：名前の通り、人間がポチポチとシステムを動かして動作を確認します。
FileMakerの開発において広く使用される手法です。
・自動テスト：一度テストを設定すると、何度でも自動でテストを行うことができます。
修正時に既存のテストを自動的に実行することにより、予期せぬ動作バグを減らすことができます。

FileMakerで自動テストを行うには、スクリプトを使用してカスタム関数をテストします。
カスタム関数に想定される入力と出力を設定し。その通りに動かない場合はエラーを通知するスクリプトを作成します。
詳細については別記事にて紹介します。

## 自動デプロイ
デプロイとは、開発したシステムを公開し、ユーザーが使用できる状態にすることです。
FileMakerのデプロイ方法には下記の方法があります。

- ライブデプロイ：本番環境を直接修正
- マニュアルデプロイ：開発環境で行った編集をメモしておき、本番環境に手作業で反映
- データ分離モデルデプロイ：データとインターフェースでファイルを分割して開発し、インターフェースファイルのみデプロイ。計算フィールドは手動で再設定が必要
- インポートスクリプトデプロイ：データをインポートするスクリプトを作成して反映
- Data Migration Tool：https://community.claris.com/ja/s/article/New-FileMaker-data-migration-tool
- App Upgrade Tool：https://help.claris.com/en/app-upgrade-tool-guide/

### 自動デプロイ導入の流れ

1. 手動デプロイ：手動で上記手法を使用してデプロイ
1. コマンドでデプロイ：コマンドでデプロイ
1. 完全自動デプロイ：ツールなどを使用して自動的にデプロイ

自動デプロイの詳細については別記事にて紹介します。

## デプロイしたシステムを監視する方法
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/184509/0cac7a30-db73-4fdb-33fd-aeef9cdc0dea.png)

システムをデプロイして終了ではダメです。気付いたらシステムが停止していることもあります。システムを関しし、何かあった時に対処できる仕組みを作りましょう。

デプロイしたシステムが正常に稼働しているか監視するにはZabbixがおすすめです。
claris公式の導入ガイドが[こちら](https://community.claris.com/ja/s/article/FileMaker-Server-%E3%82%84-FileMaker-Cloud-for-AWS-%E3%82%92%E7%9B%A3%E8%A6%96%E3%81%99%E3%82%8B%E3%81%9F%E3%82%81%E3%81%AEZabbix%E3%81%AE%E4%BD%BF%E7%94%A8%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6%E3%81%AE%E7%99%BD%E6%9B%B8)に準備されています。　
zabbixの使用は別記事で紹介します。

また、Usage [Listeners](https://community.claris.com/en/s/question/0D53w000056WMz5CAG/usage-listeners-ideas-group)もおすすめです。

## 次の計画を立てる方法
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/184509/6d445ce7-3414-225e-c1a2-a6c1cf89bb46.png)

システムをデプロイして運用して終わりではありません。
DevOpsではここから次の改善につなげる必要があります。
 
元動画ではJiraを使用して計画管理を行っています。
Jiraの使用方法については[こちらの記事](https://qiita.com/navitime_tech/items/602e60c41c036d8eae97)をご覧ください。

# まとめ
ここまででDevOpsの流れとFileMakerでの実現方法、各工程で使用するツールについて紹介してきました。
あまりに広範囲となったため、複数の記事に分割して紹介することにしました。
今後各ツールを実際に動かす方法を記事で紹介予定です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/184509/7bed388f-d779-bfe2-e4de-5639cd89cb23.png)