_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/

◇ ふと気づけば秋空 ・・・・・・ 第729
☆モバイルオフィスの作り方 ★
Vol.0729

_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/

□ ついにOneDriveを試すーまだ途中
□ 楽しいサボのプログラミング講座ーその16

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
☆ ついにOneDriveを試すーまだ途中
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
前回の号は9月6日の配信で、あれこれと多忙で3週間空いてしまいました。
その間にはたくさんの出来事が・・・・・

◇ OneDriveの領域にコピーの途中
現在もまだ私どものファイルサーバーは会社のサーバー(Kotobuki3)とサテラ
イトオフィスのサーバー(HomeNas2)との間をDropBoxを介して同期していま
す。
これが現時点での真のサーバーです。

そして新しく設定したOneDriveの領域に会社のサーバー(Kotobuki3)の中でコ
ピーを行っています。

Kotobuki3\DropBox→Kotobuki3\OneDrive→OneDriveサーバー

コピー自体はもう2週間ほど前に終わっていますが、延々とOneDriveサーバー
への同期(アップロード)が続いていて、ほぼ大部分のファイルは同期できてい
ますが、まだ64,000個ほど残っています。そんなにたくさん!?と言われそう
ですが総数は270万個ですからもう残りちょっと・・・とはいえ、少なくとも3
週間前には始まっていたので約一ヶ月かけての同期です。

◇ OneDriveアプリ64は順調
以前もOneDriveの同期を試みたのですが、当時(3年ほど前)のOneDriveアプリ
ではファイルの名称やその他の制限で引っかかり、何度も断念しました。

その結果、同期に関しては当時は超強力だったDropBoxで行い、現在は社内の
二個のサーバーとDropBox間で同期が成立していてサーバーとして良好に使っ
ています。

でも、安全性はこれで確保できたとして、問題が無いわけではありません。
まず第一にファイル操作が遅い!

例えばこの領域(HomeNas2\DropBoxの傘下)に新しいフォルダーを作ろうとする
だけで数秒かかります。
きっとその瞬間にDropBoxは同期しようとするのでしょうがかなりの大容量の
サーバーの変更なので些細なことでも時間がかかります。

それと実態ファイルを持たない同期(そこにサーバーの全中身があるように見
えるが実際にはない)をDropBoxで別のPC(作業用のクライアント)でやってみた
ところ、時間もかかりましたがとんでもなく大きな領域を消費しました。

またメモリの消費も半端ではありませんでした。
(この点はOneDriveも大量のファイルになると同様で、現在の私のPCでは3.3G
のメモリを消費しています。16G搭載しているのでさほど問題にはなりません
が6Gとか8Gのメモリではちょっとしんどそうです)

でもほぼ同期が終わりかけている現在の状況でもOneDriveアプリ64は順調で、
あと数日で全部の同期が終わりそうです。


◇ OneDriveアプリでファイルオンデマンド
私の最終的な目的は自身の仕事用のPCでは”ファイルオンデマンド”で運用す
ることで、この状態ではサーバーの中身は全て見えており、ファイルとして操
作もできるのですが実際には自身のPCには何もありません。

https://support.microsoft.com/ja-jp/office/onedrive

・ 現時点の私のPCの状態
・ ファイル領域のサイズ            1.42 TB (1,569,738,235,447 バイト)
・ ファイルの数                        2,731,910
・ フォルダーの数                     89,904
・ デイスク上のサイズ                0.99 GB (1,069,527,040 バイト)

こんな感じで、会社のサーバーと同期のすんでいる270万個ほどのファイルは
全て見えていて操作も可能です。
でも実際に使用している容量は1Gほどで、本当のファイルの領域の大きさに比
べたら1/1400程度です。

これからこの領域(実際にはファイルはいない)を使って仕事を進めてみてどん
な不都合が起こるのかを試そうとしています。

巨大な会社のファイルサーバーを操作できるのですから1Gほどの領域はやむを
得ないとして、速度や出来ないことなどを検証するつもりです。
(同じことをDropBoxで実験したら8Gほどの領域を使いました)


DropBoxでもOneDriveでもクラウド上と自身の会社のサーバーのどれか最低一台
と実データレベルで同期していますから安全は保証できます。
後は各クライアントがどれだけ軽快にこれらのデータにアクセスできるかが見所
ですね。
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
☆ 楽しいサボのプログラミング講座ーその16
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
前回は二次元配列をご説明しました。このシンプルな配列の使いどころはとても
多いのですが・・・・
今回はさらにキーバリュー型の配列(連想配列)のご説明をします。

今回もサンプルプログラムの中に使っているものの説明です。
https://speedserve.sakura.ne.jp/MovileOffice/Sample2.html

