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

◇ 今年の冬は寒いですね ・・・・・・ 第712
☆モバイルオフィスの作り方 ★
Vol.0712

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

□ 技術継承の難しさ
□ 楽しいサボのプログラミング講座

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
☆ 技術継承の難しさ
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
ちょっとおもしろい話題を見つけました。
これって私のこと??

◇ メインフレーム老人の知恵をWeb青少年に伝えるのは至難の業

https://xtech.nikkei.com/atcl/nxt/column/18/00166/112900092/

メインフレーム老人と云うのは長い間COBOLで業務システムを支えてきた人た
ちのことなのでしょう。
彼らは業務システムのプロです。

https://ja.wikipedia.org/wiki/COBOL

マナベはここに登場する”メインフレーム老人”に年齢は該当しますが、COBO
Lは全く経験がありません。
もちろんメインフレームも経験がありません。でも長い経験の中には”メイン
フレーム老人”(当時は若かった)と一緒に仕事をして、これほどメインフレー
ムとPCは違うものなのか・・・という経験をたくさんしています。

◇ メインフレーマーとの違いに愕然!
私達PCのユーザーはネットワークを使います。ネットワークとはたくさんのコ
ンピュータが1台または複数台のサーバーにアクセスしてデータを共有するこ
となのですが・・・

まずメインフレーム(COBOLで代表されるプログラム環境)ではネットワークは
ありません。このことに気づくのにずいぶん時間がかかりました。

銀行のオンラインシステムは?JRの緑の窓口は???

今はわかりませんが、メインフレーム全盛の時代にはコンピュータは1台だけ
です。
たった1台のコンピュータが日本全国のたくさんの端末からの要求を受け入れ
ているのです。

例えば昔、銀行の窓口でお姉さんがキーボードを叩き、何やらプリントされた
用紙をくれたりしました。
あれって、PCのユーザーから見たら1台のPCにお姉さんがなにか入力して遠く
のサーバーにアクセスしているとしか見えませんが・・・・・


実は遠く離れた本店の電算室にあるメインフレームというコンピュータにアク
セスしているのです。お姉さんの目の前にはコンピュータはありません。

電話回線を使った長い長いキーボードケーブルとディスプレーケーブル、そし
てプリンターケーブルを通して本店電算室の巨大なコンピュータに依頼をする
のです。

オンラインシステムとはキービードが数百台、ディスプレーも同数の端末位を
抱えたたった1台のコンピュータだったのです。


お姉さんに見えているディスプレーはたった1台のコンピュータがCPUとメモリ
を各端末に割り当ててバーチャルに複数の(数百台の)コンピュータに見せてい
るのです。

基本的にUNIXも同様で、1台だけのコンピュータを大勢の人が同時に使える仕
組みです。

◇ WindowsはマルチタスクOSではない
遠い昔、UNIXやメインフレームの専門家からこのように言われました。
そのことが当時の私には理解できなかったのです。

”手は2本で私は一人、なんでその真のマルチタスクが必要??”というのが
私の疑問でした。

彼らが言いたかったのは大勢の端末にメモリやCPUを割り当ててたくさんのコ
ンピュータを実現するマルチタスクではないと言う意味で、私達PCユーザーの
ように目の前に1この独立したコンピュータを持っているものには・・・大き
なお世話だったのです。

つまり彼らもPCというものが理解できていなかったのでしょう。

◇ パソコン通信とオンライン
同じように電話回線でつながっているのですがオンラインシステムというのは
もし回線が切れたら画面も出てきません。
コンピュータは1台だけで、電話回線を通じてつながっているからです。

一方、パソコン通信の場合には欲しいデータがやってこないことはありますが
本来の仕事は自身の中で完結していますから動きます。

この違いをメインフレームの専門家に理解してもらうのにとても苦労したこと
があります。

その時は老舗のメインフレームやさんが私どもの技術を視察に来られて、ちょ
っと縁があったので私は自身のすべての技術を説明しました。

でも単独で稼働するプログラムがデータだけもらってきて分散処理をしている
というところがどうしてもい理解できないようでした。


この違いはPC(クライアント)とデータサーバー(サーバー)の役割分担であり、
彼らはその手法を(クライアント/サーバー)と呼びます。

私達は”それ以外”の方法を知りませんから特に名称をつけません。

よくC/Sモデルとかクライアント/サーバーシステムとか呼ぶのはPC以外の人の
呼び方で、私達の預かり知らないことだったのです。
(これからはクライアント/サーバーの時代・・・という雑誌の特集を読んで、
何を言っているのかさっぱりわからなかった。アタリマエのことが説明されて
いた)


◇ やや似ているHTML
ところでUNIXから出発したHTMLはメインフレームによく似ています。
HTMLサーバーが出来上がった画面を次々送信してきてPCのブラウザがそれを描
画することでシステムを作るからです。

