Airtableで予約管理アプリを作ろうとしたらNoCodeの限界を感じた話
どうも、エンジニアのgamiです。
最近、とあるスポーツをやっている知り合いから「練習器具の予約管理アプリを作ってくれる人を探している」という相談をされました。
詳細はボカしますが、その練習器具は高額で複数の団体に属する数十人が共同で使うらしく、その予約管理が大変だからデジタル化したいという趣旨でした。話を聞いてみると予算が全然無いらしく、受託開発をやっている会社に開発を依頼するようなお金は払えないとのこと。
その話を聞いた僕は、「簡単な予約管理アプリならAirtableの無料プランとかでも作れるのでは?」と思い至り、Airtableを使ったNoCodeでの開発を試してみることにしました。しかし実際に進めてみると、一部の要件をAirtableでは実現できないことがわかり挫折しました。
僕は以前、『NoCodeという幻想』という一瞬インターネット界隈で話題になったnote記事を書いたことがあります。そこで書いたNoCodeツールに対する問題意識を、今回は実地で体験することができました。
Airtableで実現できたこと
今回知り合いから相談された「練習器具の予約管理アプリ」の主な要件は、次のようなものでした。
管理者が練習器具を登録できる
利用者が練習器具の予約をできる
利用者が練習器具の予約状況を把握できる
利用者が練習器具に対してコメントできる
最初に要件を簡単に聞いたときは、Airtableで実現できるかもしれないと考えました。
Airtableは、GoogleスプレッドシートやNotionのような使用感で業務アプリケーションを構築できるNoCode/LowCodeプラットフォームです。
スプレッドシートのシートを追加していくように、「練習器具」や「予約」といった概念を表として新しく追加していくことができます。複数の表のレコード同士を紐付けるのも可能なので、たとえば「予約1は練習器具Bに対する予約である」みたいなことを簡単に表現できます。
関数を組み合わせて簡単な計算をすることもできるので、たとえば「予約日が未来の予約が存在する場合のみ練習器具のステータスを "予約済み" にする」といったことも実現できました。
さらにAirtableの機能を使うと、ある表に新しいレコードを追加するためのフォーム画面を作ることもできます。新しい「予約」を追加するフォームを作って公開すれば、利用者に練習器具の予約登録をしてもらうこともできるわけです。
ここまで紹介した機能は、2022年7月現在、なんとAirtableの無料プランで全て利用することができます。予算が厳しいプロジェクトにも優しい料金設定です。
Airtableで実現できなかったこと
依頼された「練習器具の予約管理アプリ」をAirtableを使って安く構築できたら、僕自身もAirtableの経験を積めるし、価値あるアプリケーションを生み出せるし、みんなハッピーだなと思っていました。まず僕はその知り合いに、「Airtableというツールを使ったらできるかもしれないが、まずは詳細な要件をまとめて送ってほしい」という旨を、いくつかの質問事項と一緒に伝えました。
しかし、返ってきた要件を見てみると、Airtableでこの予約管理アプリを実装するのは難しいことがわかってきました。たとえば次のような要件が上がってきました。
練習器具の予約は時間帯単位で、1日に複数の予約が入るケースもある
利用者は利用したい時間帯に空いている練習器具を検索できる
管理したい練習器具の数は50〜80個程度
利用ユーザー数は、管理者20名、利用者100名程度
特に厳しかったのは、予約の単位です。当初の僕は、予約というのは1日単位であり、ある練習器具はその日に予約が入ったら丸一日使い続けられるものだろうと想像していました。しかし実際には時間帯別に予約ができて、たとえば "2022年07月25日09:00〜12:00" と "2022年07月25日13:00〜17:00" に予約が入るといったこともあるようでした。
色々と試してみた結果、日付+時間帯に紐付く予約をAirtable上でうまく表現するということはできないということがわかりました。Airtableにもデータをカレンダー上に表示したりタイムラインで表示したりする機能はあります。しかし、これらの表示はあくまでも日付単位であり、日付+時間帯まで表現するUIは無いように見えます。
一言で「予約管理」と言っても千差万別です。予約可能な時間の単位が「1日単位」か「時間帯単位」かが違うだけで、考えなければいけないこと、実現しなければいけないUIなどの複雑性が鬼のように変わります。システム開発大変ですね。
ということでこの辺りから僕はAirtableを使うことを諦め、「Google Workspace契約してGoogleカレンダーの会議室予約機能とか使ってやればいいのでは?」みたいなやさぐれた気持ちになっていきました。
業務系SaaS、NoCode開発プラットフォーム、独自開発
僕はAirtableを始めとするNoCodeやLowCodeを謳ったツールの価値を全否定したいわけではありません。僕自身、便利に使っているツールもたくさんあります。今回話題にしているAirtableについても、よりシンプルなユースケースであれば目的に合った業務アプリを作れたかもしれません。
ここで問題にしたいのは、NoCodeツールの多くは拡張性に限界があるということです。
今回は早めに要件を洗い出して技術的な検証を事前に済ませることで「この業務アプリはAirtableでは開発できなそう」ということがわかりました。もし仮にAirtableの拡張性を過信して前のめりに開発案件を承諾してしまっていたら、必要な要件を実現できないことが後からわかって謝罪につながっていたかもしれません。
もちろんNoCodeツールに限らず、ソフトウェア開発案件においては事前の要件定義や実現可能性検証がとても重要になります。一方で、独自にクラウドインフラ上にサーバーを立ててプログラムを1から書いていけば、大抵の要件は時間をかければ実現できます。それに比べてNoCodeやLowCodeを謳う開発プラットフォームの場合は、開発工数を少なくできる代償に、拡張性の問題から「どう頑張っても実現できない」という要件が発生しやすくなります。こうした特性を踏まえた上で、開発基盤の選定を慎重に行う必要があります。
今回の「練習器具の予約管理アプリ」については、開発予算をほとんど捻出できない事情もあって、最終的には「似たような機能があるSaaSを無理やり使ってみる」という判断に落ち着きました。
とある業務をITシステム化したいとき、現代においては主に3つの手段があります。
既存の業務系SaaSに業務を合わせながら使う
NoCode開発プラットフォームを使って開発する
独自開発する
これらを拡張性とコストの2軸で整理すると、次のようになります。
この図を見てもわかるように、NoCode開発プラットフォームが担う領域は業務系SaaSと独自開発の間にあります。
特定の業務や業界に特化したSaaSプロダクトが爆発的に増えている昨今、NoCode開発プラットフォームが担う領域は業務系SaaSにどんどん食われています。またエンジニアの開発業務を楽にするSaaSやPaaSも増え続けていることで、独自開発のコストも徐々に下がりつつあります。そんな中で、立ち位置が中途半端なNoCode開発プラットフォームの肩身はどんどん狭くなっている印象があります。
もちろん世の中のIT投資がどんどん加速し、開発されるITシステムの数が増え続けている現代において、NoCode開発プラットフォームを使うべき案件の絶対数は増えているでしょう。しかし、NoCode開発プラットフォームを採用することが最善手であるような状況はこれから減っていくように見えます。こうした現状を見れば、「NoCode開発プラットフォームを採用して開発に着手しよう」という選択に対してはかなり慎重になるべきだと僕は思います。今回はその思いを強くさせるような体験ができました。
とはいえまだまだ過渡期ではあるので、あらゆる業務をカバーできるくらいに業務系SaaSの数が爆発的に増えるか、NoCode開発プラットフォーム自体の進化によって拡張性が圧倒的に上がることを願っています。
ここから先は
仕事を楽しくするデジタルリテラシー読本
【初月無料】デジタル時代の歩き方について考えたことを発信します。ソフトウェアの時代とは何か。エンジニアの頭の中はどうなっているのか。NoC…
サポートをいただけると、喜びドリブンで発信量が増えます!初月無料のマガジン『仕事を楽しくするデジタルリテラシー読本』もおすすめです!