ひとりでのアプリ開発 - fineの備忘録 -

ひとりでアプリ開発をするなかで起こったことや学んだことを書き溜めていきます

基本情報技術者試験:午前試験テクノロジ系チートシート

初めに

 基本情報技術者試験の午前試験対策として、暗記が必要な部分について、個人的なチートシートを作ろうと思います。本記事はテクノロジ系です。午前中の範囲を一回通して学んだ方にとっては役に立つものになっていると思います。

Index

前提

 この記事は2023年に作成したものです。

 アルゴリズムなど知識がほぼいらないものには触れません。また、それらはほぼ解ける想定でいます。

基礎理論

補数

補数(complement):元の数と補数を足した場合に桁上がりをする数のうち最小のもの
減基数:元の数と補数を足して桁上がりが発生しない数のうち最大のもの

注. n 進数において、「n の補数」と減基数である「(n - 1) の補数」がある。数値が同じ場合、通常の補数であり、数値が - 1 されている場合、減基数のことである。


例. 10進数の10の補数の場合 (通常の補数)

  • 4 の補数:6
  • 23 の補数 77

補数の足し算を用いることで、マイナスの符号を使わずに負の数を表現できる
例. 10進数の10の補数の場合

  • 82 - 23 がしたい場合 → 82 + (23 の補数) = 82 + 77 = 159

最上位の桁の " 1 " を取り除いて 59

仕組み 82 + 77 = 82 + (100 - 23) = 100 + (82 - 23) = 100 + 59
引き算の値と補数を足して、最上位の桁を取り除いた値は一致する

2 進数の 1 の補数

 1 の補数は減基数。

例. 100101 の 1 の補数は、足しても桁が上がらない最大の数のため、011010 すなわち 0 と 1 をビット反転すればよい。

2 進数の 2 の補数

 2 の補数は通常の補数である。

例. 100101 の 2 の補数は、足して桁が上がる最小の数のである。そのため、まず 011010 を足して 111111 にし、さらに 1 足せばよいので、011010 + 000001 = 011011 にすればよい。

(2 の補数の求め方)

  1. 元の数の 0 と 1 を反転させる
  2. さらに + 1 をする

ニュートン法

 接線の方程式を反復的に求めることによってƒ(x)=0となるxの値の近似値を求める方法。非線形関数の解を求めるために使用される。

ja.wikipedia.org

CRC 方式(Cyclic Redundancy Check,巡回冗長検査)

 生成多項式によって誤り検出用のデータを付加して送信

パリティチェック

 データ通信などのデータのビット誤りを検出する方法の1つ。ビット列に1 ビットのパリティビットと呼ばれる検査ビットを付加し、誤りを検出する。

例. 偶数パリティの場合 100101 の末尾にパリティビットを付加する。今回は 1 が 3 つなので偶数個になるようにパリティビットは 1 となる。もし、通信時に障害が発生し、1101011 のようになっていたら、1 の数が偶数個ではないので、どこかで誤りが起こったことが検出できる。

  • 垂直パリティ:1ビットの(奇数個)の誤りが検出可能
  • 水平パリティ:1ビットの(奇数個)の誤りが検出可能
  • 垂直水平パリティ:1ビットの誤り訂正、2ビットの誤り検出が可能
A/D 変換処理

 アナログからデジタルへの変換処理は標本化→量子化→符号化の順

標本化:アナログ信号を測定
量子化:測定した数値を整数などの離散値で近似
符号化:2ビットに変換

アルゴリズムとプログラミング

スタック、キュー

スタックは後入れ先出し(LIFO:Last-in First-out)
キューは先入れ先出しFIFO:First-in First-out)

リエントラント(再入可能)

 同時に複数のタスクが共有して実行しても、正しい結果が得られるプログラムの性質。

