Laravel 公式ドキュメントを読めるようにするための 用語集

![Laravel公式ドキュメント1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1794217/44ba63a9-a945-4bef-6684-1f13e18c5f2f.png)


#準備
|用語|意味|
|--|--|
|仮想マシン|サーバ仮想化、一台のコンピュータで複数のコンピュータをウド加須技術のこと ex) WindowsのPC上でMacを動かせたりする|
|環境変数|OSの変数、OSが動いている時に使える変数|
|キャッシュ|ウェブページの情報を一時的に保存する仕組み（スマホやPC内にある）、その一時的なデータ|
|プレースホルダー|とりあえず入れておく仮の情報 ex) フォームの名前を書く欄に名前と書いてある|
|スーバーグローバル変数|$_POST, $_GETなど|
|オートローディング（auto loading）|自動的にファイルを読み込む仕組み|
|api.phpファイル|アクセス回数制限を提供するミドルウェアでステートレス|
|セッションステート|セッション状態、アプリケーションの状態|
|ステートレス|状態がない、すべての情報をはじめから投げてあげる必要がある|
|ログファイル|ログ（履歴、記録）が書かれたファイル|
|認可|Authorization＝その人が権限を持っているかを確認すること、認証とは違う|
|サービスプロバイダ|サービスを提供するもの、サービスをコンテナと結合、イベントの登録、もしくはアプリケーションへやってくるリクエストを処理するために必要な用意をする、タスクを実行するなど、アプリケーションの事前準備を行う|
|★シリアライゼーション|複数の並列データを直列化して送信すること|
|★プロファイリング||
|プロファイラ|コンピュータプログラムが実行される様子を監視、記録し、動作順や実行時間などを集計、解析するプログラム|
|TLS|SSL（Secure Socket Layer）の進化版|
|SSL|インターネット上でやり取りされるデータの解読、改ざんを防止するプロトコル（通信のルール）|


#構成の概念
##ライフサイクル
|用語|意味|
|--|--|
|カーネル（kernel）|機能の中核|
|ブラックボックス|使い方は分かるが中身の構造は分かっていない状態、利用者が内部構造や動作原理を知らなくても支障がない設計の装置やソフトウェア|
|app.php|Laravelアプリケーションのインスタンスを作成し、機能を実行する準備をする|
|コンソール（Console）|入力、出力を備えた装置のこと、コンピュータと意思疎通する時に使う|
|HTTPカーネルのhandleメソッド|HTTPリクエストをコントロールするメソッド|
|HTTPリクエスト|Webサーバーへデータの送受信を要求すること、データを取得するGETメソッドとデータの保存、更新を行うPOSTメソッドなどがある。|
##サービスプロバイダ<br>（Laravelアプリケーション全体の起動処理における、初めの心臓部）
|用語|意味|
|--|--|
|bootstrap|準備、利用可能な状態になるまで自動的に実行される処理|
|Registerメソッド|サービスコンテナの家次男う処理のみ行う|
|Bootメソッド|イベントリスナーやサービスプロバイダを登録|
|イベントリスナー|イベントに対応して発動される処理（関数）のこと|
|ロード|読み込むこと＝使えるように準備すること|
|★遅延プロバイダ||
|遅延ロード|Webサイトに表示される画像を一度に読み込まず、必要に応じて必要な分だけ読み込む|
|★サービスコンテナ結合|登録すること|
サービスコンテナについて分かりやすく解説している記事
https://laraweb.net/practice/2029/
##ファサード<br>＝サービスコンテナに登録したクラスへ静的（::）なインターフェースを提供
return View::make('profile');　ファサード
return view('profile');　　　　ヘルパ関数
のようにファサードとヘルパ関数は同じ働きをすることがある。
##Laravelの契約
契約vsファサード
サードパーティパッケージを構築する場合はファサードの代わりに契約を使うのが好ましい