◇ コードを入力したら顧客名や商品が出てくる・・・
たいていの業務システムではコードを入力するとほぼ瞬時に商品や科目などが
表示されます。
一体あれはどうしているのでしょうか???

例えば過日学んだ配列に格納したとしたらどうでしょうか・・・
商品の数が100個ほどなら0〜99までLoopしてコードが合致するデータを見つけ
たらよいのですが、もし20万個の商品があったとしたら・・・・

コンビニなどでバーコードを読むとすぐに価格や品名が出てきますが、コンビ
ニの商品点数はたぶん数十万では収まらないでしょうね。

そんなときに利用するのがキーバリュー型の配列変数です。

◇ 実際の使用例
変数の宣言は446行目で行っています。

var ItemList = {};

これで"ItemList"と言う名称のキーバリュー型の配列変数が出来ました。
一般の配列変数の宣言は”{}”ではなくて”[]”でした。よく似ているので間
違えないようにしましょう。

次にこの変数に値を格納するのですが、基本は次の通りです。

ItemList[キー] = データ;

この場合、キーは文字列であり、キーは重複できません。
もし重複して指定したら後の方で上書きされます。

実際には・・・・

453行目から・・・
ItemList["8111"] = "売上高";
ItemList["8211"] = "仕入高";
ItemList["8312"] = "運送費";

といった入力を行います。
そしてここに数十万でもよいのですが科目や商品を格納したら(コードは必ず
重複させない)次はその配列の呼出しです。

CuCode = "8111"
var CuItem = ItemList[CuCode];

これで瞬時にCuItemには"売上高"という科目名が返されます。
例え商品や科目が100万個あっても一瞬で返ってきます。

さらに格納の内容を”[品名,単位,単価]”とか言った配列であれば、

var CuItem = ItemList[CuCode][2];

で単価もすぐに参照できます。

◇ キーバリュー型の配列(連想配列)の使いどころ
商品マスターや科目マスターなどコードを入力して中身を参照するという使い
方がもっとも一般的なのですが実はもう一つ重要な使い方があります。

例えば一ヶ月の売上データの中から無重複の顧客コードを取りたいと言った場
合ですが意外とこれをプログラムすると高速でシンプルなプログラムになりま
せん。

でもキーバリュー型の配列のキーに顧客コードを格納すると、キーは決して重
複せず、1個だけになりますからすごくシンプルに無重複データがとれます。

◇ キーバリュー型の配列の特殊性
一般の配列はsort()で簡単に並べ替えることが出来ますが、キーバリュー型の
配列には基本的に並べ替えという概念はありません。

あくまでもたくさんの情報からキーにマッチするデータを高速で検索するため
のものです。
もし並べ替えて表示や出力したい場合には一般配列に格納した後に並べ替えて
出力することになります。

例)
var SortIndex = [];//一般配列
for(Key in ItemList){    //キーバリュー型の配列の中身をあるだけ取得
    SortIndex.push(Key); //キーを一般配列に格納
}
SortIndex.sort(); //キーを昇順に並べ替え
    
このようにちょっと癖のあるキーバリュー型の配列ですが、高速化と言った意
味では超重要です。

一般の配列が充分に使えるようになったら是非チャレンジしましょう。

今回はキーバリュー型の配列(連想配列)の概念の説明を行いました。
次回はデータ(LocalStorage)の入出力のさわりをご説明します。
━━━━━━━━━━━━━━━━━━━━━━ 
[モバイルオフィスの作り方]はサボのマナベが日々気づいたこ
とや思ったことをお天気の良い日の縁側に座ってポツリポツリと
お話しするようなマガジンです。
ご意見などもあることと思います。
もしご意見等がありましたらお寄せいただければ随時話題にして
いきたいと思います。
 
 
新規登録・解除はこちら
      ↓
http://sabot.jp/MailMagazine/Merumaga.html
==========================================
★発行責任者:
 (有)ファクトリー・サボ
  真鍋隆彦
 兵庫県神戸市垂水区東舞子町9-9
           マリタイム舞子501号
 Tel:078-787-3602 Fax:078-787-3619
 Mail:manabe@sabot.co.jp
 http://www.sabot.co.jp/
 ☆ソフトウェアーギャラリーに遊びに来てください
  https://secure3552.sakura.ne.jp/sabot.jp/Mitumori/
==========================================
 
◎このメルマガに返信すると発行者さんにメッセージを届けられます
※発行者さんに届く内容は、メッセージ、メールアドレスです
 
◎モバイルオフィスの作り方
  の配信停止はこちら
⇒ https://www.mag2.com/m/0000109792.html?l=ywj17bb991