リカーシブ(再帰

 実行中に自分自身を呼び出すこと。再帰処理の再帰

リロケータブル(再配置可能)

 主記憶上のどこのアドレスに配置しても、正しく実行することができるプログラムの性質。

Ajax

 「Asynchronous JavaScript + XML」の略で、Webブラウザ内で非同期通信とインターフェイスの構築などを行う技術の総称。JavaScriptの非同期通信の機能を使うことによって,動的なユーザインタフェースを画面遷移を伴わずに実現する技術。

 画面遷移を伴わずにコンテンツを書き換えられるので、シングルページアプリケーション(SPA)の制作などに利用されています。Ajaxを使用した有名なサービスにGoogleMapやGmailがある。

アプレット

 Webページと同時にサーバからダウンロードされ、クライアントのWebブラウザ上で動作するコンパイル済のプログラム。

 もともとサーバにあるが、クライアント側にダウンロードされ、クライアント側で実行されるのがアプレット

サーブレット

 Javaサーブレットのこと。Webサーバ上(バックエンド)で動くプログラムのことで、Java を使って作成されている。

 サーバ上で動くのがサーブレット

XMLDTD

 XML(eXtensible Markup Language,拡張可能なマークアップ言語)は、ユーザが定義したタグや属性を用いて文書構造を記述することのできるマークアップ言語。

 HTML と似ているが、違いはユーザが自分で定義したタグや属性が使用できること。

 DTD(Document Type Definition)において、文書構造を定義する。 の部分が DTD

<?xml version="1.0" encoding="UTF-8" ?>

<!DOCTYPE 在庫データ[
    <!ELEMENT 在庫データ (商品)>
    <!ELEMENT 商品 (名前, 個数)>
    <!ELEMENT 名前 (#PCDATA)>
    <!ELEMENT 個数 (#PCDATA)>
]>

<在庫データ>
    <商品>
        <名前>テレビ</名前>
        <個数>15</個数>
    </商品>
    <商品>
        <名前>冷蔵庫</名前>
        <個数>10</個数>
    </商品>
    <商品>
        <名前>洗濯機</名前>
        <個数>25</個数>
    </商品>
</在庫データ>
SOAP

 SOAP(Simple Object Access Protocol)とは、遠隔地にあるコンピューターのプログラムやデータにアクセスするためのプロトコルのこと。汎用なデータ形式であるXMLに基づいて記述されており、インターネット上に公開された認証機能や課金機能といった個々の機能を呼び出すために用いられる。

コンピュータ構成要素

マルチコアプロセッサとマルチプロセッサ

 マルチコアプロセッサはプロセッサ(CPU)のなかにコアが複数ある。マルチプロセッサはプロセッサ(CPU)が複数ある。

メモリ

 メモリの分類は、揮発性(RAM)と不揮発性(ROM)に分類されます。

  • 揮発性:電源を切ると記録内容が消えてしまうメモリ
  • 不揮発性:コンピュータの電源を切っても記録内容が消えないメモリ

RAM:Random Access Memory:自由に読み書きできるメモリ
ROM:Read Only Memory:読み出し専用メモリ

メモリの種類 分類 説明
DRAM 揮発性 Dynamic search Random Access Memory
コンピュータの主記憶装置(メインメモリ)に用いられる
コンデンサ電荷を蓄えることにより情報を記憶し、電源供給が無くなると記憶情報も失われる
SRAM 揮発性 Static search Random Access Memory
キャッシュメモリ(CPUと主記憶装置の間にある記憶装置)として用いられるメモリ
主記憶装置より高速
メモリセルにフリップフロップ回路が使われる
マスクROM 不揮発性 ユーザーによる消去・書き込みが不可能
動作に必要なプログラムやデータをあらかじめメモリ内に書き込まれている
PROM 不揮発性 特定の機器を使うことで記憶内容の消去と書き込みができるメモリ
EPROM:紫外線を照射することでデータを消去して書き換えることができる
EEPROM:電気的にデータを消去して書き換えることができる
フラッシュメモリ:EEPROMの一種。ブロック単位でデータを消去して書き換えることができる

フラッシュメモリの例として、USBメモリやSDカードがあります。

メモリインタリーブ

 物理上はひとつである主記憶領域を、同時アクセス可能な複数の論理的な領域(バンク)に分け、それぞれのバンクに対してデータの読み書きを並列で行うことにより、メモリアクセスの高速化を図る技術

ECC メモリ、ハミング符号

 コンピュータのメインメモリ(RAM)に用いるメモリモジュールの種類の一つで、データ転送時の誤り訂正符号の付加と検証に対応したもの。

 ハミング符号により、情報ビットに検査ビットを付加することで2ビットの誤りを検出し、1ビットの誤りを訂正できる。

デイジーチェーン

 「PC-周辺機器-周辺機器」というように、PCを起点として複数の周辺機器を直列で(数珠つなぎのように)接続する方法

デバイスドライバ

 CPUやディスプレイ、マウスなどのデバイスを動かすためのソフトウェア。PCに接続された周辺機器を制御するソフトウェア。

USB3.0USB2.0

 USB3.0はスーパースピードと呼ばれる5Gビット/秒のデータ転送モードをもつシリアルインタフェース。USB2.0は480Mビット/秒。

シリアルATA

 シリアルATASATA)とは、コンピュータにハードディスクやSSD、DVDドライブなどの光学ドライブを接続するためのインタフェースの規格のこと。ホットスワップ(ホットプラグ)対応が可能、すなわち電源を入れたまま機器の脱着が可能。

 なお、ATA(Advanced Technology Attachment)とはコンピュータ本体にハードディスクなどのストレージ装置(外部記憶装置)を繋いで通信するための接続方式の標準規格の一つ。

IrDA(Infrared Data Association)

 携帯電話のアドレス帳などのデータ交換を行う場合に使用される赤外線を使って無線通信をする技術。

 infrared が赤外線なので、それさえ覚えていれば判別可能。

磁気ディスク

 円盤状の物体に磁性体が施されている記憶媒体。ハードディスクやフロッピーディスクの中身。

磁気ディスクへのアクセス時間 = 平均シーク時間平均回転待ち時間+データ転送時間

平均シーク時間(シークタイム) 磁気ディスクのヘッドが、目的のデータが保存されている位置まで移動するのにかかる時間の平均
平均回転待ち時間(サーチタイム) ヘッドの移動が完了した後、読み出すレコードの先頭が磁気ヘッドの位置まで磁気ディスクが回転してくるのを待つ時間の平均。ディスクが1回転するのにかかる時間の半分が平均回転待ち時間となる。
データ転送時間 目的のデータを読み出すのに要する時間

ディスプレイ

有機EL 電極の間に有機化合物を挟んだ構造で,これに電気を通すと発光することを利用して,映像を表示
液晶 自身では発光しないので,バックライトを使って映像を表示
プラズマ ガス放電
CRT(ブラウン管) 電子銃から電子ビームを発射し,管面の蛍光体に当てて発光させる
CRTはcathode-ray tube(陰極線管)のこと

静電容量方式タッチパネル

 タッチパネルの表面に電界が形成され,タッチした部分の表面電荷の変化を捉えて位置を検出する。スマホタブレット端末で採用されている。

RFID

 RFID(Radio Frequency IDentification)は、ID情報を埋め込んだRFタグ(ICタグ)から電磁界や電波を用いて情報のやり取りを行う技術。通信可能距離は数cm~数m。

 現在は、乗車カード(Suica, PASMOなど)や電子マネー(Edyなど)などで使用される。バーコードと違い、見えなくても使用できる利点がある。

 Radio Frequency が高周波な電磁波であることがわかれば問題は解ける。

システム構成要素

RAID

 RAID(Redundant Arrays of Inexpensive Disks,レイド)は、複数のハードディスクを組み合わせて1台のハードディスクっぽくすることで、性能を良くしたり一部がぶっ壊れても大丈夫なようにしておく技術のこと。

Redundant:冗長な
直訳では、安価なディスクの冗長な配列

レベル 説明
RAID0(ストライピング) 複数のディスクに分散してデータを書き込むことで、アクセス性能を向上させる。
RAID1(ミラーリング 同じデータを2台のディスクに書き込むことで、信頼性を向上させる。実質記憶容量は50%となるので記憶効率は悪い。
RAID5 情報データとともにパリティビットも各ディスクに分散して書き込む方式。信頼性、アクセス性能が共に高まる。

※ほかのレベルも多くあります。

デュアルシステム、デュプレックスシステム

デュアルシステム 同じ処理を2組のコンピュータシステムで行い、その結果を照合機でチェックしながら処理を進行していくシステム構成。一方の系統に障害が発生した場合には、問題のある側のシステムをメイン処理から切り離し、残された側のシステムのみで処理を続行しつつ、障害からの回復を図る。
デュプレックスシステム 一方のコンピュータが正常に機能しているときには,他方のコンピュータが待機状態にあるシステム

 2台目の状態が異なる。デュアルシステムは稼働しており、不具合が起きていないか検証している。デュプレックスシステムは予備であり、なにもしていない。

フォールトトレランス、フェールセーフ、フェールソフトフールプルーフ

名前 説明
フォールトトレランス fault:故障 tolerance:寛容さ
システムの一部に障害が発生しても全体としては停止することなく稼働を続け、その間に復旧を図るような設計となっているシステム
フェールセーフ 部品の故障や破損、操作ミス、誤作動などが発生した際に、なるべく安全な状態に移行するような仕組み
フェールソフト 事故や故障が発生した際に、問題の個所を切り離すなどして被害の拡大を防ぎ、全体を止めることなく残りの部分で運転を継続すること。
フールプルーフ 誤操作しても危険が生じない、あるいは誤操作できない構造や仕組みに設計すること

(それぞれの違い)

  • フォールトトレランス:障害発生時に機能を縮小せずに継続する
  • フェールセーフ:安全第一。止めることもある
  • フェールソフト:障害発生時に機能を縮小してでも継続
  • フールプルーフ:ユーザが誤った操作を行っても安全に稼動させる設計
スケールアップ、スケールアウト

 システムの処理能力を向上させる施策。

名前 説明
スケールアップ 1台当たりの性能を上げること
スケールアウト 台数を増やすこと

クライアントサーバシステム(C/S)

 Web3層クライアントシステムの場合、次の3層で構成される

  • プレゼンテーション層 - Webブラウザ
  • ファンクション層 - Webサーバ
  • データ層 - DBMSとデータベース
シンクライアントシステム

 シン(Thin)は薄い。

 クライアントに外部記憶装置がないシステムでは,サーバを防御することによって,ウイルスなどの脅威にさらされるリスクを低減することができる。

RPC

 Remote Procedure Call。遠隔手続き呼び出し。

 実行中のプログラムと別のアドレス空間(通常は共有ネットワーク上の別のコンピュータ)にあるサブルーチンや手続きを実行することを可能にする技術。

MTBFMTTR
  • MTBF(Mean Time Between Failure):平均故障間隔。故障が回復してから次に故障するまでの平均時間。
  • MTTR(Mean Time To Repair):平均修復時間。故障が発生したときに復旧に要する平均時間。
スループット

 システムで単位時間当たりに処理される仕事の量

※インプットされてからアウトプットまでの処理なのでスループットを呼ばれるようです。

スプール、スプーリング

 スプールとは、処理能力に大きな差のある装置やソフトウェア、通信回線などを協調して動作させる際に、速い側の待ち時間を短くするために、処理すべきデータを一時的に記憶装置に保存し、遅い側に少しずつ転送して処理させる仕組み。

 コンピュータからプリンタにデータを送って印刷する場合などに使われる。

 スプーリングはスループットを向上させる。

RAS

 システムの信頼性を表す指標。R(Reliability:信頼性)、A(Availability:可用性)、S(Serviceability:保守性)の頭文字をとってRASと表現する。

  • 信頼性:どれだけ壊れにくいか。故障や障害などによるシステムの停止や機能不全の発生しにくさを表す。MTBFなどが指標。
  • 可用性:普通に使える状態を、どれだけ維持してるか。稼働率の高さ、障害や保守による停止時間の短さを表す。稼働率MTBF/(MTBF+MTTR))が指標。
  • 保守性:。障害復旧やメンテナンスのしやすさを表す。MTTRが指標。

 RASにI(Integrity:保全性・完全性)、S(Security:安全性・機密性)を加えたRASISもある。

RASIS

 システムの信頼性を評価する5つの概念の頭文字を合わせた言葉。初めの3つはRASと同じ。

R(Reliability:信頼性)、A(Availability:可用性)、S(Serviceability:保守性)、I(Integrity:保全性・完全性)、S(Security:安全性・機密性)の頭文字である。

  • 保全性・完全性:保存されているデータの完全であるかどうかの度合い
  • 安全性・機密性:保存されているデータが、災害や障害などに対してもつ耐性の度合い

 他の3つは、RASの部分に記述。

ソフトウェア

プリエンプティブ、プリエンプション

 複数のタスクを同時に実行するマルチタスク(マルチプログラミング)に対応したOSの制御機能のひとつで、実行状態のタスクを一旦停止して、実行可能状態に戻すこと(他のタスクを実行状態にする)こと。

ディスパッチ

 OSによるタスク管理の制御機能の1つで、実行可能状態のタスクの中から優先度順などによって次に実行すべきタスクを選択して、CPUの使用権を割り当てること。

 ディスパッチを行うプログラムをディスパッチャ(Dispatcher)と呼ぶ。

ラウンドロビン方式

 実行可能状態となった順に従って、タスクに一定のCPU時間(タイムクウォンタム)ずつ与えていくタスクスケジューリング方式です。一定時間内に処理が終わらなかったタスクは、実行可能状態の待ち行列の最後尾に移され、次にCPU使用権が与えられるまでの間は待ち状態となる。

メモリリーク

 アプリケーションが「自身で獲得したメモリの解放忘れる」などのプログラム不備などが原因で発生する使用可能な主記憶容量が徐々に減少していく状態。リークはleak(漏れ出す)。

 メモリの開放し忘れで主記憶容量が漏れ出し、減少するイメージ。

ポーリング制御

 polling は直訳で投票や世論調査。相手がどんな状態になっているか、どんなことを待っているのかを問い合わせることで知る仕組みのこと。

 データの転送を制御と監視のために使う。

 例として、受信したメールの定期的な確認やサーバの監視がある。

ページング

 仮想記憶空間と実記憶空間を,固定長の領域に区切り,対応づけて管理する方式。

 仮想記憶空間(ハードディスク)に移すときに、ページと呼ばれる単位で区切って管理する。

スラッシング

 仮想記憶システムにおいて主記憶の容量が十分でない場合にプログラムの多重度が増加すると、ページング処理が多発します。このようにシステムのオーバヘッドが増加したことによりアプリケーションのCPU使用率が減少し、処理速度が遅くなる状態。

 主記憶の容量が足りない → ハードディスクにデータをスワップ(移す)という作業が増加し、処理が遅くなるのがスラッシング

フラグメンテーション

 fragmentation は破片を意味する。

 本来は一塊のデータがバラバラになった状態で記憶されること。OSが記憶領域の割当てと解放を繰り返すことによって,細切れの未使用領域が多数できてしまう場合がある。

LRU、LFU

LRU Least Recently Used
ページアウト要求があった場合に管理している中で「最後に参照された時刻が最も昔であるページ」を置換え対象とするアルゴリズム
LFU Least Frequently Used
「単位時間当たりの参照頻度」を置き換え対象とする

シェル

 OSの機能の一部であり、ユーザーからの指示を受けて解釈し、プログラムの起動や制御などを行うプログラムです。Windowsコマンドプロンプトが例である。

 OSの中核(カーネル)とユーザの橋渡しを行い、OS内部をユーザから隔てるという役割からシェル(殻)。

 標準入力がキーボード,標準出力がディスプレイ。

セマフォ

 セマフォ(semaphore)とは、信号機の意味で並行動作している複数のタスク間で共通して使用する資源へのアクセスを制御するメカニズム。

 複数のプログラム(タスク)が同時に処理を行う環境(並列処理)で、共有資源に対して同時にアクセスしても問題なく動作できる仕組みのひとつ。P操作とV操作の2つの操作で成り立っている。

 セマフォ変数が 1 のときは処理可能。0 の時は処理待ちになる。

  • P操作:セマフォ変数が 1 であれば 1 を減算し、0 にして、処理を行う。セマフォ変数が 0 であれば待ち。
  • V操作:処理が終わったらV操作を行い、セマフォ変数に 1 を加算し、1 にする。
マイクロカーネル

 カーネル(kernel)は直訳で核を意味する。この場合は、OSの中核でオペレーティングシステム(OS)の基本機能の役割を担うソフトウェアである。ハードディスクやメモリなど、コンピュータの資源管理を行なっている。

 マイクロカーネルはOSが提供する機能を最小限のメモリ管理やプロセス管理などに限定し,ファイルシステムなど他のOS機能はサーバプロセスとして実現されているもの。

ガベージコレクション

 プログラムで使っていないメモリを解放する機能のこと。

 ガベージはごみ。使っていないメモリ(ごみ)を収集して開放する。

APIApplication Program Interface

 アプリケーションに共通の標準化されたインターフェイスを提供するためにOSなどが提供するライブラリ

差分バックアップ増分バックアップ

差分バックアップ 定期的にフルバックアップを行い、フルバックアップの間の期間は、フルバックアップ以降に変更のあった全てのファイルを記録する方式。
増分バックアップ 定期的にフルバックアップを行い、フルバックアップの間の期間は、前回の増分バックアップ以降に変更のあったファイルだけを記録する方式。

 差分バックアップフルバックアップからの差分。増分バックアップは前回からの増分。つまり、増分バックアップの方が一度にバックアップする量は少ないが、復旧には時間がかかる

絶対パス相対パス
アーカイブ

 複数のファイルをひとつのファイルにまとめること、またはそのまとめられたファイルのこと

リンカ

 linker。複数個のコンパイル済みプログラムや、そのプログラムで使用するライブラリを連結・統合し、1つの実行可能なプログラムファイルとして出力するソフトウェア。

テストカバレージ分析

 カバレージ(coverage)は網羅率。どれだけカバー(cover)されているか。

 ホワイトボックステストにおいて,コード中のどれだけの割合の部分を実行できたかを評価するテスト。

DLL

 動的リンクライブラリ。主にOSが提供し複数のプログラムに共通して使用する関数やプログラムを機能単位でまとめたモジュールで、プログラムの実行中にホストアプリケーションに組み込まれる形で使用される。

 プログラム実行中に使用されるので、動的。

オープンソースの定義

 OSIOpen Source Initiative)によるオープンソースの定義(OSD:The Open Source Definition)では、以下の通り。

  • 自由な再頒布ができること
  • ソースコードを入手できること
  • 派生物が存在でき、派生物に同じライセンスを適用できること
  • 差分情報の配布を認める場合には、同一性の保持を要求してもかまわない
  • 個人やグループを差別しないこと
  • 利用する分野を差別をしないこと
  • 再配布において追加ライセンスを必要としないこと
  • 特定製品に依存しないこと
  • 同じ媒体で配布される他のソフトウェアを制限しないこと
  • 技術的な中立を保っていること

 改変を行ったOSSを販売・公開する場合は、同時にそのソースコードの頒布をしなければならない。

MapReduceHadoop

 MapReduceとは、米グーグル(Google)が開発した、大規模なデータを効率的に分散処理するためのプログラミングモデル。

 Hadoopで動作するプログラミングモデル。大規模データの蓄積・分析を分散処理技術によって実現するオープンソースミドルウェア

UNIX

 マルチタスク、マルチユーザを実現したオペレーティングシステム(OS)の1種。現在稼働しているWebサーバのほとんどがUNIX系。

 オリジナルのUNIXを開発したベル研究所が所属するAT&T独占禁止法によりUNIXの販売を禁止されていため、ソースコードはほぼ無償で提供され、オープンソースに等しくなった。

ホームディレクト

 ログインした直後に移動するディレクトリ(フォルダ)のこと。UNIXの階層的ファイルシステムにおいて、アカウントをもつ一般の利用者がファイルの保存などに使う階層で最上位のもの。

ハードウェア

論理回路

図記号 説明
AND:論理積、かつ
OR:論理和、または
NOT:否定
XOR:排他的論理和
NAND:論理積の否定
NOR:論理和の否定

 先に〇がついていたら、否定。

 ANDとORは「左端が〇なのがOR」とか「かまぼこ型なのがかつ」とかこじつけて覚える。

フリップフロップ回路

 2つの安定状態をもつことで1ビットの状態を表現することが可能な順序回路。SRAMのメモリセルで使われている。

電池

1次電池:充電不可
2次電池:充電可

2次電池の例:ニカド電池ニッケル水素電池リチウムイオン電池

アクチュエータ

 アクチュエータ(Actuator)は act(動作)ate(させる)or(もの)。入力された電気信号を力学的な運動に変換する駆動機構。電気モータなど。

チャタリング

 リレーやスイッチの接点が切り替わった際に、微細で非常に速い機械的振動によって、電気信号が断続を繰り返す現象。

 chatteringはchatter(おしゃべり)が語源。

マイコン

 マイクロコンピュータの略で組み込みシステムで使用されるCPUのこと。シングルチップマイコンにはRAMとROMの記憶装置が内蔵されていて、入出力機能も備わっています。

ヒューマンインターフェース

パンくずテスト

 Webサイトを訪れたユーザが今どこにいるかを視覚的にわかりやすくした誘導表示のこと。

 HOME > Page1 > Page 2

 童話『ヘンゼルとグレーテル』で、主人公が森で迷子にならないように通り道にパンくずを置いていった、というエピソードに由来する。

マルチメディア

H.264/MPEG-4 AVC

 ワンセグ放送などの低速・低画質のものからディジタルハイビジョンTVクラスの高ビットレート用途に至るまで、幅広く利用されることを想定した動画の圧縮符号化に関する規格

データベース

DBMS

 DBMS(database management system)はデータベース管理システムのこと。データベースにおいて、データの情報の取り出し、登録、更新、削除などの機能をアプリケーションから簡単に扱えるようにしたもの。

 OracleMySQLなどがある。

占有ロック

 データがロックされている間は、他ユーザはデータを読むことも、書き込むこともできないロック。排他制御(共有資源に対する複数アクセスが発生しても動作できる制御)に関するもの。

RDBMS

 Relational Database(関係データベース)のこと。関係は表に対応付けられ、関係モデルの関係は関係データベースの表に対応する。

スキーマ

 データの内容や論理構造、記憶形成や編成などデータベースの構造を記述したもの。

3層スキーマ構造

 概念スキーマ、外部スキーマ、内部スキーマの3層に分けてデータ定義を行うデータベースモデル。

スキーマ 説明
概念スキーマ データベース化対象の業務とデータの内容を論理的な構造として記述したもの。
E-R図の作成、表定義、表の正規化
外部スキーマ データの利用者からの見方を記述したもの
SQLのビューなど
内部スキーマ データを記憶装置上にどのような形式で格納するかを記述したもの。
ファイル編成やインデックスの設定など

クエリの実行

 クエリ(query)とは、データベースに対する命令文のこと。

 クエリ実行の流れは、

クエリ → 構文解析 → 最適化 → コード生成 → 実行

オプティマイザ

 SQL文の処理を最適化する機能。

 Optimizeが最適化するを意味する。

定義域(ドメイン

 関係データモデルにおいて,属性が取り得る値の集合。

UML

 Unified Modeling Language(統一モデリング言語)。システムの振る舞いや構造をオブジェクト指向で分析したり設計したりする際に用いる図の標準規格。

 UML2.0では、構造に関する表記が6つ、振る舞いに関する表記が7つある。

記法 一覧
構造に関する表記 クラス図
オブジェクト図
パッケージ図
コンポジット構造図
コンポーネント
配置図
振る舞いに関する表記 ユースケース
アクティビティ図
状態マシン図
シーケンス図
コミュニケーション図
相互作用概要図
タイミング図

クラス図

 クラス図は次の要素で構成される。

クラス名
属性(省略可)
操作(省略可)

 クラス間相互関係は線形と多重度で表現されます。

線形 関係 説明
関連(association) 2つの関連を表す
集約(aggregation) 全体と部分の関係を表す。
ひし形があるほうが全体
コンポジション(composition、編成) 集約の一種。全体が部分の生成や削除を担っている場合に使用される。
全体が削除されると部分も削除される。
依存(dependency クラス間で関係性があるが関係があまり強くない場合に使用する
汎化(generalization) 親クラスと子クラスの関係を表す。三角形があるほうが親。
実現(realization) 相手を具象化する関係のときに用いる。Javaでいるinterface

多重度の表記 意味
1 1個
'0..n"、'*' 0以上
1..n 1以上
2..5 2から5

E-R図

 Entity Relationship Diagram。entityは直訳で実体を意味し、今回は、テーブルのことを表している。E-R図はデータベース化の対象となる実体(エンティティ)と、実体の持つ属性(アトリビュート)、及び実体間の関連(リレーションシップ)を表現する図である。

データベースの正規化

 データベースの正規化とは、データベース設計の工程において同一テーブル内のデータの重複をなくすために、適宜データを分割・整理すること。

 正規化されていないものだと、同じ項目が複数の表に存在し、修正が面倒になります。

 正規化の手順は次の通りです。

  1. 第一正規化
    同一行内での繰り返しをなくす
  2. 第二正規化
    主キーの一部によって一意に決まる属性を別表に移す
  3. 第三正規形
    主キー以外の属性によって一意に決まる属性を別表に移す

主キー

 主キーとは、表内のある行を一意に決めることができる特性をもつ属性のこと。
 主キーの制約条件は次の2つ

  • 一意性制約:キー値が重複していないこと
  • NOT NULL制約:Null値がないこと
データディクショナリ

 DBMSが管理するデータ,利用者,プログラムに関する情報,及びそれらの間の関係を保持するデータの集合体

結合(join)

 複数の表を共通する属性で結合し、1つの表にする操作

射影(projection)

 表から指定された列(属性)を抽出する操作

選択(selection)

 表から指定された行(タプル)を抽出する操作

和(union)

 同じ属性を持つ2つの表の行を足し合わせて、1つの新しい表をつくりだす操作

A B C
a_1 b_1 c_1
a_2 b_2 c_2

A B C
a_3 b_3 c_3

和をとって、3行にする。

A B C
a_1 b_1 c_1
a_2 b_2 c_2
a_3 b_3 c_3

SQL

〇テーブルから列を抽出(SELECT FROM)

SELECT 列名 FROM テーブル名
/* 例 */
SELECT * FROM orders;

 SELECT *(アスタリスク)は全フィールドを意味します。3行目の例はordersテーブルからすべての列を取得します。

〇条件の絞り込み(WHERE)

SELECT *FROM 列名 WHERE 条件
/* 例 */
SELECT * FROM products WHERE category = 'Electronics';

 例はproductsテーブルの列のうち、category=Electronics のものを取得します。

〇カラムに別の名前を付ける(AS)

SELECT first_name AS "First Name", last_name AS "Last Name" FROM employees;

 この例では、employeesテーブルからfirst_name列を "First Name" として、last_name列を "Last Name" として取得します。

〇昇順、降順で並べ替えて取得する(ORDER BY)

/* 昇順 */
SELECT * FROM products ORDER BY price ASC;
/* 降順 */
SELECT * FROM products ORDER BY price DESC;

 ORDER BY句は並べ替えを表します。ASCはAscending order(昇順)、DESCはDescending order(降順)を意味します。

 例では、productsテーブルのすべての列を昇順、降順に並べ替えて取得しています。

〇データのグループ化(GROUP BY)

SELECT category, COUNT(*) FROM products GROUP BY category;

 productsテーブルのcategory列の要素数(COUNT関数で取得)GROUP BY句でcategoryごとにグループ化しています。

〇新しい行をテーブルに挿入(INSERT文)

INSERT INTO customers (first_name, last_name, email) VALUES ('John', 'Doe', 'john.doe@example.com');

 例では、customersテーブルに新しい行を挿入しています。

〇既存の行のデータを更新(UPDATE文)

UPDATE products SET price = 25.99 WHERE product_id = 101;

 例では、productsテーブルのproduct_id=101の行のpriceを25.99に更新しています。

〇行の削除(DELETE文)

DELETE FROM customers WHERE customer_id = 105

 例ではcustomersテーブルのcustomer_id=105の行を削除しています。

〇直積結合

/* customersとordersの直積結合 */
SELECT * 
FROM customers, orders;

(customersテーブル)

customer_id first_name last_name
1 John Doe
2 Jane Smith
3 Mary Johnson

(ordersテーブル)

order_id product
101 Laptop
102 Tablet
103 Smartphone

(直積結果)

customer_id first_name last_name order_id product
1 John Doe 101 Laptop
1 John Doe 102 Tablet
1 John Doe 103 Smartphone
2 Jane Smith 101 Laptop
2 Jane Smith 102 Tablet
2 Jane Smith 103 Smartphone
3 Mary Johnson 101 Laptop
3 Mary Johnson 102 Tablet
3 Mary Johnson 103 Smartphone

〇文字列検索(LIKE句)

/* 完全一致 */
/* product_nameがLaptopと完全に一致するものをproductsから取得 */
SELECT * FROM products WHERE product_name LIKE 'Laptop';

 % は0文字以上の任意の文字列を表します。部分一致を表したい場合に使います。

/* 前方一致 */
/* Lで始まるものを検索 */
SELECT * FROM products WHERE product_name LIKE 'L%';

/* 後方一致 */
/* aptopで終わるものを検索 */
SELECT * FROM products WHERE product_name LIKE '%aptop';

/* 部分一致 */
/* Tabletを含むものを検索 */
SELECT * FROM products WHERE product_name LIKE '%Tablet%';

 "_"(アンダーバー)は任意の一文字に一致します。

SELECT * FROM customers WHERE first_name LIKE 'J_ne';
埋め込みSQL、カーソル

 CやCOBOLPascalのような表データを直接扱えない手続き型プログラミングに、関係データベースを操作するためのSQLを埋め込むための手法。

 埋込みSQLでは、問合せによって得られた導出表を1行ずつ親プログラムに引き渡しながら処理をしていく。この操作において結果表内のある1行を参照する仕組みをカーソルという、

トランザクション、アクティブ、アボート、コミット

 口座から振込みを行う場合における送金側の残高減と振込先口座の残高増のように関連する1つ以上の処理をまとめた単位。

 データの整合性を保つために「全ての処理が完了する」か「全く処理が行われなかったか」のどちらかで終了しなくてはならない。

処理、状態 説明
アクティブ トランザクションを処理中の状態
アボート トランザクションの途中で処理を強制的に中断してトランザクションロールバックする処理
コミット トランザクションの一連の処理が成功した際に、その結果を確定させる処理

 アボート(abort)は、頓挫する、無駄に終わる、失敗する、流れるなどの意味がある。

 トランザクションが取れる状態は次の5つ。


デッドロック

 共有資源を使用する2つ以上のトランザクションが、互いに相手トランザクションが必要とする資源を排他的に使用していて、互いのトランザクションが相手が使用している資源の解放を待っている状態。

 永遠に待ちが続く。

2相ロッキングプロトコル

 トランザクション処理で読書きが必要になったデータにその都度ロックをかけていき、全てのロックを獲得した後にだけロックの解除を行うルールを課すロック方式。

ロールバック、ロールフォワード

機能 説明
ロールバック(後退復帰) トランザクションの途中、プログラムのバグなどでアプリケーションからの応答がなくなったり強制終了した場合に、更新前ジャーナル(ログ)を用いてデータベースをトランザクション開始直前の状態に戻す処理
ロールフォワード(前進復帰) データベースシステムに障害が起こったときに行われる回復処理です。更新後ログを用いて今まで処理したトランザクションを再現しシステム障害直前までデータベース情報を復帰させる。

 トランザクション処理で失敗し、更新前ジャーナルを使って、やりかけの処理を取り消すのがロールバック。データベースシステムに障害が起こった場合に、更新後ログを使ってやり直し、データ情報を復帰させるのがロールフォワード。

 トランザクション開始前とコミット後の状態を保存したファイルをジャーナルファイル(ログファイル)という。

分散データベース

 分散データベースとは、データを複数のコンピュータシステムに分散して配置するデータベース。複数のコンピュータでデータ管理を行うことで、可用性を高めることができる。

2相コミット

 分散データベースシステムにおいて,一連のトランザクション処理を行う複数サイトに更新処理が確定可能かどうかを問い合わせ,すべてのサイトが確定可能である場合,更新処理を確定する方式。

ACID

 データベースのトランザクション処理を行う上で必要不可欠とされる4つの性質(Atomicity・Consistency・Isolation・Durability)のこと。

  • Atomicity:原子性
  • Consistency:一貫性
  • Isolation:独立性
  • Durability:永続性
ジャーナルファイル

 トランザクション開始前とコミット後の状態を保存したファイルで、ロールバックやロールフォワードによって障害から復旧するときに用いられます。ログファイルとも呼ばれます。

データマイニング

 大量のデータから統計学的手法などを用いて新たな知識(傾向やパターン)を見つけ出すプロセス

データウェアハウス

 企業の様々な活動を介して得られた大量のデータを整理・統合して蓄積しておき,意思決定支援などに利用するもの

ネットワーク

NAPT

 Network Address Port Translation。IPアドレスとポート番号を、別のIPアドレスとポート番号に変換する技術で、 IPマスカレードと呼ぶこともある。

 1つのグローバルIPアドレスで複数のPCが同時にインターネットを利用するためにはNAPT機能を使う。

NAT

 Network Address Translation。グローバルIPアドレスとプライベートIPアドレスを紐付けて変換する技術。

IPv4IPv6

 Internet Protocol version 4 と Internet Protocol version 6 のこと。

IPv4 IPアドレスを32ビットのデータとして表現
IPv6 IPアドレスを128ビットのデータとして表現

IPアドレスクラス

 上位8ビットでクラスを分類している。

上位8ビット 分類 範囲
0------- クラスA 0~127(2^7 - 1)
10------ クラスB 128(2^7)~191(2^7 + 2^6 - 1)
110----- クラスC 192(2^7 + 2^6)~223(2^7 + 2^6 + 2^5 - 1)
1110---- クラスD 224(2^7 + 2^6 + 2^5)~239(2^7 + 2^6 + 2^5 + 2^4 - 1)

 ネットワークを構成するパソコンの台数によって分けられる。大規模だと範囲が大きいクラスAのようになる。

CSMA/CD方式

 Carrier Sense Multiple Access with Collision Detection(搬送波感知多重アクセス/衝突検出方式)のこと。媒体共有型ネットワーク(通信機器と通信機器をつなぐ媒体(=ケーブル)を共有するネットワーク)で衝突を回避し、正しく送信を行うための方式。

 次の手順で送信を行う。

  1. 伝送路上に他のノードからフレームが送出されていないかを確認する
  2. 複数のクライアントは同じ回線を共用し、他者が通信をしていなければ自分の通信を開始する
  3. 複数の通信が同時に行われた場合は衝突を検出し、送信を中止してランダム時間待ってから再び送信をする

 衝突といわれたら、CSMA/CD方式。

OSI基本参照モデルTCP/IPモデル

 OSI基本参照モデルは、異機種間のデータ通信を実現するために,通信サービスを7つの階層に分割し,各層ごとに標準的なプロトコルや通信サービスの仕様を定めるという考え方をモデル化したもの。OSIはOpen Systems Interconnectionのこと。

 TCP/IPはTransmission Control Protocol/Internet Protocolのこと。TCPトランスポート層にあたるプロトコルで、インターネット等で利用される。

 OSI参照モデルよりも実装面で効率的かつ現実的な仕様となっているのが「TCP/IP」の階層モデル

OSIモデルの階層 説明、主な役割 領域 関連装置、プロトコル
アプリケーション層 最も利用者に近い部分。ファイル転送や電子メールなどアプリ間のやり取り ソフトウェア HTTP/HTTPSFTP
プレゼンテーション層 データの表示形式を管理したり、文字コードエンコードの種類などを規定する役割 ソフトウェア SMTPPOP3IMAP
セション層 通信プログラム間の開始から終了までの一連の手順(セッション)を定義するもの ソフトウェア SSL/TLS
トランスポート層 通信の品質をコントロールする層 ネットワーク TCPUDP
ネットワーク層 ネットワークにおける通信経路の選択(ルーティング)や中継を行う ネットワーク IP、ルータ、L3スイッチ
データリンク層 直接的に接続された機器同士の通信を実現 ネットワーク イーサネット、PPP、ブリッジ、L2スイッチ
物理層 ケーブルやコネクターなど物理的な接続 ハードウェア LANケーブル、リピータ

ゲートウェイ

 OSI基本参照モデルの7層すべてを認識しますが、主にトランスポート層以上でプロトコルの異なるネットワーク同士を接続する役割を持つ装置

リピータ

 リピータは、物理層に位置し、ネットワークを流れる電流の増幅や整流を行う機器

スイッチングハブ(L2スイッチ)

 OSI基本参照モデルデータリンク層で動作し、通過するデータフレームの宛先MACアドレスを見てデータフレームを適切な送信ポートに転送する機能を有する機器

MACアドレスIPアドレス

MAC(Media Access Control address)アドレス コンピュータの識別番号
ネットワークにつながるすべての機器に割り当てられている識別番号のことで、イーサネット無線LANなどに接続されているノードを一意に識別するために利用される
IP(Internet Protocol Address)アドレス インターネット上の住所

HDLC手順

 HDLC手順(High-Level Data Link Control)は、OSI基本参照モデルデータリンク層プロトコルで高効率・高信頼性を目指した伝送制御手順の一種。

 同期制御に任意のビットパターンを連続して送信可能なフラグ同期方式を採用し、パリティでは検出できないバースト誤りも検出可能であるCRC方式を採用している。

アドレスプレフィックス

 192.168.0.0/23 のスラッシュ以降の /23 の部分。先頭から何ビットまでがネットワークアドレスであるかを示す表記法。

 192.168.0.0/23(サブネットマスク255.255.254.0)で IPv4の場合は、32ビットなので、先頭から23ビットがネットワークアドレスであればホストアドレスに割り当てられるのは残る9ビット。
 なお、サブネットマスクはネットワークアドレスの範囲を示すために使われます。今回は、255.255.254.0なので、2進数で表すと 11111111111111111111111000000000となります。1で表示された部分がネットワークアドレス、0で表示された部分がホストアドレスに割り当てられます。

 全てが0の"000000000"と全てが1の"111111111"は、それぞれネットワークアドレス、ブロードキャストアドレスとして予約されているためホストアドレスとして割り当てることはできない。

 ホストに割当て可能なアドレス数の上限は192.168.0.0/23 で IPv4の場合、2^9 - 2 = 510 個

ブロードキャストアドレス

 あるネットワーク内のすべての端末に同じ内容を送信する(ブロードキャストする)ときに使われる特別なアドレスで、ホストアドレス部の全ビットを"1"に設定したアドレスをあて先に指定する。

TCPUDP

 どちらもトランスポート層で使われるプロトコルTCP/IPの通信処理で使われる伝送制御プロトコルの一つ。

  • TCP … 信頼性重視
  • UDP … 通信効率、リアルタイム性重視
DNS

 TCP/IPを利用したネットワークでは、各ノードを識別するため一意のIPアドレスが割り当てられていますが、このIPアドレスは数字の羅列で人間にとって覚えにくいため、IPアドレスと対応する別名であるドメイン名が付けられています。DNS(Domain Name System)は、このドメイン名とIPアドレスを結びつけて相互変換する(名前解決する)仕組み。

コマンド

コマンド 説明
arp ARPテーブルの管理に使用されるコマンド。
ARPテーブルはARP(Address Resolution Protocol)によって割り出したIPアドレスMACアドレスEthernetWi-Fiなどの物理アドレス)の対応表のこと。
ipconfig TCP/IPネットワーク設定を確認できるコマンドライン
IPアドレスサブネットマスクおよびデフォルトゲートウェイの情報が表示される
netstate 自端末のTCP/IPネットワーク接続状況を調べるコマンドです。ルーティングテーブル、通信状態、通信相手、通信量などの情報が得られる。
ping 対象ノードにパケットを送ることでネットワークの疎通診断を行う機能

DHCP

 Dynamic Host Configuration Protocol。TCP/IPネットワークで、ネットワークに接続するノードへのIPアドレスの割り当てをアドレスプールから自動的に行うプロトコル

 TCP/IPネットワークにおいて,IPアドレスを動的に割り当てるプロトコル

 LANに接続されたPCに対して,そのIPアドレスをPCの起動時などに自動設定するために用いるプロトコル

ウェルノウンポート番号

 ポート番号のうち、よく利用される特定のアプリケーション用に予約されている 0~1023 までのこと。

FTP

 File Transfer Protocolの略。TCPのポート20と21番を使用

NTP

 NTP(Network Time Protocol)は、UDPのポート123番を使用

IPsec

 IPsec(Security Architecture for IP)はPCからサーバに対し,IPv6を利用した通信を行う場合,ネットワーク層で暗号化を行うのに利用する

POP3

 POP(Post Office Protocol)は、電子メールをやり取りするときに使われるプロトコルの一つで、ユーザーがメールサーバから自分宛てのメールを取り出すときに使う

SMTP

 Simple Mail Transfer Protocol。インターネット環境において、クライアントからサーバにメールを送信したり、サーバ間でメールを転送するのに用いられるプロトコル

SDN、Overflow

 Overflow はネットワーク機器を1つの制御装置で集中管理して複雑な転送制御を行ったり、柔軟にネットワーク構成を変更できる技術のこと。

 SDN(Software-Defined Networking)はOpenFlow上でソフトウェア制御による動的で柔軟なネットワークを作り上げる技術全般。

SNMP

 SNMP(Simple Network Management Protocol)は、TCP/IPネットワーク環境の監視・管理を担うプロトコル。ルータやスイッチングハブといったネットワーク機器、WindowsUNIXといったサーバなどの状態などの情報を取集ために使用される。

MIME

 Multipurpose Internet Mail Extension。ASCII文字しか使用できないSMTPを利用したメールで、日本語の2バイトコードや画像データを送信するための仕組み。

 MIMEに暗号化とディジタル署名の機能を付け電子メールの機密性と完全性を高めたものをS/MIME(Secure MIME)といいます。

CGI

 Common Gateway Interface。ユーザの入力した情報によって表示するWebページを変化させるなど、動的なWebページを作成するための仕組み。

RADIUS

 Remote Authentication Dial In User Service。ネットワーク上で利用者の認証や権限の付与、利用状況の記録などを行うための通信プロトコルの一つ。大規模なネットワーク認証システムの構築に使われる。

パケット交換方式

 情報を幾つかのブロックに分割し,各ブロックに制御情報を付加して送信する方式であり,誤り制御は網で行う.

セキュリティ

公開鍵暗号方式

公開鍵暗号方式の手順

  1. 通信を受ける者(受信者)は自分の公開鍵(暗号化のための鍵)p を全世界に公開する。
  2. 受信者に対して暗号通信をする者(送信者)は、公開鍵 p を使ってメッセージを暗号化してから送信する。
  3. 受信者は、公開鍵 p と対になる秘密鍵(復号のための鍵)s を密かにもっている。この s を使って受信内容を復号し、送信者からのメッセージを読む。

共通鍵暗号方式

暗号化と復号に同一の(共通の)鍵を用いる暗号方式。長所は公開鍵暗号系と比べて処理が高速であること、短所は鍵の受け渡しに注意を要すること。DES、AES、IDEAなどがある。

RSA暗号

 素因数分解が困難であることを利用したアルゴリズム公開鍵暗号方式(公開鍵と秘密鍵がある)で暗号化できる。デジタル署名もできる。

デジタル署名の手順

  1. 送信者は、メッセージをハッシュ関数にかけてメッセージダイジェスト(ハッシュ値)を得る。
  2. 送信者は、メッセージダイジェストを送信者の秘密鍵で暗号化することでディジタル署名を生成し、メッセージと一緒に送信する。
  3. 受信者は、ディジタル署名を送信者の公開鍵で復号し、メッセージダイジェストを得る。
  4. 受信者は、受信したメッセージを送信者と同じハッシュ関数でハッシュ化したものと、3.で復号したメッセージダイジェストを比較する。
  5. 一つのメッセージからハッシュ関数によって生成されるメッセージダイジェストは常に同じになるため、送信者から送られてきたメッセージダイジェストと、受信側でハッシュ化したメッセージダイジェストが同じなら、通信内容が改ざんされていないことが証明される。

 デジタル署名は、「発信元が正当であるか」と「改ざんの有無」が確認できる。

バックドア

 一度不正侵入に成功したコンピュータやネットワークにいつでも再侵入できるように攻撃者によって設けられた仕掛けのこと

楕円曲線暗号

 公開鍵暗号方式RSA暗号と比べて,短い鍵長で同レベルの安全性が実現できる。

不正のトライアングル

 不正行動は「動機・プレッシャー」「機会」「正当化」の3要素がすべて揃った場合に発生するという理論。米国の組織犯罪研究者であるドナルド・R・クレッシーにより提唱された。

AES

 アメリカが2001年に標準暗号として定めた共通鍵暗号アルゴリズム

ドライブバイダウンロード

 Webサイトに悪意のあるプログラムを埋め込み、Webブラウザを通じて利用者が気付かないようにそのプログラムをダウンロードさせたり、自動的に実行させる攻撃

ディレクトリトラバーサル攻撃

 外部からのアクセスを想定していない「ディレクトリ(ファイルをグループ化するためのフォルダ)」内部に不正アクセスして、ファイルを閲覧したり書き換えたりするサイバー攻撃

ブルートフォース攻撃

 組み合わせ総当たりで不正ログインやパスワード解析を試みる攻撃。

認証局の役割

 認証局(Certificaion Authority,CA)は、公開鍵暗号方式を用いたデータ通信において、利用者の公開鍵の正当性を保証するためのディジタル証明書を発行する機関

スパイウェア

 利用者や管理者の意図に反してインストールされ、利用者の個人情報やアクセス履歴及びキーストロークなどの情報を秘密裏に収集し、勝手に外部の組織や個人に送信する不正プログラム。

リスク対応

 リスク対応は大きく分けて次の3つ。

 潜在的なリスクに対して、リスクを回避したり低減したりする対策を講じること。リスク回避・リスク低減・リスク移転などがある。

 リスクが顕在化した場合に備えて、損失の補てんや対応のための資金確保策を講じること。

  • リスク受容

 リスクの損失額や顕在化の可能性が低いため、予算などとの兼ね合いからあえて対処を行わないこと。

リスクレベル

 JIS Q 27000:2014(情報セキュリティマネジメントシステム-用語)における"リスクレベル"の定義は「結果とその起こりやすさの組合せとして表現される,リスクの大きさ」

信頼性

 情報システムによる処理に欠陥や不具合がなく、期待した処理が確実に行われている特性

CSIRTマテリアル

 CSIRT(シーサート: Computer Security Incident Response Team) とは、組織内の情報セキュリティ問題を専門に扱う、インシデント対応チーム。

 組織的なインシデント対応体制の構築や運用を支援する目的でJPCERT/CCが作成したもの。

リスクアセスメント

 リスクマネジメントの指針を示した規格であるJIS Q 31000では、「リスク特定,リスク分析及びリスク評価を網羅するプロセス全体を指す」と定義している。リスクアセスメントは組織に潜在しているリスクを把握し、リスクを最適化するために実施される。

  • リスク特定

 組織の目的の達成を助ける又は妨害する可能性のあるリスクを発見し,認識し,記述する

  • リスク分析

 必要に応じてリスクのレベルを含め,リスクの性質及び特徴を理解する

  • リスク評価

 リスク分析の結果と確立されたリスク基準との比較をし,追加する行為の決定を裏付ける

 リスク基準の確立 → リスク特定 → リスク分析 → リスク評価 → リスク対応

SaaS、PaaS、IaaS

 クラウドサービスの種類。クラウド事業者が運用管理して提供する範囲によって、名称が異なる。

サービス 説明
SaaS(Software as a Service) クラウドにあるソフトウェアを利用できるサービス。ハード、OS、ミドルウェア、アプリまで管理する。 Slack、Google Meet、マネーフォワード クラウド
PaaS(Platform as a Service) クラウドにあるプラットフォームが利用できるサービス。ハード、OS、ミドルウェアまで管理する。 Amazon Web ServicesAWS)、Microsoft Azure、Google Cloud Platform
IaaS(Infrastructure as a Service) クラウドにある、ネットワークやサーバ(CPU・メモリ・ストレージ)などのコンピューティングリソースを利用するサービス。ハードウェアを管理する。 Amazon EC2

BYOD

 Bring Your Own Device。従業員が個人的に所有するPCやスマートフォンなどの情報端末を職場に持ち込み、それを業務に使用すること。

リスク共有(リスク転移)

 保険をかけたりリスクのある業務を委託をしたりすることでリスクによるマイナスの影響を他者と分担する戦略。

ビジネスインパクト分析

 障害や災害によりシステムが停止した場合の事業への影響を評価する分析手法

ファジング

 検査対象のソフトウェア製品に「ファズ(英名:fuzz)」と呼ばれる問題を引き起こしそうなデータを大量に送り込み、その応答や挙動を監視することで(未知の)脆弱性を検出する検査手法。

ペネトレーションテスト

 ペネトレーションテスト(侵入テスト)は、ネットワークに接続されている情報システムに対して、様々な方法を用いて実際に侵入を試みることで脆弱性の有無を検査するテスト。

マルウェア

 ウイルスを含む、あらゆる種類の悪意のあるソフトウェアの総称。

マルウェアの解析

 動的解析(ブラックボックス解析)と静的解析(ホワイトボックス解析)がある。

動的解析 サンドボックス(他に影響を与えない隔離された環境)上で検体を実際に動作させてその挙動を監視し、マルウェアの動作を解析すること
静的解析 検体の実行可能形式ファイルを逆コンパイル(ソースコードに還元する処理)し、そのソースコードを直接読むことで、マルウェアがどのような動作をするか解析すること

DMZ

 DMZ(DeMilitarized Zone,非武装地帯)は、Webサーバ・メールサーバ・プロキシサーバなどのように外部セグメント(インターネット)からアクセスされる可能性のある情報資源を設置するための、外部でも内部でもない中間的な位置に存在するセグメント。

 インターネットと内部セグメントおよびDMZは、ルータやファイアウォールで隔てられている。

IDS

 Intrusion Detection System(侵入検知システム)のこと。ネットワークやホストをリアルタイムで監視し、異常を検知した場合に管理者に通知するなどの処置を行うシステム。

 ネットワークの通信を監視するネットワーク型IDS(NIDS)と、サーバなどにインストールされ、そのマシンの挙動を監視するホスト型IDS(HIDS)に分類される。

セキュアブート

 PC の起動 (ブート) 時に悪意のあるソフトウェアが読み込まれないように設計された重要なセキュリティ機能。

 PCの起動時にOSやドライバのディジタル署名を検証し,許可されていないものを実行しないようにすることによって,OS起動前のマルウェアの実行を防ぐ技術。

三者中継

 メール送信(SMTP)サーバが、関係のない外部からの送信を受け付ける設定になっていること、または実際にメールを送信してしまう状態のことである。Third-Party Mail Relay、オープンリレーとも呼ばれる。

 受信者、送信者ともに無関係のメールのログがあれば、第三者中継。

SPF

 SPF(Sender Policy Framework)は、メールを送信しようとしてきたメールサーバのIPアドレス情報を検証することで、正規のサーバからのメール送信であるかどうか確認することができる技術

ポートスキャナ

 検査対象のコンピュータやルータの全部または一部の通信ポートに信号を送ることで、サービスの稼働状態を外部から調査するツール。

WAF

 Web Application Firewall

 従来のファイアウォールやIDS/IPSでは防ぐことができない不正な攻撃からWebアプリケーションを防御するファイアウォールのこと。Webアプリケーションという観点から、一般的にはWAFといえばWebサーバーが利用するポート 80番(HTTP)、443番(HTTPS)のトラフィックを 双方向で監視して、悪意あるユーザーからWebアプリケーションとその背後にあるデータを守る製品のこと。

デジタルフォレンジクス

 Forensicsは警察の犯罪捜査や法医学における鑑識・科学捜査を意味する。

 不正アクセスや情報漏えいなどのセキュリティインシデントの発生時に、原因究明や法的証拠を明らかにするために対象となる電子的記録を収集・解析すること

電子透かし

 ディジタルコンテンツに作者名・課金情報・コピー可能回数など著作権情報を埋め込む技術。

ウィルス定義ファイル

 ウイルスが持つ特徴的なコードをパターン(シグネチャコード)として収録したファイルで、ウィルス対策ソフトがウィルスを検出するために使われる。

WPA3

 Wi-Fi Protected Access 3。無線LANのセキュリティプロトコル

 WPA2には2017年11月に「KRACKs」と呼ばれる4ウェイハンドシェイク時における深刻な脆弱性が見つかっており、翌2018年に発表されたWPA3ではセキュリティのさらなる強化が図られた。

SSL/TLS

 SSL(Secure Sockets Layer)は、通信の暗号化,ディジタル証明書を利用した改ざん検出,ノード認証を含む統合セキュアプロトコル

 TLS(Transport Layer Security)は、SSL3.0に基づいてIETFが標準化したOSI基本参照モデルトランスポート層における暗号化プロトコルを中心とした規格。

UPS

 Uninterruptible Power Supply。Uninterruptibleは中断されないなどを意味する。落雷などによる突発的な停電が発生したときに自家発電装置が電源を供給し始めるまでの一定時間、システムに電源を供給する役目をもつ装置。

システム開発技術

DFD

 Data Flow Diagram。構造化分析手法の一つでデータの流れに着目して、その対象となる業務のデータの流れと処理の関係をわかりやすく図式化する手法。

プロセス(処理)
□(長方形) 外部実体
データの源泉、データの吸収先
データフロー
=(二本の横平行線) データストア  

決定表

 決定表(デシジョンテーブル)は、ある事象について条件や選択肢を表形式で整理し、記述された条件・選択肢の組合せによってどのような処理を行うべきかを列挙したもの。

30歳未満 Y Y N N
男性 Y N Y N
動作1 X
動作2 X
動作3 X
委譲(delegate

 オブジェクト指向において、あるオブジェクトに依頼されたメッセージの処理を、他のオブジェクトに委ねることを委譲(デリゲーション)という。

インスペクション

 Inspectionは検査を意味する。事前に役割を決められた参加者が責任のある第三者(モデレータ)の下で成果物を確認する、最も公式なレビュー技法。

 他のレビュー法と比較したときのインスぺクションの特徴は以下の3点。

  • 参加者の役割が明確になっていること
  • チェックリストなど形式的な文書に基づいて実施すること
  • レビュー記録を正式な形で残すこと

 通常3人から6人が参加する。各参加者に割り振られる役割は次の5つ。

  • モデレータ:議長・司会
  • オーナー:レビュー対象となる成果物の作成者で、発見された問題に応じて成果物の修正を行う
  • インスペクタ:評価者としてレビュー対象となる成果物の問題発見を行う
  • プレゼンタ:ミーティングにて参加者に資料の説明を行う
  • スクライブ:書記としてレビューで発見された問題などを記録する
ウォークスルー

 設計上の誤りを早期に発見することを目的として、各工程の終了時点で、作成者を含めた複数の関係者が設計書やソースコードを検査するデザインレビューの手法。

 次の特徴がある。

  • 原則として管理者には参加させない
  • 誤りの発見を目的としその場で解決策を議論しない
  • 事前に資料を配布しておくことで短時間で効率よく行う
命令網羅、判定条件網羅

 どちらもホワイトボックステストのテストケース設計に関する網羅度のレベル。

  • 命令網羅:すべての命令を一回は実行する。つまり、if文などの条件の部分を一回は踏むが、true と false を両方試す必要はない。
  • 判定条件網羅:すべての分岐について、分岐先のすべての経路を一回は実行する。つまり、true と false を両方試す。
結合テスト

 基本設計に対して、設計を検証するテスト。V字モデルでは、単体テストのあとに実施される。

結合テストの実施方式
  • トップダウンテスト:上位モジュールを呼び出した後に下位モジュールへと移行するテスト方式。下位モジュールが未完成の場合には「スタブ」と呼ばれるテスト用の代替モジュールを作成し、使用する。
  • ボトムアップテスト:プログラムの下位階層にあるモジュールから優先的にテストを進めていく方式。上位モジュールが未完成の場合は、「ドライバ」と呼ばれる代替モジュールを作成し、それを用いてテストする。
  • ビッグバンテスト:一斉テスト。
スタブ、ドライバ
状態遷移テスト

 設計段階でシステム要求事項をもとに作成した「状態遷移図」「状態遷移表」を使用して、システムが正しく挙動するかを検証するホワイトボックステストの手法。

リグレッションテスト

 退行テスト/回帰テストとも呼ばれる。システムに変更作業を実施した場合に、それによって以前まで正常に機能していた部分に不具合や影響が出ていないかを検証するためのテスト

パレート図

 分析する要素を全体の中の割合が多い順に棒グラフとして並べ、それに累積構成比を表す折れ線グラフを組み合わせた複合グラフ。


開発プロセス・手法

リバースエンジニアリング

 既存ソフトウェアの動作を解析するなどして、製品の構造を分析し、そこから製造方法や動作原理、設計図、ソースコードなどを調査する技法

リファクタリング

 外部から見たときの振る舞いを変えずに、ソフトウェアの内部構造を変えること

CMMI

 Capability Maturity Model Integration。統合能力成熟度モデルと呼ばれ、組織におけるプロセス改善をガイドするモデル。

特許クロスライセンス

 2つ以上の企業や団体が互いに自らの持つ特許の実施権を許諾しあうこと

アジャイル開発

 計画→設計→実装→テストといった開発工程を、機能単位の小さいサイクルで繰り返す開発手法。仕様変更に強く、プロダクトの価値を最大化することに重点を置いた開発手法で、サービスインまでの時間を短縮できることが名前の由来(アジャイル=素早い)

スクラム

 アジャイル開発の方法論の1つで、開発プロジェクトを数週間程度の短期間ごとに区切り、その期間内に分析、設計、実装、テストの一連の活動を行い、一部分の機能を完成させるという作業を繰り返しながら、段階的に動作可能なシステムを作り上げるフレームワーク

 スクラム開発では開発反復の単位を「スプリント」といい、スプリント実施の際に行う各イベントが定義されている。

スプリントプランニング
スプリントの開始に先立って行われるミーティングで、プロダクトバックログの中から、そのスプリントで開発するものを決定する
デイリースクラム
開発チーム全員の活動の共有とコミュ二ケーションの促進を目的として、スプリント実施中に毎日10~15分程度行われる確認・調整のための会議。昨日やったこと、今日やること、障害になっていることを各人が話す
スプリントレビュー
スプリントの終了時に、関係者を集めて成果物のデモンストレーションを行い、成果物を検査し、フィードバックを得る
スプリントレトロスペクティブ
スプリント終了後に次のスプリントを見据えて行われる振り返り。上手くいったこと、上手くいかなかったこと、それに対する改善法・解決法を話し合う