|用語|意味|
|--|--|
|★キューする||
|★ドライバ||
|メーラー|電子メールの作成、閲覧、送受信を行うためのソフト|
|パッケージベンダー|パッケージを提供している企業|
|★契約の実装|依存を解決するクラスのコンストラクターでタイプヒントを指定する？？ ex) protected $radias|
|★イベントハンドラ||
|★イベントリスナー||
#基礎
##ルーティング
|用語|意味|
|--|--|
|デリミタ|セパレータ＝データを区切るもの ex) ,|
|ユースケース|ユーザとシステムのやり取りを表現したもの|
|ワイルドカード|* 曖昧|
|モデル結合ルート|ルートへ直接モデルインスタンスを自動的に注入する|
|依存解決|依存注入＝外部からインスタンスを渡す＝タイプヒントして引数に入れる|
|タイプヒント|引数の型を指定すること ex) オブジェクトなのか配列なのかコールバックなのか|
|★パターンフィルタ||
|エンコード|データを他の形式へ変換すること|
|文字エンコード|コンピュータが使う0 or 1 の組み合わせに変えること|
|★ルート制限|特定の時間間隔内に実行できる呼び出しの最大数、スクレイピングの制限|
|★PUT|リソースの作成、置換|
|★PATCH|リソースの**部分**置換|



##ミドルウェア
|用語|意味|
|--|--|
|パラメーター|parameter＝引数|

##CSRF保護
|用語|意味|
|--|--|
|Axios|PromiseベースのHTTP ClientライブラリでGETやPOSTのHTTPリクエストを使ってサーバからデータの取得、更新を行う|
|webフック|webアプリケーションでイベントが実行された際、外部サービスにHTTPで通知する仕組み|
##コントローラ
|用語|意味|
|--|--|
|シングルアクションコントローラー|一つのアクションだけを持つコントローラーのことで、 --invokable|
|命名|名前を付ける|
##リクエスト
|用語|意味|
|--|--|
|リクエストURLの取得|$request->path()|
|トリム|切り取る事、必要な部分だけを取り出して不要な部分を排除すること|
|ノーマライゼーション|ノーマライズ＝正規化＝データの重複をなくす|
|クエリストリング|クエリ文字列＝URLパラメーター＝サーバーに情報を送るためにURLの末尾に付け足す文字列（変数）のこと、?の後に パラメーター＝値 を付ける|
|送信データ|ペイロード＋ヘッダ＋メタデータ|
|ペイロード|送信データのうち、実際に意図されたメッセージの部分、オーバーヘッドと実際のデータを区別するために使われることが多い|
|ヘッダ|ソースコードに登場するすべてのデータや命令を宣言するために存在する文書ファイル
|メタデータ|本体であるデータに関する付加情報が記載されたデータのこと|
|オーバーヘッド|付加的な処理|
|プロキシ|代理人、代わりにやる|
|★クッキー||
|セッション|webブラウザが閉じるまで一時的にサーバー側にデータを保存することが出来る|
|フラッシュデータ|次のリクエストまでのセッションンに保存されるデータのこと|
|★クッキーをキューする||
|トラフィック|インターネットやLANなどのコンピュータなどの通信回線において、一定時間内にネットワーク上で転送されるデータ量のこと|
|フォワーディング|外部から受信したデータを特定の宛先へ自動的に転送する機能のこと|

##レスポンス
|用語|意味|
|--|--|
|ビジネスロジック|データの処理手順|
##ビュー
|用語|意味|
|--|--|
|レンダ|情報を加工して表示すること|
|ビューコンポーザ|ビューがレンダーされるときに呼び出されるコールバックかクラスメソッドのこと、サービスプロバイダの中に組み込む、config/app.phpのproviders配列に追加を忘れずに|
|ビュークリエイター|ビューコンポーザとほぼ同じ働きをするが、ビューがレンダーされるまで待つのではなく、インスタンス化されるとすぐに実行される|

##セッション
|用語|意味|
|--|--|
|全アプリケーションンの初期起動|bootメソッド、ステートレスのため|

