Thinking About 'SYSTEM'   2007-1-11 by KOMPas
     
      http://www.enissi.com/kompas/sienpi2006/otenki/exercise02.xls
     
      EXCELマクロのお勉強ベンキョウ
     
  まず、EXERCISE02:「カレンダ2」でツクってもらった2つのコードがナニをするか、整理セイリしておきます。  
    (EXERCISE02.xls をヒラいてみただけのヒトも、EXERCISE02.xlsをていないヒトも、  
    以下何点かをイメージしてもらいましょう。)  
     
    EXERCISE02.xls には2つのシートがあり、  
      1つは、カレンダー様式ヨウシキの「カレンダ」  
      1つは、データが一覧イチランヒョウ形式ケイシキみ、アルいは表示ヒョウジする「予定ヨテイヒョウ  
     
    マクロが2つまれておりおり、  
      train0201/train02 マクロは、それぞれツギのようなコードがかれている。  
     
  train0201 マクロ  
    train0201 で作成サクセイしたのは、あらかじめ「予定ヨテイヒョウ」にあるデータのナカから  
  目的の月データを読み込んで、「カレンダ」様式ヨウシキ転記テンキマクロです。  
 
  予定ヨテイヒョウ -> カレンダ      
 
  train0202 マクロ  
    train0202 で作成サクセイしたのは、データベースにあるデータを「予定ヨテイヒョウ」にみ、  
    データベースにあるデータを「予定表」に読み込む転記テンキマクロと、  
  予定ヨテイヒョウ」で追加ツイカ/編集ヘンシュウしたデータをデータベースに保存ホゾンする転記テンキマクロ、  
  この2つの転記テンキマクロです。  
 
  データベース ->
