【初心者向け】頻繁に使われる専門用語集
はじめに
この記事は、初学者が知らない・わからない一方、頻繁に使われるような単語の索引です。英語で記述された情報はほとんどの場合日本語での情報より豊富なので、英語での表現も併せて記載しています。
単語集
基本的な単語
読む/書く (Read / Write)
- 読む
- ファイルの中身を取得する動作のこと。
- 書く
- ファイルの中身を変更・保存したり、新規にファイルを作成する動作のこと。
ディレクトリ (Directory)
フォルダのこと。
直下
あるディレクトリの真下にあること。
- 例
- C:\Program Files\Microsoftは、Program Files 直下
- /usrは、ルート直下
パス (Path)
ファイルやディレクトリの場所を示す文字列のこと。日本語の文章中のPATH、Pathといった表記はこの意味ではなく環境変数の名称であることも多い。環境変数については記事末尾にリンクを記載。
- OSによって、ディレクトリ同士の区切りを示す文字が違う
- Windowsではバックスラッシュ・日本円マーク
- Mac/Linuxではスラッシュ
- 例
- Windows
- C:\Program Files\Microsoft
- Cドライブの中の、Program Filesの中の、Microsoftというファイルまたはディレクトリ
- Program Filesのようにパスに空白が含まれる場合は、パスをダブルクォーテーションで囲む("C:\Program Files\Microsoft")必要がある場合が多いので注意
- バックスラッシュを文字列の中で用いるには、バックスラッシュを二個つなげることになる
- Mac/Linux
- /usr/bin
- ルートディレクトリの中の、usrというフォルダの中の、binというファイルまたはフォルダ
- Windows
絶対パス(Absolute Path)
Cドライブやルートディレクトリから指定した、そのファイル・ディレクトリまでの道のりが一つに定まるパスのこと。
- 例
- 上記のパスの例と同じ
相対パス (Relative Path)
カレントディレクトリから見た、ファイルやディレクトリの場所のこと。
- 例
- Windows
- Google\Chrome
- C:\Program Filesがカレントディレクトリのとき、C:\Program Files\Google\Chromeの相対パス
- Google\Chrome
- Mac/Linux
- ubuntu/Downloads
- /homeがカレントディレクトリのとき、/home/ubuntu/Downloadsの相対パス
- ubuntu/Downloads
- Windows
カレントディレクトリ・ワーキングディレクトリ (Current Directory, Working Directory)
ターミナル上で、現在作業を行っているディレクトリのこと
- このディレクトリからの相対パス、または絶対パスでコマンドやコマンドが受け取るファイルを指定する
ホームディレクトリ
特にMac/Linuxにおける、ユーザ毎に用意されたディレクトリのこと。
- /home/ユーザ名
- ターミナルを起動したときのカレントディレクトリでもある
- ターミナル上で、「~」はホームディレクトリを指す
SDK (Software Development Kit)
あるハードウェアやプラットフォーム上で動作するアプリケーションの開発に必要なライブラリやツール、サンプルプログラムなどをまとめたもののこと。多くの場合、公式のベンダーから提供されている。
Git
多くの現場で使われているVCS (バージョン管理システム)のソフトウェアの名称。
プログラムのソースコードなどの変更履歴を記録・追跡するためのものである。変更履歴をさかのぼってデータを復元したり、2つの履歴から差分 (何が変更されたか) を容易に確認することができる。また、ローカルでも実行できるが、サーバを用意する、またはGitHubなどのサービス利用することで、チーム開発の効率を大きく向上させることができる。
CI/CD (Continuous Integration / Continuous Deployment (Delivery))
継続的インテグレーション/継続的デプロイ。
- CI
- ソースコードに加えた変更の、リモートリポジトリへのマージ・ビルド・そしてテストを行う工程を自動化すること。
- CD
- CIに加えて、変更のマージ後にアプリケーションを自動もしくは手動で本番環境やテスト環境にデプロイすること。
CI/CDを併せて導入することで、以下のようなメリットが得られる。
- CIに加えて、変更のマージ後にアプリケーションを自動もしくは手動で本番環境やテスト環境にデプロイすること。
- ヒューマンエラーの減少
- 一連の作業工程の高速化による、バグ発見の最適化
仮想化 (Virtualization)
主にハードウェアなどの動作をソフトウェア上で再現する技術のこと。
後述するコンテナ仮想化では、OSレベルでの仮想化を行い、ハードウェアの仮想化は行わない。
Docker
コンテナ仮想化を行うためのソフトウェアの名称。Dockerfileと呼ばれるファイルに独自のフォーマットで処理を記述することで、コンテナの状態を容易に再現することができる。また、コンテナの状態を「イメージ」として保存し、構築済みの環境の再配布や共有を容易に行うことができる。コンテナ間の通信やコンテナとホストの通信を行うためのネットワークの機能も提供する。また、コンテナ内の環境はホストからある程度隔離されている。
DBMS (Database Management System)
データベース管理システム。データベース上のデータを効率的に管理し、他のプログラムからの要求に応じてデータベース上のデータの更新・取得を行うためのものである。
デファクトスタンダード
事実的な標準となっているもの。あるアプリケーションなどが広く使われた結果、公式に標準ではないが実質的に標準なものとして扱われていること。デファクトスタンダードとなっているアプリケーションを後述する。
アプリケーションの例
- DBMS (データベース管理システム)
- MySQL
- PostgreSQL
- MariaDB
- SQLite
- VCS (バージョン管理システム)
- Git
- サーバ用OS
- Linux (厳密にはOSではなくカーネルだが、詳細は省略)
- 文書や表・スライド作成
- Microsoft Office
- コンテナ仮想化
- Docker
ネットワーク
ここでは、IPネットワークのことを、単にネットワークと記載する。
ローカル (Local)
口語的には、サーバ上でなく自分が直接操作しているコンピュータのこと。対義語はリモート。
プロトコル
コンピュータ同士が通信を行う際の、データのフォーマット・処理を行う一連の流れなどをまとめたルールのこと。
TCP (Transmission Control Protocol)
完全なデータが転送されたことを保証する、信頼性の高い通信を行うプロトコル。UDPと比べると低速だが、とても多くの場面で用いられる。例えば、WebサーバにアクセスするときはTCPで通信している。
UDP (User Datagram Protocol)
完全なデータが通信相手に到達したことを検証せずに通信を行うプロトコル。その分高速に動作するため、ネットワーク上で通信がリアルタイム性・低遅延であることが要求されるシーンで用いられる。音声や画像のストリーミング、オンラインゲームでの通信などが代表例である。
ポート (Ports)
1-65535の番号で管理された、ネットワーク上でコンピュータ同士が通信を行うための送受信口のことである。基本的には、1つのポートに対して2つ以上のアプリケーションが通信を行うことはできない。が物理的な端子の差込口を指すこともある。TCPまたはUDPにより通信を行う。また、LAN内のコンピュータへのWANからの接続が可能な状態にすることをポート開放、ポートマッピング(Port Mapping)、ポートフォワーディング(Port Forwarding)などと呼ぶ。また、0-1023のポートをシステムポート(またはウェルノウンポート, Well-known Ports)と呼び、代表例は以下である。
- 22/TCP
- SSH
- 80/TCP
- HTTP
- 443/TCP
- HTTPS
API (Application Programming Interface)
アプリケーション同士が相互に通信し、データを交換できるように定められたルールのこと。
LAN (Local Area Network)
限定的な範囲で設置されたネットワークのこと。多くの家庭では、設置されたルータが家庭内にLANを構築し、ルータからONUを通してWANにつながっている。
WAN (Wide Area Network)
広く設置されたネットワークのこと。LANの対義語として、LANの中から見てLANの外側を指すことが多い。
コンピュータサイエンス
静的型付け・動的型付け (Static Typing, Dynamic Typing)
プログラミング言語の型システムの種類の名称。必ずしも明確な区別があるわけではない。
- 動的型付け
- ある変数などの型を実行時に決定する型システム
- 実行時のエラー予測が難しい場合があるため、大規模なシステムの構築には向かないとされている
- 簡易的なシステムの構築やプロトタイプの制作に向いている
- 例
- JavaScript
- Python
- Lua
- 静的型付け
- ある変数などの型をコード内で明示的に宣言する型システム
- 厳密に型をチェックするため、大規模なシステムの構築に向いているとされる
- 簡易的なシステムの構築やプロトタイプの制作には冗長な記述が必要となってしまう場合がある
- 例
- Java
- C#
- C++
- Go
バイナリ (Binary)
2進法で表記されたデータのこと。つまり、コンピュータが直接処理することが可能である。
プレーンテキスト・平文 (Plain Text)
バイナリに対して、人間が容易に読み取れる文字データのこと。
パスワードが平文で(ハッシュ化されず)、セキュリティ的に脆弱な状態で保存されていたという文脈で多く用いられる。
コンパイル (Compile)
プログラミング言語により記述されたコード(ソースコード)を、コンピュータが直接実行可能なコード (バイナリ)や、中間言語[1]に変換すること。コンパイルを行うソフトウェアをコンパイラと呼ぶ。
セキュリティ
ハッシュ値 (Hash Value)
あるデータをハッシュ関数によって固定長の文字列に変換したもの。入力に対して規則性がなく、元の値が少しでも変化するとハッシュ値も大きく変化するため、ハッシュ値から入力値を予測することは困難である。その性質から、パスワードの保管・データの改ざん検知などに用いられる。
総当たり攻撃 (Brute Force Attack)
あるアカウントに対して、ユーザの誕生日や氏名などからパスワードを推測し、プログラムから自動で、何回もログインを試行する攻撃手法のこと。
SQLインジェクション (SQL Injection)
Webアプリケーション上の入力フォームなどに含まれる脆弱性を利用してSQL文を発行し、サーバ上のデータベースを不正に操作する攻撃手法のこと。フォームの入力値をデータベースへの書き込みに使用する場合、このSQLインジェクションが可能な状態となっていないか確認するべきである。
暗号化・復号 (Encryption・Decryption)
暗号化とは、あるデータに対して内容をわからない状態にする処理のすることである。これを元のデータに戻す処理を復号化といい、暗号化・復号に用いるパスワードのような役割を果たすデータを暗号鍵という。公開鍵方式や共通鍵方式などの暗号化方式が存在する。
参考
おわりに
プログラミングを学び始めたばかりのとき、多くの人は専門的な単語の多さに苦しんだのではないかと思います。この記事がそのような人たちの助けになればうれしいです。
-
Javaなどの一部の言語は、中間言語を実行するVMをコンピュータが動かすという形式をとっている ↩︎
Discussion