##エラー処理
|用語|意味|
|--|--|
|エンドユーザー|商品やサービスを実際に使う人のこと|
|エラーの詳細表示|config/app.phpのdebugをtrue|
|例外ハンドラ|reportメソッドやrenderメソッド|
|reportメソッド|外部サービスへ送信するために使う|
|renderメソッド|与えられた例外をブラウザーに送り返すHTTPレスポンスへ変換する|
|instanceof|あるPHPの変数が特定のクラスのオブジェクトのインスタンスであるかを調べる|
|abortヘルパ|即座に例外を発生させ、その例外は例外ハンドラによりレンダーされる|
##ログ
|用語|意味|
|--|--|
|Monolog|ログハンドラをサポートしているライブラリ、config/logging.phpが設定ファイル|
|★ログチャンネル|記録の通り道？？|
|フォーマッター|ハードディスクなどの記録装置を初期化するためのソフトウェア|
|ドライバ|デバイスドライバ、デバイスを動かすために必要なソフト|
|チャネル|チャンネル＝データの通り道|
#フロントエンド
##Bladeテンプレート<br>＝Laravelのテンプレートエンジン、PHPへコンパイルされ、変更があるまでキャッシュする
|用語|意味|
|--|--|
|コンパイル||
|@yield|yieldは産出する|
|サブビュー|@includeディレクティブを使い、ビューの中から簡単に他のBladeビューを取り込む|
|オーバーヘッド|コンピュータが何かをやった時に発生する付加、間接的な処理のこと|
|ディレクティブ|@から始まる ex)@section, @extends, @parent, @json, @alert, @component, @slot等|
|@parent|コンテンツの上書きではなく追加したい時に使うとレイアウトの内容に置き換わる|
|コンポーネント|使う時には@コンポーネント名、つまりディレクティブ名を自分で決めることが出来る|
|スロット|コンポーネントに入っているもので、複数定義できる|
|@jsonディレクティブ|Vueコンポーネントやdata属性を生成するためにも便利に使える|
|レンダリングエンジン|レンダリング（元の情報を整形して表示する）を行うソフトウェア|
|Webブラウザ|ホームページを見る時に使うソフト|
|構造化プログラミング|順次、選択、反復などの構造を組み合わせてプログラムを組み立てていく手法|
|制御構文|構造化プログラミングのための構文|
|メンタルモデル|規則|
|スタック|子ビューで必要なJavaScriptを指定する時に使い、@pushで定義して、@stackで<header>に定義する|
|フォーマットする|->format()=|
|bootメソッド|booting＝初期起動|
##多言語化<br>＝ソフトウェアが様々な文字や言語を切り替えて使用できるように設定あるいは修理すること
|用語|意味|
|--|--|
|ローカリゼーション|地域化する ex)時刻や通貨単位や日付の表記を修正|
|ローケル|locale＝言語や国・地域の設定のこと ex)タイムゾーン＝標準時など|
|サブディレクトリ|ディレクトリ（フォルダ）の中に置いてあるディレクトリのこと、下位のディレクトリ|
|翻訳文字列の取得|言語ファイルから行を取得＝ヘルパ関数を使用 ex)echo__('messages.welcome');|
##スカフォールド<br>=scafflold＝足場＝アプリケーションの足場（ひな形を自動生成して簡単に作ることが出来る機能）
BootstrapとVueのスカフォールドは、Composerを使いインストールするlaravel/uiパッケージに用意してある

|用語|意味|
|--|--|
|プリプロセッサ|ある中心的な処理を行うプログラムに対して、その前処理を行うプログラムのこと|
|Laravel Mix|Laravelに同梱されているビルドツール、現在主流のwebpackがベースになっている|
|ビルドツール|ソースコードから実行可能なアプリケーション作成するため、依存関係を解決し、バイナリーコードにコンパイルし、バイナリーコードをパッケージ化すること|
|依存パッケージ|パッケージを使うために必要な別のパッケージ|
|package.jsonファイル|必要なパッケージが記述されたファイル|
|モジュール|名前空間が解決された（同じフォルダの中で変数の名前が被ってもOK）ファイル的な|
|public/jsディレクトリ|コンパイル済みのJavaScriptが出力される|
|Vueコンポーネントを変更したら必ずすること|npm run devコマンド or npm run watchで監視することで自動的にコンパイル|
|★macroable||

