Log in to leave a comment
No posts yet
コードを一行も書かずにダッシュボードを作れる時代だと言われますが、実際のビジネスはそれほど甘くありません。ボタンを数個配置しただけでERPが機能するわけではないからです。一人開発者やCTOが外注費を節約するためにAppsmithを選択したなら、その次の悩みは必ず「このスパゲッティコードをどう管理するか」へと繋がります。ポルトガルのユーティリティ企業EDIAは、ロジックのモジュール化戦略を通じて、コラボレーションプラットフォームの構築期間を9ヶ月から2ヶ月に短縮しました。単にツールを使うのではなく、構造をしっかり整えてこそ、このようなスピードが生まれます。
ウィジェットのプロパティ画面にJavaScriptを直接書き込む方式は、今は楽でも後で必ずしっぺ返しを食らいます。アプリが少し大きくなっただけで、どこに何のロジックがあるか分からなくなる技術的負債が積み重なるからです。解決策は簡単です。すべてのロジックをJS Objectsに集約し、ウィジェットはそれを呼び出すだけの構造にすることです。
formatDate や validateInput のような共通関数を定義した後、API呼び出し部で {{ Utils.formatDate(Api1.data.date) }} のような形で呼び出します。新規顧客を登録しながら同時に決済APIを叩き、メールまで送信するような複雑な作業は、順番が狂うと大惨事になります。Appsmithの run() や showAlert() はPromiseを返します。これを適切に制御しないと、「決済は失敗したのに顧客登録だけ成功する」というデータ整合性の崩壊を経験することになります。
async createOrderWorkflow() 関数を作成し、各ステップに await を付けて実行順序を強制します。全体を try-catch で囲み、エラーが発生した場合は showAlert で運用チームに正確な失敗原因を伝えます。現場のスタッフはシステム設計者ではありません。誤って削除ボタンを押したり、入力途中でウィンドウを閉じたりすることはよくあります。Appsmith Storeはブラウザのローカルストレージを使用して、ページをリロードしてもデータを維持してくれます。特に storeValue の persist パラメータを活用すれば、非常に優れた安全装置になります。
storeValue("userRole", response.role) で保存します。削除ボタンの isVisible 属性には {{ appsmith.store.userRole === 'admin' }} を入れ、管理者だけに表示されるようにします。入力フォームには onTextChanged イベントごとに自動保存ロジックを組み込みます。セキュリティやデータ主権のためにセルフホスティングを選んだなら、次はサーバー管理という現実的な問題が残ります。Retoolのビジネスプランを25人で使うと毎月約90万ウォン(約10万円)かかりますが、Appsmithコミュニティエディションを自分で構築すれば、サーバー代の3万ウォン(約3,500円)程度で十分です。その代わり、バックアップは自分で管理しなければなりません。
appsmithctl を活用した自動バックアップスクリプトを運用してください。docker-compose exec -it appsmith appsmithctl backup コマンドを毎日深夜に実行するよう登録します。生成されたファイルはAWS S3などの外部ストレージに転送します。SSLはNginx Proxy Managerをリバースプロキシとして接続し、Let's Encryptを適用すれば解決です。内部ツールのデザインに命をかける必要はありませんが、ボタンの色がバラバラだと使う側は不安になります。Appsmithのグローバルテーマ機能を使えば、ブランドカラーとフォントを一括で合わせることができます。標準ウィジェットで足りない機能は、外部のJavaScriptライブラリを読み込んで使えばいいだけです。
date-fns のような外部ライブラリをインポートしてください。StrapiはAppsmith導入後、運用ツール構築のスピードを12倍も上げました。一人開発者やCTOにとって最も貴重なリソースは「時間」です。ロジックをモジュール化し、バックアップを自動化するこの構造に従うだけで、外注なしで一人で堅牢なERPを運用することが可能になります。コアバリューに集中するための時間を稼ぐことこそが、真の技術戦略です。