人間科学科コミュニケーション専攻
白銀
純子
コンピュータ・サイエンス
2
第
7回
ソフトウェア
第
7回の内容
•
プログラミング言語
•
ソフトウェア開発の流れ
•
コンピュータの動作原理
ソフトウェアのインストール
プログラムの起動と実行
コンピュータの特徴
前々回の復習
外国人に手紙を書く場合どうする
??
•
相手がわかる言葉で手紙を書く
相手が理解できる言葉を覚えるのは大変
!!
•
コンピュータには、手紙
(命令書)で命令
コンピュータが理解できる言葉で手紙
(命令書)を書く
私は
...
I am...
外国人に手紙を書く場合どうする
??
•
相手がわかる言葉で手紙を書く
相手が理解できる言葉を覚えるのは大変
!!
•
コンピュータには、手紙
(命令書)で命令
コンピュータが理解できる言葉で手紙
(命令書)を書く
Copyright (C) Junko Shirogane, Tokyo Woman's Christian University 2012, All rights reserved. 5
私は
...
%$&**!+#?...
I am...
コンピュータが理解できる言葉は
?
•
コンピュータが理解できる言葉
:
機械語
コンピュータは、
2進数しか理解できない
人間が理解するのは難しい
010001110101
命令書を人間が理解できる言葉で書き、
それを訳したものをコンピュータに渡す
プログラミング言語
プログラミング言語
(p. 71)
•
プログラム
(コンピュータへの命令書)を記述するための
言語
低水準言語
高水準言語
etc.
低水準言語
[1](p. 72)
•
ハードウェアの種類に依存する部分が多い言語
Ex. 2つの異なるCPU AとBで、ある同じ計算をするときに、
AとBで処理方法が違う
→Aを使うときとBを使うときでプログラム言語で書く命令を
変える必要あり
•
人間にとっては、プログラムを書きにくい
すごく細かい処理を書く必要性
Ex. 「10+20」の計算のために10個の命令が必要、など
•
コンピュータにとっては理解しやすい
低水準言語
[2](p. 72)
•
機械語
コンピュータが直接理解できるプログラミング言語
全て
2進数で記述
「
バイナリコード
」とも
Copyright (C) Junko Shirogane, Tokyo Woman's Christian University 2012, All rights reserved. 9
001011101110000110101011
110001010111000101010010
...
低水準言語
[3](p. 72)
•
アセンブリ言語
機械語の命令を、英単語や記号で表した言語
命令を
2進数で考えなくて良い分、プログラムの記述が
簡単
書かれた命令を機械語に変換しないと、コンピュータは
命令を実行不可能
LD GR1, 10
ADD GR1, 20
ST GR1, 30
アセンブリ言語の例
高水準言語
(p. 72)
•
ハードウェアの種類を意識せずに記述できる言語
人間にとっては、アセンブリ言語よりも書きやすい
•
命令の処理方式によっていくつかに分類
手続き型
関数型
論理型
オブジェクト指向型
•
書かれた命令は、機械語に変換されて
コンピュータが実行
Copyright (C) Junko Shirogane, Tokyo Woman's Christian University 2012, All rights reserved. 11
それぞれ、いろいろな言語あり
スクリプト言語
(p. 73)
•
命令書を機械語に変換することなく実行できる
プログラミング言語
人間が変換作業をする必要のない言語
⇔低水準言語
(機械語を除く)・高水準言語は、人間が
変換用ソフトウェアを使って、機械語に変換する作業を
する必要のある言語
記述したプログラムを「
スクリプト
」
習得するのが容易
Ex. HTMLやJavaScriptなど
言語処理方式
手紙を訳すには
?
•
手紙を翻訳する
•
手紙を通訳する
日本語
翻訳者
英語
通訳
受取人
日本語
受取人
プログラムも、同じように機械語に訳す
言語処理方式
(p. 73)
•
プログラミング言語で書かれた命令書
: 機械語に
変換しなければ、コンピュータは実行不可能
•
変換方式は大きく分けて
2種類
コンパイラ
: 翻訳
インタプリタ
: 通訳
コンパイラ
[概要](p. 75)
•
コンパイラ
: 命令書を機械語に翻訳し、
コンピュータで実行可能にするためのソフトウェア
Step 2. 手紙(英語)
Step 2. 手紙(英語)
Step 1. 手紙(日本語)
Step 1. 手紙(日本語)
Step 3. 手紙(英語)
外国人
日本人
翻訳者
コンパイラ
[概要](p. 75)
•
コンパイラ
: 命令書を機械語に翻訳し、
コンピュータで実行可能にするためのソフトウェア
Copyright (C) Junko Shirogane, Tokyo Woman's Christian University 2012, All rights reserved. 17
日本人
Step 3. 手紙(英語)
Step 1. 手紙(日本語)
Step 2. 手紙(英語)
外国人
翻訳者
人
コンピュータ
Step 3. バイナリコード
Step 1. ソースコード
Step 2. バイナリコード
命令書を全て
翻訳して相手に渡す
「コンパイル」する
コンパイラ
コンパイラ
[詳しく](p. 75)
コンパイラ
/アセンブラ
人
バイナリコード
ソースコード
書く
バイナリコードを渡して実行させる
オブジェクトコード
オブジェクトコード
オブジェクトコード
リンク
用語
[1](p. 75)
•
ソースコード
: プログラミング言語で記述した命令書
•
オブジェクトコード
: ソースコードを翻訳したもの
•
コンパイル
: 高水準言語をオブジェクトコードに
翻訳すること
•
アセンブル
: 低水準言語をオブジェクトコードに
翻訳すること
用語
[2](p. 75)
•
実行可能プログラム
: コンピュータが実行可能な
形に変換・処理された命令書
ソフトウェアそのもの
•
連係編集
(
リンク
): 複数のオブジェクトコードを
連結して、
1つの実行可能プログラムを作成すること
1つのソフトウェアのソースコードは、複数のファイルに
分割して記述されることが多い
•
リンケージエディタ
(
リンカ
): 連係編集をするための
ソフトウェア
インタプリタ
(p. 76)
•
インタプリタ
: 命令書を最初から1行ずつ読んで
機械語に通訳するためのソフトウェア
Copyright (C) Junko Shirogane, Tokyo Woman's Christian University 2012, All rights reserved. 21
Step 1. 手紙(日本語)
Step 1. 手紙(日本語)
Step 2. 手紙から一行ずつ(英語)
外国人
インタプリタ
(p. 76)
•
インタプリタ
: 命令書を最初から1行ずつ読んで
機械語に通訳するためのソフトウェア
Step 2. 手紙から一行ずつ(英語)
Step 1. 手紙(日本語)
外国人
日本人
Step 2. ソースコードから一行ずつ(機械語)
Step 1. ソースコード
コンピュータ
人
インタプリタ
通訳
命令書を一行ずつ
翻訳して伝える
ソフトウェアの開発
ソフトウエアの開発の流れ
•
ソフトウェアの開発計画から実際の開発、できあがった
ソフトウェアの利用やメンテナンスの流れ
:
ソフトウェアのライフサイクル
•
ソフトウェアは、利用者側が開発側に開発を依頼
利用者側
: 開発が業務としない企業や企業内の部署
開発側
: 開発を業務とする企業や企業内の部署
企画
要求分析
設計
実装
テスト
企画
•
ソフトウェアの利用者側がソフトウェアの導入を
決定する
(業務改善などのため)
RFP(提案依頼書)などを作成し、開発側に提示
•
RFP (Request For Proposal): 欲しいソフトウェアの内容や
予算、導入スケジュールなどの条件を書いた、利用者側
(客側・依頼者側)が作成する文書
•
提示する開発側は、多くの場合、複数の業者
(競争入札で
発注する業者を選定するため
)
開発側が
RFPについて検討し、ソフトウェアの詳細や
スケジュール
(
提案書
)、コストの見積もり(
見積書
)を提案
利用者側が、複数の業者からの提案を検討し、発注する
業者を選定、契約
要求分析
•
開発側が利用者側から、ソフトウェアに対する要望を
聞いて分析
どのような機能があれば良いか
?
開発の上での条件はあるか
?
機能以外で重要なこと
(セキュリティや保守性など)は
あるか
?
etc.
利用者側のニーズが実現可能かどうかなどを検討
実現可能と判断したニーズについて、実現するための詳細
(コンピュータで実現するために必要な事項)を決定(
仕様化
)
仕様化したニーズ
(要求)を文書化(記述した文書を
「要求仕様書」
)
設計
•
要求仕様書に書かれている要求を、どのように
コンピュータで実現するかを決定
どのような技術を使うか
?
すでに存在するソフトウェアやハードウェアで、使えるものは
あるか
?
どのような設計図にするか
?
etc.
実装
テスト
•
実装した
(プログラミング言語で記述した)ソフトウェアに
問題がないかをチェック
うまく動かないところはないか
?
•
入力したものに対し、適切な出力が出ているか
?
•
おかしな動作をするところがないか
?
要求仕様書に記述された要求が、すべて実現されて
いるか
?
要求仕様書に記述された要求が、適切に実現されて
いるか
?
etc.
運用・保守
•
運用
: ソフトウェアを導入し、利用
ソフトウェアをインストール
インストールしたソフトウェアを動作させ、利用
•
保守
: ソフトウェアのメンテナンス
不具合の修正
機能の追加
機能の内容の変更
etc.
ソフトウェアのインストール
ソフトウェア
(p. 78)
•
OS: HDDに記録されていなければコンピュータを
起動できない
HDDに記録されていない場合は、記録する作業を行う
市販されているコンピュータでは、
OSはあらかじめHDDに
記録されている
OSを含めてソフトウェアをHDDなどに記録し、
利用可能な状態にすること
=
インストール
インストール
[1](p. 78)
•
多くの場合、インストーラを使ってソフトウェアを
インストール
インストーラ
: ソフトウェアをインストールするための
ソフトウェア
•
ウィザード
(質問に答えていくことで、ソフトウェアをインストールしたり
設定するソフトウェア
)を使ってインストールするものが多い
Copyright (C) Junko Shirogane, Tokyo Woman's Christian University 2012, All rights reserved. 33
メールアドレスの設定
メールサーバの設定
名前の設定
インストール
[2](p. 78)
•
インストーラの機能
ウィザードを使ってソフトウェアの初期設定
インストール場所に自動的にフォルダを作って、本体の
プログラムなどの必要なファイルを保存
起動用アイコン
(ダブルクリックするとソフトウェアが起動する
アイコン
)の作成
ソフトウェアの配布形式
•
CD-ROMまたはDVD-ROM
コンピュータに
CD-ROMやDVD-ROMを入れると、
自動的にウィザードが起動することが多い
•
Webサイトからダウンロード
ソフトウェアを利用するために必要なファイルを全てまとめて
圧縮し、
1つのファイルにしていることが多い
ダウンロードしたファイルを解凍し、「
setup.exe」ファイルを
ダブルクリックすると、インストーラが起動することが多い
•
解凍
: 圧縮されているファイルからもとの圧縮前のファイルを
取り出すこと
(複数のファイルをまとめて圧縮して1つのファイルに
している場合には、その複数のファイルを全て取り出す
)
OSとソフトウェアの連携[1]
•
ソフトウェア
: 基本ソフトウェアとアプリケーション
ソフトウェアに分類
基本ソフトウェア
(OS): ハードウェアを直接管理するための
ソフトウェア
•
ハードウェアに対して、様々な命令をする
アプリケーションソフトウェア
: ハードウェアには直接的には
関与しないソフトウェア
•
通常、マウスやキーボードで人間が操作するソフトウェア
•
ハードウェアとのやりとりが必要な場合は、
OSを仲介
•
Webブラウザ, メールソフト, Officeソフト, etc.
OSとソフトウェアの連携[2]
Copyright (C) Junko Shirogane, Tokyo Woman's Christian University 2012, All rights reserved. 37
アプリケーションソフトウェア
Ex. Webブラウザ, メールソフト, Officeソフトなど
基本ソフトウェア
(OS)
Ex. Windows, Mac OS, Unixなど
ハードウェア
Ex. CPU, メインメモリ, HDDなど
ハードウェアとやりとりがしたい
Ex. HDDに保存してある
データを読みたい
アプリケーションソフトの要求を
伝える
Ex. HDDに保存してある
データを出すように命令する
ハードウェアの処理結果を
伝える
Ex. HDDからのデータを渡す
命令を処理して結果を伝える
Ex. HDDに保存してある
データを取り出して渡す
ソフトウェアの起動
[1](p. 78)
•
ソフトウェアの起動アイコンをダブルクリック
or 実行可能プログラムを指定
起動アイコンは、ソフトウェアの実行プログラムそのもの、
または実行プログラムのありかを示したもの
→ダブルクリックすることは、実行プログラムの指定と同じ
•
実行プログラムが
HDDからメインメモリに転送
「
ローディング
」と呼ぶ
ソフトウェアの起動
[2](p. 78)
•
ローディングされたプログラムの命令を
CPUが
取り出して解読
CPU
OSを記録
している領域
実行プログラムを
記録する領域
命令
データ
実行プログラム
実行プログラム
実行プログラム
入出力装置
(キーボード, ディスプレイなど)
補助記憶装置
メインメモリ
CPUの命令解読例(p. 80)
•
「
10+20」の計算をするプログラム(C言語)
x, y, zという名前の3つの箱を用意する
•
プログラムでは、データは箱に入れて扱う
yとzという箱にそれぞれ10と20を入れる
xという箱に、「y+z」の結果を入れる
計算結果を画面に表示する
Copyright (C) Junko Shirogane, Tokyo Woman's Christian University 2012, All rights reserved. 41
#include<stdio.h>
void main() {
int x;
int y = 10;
int z = 20;
x = y + z;
printf("x = %d¥n", x);
}
CPUの命令解読例[手順図](p. 80)
デコーダ
ALU
50→51→52
プログラムカウンタ
LD→AD→ST
命令レジスタ
制御部
10→30
アキュムレータ
20
オペランドレジスタ
0
条件コードレジスタ
演算部
LD 101
AD 102
ST 100
…
…
30
10
20
OSを記録している領域
プログラムを記録する領域
50
51
52
100
101
102
CPU
メインメモリ
CPUの命令解読例[手順1](p. 81)
1.
プログラムカウンタによって、メインメモリの
50番地が
設定される
これにより、
50番地の「LD 101」命令が取り出され、
命令レジスタに転送される
2.
プログラムカウンタの数値を
1増やす
3.
デコーダが「
LD 101」を解釈して実行する
これにより、
101番地のデータをアキュムレータに転送
する
(「LD」はCPUへのデータの転送命令)
CPUの命令解読例[手順2](p. 81)
4.
プログラムカウンタの数値が
51なので51番地の
命令を取り出す
これにより、
51番地の「AD 102」命令が取り出され、
命令レジスタに転送される
5.
プログラムカウンタの数値を
1増やす
6.
デコーダが「
AD 102」を解釈して実行する
これにより、
102番地のデータをオペランドレジスタに
転送する
ALUにより加算処理が行われる(「AD」は加算命令)
•
「
10 + 20 = 30」が実行される
計算結果「
30」がアキュムレータに一時的に格納される
CPUの命令解読例[手順3](p. 81)
7.
プログラムカウンタの数値が
52なので52番地の
命令を取り出す
これにより、
52番地の「ST 100」命令が取り出され、
命令レジスタに転送される
8.
プログラムカウンタの数値を
1増やす
9.
デコーダが「
ST 100」を解釈して実行する
これにより、アキュムレータにあるデータ「
30」を100番地に
格納する
(「ST」はデータのメインメモリへの格納命令)
10.
次の命令へ進む
CPUの命令解読例[概要](p. 81)
•
C言語のプログラムの「x=y+z;」の計算をするために
Step1~Step9の手順
Step1~Step4: 「y」という箱からデータを取り出す処理
Step5~Step6: 「z」という箱からデータを取り出し、
「
y+z」の計算をする処理
Step7~Step9: 「x」という箱に「y+z」の結果を入れる
処理
コンピュータの特徴
コンピュータの特徴
(p. 81)
•
コンピュータでのプログラムの処理方式
デジタル方式
プログラム内蔵方式
デジタル方式
(p. 81)
•
全てのものを
2進数に変換して扱う方式
プログラム
入力・出力データ
•
数字
, 文字, 記号
•
図表
, 静止画, 動画, 音声, 音楽
•
etc.
•
論理素子・記憶素子
: CPUやメモリの構成要素
電圧の高低で動作を制御
•
電圧の高低を
2進数の0と1に対応
プログラム内蔵方式
(p. 82)
•
当初のコンピュータ
: 現在プログラムが行っている
処理をスイッチと配線の組み換えでその都度操作
スイッチと配線の組み換えで様々な命令を表現
非常に手間がかかり、間違いが多発
•
たくさんのスイッチの
ONとOFFを逐一切り替える必要
•
同じ処理をするために毎回プログラムを作成する必要
プログラム内蔵方式
(p. 82)
•
プログラム内蔵方式
: 作成したプログラムを
記憶装置に記憶させて利用する方式
プログラムを実行するときに命令を記憶装置から
取り出して実行
•
同じ処理をするためにプログラムは
1度だけ作成
用途に応じてプログラムを入れ替え、様々な処理を実行
Copyright (C) Junko Shirogane, Tokyo Woman's Christian University 2012, All rights reserved. 51