##アセットコンパイル
Laravel Mixは多くの一般的なCSSとJavaScriptのプリプロセッサを使用し、Laravelアプリケーションのために、構成過程をwebpackですらすらと定義できるAPIを提供している。

|用語|意味|
|--|--|
|コンパイル|従来のcssやjavaScriptに変換することでBootstrapやVue.jsなどを動かせるようになるnpm run devで出来る|
|Laravel Mix|アセットパイプライン（アセットコンパイルの設定）を記述する設定ファイルであり、実行するAPI、|
|アセットパイプライン|アセットコンパイルの設定|
|webpack.mix.js|webpack設定ファイル（webpack.config.js）のラッパー、コンパイルやバンドルするファイルを記述していく|
|ラッパー|ある開発環境向けに提供されたプログラムなどを別の環境で利用できるようにするもの|
|レイヤー|レベル ex)低レイヤ、高レイヤ|
|シームレス|複数の要素の繋ぎ目が気にならなずに利用できる状態|
|ネイティブコード|コンピュータのCPU（MPU/マイクロプロセッサ）が理解できる形式で記述されたコンピュータプログラム|
|サフィックス|suffix＝接尾辞|
|リテラル|定数と基本は同じだが、定数は入れ物でリテラルは中身を指す、ソースコードなどの中に特定のデータ型の値を直に記載したもの ex) 定数Aにリテラル値"test"をセットする|
|疎結合|依存度が低いかな？|
|蜜結合|依存度が高いかな？？|
#セキュリティ
##認証
Authentification＝laravel/uiパッケージで行う、ルート定義で->middleware('auth');で付ける or コントローラーのコンストラクターで$this->middleware('auth');

|用語|意味|
|--|--|
|ガード|各リクエストごとにどのようにユーザーを認証するかを定義|
|プロバイダ||
|ストレージ||
|SSD||
|データベーススキーマ||
|ダッシュボード||
|認証のディレクティブ||
|認証済みユーザー・ユーザーIDへのアクセス||
|コントローラメソッドでタイプヒントしたクラスは|自動的にインスタンスが依存注入される|
|現在のユーザーが認証されているか確認|if(Auth::check){}|
|アクセス修飾子|public, protected, private|
|protected||
|public||
|トレイト||
|Remember me||
|論理値||
|基本認証||
##API認証=API Authentication

|用語|意味|
|--|--|
|ゲート|ルート的なものでモデルやリソースとは関連しないアクションに対して適応される ex)管理者画面にアクセスできるユーザーを制限させる|
|ポリシー|コントローラ的なもので特定のモデルやリソースに対するアクションを認可する時に使う|
|特定のモデルに対するアクション|作成、更新、削除、閲覧等モデルごとに個別のPolicyファイルを作る|
|ファサード|::が付く ex) Auth:: Gate::|
|インターセプト|intercept＝妨害する、傍受する（通信内容を同意なしに受け取る）|
|マップ|個々の構成要素に対して、別の集合の要素を規則に従って機械的に対応付けたり割り当てたりすること|
##認可<br>＝Authorization＝ゲートとポリシーがある
|用語|意味|
|--|--|
|ゲート|ルート的なものでモデルやリソースとは関連しないアクションに対して適応される ex) 管理者画面にアクセスできるユーザーを制限させる|
|ポリシー|コントローラ的なもので特定のモデルやリソースに対するアクションを認可する時に使用する|
|特定のモデルに対するアクション|作成、更新、削除、閲覧等、モデルごとに個別のPolicyファイルを作る|
|ファサード|::が付く ex) Auth::Gate::|
|インターセプト|intercept＝妨害する、傍受する（通信内容を同意なしに受け取る）|
|マップ|個々の構成要素に対して、別の集合の要素を規則に従って機械的に対応つけたり割り当てたりすること|
##暗号化＝encryption＝データを見ても分からないように変換する
|用語|意味|
|--|--|
|エンクリプタ|encryptor＝暗号化するプログラム|
|シリアライズ|データをそのまま保存したり送受信することが出来るように変換すること|
|デシリアライズ|シリアライズされたデータを元の状態や形式に復元する作業のこと|
##ハッシュ
|用語|意味|
|--|--|
|Bcryptハッシュ|ストレッチ回数が調整できる、登録と認証で自動的に使用されている|
|Argon2ハッシュ|パラメータのチューニングが可能であれば使う|
|チューニング|調整＝いい感じになるようにする|
|平文|cleartext＝クリアテキスト＝暗号化されていない状態のデータ、そのままで内容を扱うことが出来るデータのこと|
|パスワードリセット|ForgotPasswordControllerとResetPasswordControllerで実装する|
#より深く知る

