コード全然打てないけど、オンライン家庭教師の業務システム作ったよ〜

#概要
小さなオンライン家庭教師会社で働いています。コードもほとんど打てなかった私ですが、Filemakerを使って業務システムを作れました。未経験スキルなしでもローコード開発ならこんなものが作れるよ〜という参考になれば幸いです。

#なぜ作ったか
オンライン家庭教師の事業を立ち上げて以来、様々な業務を手探りでやってきましたが、作業効率の悪さが無視できなくなってきました。特に経費処理については生徒への請求や先生への給与支払いの管理をエクセルで行っており、顧客が少ないうちはなんとかなっていましたが顧客が増えるに従い教材費などの個別対応やチェックにかかる工数の増加が問題に。

また、生徒や先生の主な個人情報管理はwebデータベースを使っていました。
経費処理用エクセルとwebデータベースで二箇所に個人情報を置いていたため、何か情報の変更があった場合更新漏れが発生する危険があり、こちらもなんとかしなくてはいけない状況。

よって、これらの問題を解決するために必要だったのが生徒先生の管理と経費処理を一元化した業務システムでした。

#Filemakerとは

しかしそのときの私はドットインストールでHTMLとCSSをこなした程度のスキルしかありませんでした。そこで今回はローコードでシステム開発ができる『Filemaker』というツールを利用することにしました。

FilemakerはGUIベースでのシステム開発ができるソフトウェアです。クラウドサービスを使えばユーザー間でデータベースを共有することも可能。


実際に使ってみた感触ですが、本当にコードの知識が一切いりません。
システムのUIもドラッグ&ドロップで作成することができます。処理を行うときは、コードのブロックを組み合わせればOK。その後コードを学習してみてわかったことですが、Filemakerのコードは「;の打ち忘れ」のようなミスがないのでエラーが圧倒的に少ないです。

同じくローコード開発の選択肢としてAccessも検討しましたが、Filemakerよりも学習コストが高そうだったのと、システムの共有に手間がかかりそう（サーバーの用意が必要）だったのでFilemakerを選びました。

Filemakerの場合、FilemakerCloudというクラウドのサービスを利用することで、メンテナンスやバックアップといった作業を自分でやる必要がありません。この辺りは初心者がやるにはかなりハードルが高い分野なので、全部丸投げできるのはかなり魅力的でした。

#制作について

制作期間は約３ヶ月。Filemakerの使い方やデータベースの基礎的な勉強に１ヶ月。実際に作ったのは２ヶ月ほど。

機能要件を洗い出すために、先生の面接や生徒対応、事務処理、経費処理といった業務を一通り経験しました。これは私たちの会社の規模感だからこそできたことだと思います。

社内の人とはいつでもコミュニケーションが取れるので、細部の設計は作りながら詰めていこう、と要件定義はゆるめにして作り始めましたが、今思えばデザイン、機能共にしっかり事前に考えておくべきでした。

というのも修正にかかる時間がとにかく膨大で、かなり工数を喰いました。「作りながら考える」は時間短縮にはならないことを学びました。実際には３日かかる修正でもシステムを知らない人からすれば「ボタンを一つ追加するだけだから１０分で終わるでしょ？」と思えてしまうのでバンバン要望が飛んできて要件定義の甘さを痛感しました。

面倒でもFigmaを使って見本を作り、事務の人に実際に動かしてもらって動線を確認して、作る前に要望を吸い上げていればよかったです。そっちの方が結果的に大幅に工数を減らせていたと思います。

#業務システムについて

![Untitled.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/898247/f8198ea7-51e6-c02e-f479-19c64e0e01ec.jpeg)

主な機能は以下の二つ
 -生徒、先生（ついでに社員）のデータベース
 -経費処理（生徒への請求計算、先生への給与計算、書類作成と送信）

##生徒、先生のデータベース
![_2021-07-18_205814.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/898247/4d9d7ca5-8569-35d1-fa1d-19ad837cdb48.jpeg)
↑生徒のデータベース
主に個人情報や現状の成績等を管理しています。この情報を元に指導する先生を探します。

