記事一覧

プログラミング的思考「ユニーク」

2020.03.08

ユニークって単語を使った事がありますか?または聞いた事がありますか?
日常会話の中で「吉田君はユニークな人だね」って使う場合は、吉田君は楽しい人だねって意味になりますが、
コンピュータの世界で「吉田君はユニークな人だね」って言うのは、吉田君は唯一無二の人だねって事になります。
「唯一無二」の意味がわからなかったら、辞書で調べてみてください。あ、折角だからネットでググってみてください。


ユニークであると言う事は、必ず1つだけである事です。
例えば、「名前」はユニークではありません。同姓同名の人が居る場合があるからです。
「出席番号」は、クラスの中ではユニークですが、学校の中ではユニークになりません。
「学年-クラス-出席番号」の3つを組み合わせると学校内ではユニークになりますが、日本の中ではユニークになりません。
「電話番号」は市外局番まで入れれば、ユニークですが、電話を持っていない人も居ます。
住民基本台帳の「マイナンバー」は、ユニークで、かつ全員が持っています。(但し、日本国内に限られます。)

ユニークである事はコンピュータの世界では重要な事の一つです。

例えば、生徒の成績を管理するプログラムでは、ユニークな項目単位で成績を管理する必要があります。
名前はユニークでないので、名前毎に成績は管理できませんよね。
学校内の成績を管理するのであれば、「学年-クラス-出席番号」の組合せ毎に成績を管理すれば上手く行きます。
この学年とクラスと出席番号の組合せを「ユニークキー」と呼びます。
成績を管理するプログラムではユニークキー毎に成績を入力したり、ユニークキーで成績を検索したりする事になります。

学校の成績を管理するプログラムのユニークキーに「電話番号」は使えません。電話を持っていない人も居るからです。
学校の成績を管理するプログラムのユニークキーに「マイナンバー」は使えますが、そこまでは必要ありません。
生徒全員のマイナンバーを調べる手間と、個人情報を収集管理するリスクを考えると、マイナンバーを使うべきではありません。

プログラムの内容、範囲、コスト、リスクを考えてユニークキーを何にするか考える必要があります。
それから、もう一つ将来の拡張性も考えておきましょう。
将来、校長先生が新しい学校を開校した場合にも、この成績管理プログラムが使える様にユニークキーに「学校番号」を加える事で、
「学校番号-学年-クラス-出席番号」とすれば、校長先生の野望も満たす事ができて、予算も取りやすくなるかも知れません。

プログラムって、何なんでしょうか?

2020.03.04

身近な「プログラム」と言う言葉は、入学式のプログラム(式次第)があります。
最初に開会の言葉があって、次に新入生の入場、その後校長先生の話、その次は新入生代表の挨拶の様に入学式の最初から最後までの順番を書いたものをプログラムと呼びます。
コンピュータプログラムも、同じ事でコンピュータにさせる仕事を順番に書いたものをプログラムと呼んでいます。

入学式のプログラムを作成して、みんなが見える所に張り出しておくと、入学式に参加する新入生や保護者が式の進行を知る事ができます。
コンピュータプログラムを作成すると、コンピュータにさせたい仕事をコンピュータにさせる事ができます。
コンピュータに仕事をさせる場合は、その手順ややり方をプログラミングしなければなりません。

プログラム
プログラマー
プログラミング

みなさんには、得意な教科と不得意な教科があると思います。
ちなみに、私が学生時代は、給食と帰りの会が得意でしたが、国語と算数は不得意でした。

コンピュータにも得意な事と不得意な事があります。
コンピュータの得意な事は、同じ事を何度も間違いなく高速で休まずに繰り返す事です。
コンピュータの不得意な事は、空気を読んで回りの人に気を使いながら初めての仕事をする事です。

例えば、入学式のプログラムをコンピュータにやらせれば、コンピュータは高速に間違える事なく何度でも入学式を実行できます。
きっと、校長先生もコンピュータだったら、校長先生の長い話もあっと言う間に終わるハズです。
でも、入学式は1年に一回だけで良いのでコンピュータにさせるメリットがありません。
コンピュータの校長先生は、その日の天気や、出席者に配慮して話題を変えたり、話を早めに切り上げたりする事もできません。
なので、入学式はコンピュータでなく、本当の校長先生にお願いした方がよいと思います。

コンピュータにさせたほうが良い仕事、人間がした方がよい仕事、どちらが良いが考えてみてください。

 コンビニ店員、警察官、農家、総理大臣、学校の先生、トラックの運転手、などなど、、、

プログラミング授業

2020.03.01

2020年から、全国の小学校でプログラミング授業が開始されます。
具体的にどの様な授業が実施されるのかは分かりませんが、プログラミング授業の趣旨としては、
プログラミング的思考を学ぶ事や、進化するIT技術を理解し利用できる知識と技術を身に着ける事ではないでしょうか?

プログラミング授業を受けたから、全員がプログラマーになるための基礎を身に着ける事ができるとは思っていません。
論理的な考え方によって、論理的に問題を解決する方法があるって事を知る事ができれば、一つの成果ではないでしょうか。

とは言え、職業プラグラマーである私としては、プログラミング授業の中で少しくらいはプログラマーの真似事をするのもアリと思います。

ページ移動