#データベース
|用語|意味|
|--|--|
|トランザクション|データベースに対して行われる一つ以上の更新処理|
|COMMIT|トランザクションを確定させる処理|
|ROLLBACK|トランザクションを取り消す処理|
|schema|図形、概要|
|環境変数|パソコンの動作や表示に関する機能を調整すること|
|リスナ|何らかのきっかけに応じて起動されるよう設定されたサブルーチンや関数、メソッドなどのこと|
|サブルーチン vs 関数|関数は値を返すのに対してサブルーチンは値を返さない、他の処理から呼び出される関数がサブルーチン|
|デバッグ|バグの原因を探して取り除く作業|
|リッスン|通信機能を持つソフトウェアが外部からのアクセスに備えて待機すること ex) WebサーバはHTTPで通信を行うため、標準ではTCPの80番ポートをリッスンし、Webブラウザからアクセスされるのを待っている|
##クエリビルダ<br>＝クエリを作成し実行するために使用する、DB::table('')<br>最終的に->get('')する必要がある
|用語|意味|
|--|--|
|クエリ|query＝問い合わせる＝データに問い合わせる|
|SQLインジェクション攻撃|SQLが注入される＝アプリケーションが想定しないSWL分を実行させる攻撃|
|PDO|PHP Data Object＝データベースへの接続方法|
|スコープ定義演算子|::|
|抽象化レイヤ|PHPとデータベースの間に入って一つの命令で、それぞれのデータベースにいい感じにアクセスしてくれる層|
|ホワイトリスト|注意が不要である対象を列挙したリストのこと|
|インターフェイス|接点、二つのものが接続・接触する箇所や、両者の間で情報が信号などのやり取りするための手順や`規約`を定めたもの|
|chunk|ひとまとまりのデータの塊|
|DB::rawメソッド|エスケープなしのSQLであるため、SQLインジェクションに注意|
|★サブクエリ||
|エイリアス|別名|
|ダンプ|dump＝コンピュータの記録装置（メモリやスト―レージなど）に記録された内容をまとめて表示、印刷、記録することや、そのようにして映し出された内容|
##ペジネーション<br>＝クエリビルダ（DB::）or Eloquent ORMの後に付ける
|用語|意味|
|--|--|
|シングルページ|次と前のリンクだけ|
|ウェインドウ|画面上に出てくる小さい画面|
|レンダー|もととなる情報を整理して表示すること|
|レンダリング|ディスプレイ上に表示できるようにすること、画像や映像、音声などを生成すること|
##マイグレーション<br>＝基本的にスキーマビルダと一緒に使い、データベーススキーマを作成するために使用<br>複数形で命名
|用語|意味|
|--|--|
|php artisan:reset|全部のマイグレーションをロールバック|
|php artisan:refresh|全部のマイグレーションをロールバックし、マイグレーションを実行する＝down()を実行してからup()を実行する|
|php artisan:fresh|データベースから全テーブルをドロップ（削除）、次にmigrateコマンドを実行する＝down()は実行されていない|
|integer|整数|
##シーディング<br>＝テストデータをデータベースに設定する方法<br>書いた後はcomposer dump-autoload、<br>大量のモデルデータを入れたい時はファクトリを使う
|用語|意味|
|--|--|
|レコード|行|
|カラム|列|
##Redis
|用語|意味|
|--|--|
|クラスタ|cluster＝集合、群れ＝ネットワークに接続した複数のコンピューターを一つのコンピュータシステムに結合し、処理や運用を効率化するシステム|
|ノード|redisインスタンスそのもの|
|プーリング|資源を蓄える処理や操作|
|パイプライン|複数のプログラムンの入出力を繋ぐ仕組み|
|ストリーミング|ダウンロードと違って端末にデータを転送しないためストレージ容量を使わない、インターネットを使うためWi-Fiが必要|
|リッスン|通信機能を持つソフトウェアが外部からのアクセスに備えて期待すること ex) WebサーバはHTTPで通信を行うため、標準ではTCPの80番ポートをリッスンし、Webブラウザなどからアクセスされるのを待っている|
#Eloquent ORM<br>データベース操作の実装、クエリビルダとしても動作する
|用語|意味|
|--|--|
|デフォルトでEloqauentはcreated_atとupdated_atカラムをCarbonインスタンスへ変更する||
##Eloquentの準備
|用語|意味|
|--|--|
|chunkメソッド|大きな結果を操作する時のメモリを節約できる|
|レイジーコレクション|必要な時に必要なだけ処理することでPHPのメモリ使用量を減らす|
|複数代入の脆弱性|リクエストに応じて予期しないHTTPパラメータが送られたときに起き、パラメータはデータベースのカラムを予期しないように変更してしまう。|
|ホワイトリスト|使用しても良いと判断した安全なアプリケーションやプログラムを定義したリスト|
|ブラックリスト|受け取らないものを定義したリスト|
|$fillableプロパティ|複数代入する属性の配列のホワイトリストとして動作|
|$guardedプロパティ|複数代入したくない属性の配列のブラックリストとして動作|
|プロパティ|property＝属性|
|ソフトデリート|論理削除＝ゴミ箱に入っている状態で復元可能|
|物理削除|論理削除の反対|
|オブザーバ|デザインパターンの一つ|
##リレーション
|用語|意味|
|--|--|
|ポリモーフィック|
|★N＋1問題||
|Eagerロード|N＋1クエリ問題の解決策、withメソッドを使う|
|遅延ロード|リレーションデータへ最初にアクセスするまで実際にはロードされない|
|toggle|同じ操作や処理によって２つの状態が交互に切り替わるような仕組み|
##コレクション
|用語|意味|
|--|--|
|★イテレーター|繰り返し処理の抽象化？？|

