| 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 | ||||||||
| kompas@enissi.com (返事は | |||||||||