入会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。

で、作ってみたのがこのプロトタイプ。
マスターインポートの安定化(webget→ftp)

操作画面で「getFTP」ボタンを押すと、FTPコンポーネントでZIPファイルを端末にダウンロード。
マスターインポートの安定化(webget→ftp)

その次に「unZIP」ボタンでZIP解凍させると、2つのbulk importファイルで表れました!
マスターインポートの安定化(webget→ftp)

「execBULKinsert」ボタンを押すと、解凍されたbulk importファイルを読み込みSQLを実行!
マスターインポートの安定化(webget→ftp)

確認の為に、「SQLselect」ボタンでデータベース内を確認すると、無事に4行(=1ファイル2レコード☓2ファイル分)のレコードが登録出来てました!
マスターインポートの安定化(webget→ftp)

これだけ確認できれば、ZIP+FTP版マスターインポートが作れる目処が立ちました。

この仕組みが完成すれば、今は出来ない社外でのマスターインポートも出来るようになる!

さてと、後は僕が実行に移すだけか・・・・・・ 🙄

やれやれ、またあの巨大化(=肥大化)したアプリに追加の機能を加えることになるのね!
僕は果たして無事に作り込めるんだろうか?
いじり過ぎてアプリ自体を壊してしまわないか心配でなんです。

(176 views)

コメントを残す

メールアドレスが公開されることはありません。