chakokuのブログ(rev4)

テック・コミック・ごくまれにチャリ

NoCodeのアプリ作成ツール、AppSheetは易しいか?

要約:C/Java/Python等、手続き的なプログラミング言語で実装をしてきた人間がNoCodeツールを使ってロジックが含まれるアプリを作るには、NoCode独自の記述方法を理解する必要があると思う*1

詳細:AppSheetはコードが不要と言われいてる。名簿やアルバム程度のビジネスロジックが含まれないアプリならGUIでボタンを数回押すだけでそれほど苦労なく作れると思う。一方で、在庫管理や、売上管理システム等、集計等、ビジネスロジックが含まれるアプリを作ろうと思うとどうやってアルゴリズムを実装したらいいのか考えつかない*2。Sheetと関数の組み合わせでアルゴリズムを実現するためのノウハウは必要と思う*3。それに、、Sheetの設計はDB正規化のノウハウが必要と思う。全部入りのデカいSheetを作ってしまうと、後から改修や拡張が困難になると思う。

背景:技術支援のような話で、集計システムの相談を受けて、Python/Flask/SQLiteで組める目途が立ったけど、細かい実装部分が多くて、作る方にとっても苦労が多いと思われ、AppSheet等のNoCodeツールだったらどう実装できるのかを調べています。が、、AppSheetでアルゴリズムを書こうと思ったら、あらかじめ用意された関数を使い、どちらかというとセルに対する宣言的な書き方が前提となる(Exceのマクロか、SQLのような関数)。自分は昔から手続き的なプログラミングが染みついており、宣言的なプログラミングが分かっていない。またDB(SQL)に対して深い見識がないので、SQL文でビジネスロジックというか、算出アルゴリズムをさくっと書く力がなく、AppSheet的な実装ができず止まっています。手続き的なことがやりたかったら、GASを使えということなんでしょうが、、できるだけAppSheetで完結するのが理想の形と思われ、まだまだ理解が足りないと思っています。AppSheetのサンプル集があるのでそれをよく見てどう実装するのが良いのか、ベストプラクティスを学ばないと、泥臭い、手間ばっかりかかった実装になりそうな予感がする。

■追記
これまでプログラミングに時間を使ってきたが、自分が作ったものは、どちらかというと一直線に動作し、ほとんどユーザとの対話操作がないアプリであった。対話操作が入ると途端に処理複雑になり、入力が中断した場合の対応、複数の項目の整合性を取るチェック機構、一旦登録した値の編集、取り消し、削除、そういったありとあらゆる末節??なコードをテンコ盛りで作る必要がある。さらに、混乱させないためのメニュー体系や、遷移も必要だ。そして、認証認可も必要だ。コアなビジネスロジックの実装は言うまでもないが、「混乱なく使えるね」と言ってもらえるためには、対話操作のための必須機能がテンコ盛りになるのであった。

■結論
AppSheetでアプリを作る際、売上入力や帳票作成等、テンプレート+αで実現できるのであれば、非常に楽。一方、大量発注で割引とか、販売条件とか、利用者独自のビジネスロジックが入ってくると難易度が上がる。ビジネスロジックをAppSheetの範囲で実現しようとなると、関数を駆使して実現する必要があり、手続き的な実装に慣れている人間には難しい。SpreadSheetのマクロ用関数群で処理を書く必要がある。AppSheetの関数群では表現しきれない複雑な処理の場合(あるいはスキル上、関数的に実装するのが慣れない場合)、Google App Scriptを使って手続き的にロジックを組むことになる(と理解)

*1:NoCodeを謳うだけだけあって、Code記述はシステムの奥の方(仮想カラムやView、Action等)に収まっている。しかも関数プログラミングな印象

*2:特に、、ビジネスフローや、入力結果がビジネスルールを満たしているかどうかを判定する方法、複数のシートから条件付きで情報を集めるとか

*3:Excelマクロを使いこなせる人ならできるのかも