##ミューテタ
|用語|意味|
|--|--|
|アクセサ|値を取得するフォーマットを定義する、get○○Attribute（キャメルケースで書く）、使う時はスネークケースで書く|
|ミューテタ|値を代入する際のフォーマットを定義する、get○○Attribute|
##APIリソース
|用語|意味|
|--|--|
|トランスレーション|データの意味や内容を変えずに別のデータ形式に変換すること|
|メタ情報|文字コード、title, description, keyword, viewport（スマホやタブレットなどのモバイル端末でWebページを適切なサイズで表示させるために必要な値などデータを表す属性や関連する情報を記述したデータのこと）、つまりデータ本体ではなくその説明のようなもの|
|リソースの本質|特定のモデルを被ア列に変換する必要がある|
|ラップ|もともとの機能を持っている|
##★シリアライズ<br>＝直列化＝複数の要素を一列に並べる操作や処理のこと<br>JSONでAPIを作成する場合にモデルとリレーションを配列やJSONに変換する<br>->toArray();や->toJson();

![Laravel公式ドキュメント2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1794217/6e27267b-6f16-7960-f515-aaf07f032a37.png)

#★テスト
##テストの準備
|用語|意味|
|--|--|
|Unitディレクトリ|一つのメソッドをテスト|
|Featureディレクトリ|幅広い範囲のテスト|
|アサーション|条件を記述して実行時にチェックする仕組み<br>アサーションを挿入するという|
|phpunit.xml|テストコードの場所を認識させる|

|||
|||