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

◇ 今どきのPCとサーバー 第726
☆モバイルオフィスの作り方 ★
Vol.0726

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

□ 今どきのPCとサーバー
□ 楽しいサボのプログラミング講座ーその13

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
☆ 今どきのPC
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
私どもにはかなり巨大なサーバーが2台あり、会社のオフィスと私のサテライト
オフィスでファイルサーバーとして稼働しています。
でも・・・・

◇ サーバー?
遠い昔、複数のPCがデータを共有する方法はサーバーしかありませんでした。
今で言う”オンプレミス・サーバー”と呼ぶやつで、社内のLAN上に鎮座し、
各クライアントにデータ領域を提供しています。

https://www.tramsystem.jp/voice/voice-2387/

さて、このサーバーがいつまで必要なのか・・・・と言うのが今回の話題で
す。

私どもでは2台のサーバーがDropBoxを介してデータをレプリケーション(複製)
していて、サーバー2台+クラウドサーバー1台が同じデータを持っています。

でも今どきの使い方はそうではないはず・・・・

例えば自身のPCでDropBoxと同期し(OneDriveでもよい)、その上自身のPCには
ファイルの実態を残さず、キャッシュだけを持つのが今どきの使い方ではない
でしょうか?


この機能はDropBoxもOneDriveも実によく出来ていて、自身のPCにはほとんど
領域を消費しないのに会社のサーバーの全領域と全ファイルが見えています。

Excelでオープンしたりも出来ますし、移動やコピーも出来ます。
実際にはフォルダー構造とファイル名だけを見せていて、何か操作されると大
急ぎでサーバーからダウンロードするのですが、たぶんこの使い方が彼らが目
的としているものだと思います。

◇ ファイルサーバーで実態ファイルを持っている理由?
さて、私どもでは2台のサーバーがDropBoxと実態ファイルのレベルで同期して
いて、計3箇所にデータやファイルが存在します。

その理由なのですが・・・・
一言で言ってクラウド上にあるサーバーを完全には信用していないからです。
3箇所のどれかが生き残ったらデータは助かる・・・・

と言うのが基本的な理由ですが、この考え方は間違っているかも知れません。

と言うのも巨大で莫大な量(数)のファイルを・・・それも実態ファイルを同期
することはDropBoxでもOneDriveでもけっこうしんどそうで、単にキャッシュ
で操作するという本当の目的の時の軽快さはありません。


つい先頃まで私どもはデータベースがファイルのタイプのものを主力で使って
おり、この場合にはキャシュではうまく稼働しません。
しかし実態ファイルで同期してもやはりうまく稼働はしないのです。

データベースは例えば1行を書き換えてもファイルとしては変更されたことに
なり、その都度同期が発生して、DropBoxやOneDriveでは処理がとても重い
か、またはエラーが出ます。

したがってデータベースは同期には向きません。

◇ 今は・・・・
今は主にHTML5の形式のプログラミングで、データベースはそもそも自社の
サーバーには存在しません。
サクラサーバーに預かってもらっているのですが、これは実に軽快です。

バックアップは1日に一度、深夜に今日書き換えられたファイルをダウンロー
ドしてバックアップし続けています。

今どきのシステムでは同期型のファイルサーバーは不要です。

◇ そろそろ社内サーバーをなくそうか?
完全になくすかどうかはともかく、もうすでに正サーバーはDropBoxのデータ
領域です。2台の内の1台は本当にバックアップとして実態ファイルの同期をさ
せ続けるとして、もう一台はもうバックアップをやめて、本来の業務(プリン
トサーバー)に戻そうかと考えています。

私のPCはキャシュモードでクライアントが直接DropBoxやOneDriveと同期しよ
うかと考えているのです。

・ DropBox
ハードドライブの容量を自動で節約
・ OneDrive
空き容量を増やす

この両者は同じことを意味し、実態ファイルをクライアントPCには持ちませ
ん。両者ともほとんどクライアントで容量を消費せず、信じがたいことに私の
スマホでも自社のサーバーの全ファイルが見えますし、オープンするとExcel
やテキストエディターなど関連付けられたアプリでオープンできます。

たぶんこういった使い方がDropBoxやOneDriveが想定している使い方なのでしょ
う。ちょっとこのやり方を実験しようと思います。
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
☆ 楽しいサボのプログラミング講座ーその13
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
前回はスタンダードなコントロール=部品=要素の説明をしました。
これらはHTMLで配置するものでフォームを作るものでした。
今回はよく使う構文をご説明します。

◇ 構文・・・とは
構文とはプログラミングそのもので、HTMLであれば
”<SCRIPT LANGUAGE="JavaScript">”とか書いたあとがこの部分に相当しま
す。サンプルでいえば443行目以後で、ここから下はJavaScriptの部分です。
(ここから上は純粋にHTMLでフォームを作る部分です。)

https://marbou-work.com/programming-syntax-summary/

この部分がプログラミングそのもので、下記のようなよく使う文を書きます。

