はじめに
プログラミングでよく使う用語をまとめました。
新しいFWや言語を学ぶたびに共通する用語が沢山あります。
しっかり押さえておくことで効率が上がるはずです。
追記:言語まとめに関しては記事末に参考記事としてまとめました。
✅目的
プログラミングでよく使う単語の理解
✅参考
Webを支える技術※主に第3部まで
オブジェクト
※JSベースで記載。
✅オブジェクト指向
様々なオブジェクトを組み合わせて関連性や相互作用を記述していくことによりシステム全体を構築していく手法。
コンピュータプログラムの設計や実装についての考え方の一つで、互いに密接に関連するデータと手続き(処理手順)をオブジェクトと呼ばれる一つのまとまりとして定義。
✅オブジェクト
様々な値や処理(関数)をひとまとめにして扱えるようにしたプログラムのかたまり。その名称をクラスと呼ぶ。
また、もともと用意されたオブジェクトを直接利用するのはNG。利用するためにはインスタンスでオリジナルをコピーして操作する。
オブジェクトのリテラル(値)の書き方。
const object = {プロパティ1:データ(値)1,プロパティ2:データ(値)2,・・・・};
※JSでは、オブジェクトはプロパティとメソッドから構成される。
✅クラス
オブジェクトの名称(設計図※器でしかない⇔オブジェクトは実際に作られたモノ)。
あるオブジェクトがどのようなデータとメソッドから作られるのかを定義した雛形にあたるものをクラスという。
プログラムの実行時にはクラスを元にメモリ空間上に具体的なオブジェクトが生成されるが、この実体化されたオブジェクトのことを「インスタンス」という。
✅インスタンス
クラス(オブジェクトの名称)を実行するする際に利用。オブジェクトを複製(コピー)して利用する。
あらかじめ定義されたプログラムを、処理・実行できる状態にしたもの(実体)。
クラスは一種の雛形であるため、同じクラスから異なる内容を持った複数のインスタンスを生成して扱うことができる。
var 変数 = new クラス(※オブジェクト)();
✅関数
数学のように与えられた値(引数)を元に何らかの計算や処理を行い、結果を呼び出し元に返すもののこと。
※関数もオブジェクトの一種。
var 変数 = function 関数(引数){
~~実行する処理~~
return 値;
};
✅コールバック関数
他の関数に引数として渡す関数のこと。
✅アロー関数
通常のfunction式の代替構文。短く記述できるので、関数名を持たずにその場で利用するだけの場合によく利用される。
引数にアロー関数を用いることもある。
(引数)=>{~~実行する処理~~} 関数((引数)=>{~~実行する処理~~}) // 赤線がアロー関数の部分
✅プロパティ
JS:オブジェクトに与えることができる値。配列でいうインデックス番号と同じ役割をする。
PHP:クラス(オブジェクト)の中で定義された関数と変数。
※プロパティに関数を値として入れることも可能(メソッド)。
オブジェクト.プロパティ = 値;
✅メソッド
JS:関数を値として設定したプロパティのこと。
PHP:クラスで管理される値を処理するための関数
オブジェクトのプロパティ(メソッド)を使う際はthisを利用する。
※JSではオブジェクト内で関数が格納されたプロパティのこと
✅属性
対象の性質や設定などを示す付加情報などを指す。
HTMLでは、要素の持つ付加的な情報をタグの中に埋め込んだものをアトリビュートという。JavaScriptでは、オブジェクトの属性として表したものをプロパティという。
✅配列
変数は1つの値しか扱えないが配列は複数の値をまとめて扱うことができる。
通常配列は数値キーを使って要素を管理。連想配列は文字列キーを使って要素を管理する。
※配列の中に入れ子で配列をセットする配列を多次元配列と呼ぶ
✅パラメータ
関数やメソッドなどが呼び出し元から渡された値を受け取るための変数のこと(仮引数)。
呼び出し側で関数などに引き渡す値などは引数(argument)あるいは実引数と呼ばれる。
✅継承
基になるオブジェクト(クラス)の機能を引き継いで、新たなクラスを定義する機能。
・スーパークラス(基幹クラス):継承元となるクラス。
・サブクラス(派生クラス):継承によってできたクラス。
ミックスイン:オプション(コンポーネント外)をコンポーネントに組み込むことができる機能。※Vueの仕組み
トレイト:再利用可能なコード(プロパティ/メソッド)をまとめて切り出しておくための仕組み。※PHP(Laravel)の仕組み
インターフェース:、OSやミドルウェア、ライブラリなどの機能を外部から呼び出して利用するため規約。※TSやLaravelの仕組み
✅this(phpは$this擬似変数)
イベントが発生した要素を指す。イベントに設定するファンクションの中で使える。(JSではクラスのメソッドとして存在する関数だけでなく、全ての関数に対してthis変数が定義される。)
✅モジュール
アプリを機能単位に分割/整理するための仕組み。
👉活用することで追加機能を開発して組み込んだり、全体を入れ替えることなく一部を修正・改良したり機能を強化できるようになる。
📝JSのexport(ES2015からサポート。) 公式
exportキーワードを使用。exportしたものは別ファイルにてimportで呼び出すことができる。
module.js
export class クラス名1 {~~処理~~} export class クラス名2 {~~処理~~}
import.js
import {クラス名1,...} from './module' // *ですべてをインポートすることも可能。 クラス名1: インポートする要素 module:モジュール(拡張子を除いたパス)
export defaultはモジュールに含まれる要素が1つの場合に有効。
export defaultは名前は読み込んだ側で適当に付けてもらえればいいというモジュールの利用法。オブジェクトやクラス/関数などの名前を指定せずにdefaultを指定して記載する。読み込むスクリプト側で同じ名前のオブジェクトを使っていた際など変数代入のコンフリクトリスクを防ぐことが可能。
※Vue.js&Nuxt.js超入門P458参考
Area.js
export default class {~~処理~~}
import.js
※これで別ファイルからAreaという名前でアクセスが可能になる。
import Area from './Area'; console.log(Area.関数())
TypeScript関連
※TSの勉強を通じて知った用語で汎用的なものを書いています。
✅コンパイラー
プログラミング言語で書かれたソースコードを読み込んで、コンピュータが直に実行可能な機械語や、それに相当する中間言語などで記述されたオブジェクトコードに変換するソフトウェア。
✅アノテーション
ソースコード中に登場する要素(クラスやメソッドなど)に対して、処理系に伝達したい付加的な情報(メタデータ)を注記する仕組みのこと。
✅デコレータ
クラスやメソッドに機能を追加するもので、クラスの宣言などにアタッチ(取り付け)できる特別な宣言。
(※Javaでいうアノテーションらしい。)
✅リテラル型
コンピュータプログラムのソースコードなどの中に、特定のデータ型の値を直に記載したもの。また、そのように値をコードに書き入れるために定められている書式。
👉ただ1つの値を表し、それ以外の値は受け入れない型。
⇔マジックナンバー:プログラム中に記載されたリテラルのうち、何らかの意図や意味が込められているが、その手掛かりがどこにもないようなもの
undefined:あるものがまだ定義されていない
void:明示的に何も返さない関数の戻り値の型
never:決して戻ることのない関数の型
✅ジェネレータ
特殊な関数の一種で、一定の手順に従って次々に異なる値などを生成して呼び出し元に返すもの。状態更新などに利用。
✅ポリモーフィズム
ある関数やメソッドなどが、引数や返り値の数やデータ型などの異なる複数の実装を持ち、呼び出し時に使い分けるようにできること。
👉ジェネリック:同じプログラムコードで様々なデータ型のデータを処理できるようにするもの。
Web/HTTP/URI
✅Web(World Wide Web)
インターネット上で標準的に用いられている、文書の公開・閲覧システム。
Webを支える基本的な技術がHTTP(情報を取得したり発注するためのプロトコル)、URI(世界中のあらゆる情報を指し示すことができる)、HTML(情報を表現する文書フォーマット)。
✅HTTP(Hypertext Transfer Protocol)※アプリケーション層
TCP/IP(※リアルタイムに相手と通信する技術)をベースとしたサーバとクライアントの間でデータの送受信を行うために用いられるプロトコル(通信規約)。
☞RESTの統一インタフェース、ステートレスサーバ、キャッシュなどを実現しているWebの基盤となるプロトコル。
HTTPメソッド:HTTPのリクエストメッセージを特徴(役割)づける。CRUDの4つであるGET,POST,PUT,DELETEなど。
ステータスコード:リクエストの結果得られるレスポンスメッセージの中で、その意味を伝えるコード。200や401、404など。
HTTPS:HTTPがSSLやTLSで通信路の暗号化がされた状態を表したもの。データを保護し、盗聴を防ぐ。暗号化にはデジタル証明書が用いられる。
✅TCP(Transmission Control Protocol)※トランスポート層
送受信を行う機器間で通信の開始と終了を確認する。(※IPが保証しなかったデータの転送を保証する役割。データの抜け漏れチェックなど)
☞IPとHTTPなど各用途固有の上位プロトコルとの橋渡しをするもので、ポート番号という識別番号を用いて、各IPデータグラムが運んでいるデータがどの上位プロトコルのものであるかを識別し、担当のソフトウェアに振り分けたりすることができる。
✅IP(Internet Protocol)※インターネット層(ネットワークでデータを実際にやりとりする部分)
自分のネットワークインタフェース(ケーブルなど物理的なもの)でデータを送り出すこと(のみ)を保証。
☞ネットワークに接続された個々のネットワークやホスト(機器など)に固有の識別番号であるIPアドレスを割り当て、これを宛先や送信元に指定して通信を行う。
✅URI(Uniform Resource Identifier)
リソース(Web上の名前を持ったあらゆる情報)の名前。
DNS(Domain Name System):インターネットなどのTCP/IPネットワーク上でドメイン名やホスト名とIPアドレスの対応関係を管理するシステム。
※URLとURNを総称する名前でもある。
✅分散システム
複数のコンピュータを組み合わせて処理を分散させる形式。⇔集中システム
✅アーキテクチャ
コンピュータやソフトウェア、システム、あるいはそれらの構成要素などにおける、基本設計や共通仕様、設計思想。
・MVC
・REST:Web全体のアーキテクチャスタイルでもあり、個別のWebサービスやWeb APIのアーキテクチャスタイルでもある。
認証関連
✅クッキー
クライアント側に保存可能な小さなテキストのこと。サーバ側から読み書きが可能。
※クライアント単位で維持したい情報の管理を容易にする。
✅セッション
サーバ側で管理する。ユーザがブラウザを開いている間のみ情報を維持する仕組み。
☞クライアント/サーバ間でやりとりされるのは、セッション情報のキーのみ(=セッションID)で、実データがネットワークに流れないのが特徴。セッションIDの受け渡しにクッキーが使われる。(URL経由で受け渡す方法は好ましくない。)
✅キャッシュ
サーバから取得したリソースをローカルストレージ(ハードディスクなど)に蓄積し、再利用する手法のこと。
キャッシュ可能かどうかはヘッダ(HTTPヘッダ)で判断する。
✅OpenID
シンプルなシングルサインオンを実現する仕様。WebサービスのアカウントをほかのWebサービスにも提供。
✅OAuth
Webサービス間でデータをやり取りできるようにするための仕様。「認可情報を委譲する機能」
その他
✅DOM
マークアップ言語(HTMLなど)で書かれたドキュメントにアクセスするための標準的な仕組み。
☞JavaScriptでよく利用される仕組み。クライアントサイドJavaScript(DOM)を書きやすくしたライブラリがjQueryのイメージ。
✅名前空間
クラスや関数の「くくり」を表現する。※名字や所属のような名前が被っても区別できるようにしたもの。
✅エイリアス
ある対象や実体を、複数の異なるシンボルや識別子で同じように参照できるする仕組み。別名。
【JavaScriptとPHPの比較】
JavaScript
基本
console.log('おうむ返し'); // オブジェクト.メソッド('パラメータ');
・インスタンス生成
var 変数名 = new オブジェクト名([引数,...])
・オブジェクトのプロパティ、メソッドの呼び出し。(newでインスタンス生成後)
変数名.プロパティ名 // ドット演算子。変数名はインスタンス変数名 変数名.プロパティ名
・静的プロパティ、メソッドの呼び出し
オブジェクト名.プロパティ名 [= 設定値]; オブジェクト名.メソッド名([引数 [,...]]);
・関数の定義方法
①function命令
function 関数名(引数,...){ // 任意の処理 return 返り値; }
②関数リテラル:名前のない関数を定義した上で、変数に格納する。
var 変数名 = function(引数,...){ return 戻り値; };
③アロー関数:シンプルに記載可能。functionキーワードを用いない。代わりに、=>(※アロー)で引数と関数本体をつなぐ。
本体が1文の場合、{}を省略可能。さらに、文の戻り値が戻り値とみなされ、return命令も省略可能。
引数が1個の場合は引数のカッコも省略可能。(※引数がない場合のカッコの省略は不可。)
(引数,...) => {...関数の本体...} let 変数名 = (引数,...) => 関数 // 本体が1文の場合。 let 変数名 = 引数 => 関数 // 引数が1個の場合。
・関数の呼び出し
関数名([引数,...])
・クラス(プロトタイプ)の定義
変数に対してからの関数リテラルを代入しているだけでクラスになる。※JSでは厳密な意味でのクラスの概念がない。関数にクラスとしての役割を与えているだけ。
var 変数名 = function(引数1) { this.引数1 = 引数1 ;};
thisキーワードは、コンストラクターによって生成されるインスタンス(自分自身)を表す。変数を指定することでインスタンスのプロパティを設定可能。
this.プロパティ名 = 値;
・継承
クラス内でインスタンスを生成。
PHP
・インスタンス生成
$変数名 = new クラス名([引数,...])
・オブジェクトのプロパティ、メソッドの呼び出し。
オブジェクト名 -> プロパティ名 // アロー演算子
・静的プロパティ、メソッドの呼び出し
[戻り値 =] クラス名::メソッド名([引数,...]) クラス名::プロパティ名 [= 値]
・関数の定義方法
function 関数名(仮引数,...){ // 任意の処理 return 返り値; }
※仮引数:ユーザ定義関数の中で参照可能な変数のこと。
・関数の呼び出し
戻り値 = 関数名(引数,...) // 戻り値の部分には変数などを用意して代入する
・クラスの定義
class クラス名{ ~~プロパティ/メソッドの定義~~ public $firstName; // プロパティ(=クラスの中で定義された変数) public function メソッド名(){ //メソッド(=クラスで管理される値を処理するための関数) ~~処理~~ print "{$this->firstName}" } public static function メソッド名(){} // 静的メソッド。クラス名::メソッド名でインスタンスを生成せずにクラスから直接呼び出すことが可能。 public static $pi = 3.14; //静的プロパティ。クラス名::$piでクラスの外から直接呼び出し可能。 }
プロパティ/メソッドは先頭にアクセス修飾子(public/protected/private)を指定しなければいけない
$thisはインスタンスメソッドの中でのみ利用できる変数。現在のインスタンス(オブジェクト)を指す。
__construct()メソッドは、インスタンス化のタイミングで実行される特別なメソッド(=あらかじめ特定の役割を与えられたマジックメソッド)。プロパティの初期化などの処理を記述する。⇔デストラクタ
・継承
class サブクラス名 extends スーパークラス名 { ~~メソッド/プロパティなどの定義~~ }
※複数のクラスを親に持つような継承(多重継承)は認めていない。
・無名クラスの定義
new class { ~~プロパティ/メソッドの定義~~ } // new演算子に直接classブロックを渡す。
・トレイトの定義
trait トレイト名 { ~~プロパティ/メソッドの定義~~ } use trait, // use命令で使う※クラス内
※インスタンス化はできない。利用する際はクラス内でuse命令で使用する。
おわりに
随時更新していきます。
コメントを残す