もちろん、そのことはとっても嫌で、[登録]ボタンを押すとフォームが切り替
わって・・・というのは身の毛もよだつほどダサいと思いました。

だから私は未だに[登録]ボタンを押すとデータだけ送信してデータベースに登
録してもらい、フォームは中身だけ(コードとか金額とか)をクリアして同じフ
ォームを使います。

submitでHTML全体を送信するのではなく、xmlHttpRequesutでデータだけを
送信するのです。
それを見たある若者は”完全なC/Sモデルですね・・・”と評価しましたが、
遠い昔からそれ以外の方法を知らないのです。


面白いことにこのxmlHttpRequesutをHTMLに実装したのはMicrosoftです。
今ではすべてのブラウザに標準で実装されていますが、PCの大御所のMicrosof
t以外はその必要を感じなかったのでしょうね。


◇ 技術伝承?
私は御存知の通り、MS-DOSの時代からプログラマで、今でも現役のプログラマ
です。たくさんの業務システムを作ってきましたが、実は難しいのはプログラ
ム言語ではありません。

クライアントサーバーかホストアンドターミナルかでもないです。
言語がC言語だろうとCOBOLだろうとBASICだろうと関係ありません。


難しいのは遠い昔は人間で、今も人間です。私達はその人間を主体とする顧客
の仕様と戦うべきで、プログラミング言語と戦っているようでは勝利はおぼつ
きません。

広い砂漠で敵と対峙するロンメルアフリカ軍団の兵士が自分の持っている銃の
操作で悩んでいるようではとても勝てないでしょう??

銃など暗闇でも正確に撃てるようにする・・・・それが訓練であり、銃の性能
で勝利するのではないのです。


◇ 顧客の仕様を理解するためのアジャイル
最近、顧客の仕様を理解するために”アジャイル”という手法が評価されてい
ます。
これは”ウオーターホール”に対する概念なのですが・・・

https://www.jbcc.co.jp/blog/column/agile-development.html


ウォーターホールというのは会議を重ねて構築すべき仕様を詳細に検討し、そ
のとおりにプログラムすることです。

銀行やJRのような電算の専門家がおられるところでは有用な手法で、発注側が
何を作るべきかをプログラミングレベルまで理解していて、会議で制作側に説
明し、確認しながら進める手法です。


ところで・・・・
私はこの仕事は長いのですが”要求仕様書”というのをもらったことはありま
せん。
電算の専門家のいる企業で仕事をしたことがないのです。
顧客が小さいから???

そんな事はありません。最も大きな顧客は年商で1000億以上、100億クラスの
企業もたくさんお客様にいらっしゃいます。
でも彼らの特徴はPC黎明期にPCでシステム構築を始めたパイオニアたちで、電
算の専門家が存在したことがないのです。

そんな顧客の仕事をずっと続けてきましたから仕事の最初は”何を作るべきか
”という仕様を聞き出すことです。


そして専門家ではないお客様が欲しい仕様を本当に説明できるのはシステムが
稼働を始めた瞬間です。

”こんなんじゃない”とか”こんな機能がほしい”とか、”ここのデータはこ
の時点ではまだない”とか言った真の要求に近いものはプログラムが稼働しな
いとわからないのです。

会議を100万回しても無駄です。彼らはとても柔軟で器用な人間が日常行って
いることを説明するだけですから・・・・

ではせっかく作ったプログラムを見て、あれこれと不満を言われる顧客に腹は
立たないのか???
立たない程度に大急ぎでシンプルに作るのです。

ここでは華麗なプログラミングより、いかに素早く”稼働しているように見え
る”プログラミングができるかが肝です。


多分アジャイルという概念の最も需要な要素ではないかと思います。
したがって私はプログラムを作るのがとても速いです。もしかしたら世界最速
かもしれません。

何日もかけて頑張って作ったプログラムに文句を言われると腹が立つではない
ですか。だから数時間で作ってまずは顧客に見せるのです。

その時、聞き出せる仕様がかなり真の仕様に近いです。
そこで場合によったら総入れ替えを、そうでなくても大至急作り変えます。

このようにループ状にだんだんレベルを上げていくのがアジャイルというもの
だと思っているのですが、アジャイルという言葉を知ったのもこの10年ほどで
す。

それ以外にあるの???と思いながら調べたところ、”ウオーターホール”と
いうのが本筋でアジャイルというのは比較的最近できた手法だと知りました。

PC屋から見たらこれこそ本流だったのですが・・・・


