第2講:もっともシンプルな「時間割表示システム」をつくる(1)

その1 「時間割表示システム」を分析し「授業の情報」を表示するプログラムを設計する

 「時間割表示システム」を作成してゆくに当たり、必要となる最小限の機能を実現するところから徐々にプログラムを組み上げてゆきます。その際どんな小さなプログラムにも、それがコンピュータに対する命令である以上は「なにをするためのプログラムなのか」という目的があることを忘れてはなりません。そのような目的あってこそ初めてプログラムが存在するのです。そこでまず「その1」では、プログラミングの一般的なプロセスに倣って、「時間割表示システム」を分析することでシステムを成立させる最小限の機能を洗い出し、そのような最小限の機能を備えるプログラムを設計します。 

(1)「時間割表示システム」にとって必要最小限の機能とは何か(分析の段階・1)

 この「時間割表示システム」が何を目的とするプログラムなのかについては、前回の第1講でまとめておきました。ここでもう一度おさらいをすると、

  • ある曜日・時限の時間割を知りたい人をユーザーとして想定し、その人が知りたい曜日・時限の時間割という情報の提供を目的とするプログラム

であるということでした。そしてそのために効率の良い方法を採ろうとした結果、サーバ・クライアントの機構を持つことになったということでした。さらにこのサーバ・クライアントという機構を実現するために、サーバ用、クライアント用という別々のプログラムを用意し、それぞれにネットワークを介した通信を行う機能を持たせることになったわけです。

 ここでこのシステムの元来の目的は何であるのか、に立ち戻ってみましょう。結局のところこのシステムは「ユーザーに対してある情報を提供すること」を目的としているといえるでしょう。すると、この目的を実現するために絶対に備えてなければならない機能とは、「時間割という情報を保持すること」そしてその「情報をユーザーに提供すること」、の2点であることが見えてきます。

(2)最小限の機能を実現するためには何が必要か(分析の段階・2)

 では「情報を保持すること」そして「情報をユーザーに提供すること」の2点を実現するためにはどのようなプログラムを作る必要があるのでしょうか。それを知るためには次のことを明らかにする必要があります。

  • 保持すべき「時間割という情報」とは何か
  • どうやって情報を「保持」し、「ユーザーに提供」するべきなのか

 この2点をプログラムとして記述して実現するやり方は一通りではありません。例えばここでいう「情報」とは時間割のことを指していることまでは明らかなのですが、ならば「時間割」とはいったいどのような内容を持つ情報なのでしょうか?以前にも述べたとおりコンピュータは融通が利きません。ですからこちらからちゃんと「時間割とは〜のことだ」ということをあらかじめはっきりと教えておく必要があるのです。もちろん「保持」するやり方や「ユーザーに提供」するやり方についても同様のことがいえます。

 そこで今回は「もっともシンプルなやり方をとる」という方針に従って、それらについての定義を行います。まず最初に「時間割という情報」についてですが、これは次のように考えてみます。

  1. 「時間割」とは、1週間を月〜金までの5日間と考えた際の、各曜日の「1日分の時間割」を5つ集めたものである。
  2. 「1日分の時間割」とは、1日の授業数を5時限分と考えた際の、各時限ごとの「授業の情報」を5つ集めたものである。
  3. 「授業の情報」とは、その授業が行われるのが何時限目かを表す「時限」、その授業の「科目名」、その授業が行われる「教室名」、という3つの要素から成り立つ情報である。

 少々ややこしいように見えますが、要は「<時間割>=<1日分の時間割>×5」、「<1日分の時間割>=<授業の情報>×5」、そして「<授業の情報>=<時限>+<科目名>+<教室名>」であるということです。プログラムが扱う情報を決定するときの大原則は、すべての項目が過不足なく定義されていること、です。そしてそのやり方の基本となるのは「Aは〜である」式の定義と「Aが〜個集まったものをBとする」式の定義の2つです。今回は1週間分の「時間割」というもっとも大きな情報をより小さな単位の情報へと分割することで、情報の定義を行いました。その結果、「時間割」を構成するもっとも小さな単位の情報は1時限分の「授業の情報」である(「時限」「科目名」「教室名」はそれぞれ単独ではユーザーに提供すべき情報としての意味を持ち得ない)こと、そしてこの「授業の情報」とは「時限」「科目名」「教室名」という3つの要素から成り立つ情報であること、が定義されたのです。

 さて、つぎは情報を「保持」し「ユーザーに提供」するやりかたですが、これはどうしてもある程度プログラムの知識がないと定義できないように思われます。ただし「ユーザーに提供する」ということについては、今回扱われる情報が文字であることを前提とするならば、情報を「ディスプレイに表示する」ことでそれを実現することができます。実際に第1講では、完全版「時間割表示システム」もその方法を採っていることを見てきました。

(3)「授業の情報」を表示するプログラムの設計

 さて、(1)(2)で行ってきた分析の結果を踏まえ、さっそく第1作目となる最小版のプログラムを設計してみましょう。現在までに判明している情報をあわせると、プログラムの設計は次のようなものになると思います。

1)プログラム全体の目的:時間割という情報をユーザーに提供する。

2)このプログラムにおける時間割とは:1時限分の「授業の情報」

3)必要な仕事と手順:<1>「授業の情報」を定義する

           <2>「授業の情報」に具体的な内容を与える

           <3>「授業の情報」の内容をディスプレイに表示する

 必要な仕事とその手順の<1>は、すでに「授業の情報」が「時限」「科目名」「教室名」という3項目からなると定義されているので、それをコンピュータに教えることが仕事の内容になります。<2>は「授業の情報」として実際にディスプレイに表示される内容(たとえば「1限、情報処理、i308」)をコンピュータに記憶させることを意味します。<1><2>をもって「情報の保持」を実現するのです。その結果はじめて<3>による「ユーザーへの情報の提供」が可能となります。

 これ以上の細かいことは、現在の知識では決定できません。ということで、つぎの「その2」では、実際にこの設計に従ってプログラムを作成します。


リンク:

<全体のトップページ>

     |

<第2講のトップページ>

     |-------------------------|-------------------------|

<第2講・その1>      <第2講・その2>      <第2講・その3