入会4年目の拡張機能満載の有料App Inventor2サービス「AppyBuilder」の定期アップグレードで、追加されたのがFTPとFileコンポーネント。
[AppyBuilder][Hossein Amerkashi’s Blog(Hossein社長ブログ)]
この2つのコンポーネントを組み合わせれば、もしかしてあの問題が解決出来るかも・・ 🙄
AppyBuilderで自作したハンディーターミナルアプリの欠点の一つが、オフコンの1万行オーバーの商品マスターインポート処理。
これがとっても不安定で頻繁にエラーが起きるんです:cry:
その理由は下の2つのシステム的制約!
「SQLiteのbulk importは1ファイル最大500レコード」
「bulk importファイルは、WEBコンポーネント経由でのみ読み込み可能」
今動いてるアプリの仕様は、WEBコンポーネントで500行のbulk importファイルをダウンロードしながらinsert文を実行!
これを1万数百行分、FOR文で繰り返しています。
すると、その途中「ダウンロードが追いつかない」「INSERTが追いつかない」などの問題が発生しエラーが起きます!
CPU処理速度が早く、ローカルディスクへのI/O速度が早い高級スマホならエラーは起こりにくいが、2万円前後の安い中国製スマホだと処理速度不足でエラーが起きちゃうんです:-o
その上で、無線LANの電波の強さでもエラーになるし、マスターデータ公開用WEBサーバを動かすパソコンの処理速度が遅くてもエラーになる。
今、WEBサーバとして使えるのが社内最強である僕のCore i5パソコンだけ!
一世代前のパソコンだと、アプリ側で「WEBサーバが返事をしない」エラーが頻発します。
全てが最速で無ければ安定しない「マスターbulk import機能」を何とかしなければ・・・・・🙄
で、考えました 😎
賢い「AppyBuilder」のFileコンポーネントにはZIPファイルの解凍機能も有る!
ならば、こんなことは出来ないか?
1:30ファイルのbulk importファイルを、まず1個のZIPファイルに圧縮。
2:FTPコンポーネントで、そのZIPファイルをAndroid端末内にダウンロード。
3:Fileコンポーネントのunzip機能で、30個のbulk importファイルを指定フォルダーに解凍。
4:FORでファイルの数だけループしながら、SQLiteコンポーネントでマスターデータをbulk import。
で、作ってみたのがこのプロトタイプ。
操作画面で「getFTP」ボタンを押すと、FTPコンポーネントでZIPファイルを端末にダウンロード。
その次に「unZIP」ボタンでZIP解凍させると、2つのbulk importファイルで表れました!
「execBULKinsert」ボタンを押すと、解凍されたbulk importファイルを読み込みSQLを実行!
確認の為に、「SQLselect」ボタンでデータベース内を確認すると、無事に4行(=1ファイル2レコード☓2ファイル分)のレコードが登録出来てました!
これだけ確認できれば、ZIP+FTP版マスターインポートが作れる目処が立ちました。
この仕組みが完成すれば、今は出来ない社外でのマスターインポートも出来るようになる!
さてと、後は僕が実行に移すだけか・・・・・・ 🙄
やれやれ、またあの巨大化(=肥大化)したアプリに追加の機能を加えることになるのね!
僕は果たして無事に作り込めるんだろうか?
いじり過ぎてアプリ自体を壊してしまわないか心配でなんです。