長いプログラマのキャリアの中で、それしか方法がない・・・と思っていたもの
に名前が付き、学術の対象にさえなっています。次回は素早くプログラミングす
る秘訣のお話をしましょう。
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
☆ 楽しいサボのプログラミング講座
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
さて、本編とも関連しますがプログラミングの講座をほそぼそとはじめました。
今回は遠い昔にPC(ポケットコンピュータ)で作ったPOSのプログラムの作り方で
す。


◇ サンプルを作ってみた
本編にある通り、素早くプログラミングすることは重要です。
下記のURLにあるプログラムは30分ほどで作った超いい加減なものです。

https://speedserve.sakura.ne.jp/MovileOffice/Sample1.html

たった3行の伝票で、コードを入力すると科目が表示され、金額を入力でき
る・・・というだけのものです。
なお、[Enter]キーで次の入力科目に移動もします。

学習用なので特別にシンプルに作っています。

なお、ここで解説するプログラムはすべてフリーウェアーであり、参考にする
ことはもちろん、他で商用の利用をすることも自由です。
(こんなシンプルなプログラムを商用利用するとは思えませんが・・・)

ただし中には”bootstrap.css”などのような勝手に使っても良い事になって
いるcssなどについては大本のドキュメントを読んでください。

※これらは私が作ったわけではなくてもらってきて利用しているだけです。

bootstrap.css
text.css
saizu.css

https://online.dhw.co.jp/kuritama/how-to-use-css-framework-bootstrap/


◇ できることは・・・・
できることは”Code”の箇所(3行ある)にコードを入力すると科目名が出てき
て次の場所に移動する・・・・だけです。

    8111:売上高
    8211:仕入高
    8312:運送費
    8313:水道光熱費
    8314:旅費交通費
    8315:通信費
    8321:消耗品費
    8499:雑費
    
    科目は現在のところ、この8個だけで例えばCodeのセルに”8111”と入力す
    ると右隣の科目の列に”売上高”という科目が表示されます。
    それだけですね・・・・
    
◇ 学習すべきことは・・・
まずそれらしい入力フォームを作ることです。
私は素早く入力フォームを作るために”ExcelFormCleater”というExcelVBAで
稼働する道具を使っていますが、何を使ってもよいのです。

要はテキストボックスを9個(3列X3行)表示してセンタリングや右寄せなどを指
定し、[Enter]キーを押されたら次のセルに移動する・・・

そのときにCodeの列だと入力されたコードに従って科目を表示するようにしま
す。
これは変数を利用します。
変数というのはデータを一時的に保管できるメモリ領域のことで何種類かの変
数があるのですが、今回は単純な変数CuCodeとか配列変数ItemListを使いまし
た。

配列変数には2種類あって、今回使っているのはキーバリュー型配列です。


この配列変数には1個のキーと1個の値があり、今回はキーに科目コードを割り
当て、値には科目名をセットしました。

このキーバリュー型の配列変数は強力で、数十万個の配列を作ってもほぼ一瞬
でヒットします。データベースを凌ぐ速度です。


この講座では配列変数や一般変数の使い方をお伝えするのが目的ではありませ
んから、詳しくはWEBを調べてください。

https://www.sejuku.net/blog/27965
https://techplay.jp/column/528

ここで重要なことはキーバリュー型配列は文字列をキーに何かを探せるという
ことです。ExcelのVlookup関数にやや似ていますがその速度やスケールは遥か
に大規模で高速です。


今回はたった8このキーを使って配列をプログラム中に作りました。
一般的には別のデータを起動時に読み込んでこの配列に格納しますが、それは
もっと先で学習しましょう。

◇ 大切なことはそれらしいプログラムを素早く作れるようになること
プログラミングで最も重要なことはほしいプログラム(この場合には超簡単なP
OS)をいかに早く作ることができるかです。

たった3行の伝票のフォームですが、それでも必要な機能は基本的に備わって
います。

・ コードを入力したら科目が表示できる
・ [Enter]を押したら次のセルに移動する

ここまでは極めて重要です。

◇ せめて合計ぐらいは・・・
ところでせめて合計ぐらいは計算したいものです。
次回は入力した金額を縦計して最後に表示するという機能を実装します。

その次はもっと大物で、入力したデータを登録する方法です。
データベースなどなくても登録出来るのですよ。



はたしてこんな講座を読んでくれる人がいるかどうかは甚だ疑問ではあります
が、私の知っている業務システムのすべてのノウハウを公開するつもりです。
━━━━━━━━━━━━━━━━━━━━━━ 
[モバイルオフィスの作り方]はサボのマナベが日々気づいたこ
とや思ったことをお天気の良い日の縁側に座ってポツリポツリと
お話しするようなマガジンです。
ご意見などもあることと思います。
もしご意見等がありましたらお寄せいただければ随時話題にして
いきたいと思います。
 
 
新規登録・解除はこちら
      ↓
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