![_2021-07-18_205849 (1).jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/898247/36974f6e-9d74-9504-c001-4655252cdd1d.jpeg)
↑先生データベース

主に個人情報、指導能力等を管理。
ホームページの応募フォームを通じて先生の登録情報が来るので、それらをまとめてCSVにしてインポートしています。登録された先生の中から生徒の希望条件を元に指導してくれる方を選びます。

担当先生が決まった場合、指導関係を設定します。ここで生徒の指導料金と先生の時給を入力しておくことで、指導時間から料金と給与が計算できるようになります。

##経費処理
![_2021-07-18_205948.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/898247/b3447abc-a92a-0b55-081a-e65983650ca9.jpeg)
![_2021-07-18_210532.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/898247/09d6ca8e-e8bf-38f6-c89a-6abda53d798f.jpeg)
↑生徒への料金計算
先生には指導報告書を毎月提出していただいています。そこに記載されている指導時間を入力すれば指導料金を計算してくれます。

![_2021-07-18_210600.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/898247/b9fa969c-db09-f7e8-6901-98e54a8605a6.jpeg)
↑請求情報も自動で作成、ボタン一つで請求書DPFが添付されたメールを送ります。一斉送信機能はまだ開発中です。

![_2021-07-18_210650.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/898247/025783ea-4e7e-d238-3887-ce7575018036.jpeg)
↑請求方法で口座振替を選択している生徒の請求情報を集計して、代行業者へ提出するための全銀データを作ります。作成されたテキストデータを提出すれば請求処理は終わりです。

![_2021-07-18_210107.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/898247/d6c08cea-d31f-0718-9534-e5e4b4c709a7.jpeg)
![スクリーンショット_2021-07-18_210420.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/898247/81ee4816-8fcc-e9c6-a5d6-89f715e527e7.jpeg)
↑先生への給与計算
生徒への料金計算同様、指導時間を元に給与を計算してくれます。
支払い明細も自動で作成、ボタン一つで詳細メールを送ります。こちらも一斉送信機能はまだ開発中。

#やってみて感じたこと
初めは小さいシステムを作るべきでした。

私はすぐにでも運用できなければ意味がないと思い、データベースと処理システムを同時開発しましたが、片方に変更を加えるともう片方にも修正が要るため運用できるようになるまで2倍の時間がかかった気がします。

まずはどちらか一方をしっかり動かせるレベルまで作り、その後でもう片方を開発するべきでした。

またFilemakerは誰でも簡単にシステムが作れるとはいえ、未経験の人が０から始めるのであればそれなりに大変です。基礎的なデータベースの知識なしにテーブルを作ることはできません。基礎の基礎とは言うものの、完全未経験の私からすればそれなりに難しいですし、それなりに勉強も要りました。

勉強のためにFilemakerの本も買って読んでみましたが、一番力になったのは公式のドキュメントでした。

[https://content.claris.com/fmb19_reg-ja](https://content.claris.com/fmb19_reg-ja)

使い方だけでなく、ちゃんとデータベースの基礎から説明してくれるためとてもわかりやすいです。とりあえず初級と中級をこなせば、初心者でも簡単なシステムなら自力で作れる実力が付くと思います。Filemakerを始めたいという方には強くお勧めします。

#今後の改善
恥ずかしながらAPIやSqlの知識がないため、このシステムではFilemakerの基本的な機能しか使えていません。APIを利用することで何ができるようになるのかもまだ理解できていないので、もっと他のサンプルを見ながらできることを探していくつもりです。

今一番ネックになっているのが指導時間の入力で、これが手作業になっているために時間がかかっています。指導報告書をネットから提出し、そのまま中の指導時間を抜きだすことができれば月末処理をシステム内で完結させることができるので、いつかは取り組みたいです。ちょっと難しそうですが。

また、今のところ内部の処理は「動けば良い」で作ってあります。機能要件を満たすスクリプトを考えるのに精いっぱいで負担の軽い処理を考える余裕はありませんでした。今後データが増えてきても対応できるよう処理を最適化する作業もやっていかなくてはいけません。

最後まで見ていただきありがとうございました！