_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
◇ 新緑の季節ですね ・・・・・・ 第721
☆モバイルオフィスの作り方 ★
Vol.0721
_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
□ 新しいモバイルオフィス?
□ 楽しいサボのプログラミング講座ーその8
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
☆ 新しいモバイルオフィス?
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
今週末は神戸のハーバーランドにあるソフマップに出かけました。
海外にご出張のお客様とビデオ会議をするのですが、前回は不調だったイヤホン
とかマイクを整備するためです。
そしてそこで・・・・
◇ ChromeBookを見る
前回の話題は連休中でちょっと遠出をしている際に、緊急のサポートをするの
にKindleファイヤとTeamViewerでおこなうという話題でした。
そしてその際にTeamViewerと並んで話題に上がったのがChromeリモートデスク
トップでした。
どちらも遠隔地のPCを目の前のキーボードやマウスで操作できるという優れも
のでメンテナンスには不可欠の道具です。
残念ながらKindleファイヤにはGooogleChromeをセットアップする方法が見つ
からず、TeamViewerをセットアップしましたがこれで自身のサテライトオフィ
スのダイナブックを操作すれば全ての仕事が出先から出来ることになります。
◇ Kindleファイヤは少し小さい
ところでこのKindleファイヤはいただき物なのですがで少し小さいのです。
専用のキーボードもつけていてAndroid用のTeamViewerもセットアップしてお
りマウスもあるので使えるのですが少し小さい・・・・
そしてたまたまソフマップでChromeBookを見たのです。
ほどよいサイズのノートPCのようなPCがわずか5万円ほどで売られています。
噂によると起動も速く、バッテリーの持ちもよいそうです。
で・・・・そのChromeBookのコーナーの前であれこれと考えました。
例えばChromeBookからChromeリモートデスクトップのアクセスは出来るのだろ
うか??
https://forest.watch.impress.co.jp/docs/shseri/chrbookbasic/1322100.html
この記事にもあるとおり・・・出来るそうです。
となると・・・・
この安価なChromeBookを購入すれば外出先からサテラオイとオフィスのダイナ
ブックにアクセスして、私はどこにいてもサテライトオフィスの全機能を使え
るのか???
どう考えても使えます。
これって新しいモバイルオフィスの形じゃねえ??
◇ サテライトオフィスのダイナブック
サテライトオフィスのダイナブックはかなり昔に5万円ほどで特売されていた
家庭用ダイナブックなのですが、N君がCPUを4Core8プロセッサーのものに入れ
替えてくれて、HDDの代わりにSSDを搭載し、Win10Proをインストールしている
ので社内一の高速PCです。
でも外出中は誰も使わないので単に起動してお留守番です。
ここにChromeBookからアクセスすると、少々非力なChromeBookであっても仕事
をするのはこの強力ダイナブックですからもしかして最強のモバイルオフィス
になるかも知れません。
出先で操作するChroimeBookはポケットWiFyかスマホのテザリングでダイナブ
ックの画面さえ見えればよいのです。
ディスプレーの様子やマウスの移動などを連続した画像として受けとるだけな
ので通信容量もさほど食うわけでもありません。
出先でメインのPCであるダイナブックが操作できたらそれでよいのです。
うーーーん、これほど強力なモバイルオフィスは過去になかったな・・・
◇ 久々にPCを買うか・・・
この2年間ほどはずっとテレワークであり、ほとんどの仕事はサテライトオフ
ィスのダイナブックから通信で行ってきました。
でも、これから先は外出する機会も増えそうです。
そんなときにバッテリーの持ちのよい軽くて薄いChromeBookを持ち歩けばサテ
ライトオフィスにいるときと同じ操作ができるようです。
そもそもChromeOSは出現する前から噂で知っていましたが、ブラウザしか操作
できないOSなど私には無縁だと思っていました。
(当時はHTML5も始めていなかった・・・)
まさかChromeBookの購入を自身が検討するなど想像も出来ませんでした。
実は会社のオフィスでも自身のPCは無くて、出社はするのですが仕事になら
ず、打合せを済ませるとすぐにサテライトオフィスに引き上げるのです。
今後は会社のオフィスでもこの方式であまっているPCでサテライトオフィスの
ダイナブックに接続して仕事をしようかと考える次第です。
◇ Chromeリモートデスクトップと無人運転、常時起動
ところでCromeリモートデスクトップは無人のPCでもアクセスできるのか??
と言う問題がありますね。
TeamViewerなら出来るのですが・・・・
これは出来るのです。アクセスする側とされる側が同じアカウントでCromeリ
モートデスクトップにLoginすると、相手がPCを起動させしていればいつでもL
ogin出来ます。
もちろんアクセスされる側が最初に一度はCromeリモートデスクトップのセッ
トアップをしていることが前提ですが、それさえしていれば自身が別のPCでそ
のアカウントにLogInしたらアクセスできる同一アカウントのPCのリストが表
示され、その後パスワードは尋ねられますが接続できます。
要はどんなPCでも無人サーバーになり得るのです。
このことはやや危険なのでじゅうぶん慎重に設定しないといけないのですが、
出来ます。
もしかしたら新しいモバイルオフィスを見つけたのかも知れません。
1台だけ、メインになるPCを設定しておけば、どこからでもそのPCを使えるとい
う点では史上最強のモバイルオフィスと言えるでしょう。
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
☆ 楽しいサボのプログラミング講座ーその8
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
前回は移動したい順のコントロールの名称をカンマ区切りで書き、Split関数で
配列変数に格納するという説明をしました。
◇ 前回のおさらい
https://speedserve.sakura.ne.jp/MovileOffice/Sample2.html
の535行目([F12]を押してプログラムをご覧ください)
var KeyOrderList =
"Code1,Kamoku1,Kingaku1,Code2,Kamoku2,Kingaku2,Code3,Kamoku3,
Kingaku3,Code1"
var KeyOrder = KeyOrderList.split(",");
で下記のようにKeyOrder[0]〜KeyOrder[8]までに移動したいコントロールのI
Dが格納されています。
KeyOrder[0] = "Code1"
KeyOrder[1] = "Kamoku1"
KeyOrder[2] = "Kingaku1"
KeyOrder[3] = "Code2"
KeyOrder[4] = "Kamoku2"
KeyOrder[5] = "Kingaku2"
KeyOrder[6] = "Code3"
KeyOrder[7] = "Kamoku3"
KeyOrder[8] = "Kingaku3"
さて、今回はこれをどう利用するか・・・なのですが・・・
◇ 初めてのLoop
Loopというのは繰り返し処理であり、プログラムの肝心要です。
今回はフォームで[Enter]キーが押されたら起動するFormKeyDown()と言う関数
中で以下のLoop構文を使います。
for(i=0 ; i < KeyOrder.length ; i++){
繰り返される部分
}
この場合、for文はiの値を0〜8まで変化させながら最大9回Loopします。
なぜ9回なのかというと・・・・
i < KeyOrder.length
と言う文があり、これはiは0から始まり、KeyOrder.lengthより小さい間Loop
するというプログラムなのです。
KeyOrder.lengthとは配列の個数で、この場合は9個(0〜8なので)を返します。
つまりこのfor文は定数で書くと・・・
for(i=0 ; i < 9 ; i++){
繰り返される部分
}
となるのですが、配列の中身を全て参照するように・・・・と言うことですか
ら配列の個数を表す"KeyOrder.length"を使うのが一般的です。
最後の”i++”というのは"1回通るたびにiの値を1個づつ増やせ”という意味です。
もう一度言うと、iは0から始まり9以下であればLoopする。
その間、iは1ずつ値を増やす・・・と言う意味なのです。
先ほど最大9個と言いましたが、途中で条件が合致したらbreakでLoopを脱出し
ますから最大で9回、ただし普通はもっと短い回数で脱出するという意味な
のです。
このLoop構文(特にfor)はプログラミングをする上で自動車のハンドル操作並
に頻繁に登場し、ほぼ毎日書く構文ですからよく練習しましょう。
◇ Loopの中でやっていること
まず538行目で”if(event.srcElement.id == KeyOrder[i]){”と言うものが出
てきますう。
ここでevent.srcElement.id と言う見たことのないものが出てきますが、これ
は決まり文句で、”イベントの発生したコントロールのID”という意味で、イ
ベントとは[Enter]キーを押したことであり、その[Enter]キーの押された元の
コントロールが”event.srcElement”です。
これは”Code1”〜”Kingaku3”のどれかであるか、またはそれ以外の別の場
所(フォーム本体とか)のどれかなのですが、”Code1”〜”Kingaku3”のどれ
かでない場合は9回Loopしてどれにも合致しないのでこの関数を抜けます。
つまり何も起こりません。
でもJavaScriptは極めて高速ですから何もしていないように見えます。
一方、”Code1”〜”Kingaku3”のどれかだとしたら・・・
例えば”Code2”だとしましょう。Loopの4回目でヒットします。
if(event.srcElement.id == KeyOrder[i]){
この場合、event.srcElement.idの中身は”Code2”であり、4回目のKeyOrder[
3]はやはり”Code2”ですからこのif文はtrueになり、それ以下が実行されま
す。
その下の”if(event.shiftKey == true){”はちょっと無視してください。
これは[Sift]キーが一緒に押されていたら・・・と言う意味で、[Shift]+[Enter]
が押された場合に起動します。
ここでは[Shift]は押していないとしたら・・・・
547行目の”}else{”以下が実行されます。
さらに549行目の”if(i == KeyOrder.length){”とは配列の最後なら次は0番
という意味で今回には当てはまりません。
ですから実行されるのは553行目の・・・
document.getElementById(KeyOrder[i + 1]).focus();
break;
です。ここで大事なことは”KeyOrder[i + 1]”で現在のiは4番目(3)ですから
ここで指定しているのは”KeyOrder[4]”であり”Kamoku2"という文字列が返
されます。
これは単に文字列なのですが、document.getElementById(”Kamoku2")と同じ
であり、これで単なる文字列はフォーム上のあるコントロールを指定したこと
になります。
その上で.focus()メソッドでそのコントロールにフォーカスを移動することが
出来るのです。
◇ ここまでで大切なこと
1. 移動したい順をカンマ区切りの文字列で指定してSplit関数で配列変数に格納
した。
2. Loopでiを変化させながら現在のコントロールのIDと比較して合致した
3. 合致した回数(iの値)がわかっているので移動したい先は+1であることが分
かっている
4. 配列では数値を指定して文字列を取得出来る(この場合は”Kamoku2")
5. 単なる文字列だがdocument.getElementById(”Kamoku2")でコントロールに
変換出来る
6. コントロールそのものに変換出来たら.focus()メソッドでそのコントロー
ルにフォーカスを移動できる
以上のことからカンマ区切りの文字列に移動順を書いておけば[Enter]キーで
移動するプログラムができあがり。
もし[Shift]+[Enter]を押せば逆順に移動する。
◇ このプログラムはシンプルだが全てのフォームで使い回す
このプログラムは極めてシンプルですうが、私が作る全てのプログラムで利用
しています。
もちろんプログラムごとにコントロ−ルは様々ですからカンマ区切りの文字列
は都度書き換えるのですが、極めて容易にキーによるカーソル移動ができあが
ります。
多分業務システムを作るプログラマとしては私は世界最速ですが、そのために
はこんな工夫があるのです。
※最速とは
最も短い時間でプログラムを作ることが出来る=原価が安い
原価が安いことは競争力か収益化のどちらかに置き換えることが出来る
今回は配列変数の重要性を実際に使用例を挙げてご説明しました。
lOOPも一緒に説明したのでちょっと難しかったかも知れませんが、でも安心して
ください。プログラムで難しいのはこの二つぐらいで後はさほどのことはありま
せん。
戦場の兵士でいったら弾を寿に装填することと引き金を引くぐらいのシンプルで
ベーシックな項目です。
次回はもう一つの配列であるキーバリュー型の配列のご説明をします。
━━━━━━━━━━━━━━━━━━━━━━