用語集&参考になるWEBサイト

IT業界・・・プログラミング界隈・・・は専門用語が多い！難しい！
ということで自分用に用語をつらつらメモしていきます。随時更新していき、ある程度蓄積したら整理しようかと考えています。

## テスト
### モック（Mock）
モックを利用することにより、実行結果が他のコンポーネントの実装内容に左右されない。依存性を解消できる。
テスト対象のコンポーネント（@InjectMocks）に対して、モック化したコンポーネント（@Mockや@Spy）をインジェクションできるようにする。

## インクルード（include）
IT用語としては一般的に、プログラミング言語においてあるファイルの中に別のファイルに記述された内容を追加する機能のことである。
C言語やPHP、JSPなど、さまざまなプログラミング言語で利用可能である。
サーブレット/JSPの場合、インクルードを行うには、まず"RequestDispatcher"インターフェースのオブジェクトを作成する必要がある。

## OGNL (Object Graph Navigation Language) 
Javaオブジェクトのプロパティにアクセスしたりメソッドを呼び出したりすることのできる、Javaによく似た式言語。

## EL式（Expression Language）
JSP2.0に導入されました。 EL式は式言語とも呼ばれ、演算結果や値の参照の結果を出力するために使用される。EL式は、${ ～ }タグを使用して記述する。
### SpEL式（Spring Expression Language）
Spring3.0の機能。
例えばあるオブジェクトの値を、${member.name}のような形式で member.getName()の値を取得できる。
SpEL式はそれを拡張した言語である。


## クエリ（query）
問い合わせのこと。
データベースに対する命令文。副問い合わせはサブクエリ。

## フェッチサイズ
データベースの検索結果から抜き取るサイズ。

## 暗黙オブジェクト
宣言なしで利用できるオブジェクト。

## サニタイジング
- th:text
属性値に指定した値をXHTMLサニタイジングして出力する。

- th:utext
属性値に指定した値をXHTMLサニタイジングせずに出力する。

th:utext を使うとXHTMLサニタイジング対象の文字（ < や > など）がそのまま出力される。
基本的には th:text を使えば良さげ。

