【情報処理技術者試験対策】どっちがどっち？(2019年対応)

##　はじめに
　情報に関する勉強をしていると、似たような言葉で**「こっちとあっち、どっちだっけ？」**とかって頻繁になりませんか？　一番基礎的でよくあるのが、ビットとバイトどっちが大きいんだっけ？みたいなイメージです。今回は、少しでもごちゃまぜを防止するために、過去に私自身でまとめた内容を記事にしてみました。内容としては二者択一なものだけです。解説に関しては、どっちがどっちか判断できる程度の簡易的な説明だけ加えました。

※記事内容は少しずつ更新していく予定です。他にもこんなの悩みやすいよね〜とかあれば気軽に教えていただけると幸いです。

##　記載例
　一応、ジャンルをバラバラに書くとわかりづらいので、情報処理技術者試験の形式に則ってジャンル分けしたいと思います。（[情報処理技術者試験_出題範囲](https://www.jitec.ipa.go.jp/1_13download/hani_ver4_1.pdf)）
　重要度を3段階で評価しました。☆が多いほど重要度高めです。

（記載例）

- *ジャンル*（☆☆☆）
  - **こっち**
     - こっちの説明 
  - **あっち**
     - あっちの説明

##　テクノロジ系

###　１.基礎理論

- *情報量の単位*（☆☆☆）
  - **ビット**
     - **小さい**方。bitとかく
  - **バイト**
     - **大きい**方。Byteとかく。**1バイト=8ビット**

- *補数*（☆☆☆）
  - **1の補数**
     - ビットを反転させる
  - **2の補数**
     - 1の補数に1を足す

- *シフト演算*（☆☆）
  - **論理シフト**
     - 符号を**考慮しない**
  - **算術シフト**
     - 符号を**考慮する**

- *論理演算(1)*（☆☆☆）
  - **論理和(OR)**
     - **少なくとも一方**が1ならば1
  - **論理積(AND)**
     - **両方**が1ならば1

- *論理演算(2)*（☆☆）
  - **否定論理和(NOR)**
     - **少なくとも一方**が0ならば1
  - **否定論理積(NAND)**
     - **両方**が1ならば0

- *加算器*（☆☆）
  - **半加算器**
     - 上位桁への桁上がり を考慮する（単純） 
  - **全加算器**
     - 上位桁への桁上がり と 下位桁からの桁上がり を考慮する（複雑）

- *スタックとキュー*（☆☆☆）
  - **スタック**
     - 「後入れ先出し(LIFO)」 イメージは**箱**
  - **キュー**
     - 「先入れ先出し(FIFO)」 イメージは**筒**

- *値渡しと参照渡し*（☆☆☆）
  - **値渡し**
     - 変数の**内容**を渡す。コピーして渡すイメージ
  - **参照渡し**
     - 変数の**参照情報**を渡す。そのものを渡すイメージ

###　２.コンピュータシステム

- *エンディアン方式*（☆）
  - **ビッグエンディアン**
     - データの**上位**ビットから順にメモリに並べる方式 
  - **リトルエンディアン**
     - データの**下位**ビットから順にメモリに並べる方式

- *プロセッサアーキテクチャ(1)*（☆）
  - **マイクロプログラム方式**
     - 必要な制御をマイクロプログラムで制御する 
  - **ワイヤードロジック方式**
     - 必要な制御を全てハードウェアで実現する

- *プロセッサアーキテクチャ(2)*（☆）
  - **RISC**(Reduced Instruction Set Computer)
     - 使用頻度の高い最小限の命令のみに絞った方式。制御はワイヤードロジック。組み込みシステムなどに採用
  - **CISC**(Complex Instruction Set Computer)
     - 複雑で高機能な命令を用意した方式。制御はマイクロプログラム。パソコン用CPUなどに採用

- *メモリアーキテクチャ*（☆☆☆）
  - **RAM**(Random Access Memory)
     - 主記憶の作業域を構築するメモリ。**揮発性** 
  - **ROM**(Read Only Memory)
     - 読出し専用に用いるメモリ。**不揮発性**

- *RAMの種類*（☆☆☆）
  - **DRAM**(Dynamic RAM)
     - 主な用途は**主記憶**。内部構成が単純で**安い**。リフレッシュ動作が**必要**
  - **SRAM**(Static RAM)
     - 主な用途は**キャッシュメモリ**。アクセス速度が速いが**高い**。リフレッシュ動作が**不要**

- *ROMの種類*（☆☆）
  - **EPROM**(Erasable PROM)
     - 紫外線照射で全消去できる
  - **EEPROM**(Electrically EPROM)
     - 電圧をかけて**部分消去**できる。全消去可能なのは**フラッシュメモリ**

- *キャッシュの制御*（☆☆☆）
  - **ライトスルー方式**
     - キャッシュ更新と**同時**に、主記憶の該当データも更新。制御簡単だが遅い
  - **ライトバック方式**
     - 通常はキャッシュ更新のみで、**ブロック追い出し時**に主記憶に反映。コヒーレンシを保つ制御が必要。制御は難しいが速い

- *カーネルの分類*（☆）
  - **モノリシックカーネル**
     - OSの全サービスをカーネルに取り込んだ構造 
  - **マイクロカーネル**
     - カーネルの規模を抑え、最小限の機能のみを持たせる構造

- *コンテキストの切替え*（☆☆）
  - **プリエンプティブ**
     - 割り込みを発生させ、強制的な切り替えを行う。ラウンドロビン方式など 
  - **ノンプリエンプティブ**
     - 強制的な切り替えを行わない。到着順方式など

- *セマフォシステム*（☆）
  - **P操作**(Prolagen)
     - セマフォ変数から1を**減算**。負になると待ち状態に
  - **V操作**(Verhogen)
     - セマフォ変数に1を**加算**

- *ページ置換えアルゴリズム*（☆☆☆）
  - **LRU**(Least Recently Used)
     - 最後に参照されてから最も**経過時間**の長いページをアウト 
  - **LFU**(Least Frequency Used)
     - 最も**使用頻度**が少ないページをアウト

- *クライアントサーバシステム*（☆☆☆）
  - **クライアント**
     - 処理を**依頼**する側 
  - **サーバ**
     - 処理を**実行**する側

- *クライアントの分類*（☆）
  - **シンクライアント**
     - 最小限の機能のみを実装したプアなクライアント 
  - **リッチクライアント**
     - 各種アプリケーションを実装したリッチなクライアント

- *稼働率計算*（☆☆☆）
  - **MTBF**(Mean Time Between Failures)
     - 故障なく稼働する平均時間。長い程**良い** 
  - **MTTR**(Mean Time To Repair)
     - 故障発生〜復旧に要する時間。長い程**悪い**

- *直/並列システムの稼働率計算　(例)装置Xの稼働率x, 装置Yの稼働率y*（☆☆☆）
  - **直列**
     - 両方が共に稼働する確率(AND)　稼働率は**xy**
  - **並列**
     - いずれか一方でも稼働する確率(OR)　稼働率は**1-(1-x)(1-y)**


###　３.技術要素

- *CUIとGUI*（☆☆）
  - **CUI**(Character User Interface)
     - ターミナル内でコンピュータを操作する際に、キーボード入力と画面の文字表示で行う仕掛け 
  - **GUI**(Graphical User Interface)
     - ウインドウやアイコン等を**マウス**で操作して、キーボードで文字入力を行う仕掛け

- *データベースにおける列と行*（☆☆☆）
  - **列**
     - **↓縦↓**。「列」の漢字の右側2画は上から下 
  - **行**
     - **→横→**。「行」の漢字の右上2画は左から右

- *候補キーと主キー*（☆☆☆）
  - **候補キー**
     - 行を一意に識別するための列の集まり、または1列。**候補**のキー 
  - **主キー**
     - 候補キーから選ばれる。一意性制約と非NULL制約が課される

- *非正規形と第1正規形の違い*（☆☆☆）
  - **非正規形**
     - **繰り返し属性**が存在**する** 
  - **第1正規形**
     - **繰り返し属性**が存在**しない**

- *第1正規形と第2正規形の違い*（☆☆☆）
  - **第1正規形**
     - **部分関係従属**が存在**する**
  - **第2正規形**
     - **部分関係従属**が存在**しない**

- *第2正規形と第3正規形の違い*（☆☆☆）
  - **第2正規形**
     - 候補キーから始まる**推移的関係従属**が存在**する**
  - **第3正規形**
     - 候補キーから始まる**推移的関係従属**が存在**しない**

- *障害回復制御*（☆☆☆）
  - **ロールバック**
     - ログファイルの更新**前**情報を用いて、トランザクションによる更新を**取り消す**処理。コミットする**前**だとこっち。
  - **ロールフォワード**
     - ログファイルの更新**後**情報を用いて、トランザクションによる更新を**データベースに反映する**処理。コミット**後**だとこっち

- *データリンク層*（☆☆）
  - **CSMA/CD方式**(CSMA with Collision Detection)
     - 伝送路にフレームが流れていないかを確認し、フレームの送出を開始する。衝突検知機能がある 
  - **CSMA/CA方式**(CSMA with Collision Avoidance)
     - 一定時間回線が空いていることを確認し、フレームを送出する。衝突検知機能はないが、ACKによる確認応答がある

- *IPアドレス*（☆☆☆）
  - **ネットワーク部**
     - IPアドレスの**前半**部分。組織を識別する
  - **ホスト部**
     - IPアドレスの**後半**部分。ホストを識別する

- *特殊なIPアドレス*（☆☆☆）
  - **ネットワークアドレス**
     - ホスト部の値が全て**0**。ネットワークそのものに付与される
  - **ブロードキャストアドレス**
     - ホスト部の値が全て**1**。そのネットワーク部に属する全ホストを表す

- *キャスト形式*（☆☆☆）
  - **ユニキャスト**
     - 指定した宛先のみに送信する 
  - **ブロードキャスト**
     - ネットワーク上の全ホストに対する送信

- *IPv4とIPv6*（☆☆☆）
  - **IPv4**
     - **32**ビット。IPアドレスの数が枯渇 
  - **IPv6**
     - **128**ビット。IPv4の弱点を補う新IPアドレス

- *ARPとRARP*（☆☆☆）
  - **ARP**
     - **IPアドレスからMACアドレス**を問い合わせる 
  - **RARP**
     - **MACアドレスからIPアドレス**を問い合わせる

- *TCPとUDP*（☆☆☆）
  - **TCP**
     - コネクション型。信頼性の高い通信が必要な際に選ばれる
  - **UDP**
     - コネクションレス型。リアルタイム性が重視される際に選ばれる

- *HTTPとHTTPS*（☆☆）
  - **HTTP**
     - クライアントの要求に対して、wwwサーバが要求に基づいたリソースを送信するプロトコル。直球なイメージ
  - **HTTPS**(HTTP over SSL/TLS)
     - HTTPに暗号化通信SSLやTLSが実装されたもの。魔球なイメージ

- *プロキシとリバースプロキシ*（☆☆）
  - **プロキシ**
     - インターネット上のWebサーバへのアクセスを代理するサーバ。**内部ネットワークからインターネット**
  - **リバースプロキシ**
     - 内部サーバの代理として、インターネットからの要求を受け付けるサーバ。**インターネットから内部ネットワーク**

- *NATとNAPT*（☆）
  - **NAT**(Network Address Translation)
     - グローバルIPとプライベートIPを**1:1**で対応させる
  - **NAPT**(Network Address **Port** Translation)
     - グローバルIPとプライベートIPを**1:多**で対応させる

- *暗号技術(仕組み)*（☆☆☆）
  - **共通鍵暗号方式**
     - 暗号化と復号に**同じ鍵(共通鍵)**を用いる 
  - **公開鍵暗号方式**
     - 暗号化に**受信者側の公開鍵**、復号に**受信者側の秘密鍵**を用いる

- *暗号技術(特徴)*（☆☆☆）
  - **共通鍵暗号方式**
     - 暗号・復号の処理時間が**短い**が、鍵の種類が**多い** 
  - **公開鍵暗号方式**
     - 暗号・復号の処理時間が**長い**が、鍵の種類が**少ない**

- *暗号技術(例)*（☆☆☆）
  - **共通鍵暗号方式**
     - DES、AES、RCなど
  - **公開鍵暗号方式**
     - RSA、楕円曲線暗号など


###　４.開発技術

- *オブジェクト指向アプローチ(1)*（☆☆☆）
  - **汎化**
     - 下位クラスの一般化が上位クラスであること。(例)自動車 
  - **特化**
     - 上位クラスの個別化が下位クラスであること。(例)トラック、バス

- *オブジェクト指向アプローチ(2)*（☆☆☆）
  - **集約**
     - 下位クラスを一つの上位クラスにまとめること。(例)自動車
  - **分解**
     - 上位クラスを部分的に分解して下位クラスを得ること。(例)エンジン、タイヤ

- *モジュールの独立性*（☆）
  - **強度**
     - より良い設計のためには**強める**必要がある 
  - **結合度** 
     - より良い設計のためには**弱める**必要がある

- *言語プロセッサ*（☆☆）
  - **コンパイル**
     - 高水準言語で書かれたソースプログラムを、中間言語、アセンブラ言語、機械語プログラム等に翻訳する
  - **インタプリタ**
     - 高水準言語で書かれたソースプログラム中の命令文を1行ずつ解釈して実行する

- *単体テスト*（☆☆☆）
  - **ホワイトボックステスト**
     - テスト対象プログラム**内部**の制御構造に基づいてテストケースを設計する技法。(例)命令網羅、分岐網羅など
  - **ブラックボックステスト**
     - テスト対象プログラムの**外部**仕様をもとに、入力と出力に関するテストケースを設計する技法。(例)同値分析、限界値分析など

- *結合テスト*（☆）
  - **スタブ**
     - **トップダウンテスト**にて、上位モジュールから順に結合するための仮の**下位**モジュール 
  - **ドライバ**
     - **ボトムアップテスト**にて、下位モジュールから順に結合するための仮の**上位**モジュール


##　マネジメント系

###　５.プロジェクトマネジメント

- *リスク分析*（☆☆）
  - **定量的リスク分析**
     - 過去のデータをもとにリスク値を数量的に分析するプロセス
  - **定性的リスク分析**
     - リスク値を点数や段階評価を行い、リスクの優先度を組むプロセス


###　６.サービスマネジメント

- *システムの移行*（☆）
  - **一斉移行**
     - システム全体を一斉に移行する。トラブルの際の原因究明が困難 
  - **段階移行**
     - 拠点や機能別に段階的に移行する。運用管理に大きな負担がかかる

- *データのバックアップ*（☆☆☆）
  - **差分バックアップ**
     - 前回の**フルバックアップ**から変更されたデータをバックアップする 
  - **増分バックアップ**
     - 前回の**バックアップ**から変更されたデータをバックアップする

- *システム監査におけるコントロール*（☆）
  - **外部統制**
     - 法律や行政指導面など、組織外部のチェック 
  - **内部統制**
     - 会計管理や業務管理など、組織内部のチェック


##　ストラテジ系

###　７.システム戦略

- *経営戦略と情報戦略*（☆）
  - **経営戦略**
     - 企業や事業の将来の姿やそれに至るまでの道筋を示すもの。企業活動の**根本** 
  - **情報戦略**
     - 経営戦略を**情報面から**支えるものであり、経営戦略に沿って定められる

- *BPRとBPM*（☆☆）
  - **BPR**(Business Process Re-engineering)
     - ビジネスプロセスを根本的に考え直し、**抜本的**にそれをデザインし直すこと
  - **BPM**(Business Process Management)
     - ビジネスプロセスを絶えず改善すること。BPRの長期版

- *XaaS*(X as a Service)（☆☆☆）
  - **IaaS**(Infrastructure)
     - ネットワーク＋ハードウェア＋OS 
  - **PaaS**(Platform)
     - ネットワーク＋ハードウェア＋OS＋ミドルウェア
  - **SaaS**(Software)
     - ネットワーク＋ハードウェア＋OS＋ミドルウェア＋アプリケーション

- *機能要件と非機能要件*（☆☆☆）
  - **機能要件**
     - 要件定義のうち、特に実装すべき機能に関する要件のこと。必ず満たすべきもの
  - **非機能要件**
     - 機能要件(主目的)以外での要件のこと。性能や可用性、セキュリティなど


###　８.経営戦略

- *M&A* (例)自動車メーカー（☆☆）
  - **垂直統合**
     - サプライチェーンに沿って企業を買収する (例)部品メーカー 
  - **水平統合**
     - 競合会社を買収して規模を拡大する (例)他の自動車メーカー

- *SWOT分析*（☆☆☆）
  - **内部環境**
     - 自社でコントロール可能。好影響で**強み(S)**。悪影響で**弱み(W)**となる
  - **外部環境**
     - 自社でコントロール不可。好影響で**機会(O)**。悪影響で**脅威(T)**となる

- *KGIとKPI*（☆☆☆）
  - **KGI**(Key Goal Indicator)
     - 重要目的達成指標とも。組織やプロジェクトの最終的な目標(ゴール)を**定量的**に測るもの
  - **KPI**(Key Performance Indicator)
     - 重要業績評価指標とも。KGIを達成するためのプロセスが適切に実施しているかを測るもの

- *ECの形態*（☆☆☆）
  - **B to B**
     - 企業間の商取引 (例)受発注
  - **B to C**
     - 企業と消費者間の商取引 (例)ネットショップ
  - **C to C**
     - 消費者間の商取引 (例)ネットオークション


###　９.企業と法務

- *在庫の発注方式*（☆☆）
  - **定期発注方式**
     - 一定期間ごとに発注する。発注量は需要予測で決まる
  - **定量発注方式**
     - 在庫量が発注点を下回ったとき、一定量を発注する

- *ゲーム理論*（☆）
  - **マクシミン原理**
     - 各戦略ごとの**最悪**の結果に注目する。防衛的
  - **マクシマックス原理**
     - 各戦略ごとの**最良**の結果に注目する。攻撃的

- *財務諸表*（☆☆☆）
  - **貸借対照表**(B/S)
     - 決算期における企業の財政状態をまとめたもの
  - **損益計算書**(P/L)
     - 会計期間における経営成績をまとめたもの

- *損益分岐点*（☆）
  - **変動費**
     - 原材料費など、売上高に比例して増加する費用
  - **固定費**
     - 減価償却費や人件費など、売上高に関わらない費用

- *著作権の保護対象(コンピュータ関連)*（☆☆）
  - **保護対象となる**
     - プログラム、データベース、ホームページ 
  - **保護対象とならない**
     - アイデア、ノウハウ、アルゴリズム、プログラミング言語、規約など

- *著作権の帰属*（☆☆☆）
  - **請負契約**によって発注されたプログラム
     - 原則として、著作権は**発注先**に帰属
  - **派遣契約**によって作成されたプログラム
     - 原則として、著作権は**発注元**に帰属

- *指揮命令権*（☆☆☆）
  - **請負契約**
     - 請負労働者は、請負先で雇用され、**請負先**の指揮命令を受ける
  - **派遣契約**
     - 派遣労働者は、派遣元に雇用され、**派遣先**の指揮命令を受ける


##　参考文献

- イメージ＆クレバー方式でよくわかる 栢木先生の基本情報技術者教室（栢木厚 著）
- ニュースペックテキスト 応用情報技術者（TAC情報処理講座 著）

##　編集履歴
|編集日|編集内容|
|:-----------|:---------|
| 2018/11/24 | 本記事作成 |
| 2019/7/6   | 値渡し・参照渡しのコード解説を削除 
|            | NOR,NANDの追加 |
|            | ☆による重要度評価の追加 |