<-
予定ヨテイヒョウ      
 
  どちらも、「転記テンキコード」であるテンと、  
  どちらも、データの追加ツイカ/編集ヘンシュウは、「予定ヨテイヒョウ」でオコナっているテン  
  の2点が共通キョウツウしています。  
  つまり、2つのコードで想定ソウテイされた「データ入力ニュウリョクインターフェース」は、「予定ヨテイヒョウ」だということです。  
 
  この2つのコードを使ツカって、どんな「システム」が構築コウチクできるか、  
  アルいは、あなたにとって、どんなシステムが便利ベンリなのかを、ここで考えてみましょう。  
  カンガえるウエの「境界キョウカイ条件ジョウケン(?)」をオモいつくままに列挙レッキョすれば、以下イカのようなもんでしょうか?  
 
   
    (1) データを入力ニュウリョクするのはダレか?  
    一人なのか、複数なのか?  
    複数フクスウ入力ニュウリョクシャたちは、チカくにいるのか、ハナれたところにいるのか、むちゃくちゃハナれているのか?  
    (2) カレンダを利用リヨウするのはダレか?  
    一人なのか、複数なのか?  
    複数フクスウ利用リヨウシャたちは、チカくにいるのか、ハナれたところにいるのか、むちゃくちゃハナれているのか?  
    コンピュータ画面ガメン確認カクニンできればよいのか、カミでみたいのか、ナニホカ仕事シゴトにつかうのか?  
    (3) データを入力ニュウリョクするのはどこか?  
    「入力インターフェース」を何にするか?  
    コンピュータは使ツカえるのか、携帯ケイタイ電話デンワなら使ツカえるのか?  
    EXCELが使ツカえるのか、ブラウザが使ツカえるのか、メールが使ツカえるのか?  
    インターネットに接続セツゾクできるのか、WEB-SERVERはげられるのか?  
    (4) 入力ニュウリョクされたデータはどこに保存ホゾンされるのか?  
    データベースなのか、  
    1つのEXCELファイルなのか、複数のEXCELファイルのあるフォルダか、  
    或いはそれ以外か?  
    入力ニュウリョク使ツカっているコンピュータなのか、LANでつながったほかのコンピュータなのか、  
    アルいは、インターネットのこうのコンピュータなのか、  
    電話デンワ回線カイセンサキにあるコンピュータなのか?  
    (5) セキュリティを顧慮コリョすべきか?  
    どのレベルの、或いはどのレベルで、  
    データをみせたくないダレかがいるのか、それはダレなのか、それはなぜなのか?  
    データを破壊ハカイ/改竄カイザンされる脅威キョウイがあるのか?  
    顧慮コリョしたら、機能キノウさせたいセキュリティは有効ユウコウ機能キノウするのか?  
    (6) システムを管理カンリするのはダレか?  
    システムに責任セキニンがあるのはダレか、それはどこまでか?  
    (7) コストは?  
    いくら予算ヨサンがあればいいのか、どのグライ時間ジカンがあればいいのか、誰が負担フタンするのか?  
    データ入力ニュウリョク/出力シュツリョクにかかるコストは?手間テマは?  
    運用ウンヨウ/メンテナンスにかかるコストは?手間テマは?  
    使ツカカタ」をオシえるコストは?手間は?  
    (8) このシステムは、ダレのためにあるのか?  
    ナン成果セイカがあがるのか?  
    ダレラクになるのか、ダレラクになるのか?  
    ダレ負担フタンがかかるのか?  
    (9) どこかに協力者キョウリョクシャ期待キタイできるのか?  
   
  う〜む。  
 
  EXCELファイル  
 
  あなた一人ヒトリで、あなたのコンピュータだけをつかってスケジュラを使ツカうのであれば、  
  train0202 マクロは使ツカ必要ヒツヨウがないことがおわかりでしょう。  
  苦労クロウしてつくったのにぃ。)  
 
  さらに、「予定ヨテイヒョウ」なんか使ツカわなくても、  
  12マイの「カレンダ」をつくってしまえば、1年分ネンブンのスケジューラのできあがり、です。  
  つまり、「入力ニュウリョクインターフェース」を、はじめっから「カレンダ」にしてしまえば、  
  train0201 マクロもいりません。  
  あなたがマクロなんてらなかったトキから、実際ジッサイにこなしていたことです。  
  苦労クロウしてつくったのにぃ。)  
 
  とはいえ、train0201 マクロを使ツカったほうが便利ベンリかもしれないのは、  
    あなた一人ヒトリブンとはいえ、「私用シヨウ」「仕事シゴトヨウ」さらに「もう1つの仕事シゴトヨウ」「家族カゾクヨウ」や「子供コドモヨウ等々トウトウ  
  オナツキでも、いろいろな種類シュルイのカレンダがいるときや、  
  トクに、ある1データを、(1カイ入力ニュウリョクで)複数フクスウ種類シュルイのカレンダに表示ヒョウジさせたいような場合バアイ  
  train0201 で頑張ガンバっていたコードがヤクにたつかもしれません。  
 
  「それならマクロなんてなくてもできるじゃないか」  
    おっしゃるとおり!  
    このペイジは、「マクロ/コードを使ツカわない」という選択センタクフクめて、カンガえてみたら、というペイジです。  
    タダし、「マクロなんていらない」説明セツメイは、これ以上イジョウはやりません。)  
 
  あなたにもうスコ時間ジカンがあるのであれば、  
  入力ニュウリョクインターフェースである「予定ヨテイヒョウ」を、もっと使ツカいやすくしたり、  
  たとえば、「予定ヨテイヒョウ」を月別ツキベツ年度ネンドベツにしてしまうとか。  
  tarin0201 コードをサラにきめコマかくえるのに時間ジカンをかけるホウが、  
  カシコ選択センタクかもしれません。  
 
  イクつかの選択センタクカンガえられるものの、  
    入力ニュウリョクも、出力シュツリョクも1つのEXCELファイルをヒラいてオコナい、  
  データは、そのEXCELファイルジョウ保存ホゾンされます。  
 
  ファイルサーバー  
 
  ここで、「ファイルサーバー」について、若干ジャッカン説明セツメイします。  
  「サーバー」といっても、ナニ特別トクベツなコンピュータで運用ウンヨウするものではなく、  
  ミナ使ツカうファイルを、ネットワークジョウ共有キョウユウ場所バショにおいて、  
  複数フクスウのコンピュータから利用リヨウできるようにするとき、  
  その共有キョウユウ場所バショアルいは、共有キョウユウ場所バショ提供テイキョウしているコンピュータを、  
  「ファイルサーバー」といっています。  
 
  ファイルサーバーである条件ジョウケンがあるとすれば、  
  常時ジョウジ電源デンゲンがはいっていること」と、「ネットワークジョウ共有キョウユウフォルダをもつ」ことでしょうか。  
 
  「ファイルサーバー」についてをつけることは、  
  読取ヨミトリだけ」の共有キョウユウなのか、「更新コウシン」なのか、というテンです。  
 
  けっこうられてはいますが、ちょっと特殊トクシュな「ファイルサーバー」としては、  
  FTPサーバーがあります。  
  FTPサーバーは、インターネットジョウで、ファイル共有キョウユウ実現ジツゲンします。  
 
  「ネットワーク」というカンガカタがうまれたと同時ドウジに、  
  「ファイルサーバー」もうまれたわけで、  
  ずうっとムカシからある、キワめて理解リカイしやすいカンガガタをもつ技術ギジュツの1つです。  
 
  直前チョクゼンで「あなた一人で、あなたのコンピュータだけをつかって」のシステムなら、  
    データベースはカンガえなくてもよいのではないか、という説明セツメイをしましたが、  
  いま、「あなた一人で、あなたのコンピュータだけをつかって」ではないシステムをカンガえるにあたっても、
  「ファイルサーバー」があれば、データベースはいらない、とカンガえることができる場合バアイがあります。  
 
  「あなた一人のあなたのコンピュータだけをつかう」スケジューラ、つまりEXCELファイルを、  
  ファイルサーバーにおいておくだけで目的モクテキがはたせるなら、  
  train0202でんだ「データベースへの書込カキコ」「データベースからの読込ヨミコミ」コードは、  
  今回コンカイもまたいらないことになります。  
 
  あなたが、いろいろなコンピュータで仕事シゴトをする立場タチバにいて、  
  どのコンピュータで作業サギョウしていても、自分ジブンのスケジューラをみたい、といった場合バアイも、  
  どれか1つのコンピュータを「ファイルサーバー」にしたてて、  
  全章ゼンショウオナじ1つのEXCELファイルをファイルサーバーにいておけば、目的モクテキ達成タッセイすることができます。
 
  もし複数フクスウヒト利用リヨウするスケジューラであっても、  
  データ入力ニュウリョク/編集ヘンシュウ頻度ヒンドがそれほどオオくないなら、  
  ファイルサーバーにかれた1つのEXCELファイルで、ヨウがたせる場合バアイ多々タタあります。  
 
  さらにオオくのヒト利用リヨウするスケジューラで、  
    データ入力ニュウリョク/編集ヘンシュウ頻度ヒンドオオくても、  
  タトえば利用者リヨウシャオオくは、スケジュラーをみるだけで、  
  入力ニュウリョクするのは、だれか一人ヒトリだけ、といった場合バアイであれば、  
  オナじように、ファイルサーバーだけでこなせる場合バアイ多々タタあるわけです。  
 
  「ファイルサーバー」にEXCELファイルを送信ソウシンするテンスコ複雑フクザツですが、  
    データ管理カンリ自体ジタイからカンガえれば、  
    入力ニュウリョクも、出力シュツリョクも1つのEXCELファイルをヒラいてオコナい、  
  データは、そのEXCELファイルジョウ保存ホゾンされるテンゼンショウオナじです。  
 
  データベース  
 
  現役ゲンエキの(現在ゲンザイ使ツカわれている)アプリケーションの大半タイハンは、  
  データベースにデータを保存ホゾンする仕組シクみでつくられています。  
  EXERCISE02: train0202 のように、  
  入力ニュウリョクしたデータをデータベースに保存ホゾンし、して出力シュツリョクする方法ホウホウです。  
  train0202でやったような、「データベースの入出力ニュウシュツリョク」をオコナうコードをければ、  
  市販シハンアプリケーションを使ツカって入力ニュウリョクされたデータを、その市販シハンアプリケーション以外イガイ使ツカいたいときや、
  市販シハンアプリケーション以外イガイから入力ニュウリョクされたデータを、その市販シハンアプリケーションで出力シュツリョクしたいときなど、
  自分ジブンたちの「システム」のナカに、リゾナブルな市販シハンアプリケーションもむという選択センタクやせます。
 
  題目ダイモクの「スケジュラー」も、「データベースの入出力」を行うコードをわせると、  
  ダイ規模キボシステムをツクることさえ可能カノウになります。  
    結構ケッコウ人数ニンズウ入力ニュウリョクシャと、結構ケッコウカズ出力シュツリョクシャがいて、  
  当然トウゼンのようにアツカうデータが膨大ボウダイになってきたときは、  
  train0202 で「お勉強ベンキョウ」したことがかせます。  
 
  この場合バアイ基本キホンテキ構造コウゾウとしては、  
  EXCELファイルは、「ファイルサーバ」ではなく、  
  操作ソウサするコンピュータにあります。  
 
  一台イチダイだけのコンピュータなら、  
 
  データベース ->