## ビジネスロジック
MVCのModelが持つ加工メソッドのこと。
MVCについては以下が分かりやすい。
[
「MVCの勘違い」について、もう一度考えてみる](http://at-grandpa.hatenablog.jp/entry/2013/11/01/072636)

## プロキシ（Proxy）
要はサーバの前にいるサーバ？
身元隠蔽やキャッシュの効果がある模様。
[「分かりそう」で「分からない」でも「分かった」気になれるIT用語辞典](https://wa3.i-3-i.info/word1752.html)

## インジェクション（Injection）
### 依存性の注入（Dependency Injection）（DI）
[猿でも分かる! Dependency Injection: 依存性の注入](https://qiita.com/hshimo/items/1136087e1c6e5c5b0d9f)

## シングルトン（Singleton）
デザインパターンの一種。
__Singletonを使うとそのクラスのインスタンスが絶対に1つである事を保証する__

## シングルスレッド
並行処理が発生しないプログラムのこと。
[「分かりそう」で「分からない」でも「分かった」気になれるIT用語辞典](https://wa3.i-3-i.info/word12455.html)
## マルチスレッド
並行処理の発生するプログラムのこと。
[「分かりそう」で「分からない」でも「分かった」気になれるIT用語辞典](https://wa3.i-3-i.info/word12455.html)
### スレッドセーフ
マルチスレッドに対応（並行処理が可能）。
[「分かりそう」で「分からない」でも「分かった」気になれるIT用語辞典](https://wa3.i-3-i.info/word12455.html)
## ハンドリング
捕捉すること。__検知すること。__

## 宣言的（Declarative）
何をやりたいか__目的__を示すこと。
（詳しく理解するのは難しそう）
対義語は__命令的（Imperative）__

__宣言型プログラミング__と__命令型プログラミング__があるようだが、Java等は命令型な模様。
命令的とは一つ一つ指示する必要があること。

## 透過的
実際に存在するものを存在しないように見せること。
プログラミングでは、存在を意識しなくても使える状態のこと。

## 体系的
系統に従ってまとまっているさま。
一つ一つのものがある系統に従ってまとまっているさまのこと。
個々の要素が一定の順序や秩序などのルールに従いまとめられている状態や、同じ種類のものが一つのグループとしてまとめられている状態。
### 体系
個々の要素がある一定の順序や秩序によって論理的にまとめられた知識の全体。
### 体系化
個々の要素をある一定のルールをもとに関連づけて、大きな一つのまとまりに仕上げること

## CRUD（クラッド）
ソフトウェアが持つ永続性の４つの基本機能。

- Create  生成
- Read  読み取り
- Update  更新
- Delete  削除

ユーザーインターフェースが備えるべき機能を指す用語として使われる場合もある。

- 情報の参照
- 情報の検索
- 情報の更新

## コンテキスト(Context)
一般的には__文脈__と訳される。

- スコープ
- 空間
- 自分が置かれている状況

「ソーステキスト内に書かれたコードを実行可能な状態にする事」を__実行コンテキスト__に入る

## シグネチャ
メソッドの名前、およびそのメソッドに対する 引数の数と型により構成。
つまり、次の３つを組み合わせたものをシグネチャと呼ぶ。

- __メソッド名__
- __引数の数__
- __引数の型__

## マッピング
関連付けること。

## アノテーション（Annotation）
あるデータに対して関連する情報（メタデータ）を注釈として付与すること。

[いまさら聞けない「Javadoc」と「アノテーション」入門 (1/4)](https://www.atmarkit.co.jp/ait/articles/1105/19/news127.html)
> アノテーションとは、「注釈」という意味です。Javadocコメントは開発者に対してプログラムがどういうものかを説明するために使いましたが、これと同様に、コンパイラや実行環境に対してプログラムがどういうものかを伝えたいことがあります。
後述する具体的な例を見れば分かりますが、Javaではアノテーションをプログラムに記述することにより、コンパイラで出力される警告メッセージを抑制したり、実行環境によってプログラムの動作を変更したりできます。

[【Java】Springのアノテーションまとめ](https://note.com/yukoro/n/nf52f3fc60c17)
> Springで使用するアノテーションのパターンが挙げられている。参考になりそう。

## 動的・静的
### 動的（dynamic）
状態や構成が状況に応じて変化したり、状況に合わせて選択できたりする柔軟性を持っていること。

- 動的ページ

アクセスした時の状況に応じて異なる内容が表示されるWebページ。
ユーザーが書き込むたびに内容が増えていく掲示板サイトやログインするユーザーごとに異なる情報を表示する会員サイト、Googleなどの検索サイトの結果表示等。


### 静的（static）
あらかじめ与えられた状態などが変化しないことや、状況を通じて一貫して内容が維持されること

- 静的ページ

何度アクセスしても同じものが表示されるWebページ。
企業のWEBサイト等。



## 参考になるサイト
- [DeepL翻訳](https://www.deepl.com/translator)
ドイツ発祥の機械翻訳。Google翻訳より優秀と話題。

- [DMM英会話なんてuKnow?](https://eikaiwa.dmm.com/uknow/)
DMM英会話の翻訳をQ&A形式で検索出来る。解説もあるし実用的な感じがする。

- [AcronymFinder](https://www.acronymfinder.com)
英語の略語とか検索するのに使用。とても便利。
[【変数】英単語の略し方や省略形を検索する【命名】](https://qiita.com/mtanabe/items/48f9b2f5167d5a3b2d71)

- [Lucidchart](https://app.lucidchart.com)（ルシッドチャート）
オンライン作図サービス。無料で使用できる。アカウントでログインすればどの環境でも使えるので便利。

- [Lombok - @Data](https://blog.y-yuki.net/entry/2016/09/29/000000)

- [Spring BootのWEB画面上でデータ検索機能を追加してみた(ソースコード編)](https://www.purin-it.com/spring-boot-search-2)

- [Spring MVCの分かり難いエラー（はまりました）](https://qiita.com/orangeeeee/items/334cf4b7042efbce9265)
同じ箇所で躓いたので参考に。

- [Spring MVC + Thymeleafでバリデーションしたい](https://takeda-san.hatenablog.com/entry/2018/01/18/224244)

- [サーバーＪａｖａ入門先頭 H2 DB編先頭 ■Ｈ２ ＤＢ　操作３](http://yoks.blue.coocan.jp/TechNote/H2/H2_ope3.htm)
STSでWEBアプリケーションを開発した際の、CSV出力時に参考にしたので。

- [Google Java Style Guide](https://google.github.io/styleguide/javaguide.html)
[Google Java Style Guide(非公式和訳)
](https://kazurof.github.io/GoogleJavaStyle-ja/)Javaを使用しているので参考に。