◇ For文
繰り返し処理を受け持ちます。
コンピュータは人間なら嫌気がさすほどの繰り返しを平気でかつ高速に行うの
で繰り返し処理は極めて重要です。
https://speedserve.sakura.ne.jp/MovileOffice/Sample2.html

サンプル:535行目
var KeyOrderList = "Code1,Kamoku1,Kingaku1,Code2,Kamoku2,Kingaku2,Code3,Kamoku3,Kingaku3,Code1"
var KeyOrder = KeyOrderList.split(",");

for(i=0 ; i < KeyOrder.length ; i++){
    繰り返す内容のプログラミングをここに書く
}
これは[Enter]キーを押すごとに指定されたコントロールを配列に切り分け、
その配列の数だけLoopして現在のコントロールとその次のコントロールを見つ
ける繰り返し処理です。

この場合は10個のコントロールが配列変数(KeyOrder)に格納され、0番目から1
0以下でLoopします。

この例はたかが10回Loopですが、データの取得などでは数万回Loopすることも
ざらです。

繰り返し処理にはほかにも”while”や”do while”もあるのですが、私はFor
文しか使いません。
forとwhileの最も大きな違いは何件処理するかがわかっているかどうかで、fo
r分では必ず初期値と終了値を指定します。
whileなどは回数を指定せず、一定の条件を満たしたらLoopから脱出します。

しかし、私は経験的にJavaScriptの場合には必ず回数がわかっていることを知
っており、繰り返し処理ではfor文だけでプログラミングしています。今のと
ころ困ったことはありません。

◇ If文
コンピュータで判断といえばif文ですね。
https://job-support.ne.jp/blog/javascript-if-else/howto

サンプル:524行目
if(event.srcElement.id == "Code1"){
    Kamoku1.value = CuKamoku;
}else if(event.srcElement.id == "Code2"){
    Kamoku2.value = CuKamoku;
}else if(event.srcElement.id == "Code3"){
    Kamoku3.value = CuKamoku;
}

この例はコントロールのIDを見てコードから変換した科目名を特定のテキスト
ボックスにセットする例です。

ほかにもswich文がありますが私は使ったことがありません。
if文をうまく組み合わせるとすべてのことができるからです。

◇ 変数宣言
var 変数名 = 初期値
と書く変数宣言でJavaScriptには型はないので初期値で型を決定します。
このことが不都合だということでTypeScriptというそれをトランスパイルした
らJavaScriptになるという言語がマイクロソフトから発表されて、結構な人気
ですが、私は困ったことはありません。

変数宣言はfunctionの中でこの宣言をするとローカル変数(その関数内でのみ
使える)になり、関数外で宣言するとグローバル変数(プログラム中で関数を超
えて値を保持する)になります。

面白いところでは、関数内であっても先頭のvarをつけないとグローバル変数
になるようです。

今どきはvarではなくてletを使うべきだそうです。

◇ 関数
関数の中身はともかく、プログラミングは必要なまとまりを関数として記述し
ます。

サンプル:524行目
// コード変換関数
   function CodeTrn(CuCode){
   var CuItem = ItemList[CuCode];
       if(CuItem == undefined){
           return "Err";
       }else{
           return CuItem;
       }
    }
    
    関数は・・・
    function 関数名(パラメータ1、パラメータ2){
        ここにプログラムの本体を記述
    }
    
    という書き方をし、プログラム中から呼び出して使います。
    
    遠い昔、関数もサブルーチンもなかった頃は長い長いプログラムを書いて、
    プログラム的に区分けをしていましたが、今ではプログラムとは必要な関数
    を記述し、それをイベントで呼び出して使うもの・・・・と言うとってもわ
    かりやすい時代になっています。
    
    関数1個である仕事を行い、関数はなるだけ簡潔に書くこと。
    関数は他のプログラムから呼び出されて使われるものですから単純明快にし
    ておくことと短く書くことが重要です。
    長い関数はバグの元です。
    
    自分自身である程度関数の名称を統一し、他のプログラムからコピペして使
    うとよいでしょう。
    他のプログラムからコピペしてほとんど書き換えずに使えるとしたらそれは
    枯れたバグのないよい関数です。
    
    さらにJavaScriptでは外部関数として1行で呼び出すことも出来ますからあ
    る程度汎用性と安全性が確認できたら外部関数にするのもよいですね。


今回は構文を取り上げました。
私はほぼ今回説明した構文だけで仕事をしています。もちろん大物のシステムや
他社が猫またぎで断るような仕事も数多いのですが、概ねこれだけあればプログ
ラムは出来るように思います。
━━━━━━━━━━━━━━━━━━━━━━ 
[モバイルオフィスの作り方]はサボのマナベが日々気づいたこ
とや思ったことをお天気の良い日の縁側に座ってポツリポツリと
お話しするようなマガジンです。
ご意見などもあることと思います。
もしご意見等がありましたらお寄せいただければ随時話題にして
いきたいと思います。
 
 
新規登録・解除はこちら
      ↓
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