【IT用語集】プログラミング・技術書等によく出る用語をざっくり解説 まとめ【随時更新】

# データベース

### 関係データベース(relational database)
同語 リレーショナルデータベース
表を複数個用意して表同士を紐づけたデータベース

### 正規化(normalization)
データベースを正規形に直すこと
保守性とかがよくなる

### 正規形
関係データベースの正しい形
これに準拠すれば冗長性を排除し、一貫性や効率性を保持するようなデータ形式になる。
６段階あるが、普通は第３正規化まで理解すれば十分と言われている。

* 第１正規形
  全ての属性が単一値をもつ
  Excelとかの表計算ソフトで例えれば、セルの結合があってはいけない。
* 第２正規形
  主キーからの部分関数従属がない
* 第３正規形
  主キーからの推移的関数従属がない


# ウェブデザイン

### SEO（Search Engine Optimization)
同語 検索エンジン最適化
検索結果でWebサイトがより多く露出されるために行う一連の取り組み
検索からアクセスを増やすための上位表示の手法

### アクセシビリティ(accessibility)
どんな人であれどんな環境であれ利用しやすいかどうか
障害者や高齢者でも使いやすいか・環境が変わっても利用できるか等で評価

### ユーザビリティ(usability)
どれだけ利用者がストレスを感じずに，目標とする要求が達成できるか
どれだけ便利に、直感的に操作できるか



# ネットワーク

### DNS(Domain Name System)
ドメイン名を管理・運用するためのシステム
"qiita.com"のようなドメイン名をDNSサーバに送り、IPアドレスを返してもらう

### プロトコル(protocol)
ネットワーク上でデータを通信するための手順や規約。
互いが意思疎通できるような仕組みのこと。

### OSI参照モデル
コンピュータなどの通信機器の通信機能を階層構造を７階層に分割したモデル

#セキュリティ
### 共通鍵暗号方式
同語 秘密鍵暗号方式, 共有鍵暗号方式
暗号化・複合に同じ鍵(または手段)を使う
古くから使われてきた手法

* メリット
  * 暗号化・複合化の処理が早く、多量のデータの通信に向いている
* デメリット
  * 「総当たり」攻撃で解読されやすい
  * 通信先が増えると鍵の数が増える
  * 共通鍵の安全な受け渡しが必要

### 公開鍵暗号方式
同語　公開鍵暗号, Public key cryptography, asymmetrical cryptography
暗号化・複合に別々の鍵(または手段)を使う
  
1.暗号化(秘匿性を実現)
送信側は受信側の公開鍵で暗号化し、受信側は受信側の秘密鍵で復号する
2.署名(正当性を実現)
送信側は送信側の秘密鍵で暗号化し、受信側は送信側の公開鍵で復号する

* メリット
  * 堅牢性が高く解読に時間がかかる
  * 通信先が多くても鍵の数は少なくて済む
* デメリット
  * 計算処理が複雑で暗号化・複合に時間がかかる

### ハイブリット暗号方式
安全性を重視し公開鍵暗号方式で通信を行うと、処理に時間がかかるため遅延が発生し品質が劣化する。
公開鍵暗号方式で共通鍵を安全に交換し、実際には共通鍵暗号方式で通信を行う。
共通鍵はデータ通信に先立って1回しか送られないため、遅延は問題にならない程度で済む。
実際には、安全性を高めるため一定の間隔で共通鍵を更新することが多い。
メール暗号化技術の「PGP」やwebアクセスの「SSL通信」に使われている。



# プログラミング
### リファクタリング(refactoring) 
外部から見た振る舞いを変更せずに保守性の高いプログラムに書き直すこと

### アーキテクチャ(architecture)
基本設計や設計思想

### シーケンス(sequence)
動作の順序

### アラインメント(alignment)
2バイト・4バイトとかにデータ長を合わせること
  
### シグネチャ(signature)
同語 関数の型
関数の引数と戻り値の型

### エイリアス(alias)
同語 別名
コマンド等を別名を登録したもの。


# 実行ファイル生成

### レキサー(lexer)
同語 字句解析器, レキシカルアナライザー(lexical analyzer)
プログラムソースから字句(トークン)の並びを解析するプログラム

### パーサ(parser)
同語 構文解析器,パーサー
レキサーによる解析が行われた後、プログラムソースの構造を解析するプログラム

### リンカ(linker)
複数または単一のオブジェクトファイルから、必要ならばライブラリなどを付け加え、実行可能ファイルを生成するプログラム

### 字句(token)
同語 トークン
プログラムを構成する最小の要素。レキサーによって解析される。

### 識別子(identifier)
トークンの一つ。基本的にはプログラムの中のアルファベットで構成される文字列のことを指す。変数名とか関数名とかクラス名とかの事。ただし予約語を含めないとする定義もある。

#  システム設計

### CMMI(Capability Maturity Model Integration)
ソフトウェア開発組織及びプロジェクトのプロセスの成熟度を評価するためのモデル

* レベル1：初期 <br>
  場当たり的で無秩序な組織として最も低い状態。
* レベル2：管理された <br>
  プロジェクト管理のための基本的なプロセスが備わっている状態。
* レベル3：定義された <br>
  組織内に標準化された一貫性のあるプロセスが定義されている状態。
* レベル4：定量的に管理された <br>
  定量的な品質目標が存在し、プロセスはデータに基づき予測可能である状態。
* レベル5：最適化している <br>
  継続的な改善プロセスが常に機能している状態。

### リバースエンジニアリング(reverse engineering)
ソフトウェアの動作を解析・分析し、そこから設計図、ソースコードなどを調査する技法


# アルゴリズム

### 


# 人工知能

### 深層学習
### 機械学習
### 強化学習



# ストラテジ

### デルファイ法(delphi method)
参加者から匿名で意見を集約し、得られた全体の結果を参加者に見てもらう
これを繰り返し、ある程度収束した見解を得る
権威者への配慮や場の雰囲気で結果に影響が出にくい

### ゲーム理論
複数の意思決定をする主体が、その意思決定に関して相互作用する状況を研究する学問。


# サウンド

### 標本化(sampling)
連続信号を一定の間隔をおいて測定することにより、離散信号として収集すること
標本化によって得られたそれぞれの値を標本値(sample value)という
一秒あたりの標本値の数をサンプリング周波数(sampling rate)という

### 量子化(quantization)
標本値を離散的な値で近似的に表すこと
値をあらわすのに用いるビット数を量子化ビット数(quantization bit rate)という

### ハイレゾ(high resolution audio)
同語 ハイレゾリューションオーディオ, ハイレゾオーディオ, ハイレゾ音源
サンプリング周波数や量子化ビット数がCD-DA（44.1 kHz, 16bit）よりも高い音源のこと
より高い再現度を持ち、高品質性が保たれる

### ADSR
電子楽器の制御信号を設定する機能のひとつ
Attack、Decay、Sustain、Releaseの頭文字
![index.png](https://qiita-image-store.s3.amazonaws.com/0/136871/c96fad29-fa66-f703-fec8-1cd083ead4c8.png)

* Attack（立ち上がり）
    演奏開始からその音声の最大音量に到達するまでの時間
* Decay（減衰）
    Attackで到達した最大音量から、Sustainレベルに移行するまでの時間
* Sustain（減衰後の保持）
    演奏が続いている限り出る音量
* Release（余韻）
    演奏を終了した時点から、音が鳴り終わるまでの時間