<-
予定ヨテイヒョウ -> カレンダ  
 
  といったカンじであったものを、  
 
     
    ->
<-
予定ヨテイヒョウ -> カレンダ  
     
  データベース ->
<-
予定ヨテイヒョウ -> カレンダ  
     
    ->
<-
予定ヨテイヒョウ -> カレンダ  
     
 
  のように使ツカえるわけです。  
 
  さらに頑張ガンバって、  
  「カレンダ」を、予定ヨテイヒョウからデータをってくるのではなく、  
  「データベース」から直接チョクセツ「カレンダ」に転記テンキするようなコード(train0203?)をけば、  
 
     
    ->
<-
予定ヨテイヒョウ  
     
    ->
<-
予定ヨテイヒョウ  
     
  データベース ->
<-
予定ヨテイヒョウ  
     
    -> カレンダ  
     
    -> カレンダ  
     
    -> カレンダ  
     
 
  のようなシステムにすることもできます。  
 
  さらに、「カレンダ」とエンがきれた[予定ヨテイヒョウ」は、  
  入力ニュウリョクだけしかしない「チイさな予定ヨテイヒョウ」をつくったり、  
  「1ニチデータ表示ヒョウジ」「1シュウデータ表示ヒョウジトウのカレンダをツクることも簡単カンタンになります。  
  さらにさらに、このショウハジめにれたように、  
  とても使ツカいやすい入力ニュウリョクインターフェースをもつ市販シハンアプリケーションの入力ニュウリョクや、  
  とても魅力的ミリョクテキ出力シュツリョクインターフェースをもつ市販シハンアプリケーションの出力シュツリョクさえ利用リヨウできるかもしれません。
 
     
    ->
<-
予定ヨテイヒョウ  
     
    <- 1ニチ予定ヨテイヒョウ  
     
  データベース -> 予定ヨテイヒョウ  
     
    -> カレンダ  
     
    -> 一日イチニチカレンダ  
     
    -> 1シュウカレンダ  
     
     
    <- 市販シハンアプリケーション  
     
    -> 市販シハンアプリケーション  
     
 
  のようなシステムにすることもできます。  
 
  データをデータベースに保存ホゾンすることにすれば、  
  コード/システム構造コウゾウ複雑フクザツにはなりますが、  
  一端イッタン「データベースとの入出力ニュウシュツリョク」コードをこなしてしまえば、  
  入出力ニュウシュツリョクインターフェースの拡張カクチョウがおこないやすく、かつ強力キョウリョクになるわけです。  
 
  WEB-SERVER  
 
  WEB-SERVER は、インターネットジョウ公開コウカイするサーバーで、  
  WindowsのIIS(インターネットインフォメーションサーバ)や、Apache(アパッチ)などがあります。  
  技術的ギジュツテキに1ランクウエ、となりますが、  
  1から習得シュウトクしようとすれば、これまた大変タイヘンなことになるのでしょうが、  
  EXCELマクロをけるレベルであれば、IISでの.aspファイルをくことは割合ワリアイすぐできるし(これは本当ホントウ
  根性コンジョウ適切テキセツなお友達トモダチがいれば、perlだって無茶ムチャハナシじゃありません。(やっぱし無茶ムチャかな)  
  (データ入力ニュウリョクトモナわない「読込ヨミコミのみ」のファイルサーバーとしてなら、  
  WEB-SERVERをたちあげるのに、1〜2時間ジカンもあれば、げられます。  
   ・・・ボクいたりしないように)  
 
  ファイルサーバー志向シコウであっても、データベース志向シコウであっても、  
  WEB-SERVER をたてることは、それなりに意味イミがあります。  
  データベースで説明セツメイしたように、  
  ナニがしたいのかをカンガえれば、あえてWEB-SERVERをてる必要ヒツヨウがないことも多々タタありますが、  
  一端イッタンコードをいてしまえば、  
  てしないシステム拡張カクチョウ可能カノウになります。  
 
End.    
 
  イチコンピュータ私見シケンにすぎませんが、  
  時代ジダイのながれは、データベースからファイルサーバーへとモドりつつあるようです。  
  というより、  
  1つは、どんなファイルも、内容ナイヨウをデータベースのようにあつかえるようになりつつあり、  
  もう1つは、フォルダーごとデータベースのようにあつかえるようになりつつあると、  
  データベースをいじりたおすコストをカンガえれば、  
  EXCEL/WORDや、HTML、トウをそのまま管理カンリしたほうがずっと簡単カンタンだからです。  
 
  勿論モチロンこの背景ハイケイには、  
  キワめて高速コウソクで、おおきなメモリーをんで、しかも安価アンカなコンピュータがあふれつつあること、  
  何時間ナンジカンつなぎっぱなしでも、それほどコストがかからない、  
  かつチョウ高速コウソクなインターネットがあること、  
  そして、これまでのデータベースエンジンを進化シンカさせた知性チセイが、  
  ここ十年ジュウネンジャクくらいは、インターネットの検索ケンサクエンジンに興味キョウミかったこと、  
  さらにその技術ギジュツを、インターネットよりシタのネットワークにまで拡張カクチョウされつつあること、  
  などがあげられます。  
 
  コードをくためのハードルは、ミナさんがカンガえるより、ずっとヒクいです。  
  ボクカンガえるより、ずっとタカい? のであればごめんなさい)  
  で、コードをくためのイクつかのハードルをえるたびに、  
  いろんなことが自分ジブンでもできることがわかります。  
 
  コードをけるという前提ゼンテイで(自分ジブンがそのシステムをつくるんだという立場タチバで)、  
  コンピュータシステムやコンピュータ以外イガイのシステムをみてみると、  
  イクつかの無駄ムダ重複ジュウフク気付キヅいたり、  
  改善カイゼン」できそうなことをオモいついたり、  
  論理ロンリ矛盾ムジュン(?)」をみつけたり・・・、  
  トキには(「トキには」どころじゃないことも多々タタ)、  
  対象タイショウがコンピュータシステムであろうと、それ以外イガイであっても、  
  システムの「セキュリティホール」や「ボトルネック」に気付キヅくことさえあります。  
 
KOMPas  
 
  TEL   0949-29-2334  
  FAX   0949-29-2332  
  携帯ケイタイ   090-6777-4241  
  email   kompas@enissi.com (返事ヘンジ期待キタイしないでください)