高等学校情報Cのソースを表示
←
高等学校情報C
ナビゲーションに移動
検索に移動
あなたには「このページの編集」を行う権限がありません。理由は以下の通りです:
この操作は、次のグループに属する利用者のみが実行できます:
登録利用者
。
このページのソースの閲覧やコピーができます。
<small> [[情報技術]] > 高等学校情報C</small> ---- ==情報C== 情報Cでは、情報のデジタル化のしくみについてより詳しく説明する。また、通信機器のしくみについて詳しく説明し、その使い方について述べる。 ===情報のディジタル化=== [[高等学校情報B]]では、様々な情報を0と1だけを用いて表現する方法について述べた。ここではそれらの手法についてより詳しく説明する。 ====情報のディジタル化の仕組み==== ここでは、数値、文字、音、映像データなどの扱い方についてより詳しく述べる。 =====数値===== まず、数値について説明する。[[高等学校情報B]]では、数値は実数と整数の表わし方について 述べた。ここではそれらについてより詳しく扱う。整数は、10進数で書かれた数を2進数で表わすことで、 デジタルデータとすることが出来た。ここでは、10進数で書かれた数と、2進数で書かれた数の関係について 扱う。10進数で、'abc.de'と書かれる数があるとする。例えば、123.45などの小数は、この形で表わされる。 このとき、この数は :<math> 10^ 2 a + 10^ 1 b + 10^0 c + 10^{-1} d + 10^ {-2} e </math> と書くことが出来る。これは、10進法では、大きさが10倍になるごとに、桁が1つずれることに対応している。 このような記法は、1つの整数の組(a, b, c| d, e)から、唯一の10進数の数を定める方法を与える。ただし、|の記号は、小数点の位置を表わしている。 このことの逆として、全ての10進数で書かれた有限小数に対して、ただ1つの数の組が対応することも わかる。ただし、数の組に含まれる整数の数は、与えられた有限小数の性質に応じて変化するものとする。 逆の証明は数学的帰納法によらなければならないのでここでは省略するが、ある整数nに対して、対応する数の組を見つけ出す方法を与えておく。 # nよりも小さく、しかも10のべき乗で表わされる数の中で、最も大きいものを見つける。 # 1で得たべき乗の指数をeとする。 # nを<math> 10^e</math> で割って、商dと余りrを求める。 # 整数の組の中で、最も上に書くべき量が、dである。 # 1から4の作業をrに対して行なう。rが0だったときには、ここまでの手順で整数の組が見つけ出されたことになる。 この展開は、10のべき乗ではなく2のべき乗を用いて行なっても、全く変化することなく行なうことが出来る。 同様に得られた数の組に対して、ただ1つの小数を対応させる方法もすぐにわかる。例えば、数の組(a, b, c, d, e|)に対しては、 :<math> 2^4 a + 2^3 b + 2^2 c + 2^1 d + 2^0 e </math> というただ1つの整数が対応する。このような記法で書かれた数を10進数に対して2進数と呼ぶ。実際には10や2だけでなく、 任意の自然数nに対してn進数を構成することが出来る。 ;問題例 :;問題 ::次の10進数を2進数を用いて書き直せ。 :::(I) 5 (II) 20 (III) 0.5 (IV) 320.75 :;解答 ::先ほど得た手順を用いて、与えられた数を展開していけばよい。小数の扱い方も展開を用いればよいが、若干非直観的に見えることがあるので注意が必要である。例えば、10進数の0.1は、2進数では無限小数になる。 :;(I) ::<math> 5 = 1 \times 2^2 + 0 \times 2^1 + 1 \times 2^0 \rightarrow 101 </math> :;(II) ::<math> 20 = 1 \times 2^4 + 1 \times 2^2 \rightarrow 10100 </math> :;(III) ::<math> 0.5 = 2^{-1} \rightarrow 0.1 </math> :;(IV) ::<math> 320.75 = 2^8 + 2^6 + 2^{-1} + 2^{-2} \rightarrow 101000000.11 </math> :;問題 ::与えられた2進数を、10進数に変換せよ。 :::(I) 111 (II) 11011 (III) 0.1 (IV) 1101.001 :;解答 ::上で用いた展開の逆を行なえばよい。小数についてはやはり注意が必要である。 :;(I) ::<math> 111 \rightarrow 2^2 + 2^1 + 2^0 = 7 </math> :;(II) ::<math> 11011\rightarrow 2^4 + 2^3 + 2^1 + 2^0 = 27 </math> :;(III) ::<math> 0.1 \rightarrow 2^{-1} = 0.5 </math> :;(IV) ::<math> 1101.001 \rightarrow 2^3 + 2^2 + 2^0 + 2^{-3} = 13.125 </math> :以上の手順で数値を2進数で表わすことができることがわかった。 実際には2進数で大きい値を書くと扱いづらくなることから、8進数([[w:オクタル]])や16進数([[w:ヘキサデシマル]])が用いられることが多い。 8進数や16進数が用いられるのは、8や16が、2のべき乗で表わされる数であり、対応がつけやすいことによる。 例えば、111000111000のような大きい2進数があったとする。 このとき、8進数では、この値を3つずつに区切って、読み取ればよい。 これは、8が2の3乗に等しいことによる。 上の例では、111は、8進数で7に対応し、000が、0に対応することから、8進数では7070と書くことが出来る。 ここで、数が8進数で書かれていることを示すために昔のC言語の八進数リテラル表現を借りて "0" を前置して、07070 の様に表記することがある<ref>[[C言語|標準C言語]]では、07070のほか0o7070のように 0o を前置する方法でも8進数リテラルを表現でき、単にゼロを前置する表記は「単なる桁合わせのつもり」で書いてしまう事故が後をたたないため、現在は 0o を前置する方法が推奨されている。</ref>。 一般に、8進数では0から7までの数字を用いることに注意。 一方、16進数では、2進数を4つずつに区切って扱うことが出来る。 16進数は10進数より多くの数字を使うため、0から9の数字では数字が足りなくなる。これを補うため、9の後に A,B,C,D,E,F あるいは a,b,c,d,e,f が用いられる。 上の例は、 1110: E, 0011: 3, 1000: 8を用いて、E38と書ける。 16進数は、C言語の16進リテラル表現を借りて "0x" を前置して 0xE38 の様に表記することが多い<ref>他の16進数表記としては E38<sub>16</sub>のように基数を右下に小書きする表現や、$ そ前置あるいは後置する表現がある。</ref>。 次に、負の整数の扱い方について述べる。 ある数の正負を表す方法は、いくつかある。 * 絶対値と1ビットの正負の別を表す情報「[[w:符合ビット]]」で表す方法。 * 負の数を[[w:2の補数]]を用いて表す方法。 が代表的だが、[[w:1の補数]]など他の方法が採用される場合もある。 多くのプロセッサーでは、整数には2の補数表現が用いられ、浮動小数点数には符合ビット表現(符号+指数+仮数)が用いられる。 =====文字===== [[高等学校情報B]]では、コンピュータが扱う文字に対して互いに重複しないある数値を当てはめ、それによって文字を扱うことを述べた。ここでは具体的な 文字コードとして[[w:アスキー]](ascii)コードと、[[w:ユニコード]](UNICODE)について扱う。asciiコードは、aからzまでの小文字アルファベットとAからZまでの大文字 アルファベットを含む、128種類の文字を表わす広く用いられる1[[w:バイト]]の文字コードである。それぞれの文字と数値の対応は[[w:アスキー]]を参照。 実際に文字が数値と対応付けられていることを見るために、ここでは[[w:プログラミング言語]][[w:Python]]を用いる。Pythonについて詳しくは、 [[高等学校情報B]]を参照。Pythonはデータ型として文字列を 扱うことが出来るが、特に、"\xi??"の記法によって、1バイトの情報を直接書きこみ、それを文字列として扱うことが出来る。ここで、??は、16進数で 表わされる数値である。そのため、ここでasciiコードに対応する数値を書きこみ、結果が文字として表示されれば、asciiコードが対応する文字を 表わす数値を与えていることが示される。具体的には、 print "\x61" などを実行してみるとよい。16進数での61は、asciiコードでは'a'に対応する。そのため、これを実行すると、画面に'a'が出力されるはずである。 次に、ユニコードについて述べる。世界には様々な文字が存在するが、それらの文字には互いに重複した文字コードが与えられており、異なった言語の 文字を同じファイル内で用いるためには特別な工夫が必要であるという情況があった。その情況を打開するために用いられるようになった文字コードが ユニコードと呼ばれる方式である。ユニコードは世界で用いられる全ての言語に対して、単一の文字コードを与えて、それらを統一的に扱うことを 目指した文字コード体系である。 ユニコードを作成することは、用いる情報を増やすことで、 扱う文字の数を無限に増やせることを考えると、単に現存する文字を集めることだけが目的のプロジェクトのように思われる。しかし、実際には asciiコードなどの有力な文字コードに対する互換性などを保持するため、それらと重複しない文字コードを作成することが重要となった。 asciiコードでは、当てはめられている文字は128個だけである。一方、1バイトの情報は、256通りの情報を表わせる。これは、1バイトが8[[w:ビット]]に 対応しており、用いられる情報が <math>2^8 = 256</math> 通りだけあることによる。そのため、asciiコードに対応する文字に1バイトだけを当てはめるコードを用いても asciiコードで用いられていない数値に対応するバイトから始まるバイト列を他の文字に対応させることで、2、3、4バイトの情報で表わされる文字を 作ることが行なわれた。現在よく用いられているユニコードとして、[[w:UTF-8]]と呼ばれる文字コードがあるが、これはasciiとの互換性を維持している。 この文字コードは、1から4バイトの情報をそれぞれの文字に当てはめている。日本語で用いられるひらがな、かたかな、漢字はどれも3バイトで表わされる。 通常、日本語のデータを扱うためには、<math>256 ^2 = 65536</math> 通りの文字を用いれば事が足りるため、これまでの日本語文字コードでは、それぞれの文字を 2バイトで表わすことが多かった。一方、UTF-8を用いると、1文字当たりに必要となるサイズが増えるため、日本語のデータの大きさが増えることが 問題となる。しかし、UTF-8を用いることで他の言語との親和性が高くなることから、UTF-8は広く用いられるようになっている。 UTF-8の使い方を確かめるために、Pythonを用いてみる。例えば、日本語の'あ'に対応するUTF-8は、'0xe38182'である。ここで、 print "\xe3\x81\x82" を実行すると、'あ'が表示されるはずである。ただし、これは用いている環境が、UTF-8の日本語を表示できるかによるため、情況によっては うまくいかないこともあるかも知れない。 <!-- Fedora Core 3 では、ほぼ初期状態でうまくいった。 --> =====音===== 次に、音の保存方法についてより詳しく述べる。[[高等学校情報B]]では、音がただ1つの数値を時間的に 記録し続けることで、デジタルデータへと変換できることを述べた。このような音声データを[[w:PCM]]形式と呼ぶ。この形式は 非常にファイルのサイズが大きくなることが多く、楽曲を配付するような目的ではデータの通信に時間がかかることが 問題となる。この問題を解決するため、データの[[w:圧縮]]を行なう方法が工夫された。圧縮とは、データの性質を できるだけ変えないように保ったまま、データのサイズを小さくすることである。データの圧縮については次章でより詳しく扱う。 <!-- データのサイズを'情報量'と呼ぶのは間違いだと書いてあったのはどこだっただろうか ... 。 情報量を減らさないようにサイズを減らすのが圧縮(可逆圧縮)である。 --> よく用いられる圧縮形式には、[[w:MP3]]形式がある。この圧縮法の詳細にはふみこまないが、詳しく知りたい場合にはja.wikipediaの対応する 記事などを用いるとよいだろう。また、上で用いた圧縮形式は、ライセンスに制約があり、保存されたファイルを用いることに 制限が生じる場合がある。この制限を乗り越えるため、[[w:Ogg Vorbis]]形式の圧縮法が提唱された。 この形式は、ライセンスによる制約が生じないように工夫されているため、今後広まっていくものと考えられる。 <!-- 希望的観測もあるが ... 。今の時点では、どのように変化が起こっているかはよくわからないので。 --> =====画像===== 次に、画像の保存法について詳しく述べる。[[高等学校情報B]]で、画像が各点([[w:ピクセル]]と呼ぶ)の 赤、青、緑の光の強さ(この3色を[[w:RGB]]と略すことがある)で、表わすことが出来ることを述べた。実際には、音楽と同じ理由で、 映像データも圧縮を行なって、データサイズを小さくすることが多い。よく用いられるファイル形式には、[[w:GIF]]、[[w:PNG]]、[[w:JPEG]]などがある。 <!-- JPEGは、本来ファイル形式ではなかったはずだが ... 。何だっただろうか ... 。 --> ここでは、画像を扱う簡単な方法として、[[w:XPM]]形式について述べる。XPM形式とは、文字列をそのまま画像として扱う方式であり、GUIのツールが なくても画像を扱うことが出来る方法として重宝される。XPMは[[w:C言語]]で用いることを考えて作られた形式であるので、その記録方式は 少し妙に見える所を含んでいる。ここでは簡単なXPMを扱う。 1: static char ** a = { 2: "5 5 2 1", 3: "w c #ffffff", 4: "b c #000000", 5: "bbbbb", 6: "bwwwb", 7: "bwbwb", 8: "bwwwb", 9: "bbbbb" 10: } 典型的なXPMのデータは上のようになっている。最初のstatic char ** a = { と、 最後の }の部分はC言語の対応する機能なのでここでは述べない。 2行目の"5 5 2 1"は、それぞれ画像の幅、高さ、用いる色の数、それぞれのピクセルを表わすのに用いる文字の数を定めるパラメータである。 ここでは、縦横5ピクセルの図形で、色の数は2色とし、それぞれの色を扱うためにbとwの文字を用いているのでこのような値にセットしてある。 3、4行目は、それぞれの文字にどの色を当てはめるかを定める行である。ここで、"w c #ffffff"の部分は、wに対しては、カラー(Color)で、#ffffff で表わされる色を当てはめることを述べている。ここで、ffffffの表式のうち、最初の2文字は、赤の強さに対応しており、その強さを 16進数で表わした色を表わしている。また、3,4文字目は緑の強さ、5,6文字目は青の強さをそれぞれ表わしている。全ての色の強さが最も 強いときには、対応する色は白であることが知られている。結局3行めは、wに白を当てはめることを述べている。4行目も似た文だが、ここでは、 bに黒を当てはめている。実際の画像データは5から9行目に記録されている。ここでは、白で黒を囲んでいるように見えることを意図しているが わかりづらいかも知れない。実際にXPM形式のデータを扱えるソフトウェアとしては、[[w:en:ImageMagick]]などが知られている。 <!-- PNG形式に直してアップロード --> ====情報機器の種類と特性==== ここでは、様々な情報機器について説明する。具体的には、[[w:プリンタ]]、[[w:スキャナ]]、[[w:デジタルカメラ]]などを扱う。 プリンタは、映像などのデータを紙に印刷するための情報機器である。プリンタはビデオカード同様、映像データを3色を用いて 表わし、その情報を元に、紙のある部分に印刷する色を決める。ここで、プリンタが紙に色を転写する方法がいくつかある。 代表的な例として、[[w:ドットインパクトプリンタ]]、[[w:インクジェットプリンタ]]、[[w:レーザプリンタ]]などがある。 ドットインパクトプリンタは、やや古い型の白黒プリンタに多く、[[w:インクリボン]]を機械的に叩きつけることで紙に色を写す方式 である。インクジェットプリンタは、近年でもよく用いられる方式であり、カラーと白黒の両方が扱えるタイプが多い。 これは、画像データに対応するように紙にインクを吹き付けることで、紙に色を写す方式である。レーザプリンタは、 やや高価であるが、高速な印刷が出来るため、オフィスなどの業務用のプリンタとして用いられることが多い。こちらも 白黒とカラーを使いわけられるタイプが多い。方式としては、それぞれの色に対応した[[w:トナー]]を用い、それに[[w:レーザ]]を 照射することで、色を写すという方法を用いている。ここで、レーザとは波長のそろった光のことであり、これは減衰することなく 長距離を伝搬することが知られている。また、通常の光と比べてより強い指向性があるため、細かい操作にも向いている。 レーザの照射原理はかなり複雑であることが知られている。[[w:レーザ]]、[[量子光学]]などを参照。 次に、スキャナ([[w:イメージスキャナ]])についてまとめる。スキャナとは、紙などを機械に挟みこみ、その紙に描かれている内容を、デジタルデータに 変換する装置である。描かれている内容を変換する点で、この機器はデジタルカメラに似ているが、大量のデータを読みこむ 用途などでよく用いられる。また、プリンタと同じ機具にスキャナの機能をつけた製品もあり、このような製品はオフィスなどでよく用いられている。 最後に[[w:デジタルカメラ]]についてまとめる。デジタルカメラは、既存のカメラと同様、光を集め、それを記録することが出来る 装置である。デジタルカメラと既存のカメラの違いは、既存のカメラが光を記録するのに[[w:化学反応]]を用いるのに対して、 デジタルカメラは、光をデジタルデータに変換する機具を用いることにある。ここで、既存のカメラで用いられる化学反応は、 カメラの種類によって異なっているが、銀塩を用いた反応が有名である。 これらの機具を用いて、写真をデジタルデータとして扱ったり、デジタルデータを紙に出力したりすることが出来る。 ただし、デジタルデータは複製が用意であるため、写真を何らかの方法でデジタルデータとして公開した場合には、 それらが不特定多数の人の目にふれる可能性が高い。このことは、写真に写った人の、[[w:肖像権]]を侵害する 恐れがあるため、写真を公開するときにはごく注意し、相手の確認を求めるなどの対策を取ることが望ましい。 ====情報機器を活用した表現方法==== ここまでで様々なデータをデジタルデータとして用いる方法について説明して来た。ここまでで知った情報機具などを用いて、 何らかのプレゼンテーションなどを行なうことがここでの課題である。 *課題 デジタルカメラ、スキャナなどの機具を用いてプレゼン資料を作成し、実際にプレゼンテーションを行なう。 ===情報通信ネットワークとコミュニケーション=== ここでは、情報通信ネットワークの性質とそのしくみについて扱う。 ====情報通信ネットワークの仕組み==== [[高等学校情報A]]、[[高等学校情報B]]では、情報通信ネットワークの重要性や問題点について学んだ。ここでは、 情報通信ネットワークがどのような仕組みで動いているかを説明する。 情報通信を行なうには、何らかの機具を用いて複数のコンピュータを接続する必要がある。これらを総称して、 [[w:通信機器]]と呼ぶ。代表的な例として、[[w:モデム]]、[[w:ADSLモデム]]、[[w:イーサネットカード]]などが あげられる。これらの機器はそれぞれ異なった原理で他のコンピュータに情報を伝達する。 <!-- モデムは、デジタルデータをアナログデータに変換し、そのアナログデータを電話回線を通して通信し、他の コンピュータに情報を伝達する手法である??。ADSLモデムは、用いる回線は電話回線であるが、モデムとは異なった 手法で伝達を行なう。最後に、イーサネットカードは専用のケーブルを用い、情報をデジタルデータで表わされる 電気信号で伝達する機具である。イーサネットカードは会社内などの比較的近距離の通信で用いられることが多く、 これによって作成されたネットワークを[[w:LAN]]と呼ぶ。 --> ここまでで、コンピュータ間で情報伝達を行なう物理的方法について述べて来た。ここからは、各コンピュータ間で デジタルデータが伝達できるものとして、それを用いてより安定した手法で通信を行なうためにはどのような 手法を用いるかについてまとめる。 まず、複数のコンピュータと通信するために、各コンピュータにそれらを識別するための番号をつける必要がある。 また、個々のコンピュータにつけた番号に加えて、コンピュータをネットワークにつないだときにだけ、 コンピュータに与えられる番号を用意することが望ましい。これは、例えばあるコンピュータを一旦ネットワークから 切り離して、別の組織に属するネットワークに接続しなおしたとき、そのコンピュータがその時点では 移された側の組織からネットワークに接続していることを、明確にしておくことがそのコンピュータの 場所を見つけ出す上で望ましいからである。 現在用いられている[[w:インターネット]]は、このような手法を用いてそれぞれのコンピュータを管理している。 まず、各々のコンピュータが持っている数値を[[w:MACアドレス]]と呼ぶ。この数値は、実際にはコンピュータではなく、 コンピュータの通信機器が持っている数値である。複数の通信機器を持っているコンピュータは複数のMACアドレスを 持っていることになる。次に、各々の組織に与えられ、コンピュータを接続する時に個々のコンピュータに 与えられる番号を、[[w:IPアドレス]]と呼ぶ。IPアドレスを個々の組織ごとに与えることは、ある1群のIPアドレスが 常にある機関に属することを保証することで、情報通信を簡単にする働きがある。 また、あるIPアドレスを持ったコンピュータに対して、より安定した方法で情報の伝達を行ないたいことがある。 例えば、通信機器としてモデムを用いたときには、何らかの理由で送った波形が乱され、 正しい情報が伝わらないことがある。このような場合、何らかの手法で発信元にその旨を伝達し、失われた情報を 再送してもらうことが望ましい。このような規格として、現在では[[w:TCP]]と呼ばれる手法が用いられている。 TCPはかなり複雑な手法であるので、ここでは詳しくは述べない。 ここまでで情報通信を行なう手法としてTCP、IPなどの手法を述べて来た。これらをまとめて[[w:TCP/IP]]と 呼び、この名称はインターネットで用いられる[[w:プロトコル]]として有名である。ここで、プロトコルとは、 情報通信を行なう形式のことを総称する場合に用いられる用語であり、英語の名詞protocol'手順、規約'から来ている。 ここからは、情報通信における個人認証や暗号化の重要性について述べる。インターネットを利用するときなどには、 重要な個人情報をネット上に流す必要がある場面がある。例えば、飛行機の予約やインターネットバンキングを用いる 時には、利用者が代金を支払う方法を指定しておく必要があり、そのために、利用者が誰であるかを知っておく必要が ある。デジタルデータは、その性質上複製が容易であるため、これらのデータを丁寧に扱わないと、相手に伝達する途中に 他人に読み取られる恐れがある。このため、例えその内容を見られたとしても、容易には内容を解読されない仕組みを用意することが望ましい。 このような仕組みとして、[[w:暗号]]を用いる方法がある。具体的には、送信するデータを暗号化し、送った先で 再び元の内容に戻すという手法である。暗号化の手法にはいくつかの有力な方法が知られている。このうちの 多くの手法では、利用者に[[w:パスワード]]の入力を求め、そのパスワードに何らかの変換を施した結果が、 対応するデータに記録されている結果と一致しているかどうかで、暗号を読むことが許可されているかどうかを 見る。そのため、暗号を用いるときには、簡単かつ推測されにくいパスワードを作成することが重要である。 パスワードは、ネットワークを挟んで相手が求めている人であるかを決めるためにも用いられる。 このような作業を個人[[w:認証]]と呼ぶ。このようなパスワードはネットワーク中に送信される前に 暗号化されることが望ましい。 ====情報通信の効率的な方法==== ここでは、情報の通信速度の単位や得られた情報の誤りを検出する方法、また情報の圧縮について簡単にまとめる。 情報通信速度とは、単位時間あたりにどれだけの情報を伝達できるかを表わす値である。単位としては、 [[w:bps]]を用いる。これは、 bit per second 'ビット毎秒'の略である。ここで、[[w:ビット]]とは、 2通りの情報を表わす量である。2通りの情報とは、0と1で表わされる情報のことであるので、 例えば1bpsは、1秒あたりに1つの0か1を伝達できるということを表わしている。コンピュータ間の情報伝達は、 0か1の信号を伝達することで行なわれるので、この単位は、情報伝達の速度を表わす単位としての役割を果たす。 次に、情報伝達によって得られた情報が正しいかどうかを検出する方法について述べる。情報伝達ネットワークを 通して得られた情報は、伝達の過程で変化してしまうことがある。これは、伝達される信号が電気信号であり、 外部的な要因から影響を受けることがあることから、避けられないことといえる。伝達された情報が 間違ったものとなってしまうことは望ましくないことであり、何らかの方法でこれらを検出する方法が必要となる。 実際には情報が誤ったものであることを検出する多くの方法が存在し、[[w:誤り検出]]の方法と呼ばれている。 ここでは、そのうちの簡単なものである、[[w:パリティビット]]の方法についてまとめる。 パリティビットとは、送信する情報の中の0または1の数を、常に偶数、または奇数に保つように、送信する データに1ビットのデータを加える手法である。仮に、送信された情報に1ビット分の誤りが現われたときには、 これは、元々が偶数であったなら奇数となり、奇数であったなら偶数となることから、何らかの誤りが生じたことが 検出されるのである。この手法は簡単だが、2つ以上の誤りが生じたときには誤りが起こったことを検出できない ことがあることに難点がある。より高度な誤り検出手法としては、[[w:CRC]]があげられるが、この手法の説明には かなり高度な数学を要するので、ここでは扱わない。 最後に、情報の圧縮手法についてまとめる。情報の圧縮とは、情報が持つ内容を変化させないで、情報の 大きさを減らす手法である。ここでは、簡単な情報圧縮の手法である[[w:ランレングス法]]([[w:en:Run-length encoding]])について まとめる。ランレングス法とは、同じ値が長く続いているときに、それをその値と値の数に置き換える 手法である。例えば、aaaaabbbbbcccccというデータがあったとする。このとき、データの数に注目して、 a5b5c5とまとめたとしても、データの指す内容は変わらない。これによってデータの大きさを減らすことが できたわけである。ランレングス法はわかりやすいが、同じ値がくり返されるような情報に対してしか 効果が得られない。より一般的な圧縮法については[[w:圧縮]]などを参照。ただし、これらの内容は高度な内容である。 ====コミュニケーションにおける情報通信ネットワークの活用==== ここでは、実際にインターネットを利用して、コミュニケーションを行なう手法について述べる。 インターネットを通じて提供されるサービスの主要なものとして、[[w:ワールドワイドウェブ]](WWW)、 [[w:電子メール]]があげられる。これらは、インターネットを通じて用いられることから、 どちらもTCP/IPをプロトコルとして用いている。しかし、これらの手法は、TCP/IPに加えて、 WWWでは[[w:HTTP]]、電子メールは[[w:SMTP]]、[[w:POP3]]などのプロトコルを用いている。 実際にはプロトコルは階層構造になっており、HTTPなどのプロトコルは、TCP/IPのプロトコルを 使用することを前堤とした上で、定義される手法である。具体的には、HTTPは、TCP/IPを用いて 接続の相手を確立した後、実際に伝達される情報などを定めている。例えば、Webページを送ってほしい時には、クライアントは GET / HTTP/1.0 という情報をサーバに送信する必要がある。このように、実際に情報を受け渡すときに、どのような指令を送るかを定めたのがHTTPプロトコルである。 TCP/IPは、情報を間違いなく送信する部分と、送信先のコンピュータの位置を探す部分を担当しており、どのような情報が送信されているかには 関係していないことに注意が必要である。プロトコルにおける階層構造のより詳しい説明については、[[w:OSI参照モデル]]などを参照。 ここまでで、WWWと電子メールがそれぞれのプロトコルに従って情報伝達を行なうことについて述べた。 プロトコルに従うためには、これらのプロトコルに従って情報を発信するソフトウェアを手に入れることが 望ましい。具体的にはこれらのソフトウェアは、WWWに対しては、[[w:Webブラウザ]]、 電子メールに対しては、[[w:メーラ]]、[[w:MUA]]などと呼ばれる。 実際にはプロトコルを扱うだけでなく、読みこんだ情報を表示したり、メールを整理したりするための 機能も追加されるため、これらのソフトウェアは高度なものとなりやすい。 オープンソースのWebブラウザには、有名なものとして[[w:Firefox]]があげられる。 <!-- Sleipnirは、オープンソースだっただろうか ... 。というか、ここにあげた方がよいのだろうか ... 。 --> また、メーラとしては[[w:Thunderbird]]、[[w:Evolution]]が有名である。 ここでは、Firefoxと、Thunderbirdを用いて、その使用法について簡単にまとめる。ここではこれらは既に 導入されているものとする。導入の情報については、後述の付録を参照。 Firefoxを起動すると、ホームに登録されているWebページが表示される。実際にはこのWebページを取得するために 既に、HTTPプロトコルを用いた情報伝達がなされていることに注意。与えられた[[w:URL]]に存在する情報を取得するには、 上方にあるバー内に、対応するURLを書きこめばよい。例えば、 http://en.wikibooks.org/wiki/Main_Page などを試してみよ。これによって、対応するコンピュータにHTTPプロトコルを 用いた情報が送信される。ここで、相手方のコンピュータを指定するには本来IPアドレスを指定する必要があったことに 注意が必要である。上では人間にも読める文字列を用いたので、これをIPアドレスに変換する機構が存在することになる。 この様な機構を'名前解決'と呼び、これを行なうサーバを[[w:DNSサーバ]]と呼ぶ。 <!-- DNSはプロトコルの1種であり、IPを用いた通信で補助的に 用いられる --> ここまででHTTPプロトコルを用いて情報を取得する方法について学んだ。実際には、ブラウザには他にも機能が存在する。 例えば、既に訪れたWebページを記録しておく機能や、よく閲覧するWebページを登録しておく機能などがある。<!-- しかし、 これらは単にコンピュータ内の記憶装置に指定されたWebのURLを記憶しておくだけの機能であり、複雑な機能ではない。--> それ以外にもブラウザには、[[w:HTML]]や[[w:JavaScript]]を解釈するなど多くの機能があるが、ここでは詳しくは扱わない。[[Firefox]]などを参照。 <!-- [[Firefox]]は書かれるだろうか ... ? やはり安易な赤リンクはやめた方がいいだろうか ... ? --> ここからは、Thunderbirdについて解説する。Thunderbirdはメールの送信と受信を行なうことが出来るが、実際に メールの配信を行なうのは、メールサーバと呼ばれるプログラムであり、Thunderbird自体はその機能を持っては いない。実際にThunderbirdが行なっているのは、メールサーバが受け取ったメールをクライアントのコンピュータまで 取り寄せる作業や、クライアントが送信したいメールをメールサーバに送り届ける作業である。 これらの作業にはそれぞれPOP3プロトコルとSMTPプロトコルが対応しており、それぞれのプロトコルに対応する メールサーバの名称(もしくはIPアドレス)をThunderbirdに与えておく必要がある。ここではそのような作業が 既に行なわれているものとする。 Thunderbirdには、文章を作成する機能も含まれており、それを用いて送信する文章を作成することが出来る。 文章の作成が終わったら、送信先の[[w:メールアドレス]]を入力する。メールアドレスの整理にアドレス帳という 機能を用いることもできるが、ここでは扱わない。メールアドレスの入力が終わったら、メールの送信を行なう。 メールの送信はSMTPプロトコルを通じて行なわれる。Thunderbirdは、入力された文章とメールアドレスを用いて、 プロトコルに従った情報を作成し、指定されたメールサーバに送信したいデータがあることを知らせる。 このとき、SMTPサーバは認証を行なうよう求める。これもSMTPプロトコルによって定められた手順である。 認証には自分のIDと、パスワードが必要である。IDとパスワードも正しい形式と順番で送信しないとメールサーバは 応答しない。しかし、その作業はThunderbirdが代行するので、単にIDとパスワードの欄に与えられた情報を 書きこめばよい。パスワードが正しいときには、サーバは送信したい情報を送信するよう促すので、Thunderbirdは、 これを送信する。これでSMTPプロトコルを用いたメール送信は完了である。 自分に来たメールを閲覧するときにもほぼ同じ手順が用いられる。POP3プロトコルは、認証を行ない、それが 成功すると、対応するIDに送信されたメールをクライアントに向けて送信する。これを受信することがThunderbirdの行なう作業である。 他にも、メーラには送られて来たメールがHTML等で書かれていたときにそれを正しく表示するなどの機能が含まれている。 詳しくは[[Thunderbird]]などを参照。 <!-- ここまででWWWと電子メールの簡単な使い方について述べた。 --> ===情報の収集・発信と個人の責任=== ここでは、情報発信に伴う責任についてまとめる。また、収集した情報を表計算ソフトウェアを用いて分析する手法についても扱う。 ====情報の公開・保護と個人の責任==== 今日では情報機器を用いることで、個人が広く情報を発信することが可能になって来た。しかし、情報を発信することが簡単に なったとはいえ、発信には多くの責任が伴うことを忘れてはならない。間違った情報や不正確な情報は、社会を混乱させることが あり得るからである。ここでは、情報発信に伴う責任について簡単にまとめる。 まず最初に、情報の中にはそれを秘密にすることが要求されるものがあることに注意する必要がある。例えば、クレジットカードの 暗証番号などに代表される、パスワードに類するものは、その最たる例である。しかし、それ以外にも道義的にも[[w:法]]的にも それを出来る限り秘密にすることが当然とみなされるものもある。例えば、ある人の名前、年令、職業などの情報は[[w:個人情報]]と呼ばれ、 不特定多数の他人に知られないように出来ることが求められる。これは、自分の情報を自分でコントロールできることが個人の権利であるという 考え方から来ている。このような権利を、[[w:プライバシー]]の権利という。 このような情報を発信したいと思うときには、必ず相手の意思を確認し、また必要がない限り個人情報の発信は避けるようにするのがよい。 また、他人の著作物をデジタルデータの形で手に入れたときに、これを公開することは著作物の作者の[[w:著作権]]を侵害する。 著作権は著作物の作者に対して与えられる権利であり、著作物が不特定多数の人間の手にわたらないようにすることが出来る 権利である。この権利は著作物に対しては常に存在するため、他人の著作物を公開することは権利の侵害とみなされ、[[w:犯罪]]となる。 そのため、他人の著作物は絶対に公開してはならない。 また、このような情報以外でも、みだりに不正確な情報や虚偽の情報を発信することは、他人の迷惑となる意味でも、 自身の信用を失わないためにも、避けた方がよい。また、特に正確かどうかが定まらない情報の中でも、より偏ったものの見方を する情報を公開することも、自身の信用を失うことから避ける方がよい。例えば、自分の友人の性格や容貌などに対して、 一面的な見方で評価を行なうことは、他人との軋轢を引き起こすことから避けた方がよいだろう。ただし、他人に対して一切の評価を 行なわないことは現実的ではないので、どの程度の情報発信を許すかは各々の場合による。実際にはお互いの間で話し合いを行ない、 どの程度までが許容される範囲であるかを定めるのがよいだろう。ただし、ネットワーク上のコミュニケーションでは、文字以外の 情報を伝達することが困難であるため、より慎重に言葉を選んでコミュニケーションを行なわないと、いさかいにつながると予想されることが 近年の事件から知られるようになって来ている。このため、ネットワーク上でのコミュニケーションは慎重に行ない、判断に迷ったら 出来る限り安全な方を選ぶ方が無難といえる。 ====情報通信ネットワークを活用した情報の収集・発信==== ここでは、情報ネットワークを用いて、自分が探したい情報を求める方法について述べる。更に、表計算ソフトウェアを用いて、 得られた情報を分析する手法についても学習する。 ===情報化の進展と社会への影響=== ここでは、社会で実際に用いられている情報システムについて扱う。また、情報化社会の発展に伴い、どのようなシステムが必要となるかについて議論する。 ====社会で利用されている情報システム==== ここでは、実際に用いられている情報システムをいくつか選び、その概略についてまとめる。 まず最初に、[[w:POSシステム]]について扱う。POSシステムとは、小売り店などで販売された商品について、売れた商品の種類、価格、時間、客層など のデータを集め、売れ筋の商品、死に筋の商品を 把握するためのシステムである。これらのシステムはコンビニエンスストアなどで用いられていることで有名であり、限られた売場面積しか持たない コンビニエンスストアで、より売れる商品と品数を把握する上で、大きな役割を果たしている。 POSシステムは、店で扱うそれぞれの商品のデータベースを作成し、どの店でどれだけの商品が販売されたかを把握することを目的とする。実際には、 どの店でどの商品が売れたかを調べるために、商品のバーコードなどを元に、売れた商品の種類をデジタルデータとし、取り入れたデータを扱う コンピュータによって、売買の日時や店の位置などとまとめて、売り上げを扱うデータベースとする。作成したデータベースは、 そのまま販売した店で使用することも出来るが、実際には情報通信ネットワークを通じて、いくつかの店からの情報を中心となるコンピュータに収集 する場合が多い。この時、集められたデータは売れ行きがよい商品とそうでない商品を見出すために用いられる。 このシステムの利点は、本来様々な連絡をくり返さないと集められないはずの商品データを、半自動的に1か所に収集できることにある。これによって、 より正確に消費者の[[w:ニーズ]]をとらえた、商品の注文、開発を行なうことが出来る。 情報システムとしてのPOSシステムは、[[w:データベース]]や情報通信ネットワークを用いて作成する。 <!-- 仮に情報の入力方法が知られたなら、それらを用いてデータベースを作成することは 比較的容易である。一方、 --> <!-- バーコード等を扱う機器については、対応する[[w:デバイスドライバ]]が必要となるため、開発はやや難しい。--> データベース<!--、デバイスドライバ-->については[[高等学校情報B]]などを参照。 <!-- 例えば、[[w:プログラミング言語]][[w:Python]]を用いて、データをファイルから読みこみ、それを整形してデータベースとしてまとめるプログラムを書くことは、 それほど難しい作業ではない。 しかし、プログラミングの詳細を扱うことはここでの主旨ではないので、ここではそれについては扱わない。 Pythonについては、[[高等学校情報B]]、[[w:Python]]を参照。--> 実際にPOSシステムを作成するときには、データベースの速度性能や、データベース内に貯えることが出来るデータの量などに厳しい制限があることが多いため、 要求通りに動くPOSシステムを作成することはそれほど簡単な作業ではない。また、実際にデータベースを用いるときには、商用の高性能な データベースソフトウェアを用いることが多いため、費用の面でもそれほど安価にはならないことが普通である。そのためこれらのプログラムの 作成作業は、専門のITベンダが代行することが普通である。 次に、WWWを用いた、ショッピングシステムについて扱う。WWWは[[w:ワールドワイドウェブ]]の略であり、HTTPプロトコルを用いて、情報の検索などを行なう サービスの事を指す。ショッピングシステムとは、特にブラウザを用いて商品の画像などを頼りに買い物を行なうことができるようにすることを 目的としている。代金の支払いには、クレジットカードなどを用いることが多い。ショッピングサイトの非常に有名な例として http://www.amazon.co.jp が あげられるが、現在では大手の小売り店の多くが、このようなサービスを行なっている。 ショッピングシステムの導入には、多くの技術が必要となる。まず最初に、利用者の希望に応じて扱う情報を変化させる手法について述べる。 ショッピングサイトの作成には、商品のデータを商品の画像も含めて、データベース化することが必要である。 サイト側は各々のデータを利用者の希望に応じて引き出し、対応するページを表示することが必要となる。また、利用者が探しているものの名前が既に わかっている場合には、サーバ側は商品の中から対応する名前の商品を検索し、クライアントに提示できることが望ましい。 特に検索を行なうためには、サーバ側はブラウザ側から受け取った情報を元にして、情報の検索を行なう必要があることがわかる。 実際、サーバと連係して働き、データの検索などのサーバが提供しない機能を提供するソフトウェアが存在する。ソフトウェアが存在する。 例えば、[[w:CGI]]、[[w:PHP]]、[[w:JSP]]等の技術がこの例である。 このようなプログラムに対して、サーバはクライアントから受け取った情報を提供する。受け取ったプログラムは、受け取ったデータに対して所定の 動作を行ない、その結果をサーバに戻す。結果を受け取ったサーバは、それを用いて、クライアントのブラウザに送信するための情報を 生成し、それをクライアントに送信する。このような一連の動作によって、クライアントは自分が欲しい情報を、的確に得ることができるのである。 このようにサーバ側のプログラムによって生成されたページを、'動的に生成'されたページと呼ぶ。一方、常に変化しない情報を扱うページを、 '静的に生成'されたページと呼ぶことがある。 ここまでで利用者の希望に応じて扱う情報を変化させる手法について述べた。ここからは、利用者の[[w:認証]]を扱う方法について述べる。 HTTPプロトコルは、クライアント側からの送信とサーバ側からの返信をくり返すことを定めたプロトコルである。ここで、クライアントから 送信できる情報には、ページの場所以外に、サーバに与えたい[[w:変数]]を送信することも許可されている。そのため、この情報を用いて、 あるページを利用した利用者が、サイト内の別のページを利用した利用者であることを知ることが出来る。例えば、ある商品を購入することを 決めた利用者が、実際に購入の手続きを行なうためのページを訪れたものとする。この時、ある商品の購入を決めて、購入の予約を したときに限って送信される変数を見ることで、その人が確かに商品を購入する予定の人であることがわかる。このように、 ページの利用者がどの利用者であるかを知るための手法を[[w:認証]]と呼ぶ。 上の方法は、利用者が一旦他のサイトを利用してから戻って来た場合には使用できないという欠点がある。現在多く用いられている 方法では、認証を行なうために[[w:クッキー]]([[w:Cookie]])を用いる。クッキーは、サーバ側からクライアント側に送信され、クライアント側が コンピュータ上に保存するよう定められている小さいデータである。ブラウザは対応するクッキーを送って来たサーバにアクセスするときには 常に、クッキーを送信するよう定められている。このことによって、例え他のサイトを経由してからアクセスしたとしても、 その人が確かに対応する利用者であることが知られるのである。クッキーはショッピングサイト以外でもログイン、ログアウトを用いるサイトでは よく用いられる。例えば、[[w:MediaWiki]]は、認証にクッキーを用いるソフトウェアの例である。 最後に、我々が普段用いているパーソナルコンピュータについてより詳しく述べる。これらのコンピュータは[[w:サーバ]]用途のコンピュータと比較して、 [[w:クライアント]]向けコンピュータと呼ばれることがある。我々が用いているコンピュータは、[[w:CPU]]、[[w:メモリ]]、[[w:ビデオカード]] などから構成されている。適切なプログラムを用いることで、我々はCPUを自由に扱うことが出来る。しかし、これらの命令は電気信号であるので、 我々が実際に送られている命令を読み取ることは容易ではない。そのため、CPUに対する命令を送るための機具として、[[w:キーボード]]や[[w:マウス]]などの 機具が用いられるようになった。これらがCPUに送る命令に対して、我々が望む通りの動作を起こさせるプログラムが実際に作成されており、 このようなソフトウェアを[[w:OS]]と呼ぶ。我々が用いているコンピュータには既にOSがインストールされているものが多い。しかし、OSが インストールされずに販売されているコンピュータも少数ながら存在し、それらのコンピュータを用いるときには、まず最初にOSを導入することが 普通である。よく用いられるOSとして、[[w:Windows]]、[[w:Mac OS]]、[[w:Linux]]がある。ここでは、主にLinuxを例に取って説明する。これは、Linuxの [[w:ソースコード]]が公開されており、ソフトウェアの学習に用いることができることと、Linuxが基本的に無料であり、極めて高性能であることによる。 コンピュータを起動するとき、Linuxは、コンピュータに接続されている機器について調べ、それらを正常に用いることが出来ることを確認する。 この手順が正常に終了すると、Linuxは利用者に対して、利用者が実際に行ないたい作業をコンピュータに与える ように促す。最も簡単なシステムでは、[[w:シェル]]という1群のソフトウェアがこの目的で用いられる。シェルは、コンピュータに既に インストールされているソフトウェアに関する情報を貯えており、それらの起動、複写、削除などを行なうための基本的な機能を備えている。 シェルは、キーボードから与えられた文字列を適切なルールで解釈することで、利用者からの命令を受け取っている。文字列で与えられた命令を 解釈するためのプログラムは、[[w:パーサ]](字句解析器)と呼ばれ、高度な計算機技術の例として知られている。詳しくは、[[計算機科学]]などを参照。 <!-- 現在でもシェルは、メモリが少なく後に述べる[[w:GUI]]を用いるのに不適なコンピュータでよく用いられる。また、シェルはGUIと比べて コンピュータからの対応が高速になりやすいため、ある程度コンピュータに慣れた人間は、好んでこのソフトウェアを用いることが多い。 実際にはGUIで提供されていない機能を用いるためにはCUIで操作するしかない。しかし、現在のGNOMEでは非常に多くの機能が提供されていることも 事実ではある。明らかにCUIの方が有利な例として、多くのファイルがある中で、目当てのファイルの頭文字が分かっているときに、 Tab補完を用いて、そのファイルを指定することができることだろう。 と思ったら、最近のノーチラスはアルファベットキーを押すと、頭文字に対応したファイルにジャンプしてくれることがわかった。 こうなるとCUIにこだわる意味がなくなってしまうのだが ... 。 --> 一方、現在のビデオカードを用いると画面に描かれる内容を自由に制御することが出来るため、実行したい命令のそれぞれを[[w:アイコン]]を用いて 映像化し、それらを[[w:マウス]]で[[w:クリック]]することで、対応する命令を実行するという情報伝達の手法が研究された。 これらの手法を、[[w:GUI]](Graphical User Interface)と呼ぶ。GUIは、現在のクライアント向けコンピュータでは標準的に用いられており、 初心者でもコンピュータを操作することが容易になる手法として知られている。 Linuxでは、[[w:X Window System]]と呼ばれるソフトウェアを用いて、GUIを実現することが多い。X window は、OSとは異なるものの、 キーボードやマウス、ビデオカードを扱って入力の受け付けと画面への表示などを扱うソフトウェアである。実際にビデオカードを用いる時には、 X windowは、画面を細かい点の集まり([[w:ピクセル]]と呼ぶ)として把握し、それらのピクセルに対応する情報をビデオカードに送るよう、CPUに命令する。 <!-- ビデオカードとCPUの間の情報転送はPCIバスではなくより高速なバスを用いているらしい。 --> 表示する情報を上手く作ることで、ウィンドウ、アイコンなどの絵を描くことができる。これらのアイコンに対して、実行したい命令を 当てはめることで、コンピュータの動作を制御できるわけである。 実際にはアイコンを用いて、コンピュータを操作するために必要十分な情報を提供することが重要である。このような一群のソフトウェアを [[w:デスクトップマネージャ]]と呼ぶ。ここではそれらの詳細には立ち入らないが、[[w:GNOME]]、[[w:KDE]]の両者が有名である。 特に、一般業務でよく用いられる機能を実現したソフトウェアを、[[w:アプリケーション]]と呼ぶ。これらは、シェルを用いて起動する事も出来るが、 GUIを用いて起動できるようにもなっていることが普通である。主要なアプリケーションとしては、Webブラウザ、メーラ、ワードプロセッサ、 表計算ソフトウェア、プレゼンテーションソフトウェアなどがあげられる。これらのソフトウェアは多くの場合GUIを用いて利用者との情報伝達を行なうため、 X window システムを起動した上で、用いられることが多い。 <!-- lynxなどは違うが ... 。 --> Linuxで用いられるアプリケーションとしては、ブラウザとしては[[w:Firefox]]、メーラとしては[[w:Thunderbird]]、 それ以外にワードプロセッサ、表計算ソフトウェア、プレゼンテーションソフトウェアとして、[[w:OpenOffice]]が有名である。これらの ソフトウェアはどれも[[w:オープンソース]]の手法で開発されており、無料で手に入れることが出来、どれも非常に高機能であることが 知られている。 ====情報化が社会に及ぼす影響==== 情報システムはこれまでにも多く作成され、我々の生活の様子を変えて来た。これからも様々な情報システムが構築され、我々の 生活に変革を迫っていくことが予想される。我々はこれらのシステムのあり方に興味を持ち、これらのあり方について考えることが求められるのである。 *課題 情報化が社会にもたらす影響について、情報通信ネットワークを用いて調べ、それについて考察せよ。 <!-- いかにも収拾がつかなくなりそうな課題だが大丈夫なのだろうか ... 。 --> [[カテゴリ:高等学校教育|情]] [[カテゴリ:情報技術]]
高等学校情報C
に戻る。
ナビゲーション メニュー
個人用ツール
ログイン
名前空間
ページ
議論
日本語
表示
閲覧
ソースを閲覧
履歴表示
その他
検索
案内
メインページ
最近の更新
おまかせ表示
MediaWiki についてのヘルプ
特別ページ
ツール
リンク元
関連ページの更新状況
ページ情報