学んだ単語をまとめる

日々学んだ用語、概念をまとめています。走り書きですので、間違った理解があれば指摘いただけると嬉しいです。

#〇ソフトウェア全般#

**Laravel**
　PHPフレームワーク

**react.js**
　JavaScriptで書かれたライブラリ
　react.jsをインクルードして使用

**Webpack**
Node.jsのサーバーサイドで動かすモジュールバンドラーツール
WebpackはJSファイルのコーディングの部分で開発者の手助けをしてくれる
JSとCSSをバンドリングする

**Bootstrap**
Twitter社が開発したCSSのフレームワーク
angular-cliのnode_modulesに組み込まれている？

**SPA**
　シングルページアプリケーション
　単一ページによるWebアプリケーション
　たとえばFacebook,Instagram

**Adapter**
　適合するという意味
　Wrapperパターンと呼ばれることもあります。
「すでに提供されているもの」を「利用できるもの」にするためのデザインパターン

**PEMファイル**
base64エンコードしてBEGIN/END行で挟んでつなげただけのテキストファイル
証明書にも鍵にもどちらにもなる
https://www.ecoop.net/memo/archives/guide-for-pem.html

**Gradle**
ava（JVM）環境におけるビルドシステム,用意されているAPI利用して強力な記述が可能

**ビルド**
パッケージを使う為の環境(パッケージCを使う為にa,bファイルをjarするビルドを用意する

**jar**
ファイル圧縮の方法、zip形式で圧縮するがJava環境なら解凍せずに使える

**ターミナル**
windowsでいうとこのコマンドプロンプト。Android Studio は [View] > [Tool Windows] > [Terminal]

#〇Webサービス

**API**
Application Programming Interfaceの略。ソフトウェア機能を外部から使うために用意された窓口、もしくは説明書、仕様書。もともとの意味は説明書、仕様書。会話の中で"窓口"的な使い方もされる。例えば「APIを提供する」は「ソフトウェア機能を使う為の仕様書を提供する」ともとれるし、「ソフトウェア機能の窓口を提供する」ともとれる。
参照元
http://wa3.i-3-i.info/word12428.html

**REST**
Representational State Transferの略。Webサービスの設計モデルで、URIにHTTPメソッドでアクセスすることでデータの送受信を行う。他にもリソースの登録(POST)、ソースを取得(GET)していますが、更新(PUT/PATCH)、削除(DELETE)の4つが基本。データベースのCRUDに似た概念、そもそもソフトウェアはPOT,GET,PUT,DELETEで回っている。
ちなみに、REST APIとはREST的な指向のAPIのことで、REST APIというAPIがあるわけではない。

**ポート**
PCとネットを繋ぐドア、PCにはたくさんのドアが付いていて、どのドアで行き来するか決まっているデータ種類もある(決まっていないデータ種類もある)。例えばインターネットのデータは80番、FTP（インターネットの線を使ってファイルを送受信する仕組み）のデータは20番とか21番。SSHは22番、telnet（他のコンピュータを遠隔操作するときに使う仕組み）のやり取りは23番。IPアドレスが住所と考えて、ポート番号が扉、「IPアドレス＋ポート番号」でセットになっている。パソコン側のポート番号は毎回変わりあまり意味がない、一回ネットを閉じて再度開くと番号も変わる
参考元
https://www.cman.jp/network/term/port/
http://wa3.i-3-i.info/word1774.html

##〇データベース系##

**CRUD**
(データベースに限らず、)システムに必要な4つの主要機能。データの登録機能（Create）、参照機能（Read）、変更機能（Update）、削除機能（Delete）。料理に例えると、冷蔵庫というデータベースに新しい食材(データ)を入れるのがCreate、取り出して見るのがRead、取り出して切ったり煮たり焼いたり(何かしらデータに対して処理を加える)上で再度入れるのがUpdate、ごみ箱に捨てるのがDelete的なイメージ。

**ストアド**
StoredProcedureのこと、データベースに対する一連の処理をまとめ(Procedure)、保存保持する(Stored)。データベース界における関数的なイメージ。ストアドプロシージャとストアドファンクションに分かれる。ストアドプロシージャは戻り値が無い、ストアドファンクションは戻り値が有る。

**View**
1つ以上の表（または他のビュー）から任意のデータを選択し、カスタマイズして表したもの。複数テーブルに分かれたデータを集め、ユーザー側から見やすくする。


##Python##

**プロパティ**
オブジェクト指向プログラミングで使用されるオブジェクトのオブジェクトの性質を表すデータ。Javaで言うところの変数宣言てきな、、、？

**メソッド**
クラスに書く関数らしい、、、
※メソッドと関数の違いは今度調べる

**self**
self.変数 + "さん" 的な使い方Ver
変数をクラス変数と定義する
グローバル変数,ローカル変数と区別できる
例えるとグローバル変数がインターネットに公開されたサーバ、クラス変数は家庭内サーバ、ローカルは自分PCといったニュアンス。下記URL参照
http://op-py.blogspot.jp/2010/09/blog-post_7090.html

**self 説明その2**
メソッド(self)的な使い方Ver
Pythonはメソッドが必ず引数をもつ
(self)はJavaで言うところの(this)のような役割を果たす
※後日もう少し理解を深める、、、

#〇数学、、、、算数？#

**関数**
ある変数に依存して決まる値あるいはその対応を表す式

**一次関数**
yがxの一次式で表せる式
一般的にはy =ax +b（a ≠ 0、a,b は定数）
比例のy =axもy =ax+0と考えられるので一次関数
一方で反比例のy =a/x は一次式で表されていないから違う
直線のグラフになり、yはマイナスにもなる

**二次関数**
yがxの二次式で表せる式
一般的にはy ＝ ax2（a ≠ 0)
ちなみに、y ＝ a x2＋bx＋c でもいい
曲線のグラフになり、yはa次第でマイナスにもプラスにもなる
またa次第で曲線の角度が変わる

**指数関数**
そもそも指数が、同じ数を掛け合わせる回数という意味で、英語だとpowerと言う。3を300回乗算する場合、3×3×3...と300回書いたら大変なので、代わりに3の300乗と表現する。この300が指数。
指数関数はa > 0, a ≠ 1 のとき y = ax で表される関数のこと
曲線のグラフになり、yはプラスしかならない
0 < a < 1の場合、yは右肩下がりの線になる

**対数**
ひとまず指数と同じと理解する

**有理数**
分数で表せる数字
たとえば、1,2,3などの整数、0.25,2.50など小数の位が無限に続かない有限小数、0.333333など無限に小数の位がつづく無限小数だが規則性のある循環小数。

**無理数**
分数で表せない数字
たとえば円周率,平方根つまりルート,そしてネイピア数

**ネイピア数**
2.718…と続く、(1+1/n)の n 乗を n→∞ にした時の極限として表される定数。おおざっぱに書くと、「”1”にほんのちょっぴりの数を足して、それを繰り返し累乗すると、ネイピア数ができる」。

![1.jpg](https://qiita-image-store.s3.amazonaws.com/0/201155/61833070-3ed1-bcf4-68b5-2af5faa17bfb.jpeg)

金利や宝くじで考えるとイメージしやすい、URL参考ください。
https://atarimae.biz/archives/10256#i
http://oto-suu.seesaa.net/article/291512873.html


**微分**
2点の（yの増加量）/（ｘの増加量）で算出する、直線の傾き。
ｘの増加量が限りなく０に近づける(2点を極限まで近づける)と接線の傾きとして算出できる。微分の語源はおそらく、極限まで近づけた際の傾きの微小変化という意味。微分はある点からある点への傾きの為、速度算出などに使える。

**シグモイド関数**
1：f(0)=1/2,
2：limx→∞f(x)=1,limx→−∞f(x)=0
3：f(x)f(x) は単調増加
4：f(x)+f(−x)=1f(x)+f(−x)=1 
のという性質をもつ。
例えばニュートラルネットワークの入力データを合計して出力する際に使う(入力データの総計をシグモイド関数で0~1内に置き換える、プラスへ大きいほど1に近づき、マイナスへ大きいほど0に近づき、0の場合0.5になる)

![1.jpg](https://qiita-image-store.s3.amazonaws.com/0/201155/371abc9e-3e50-ea01-b94d-f573bd1fb27b.jpeg)


センサで考えると、振れ幅が大きいほどに1を、小さいほどに0に近づく点で便利らしい、、、



#〇IoT#
IoTの基本は集める⇒送る⇒貯める⇒見る,使う

**組み込み**
　機械にネット通信機能をとりつける

**制御**
　他の機器やシステムを管理し制御する
　機械に対して何らかの操作を指令
　例えばサーモスタッド
　　温度（測定変数 MV）が設定値（SP）を下回るとヒータースイッチがオン
　例えばエアコンプレッサー
　　圧力（MV）がしきい値（SP）を下回るとポンプが起動
　おそらく、制御=コントロールでOFFだけではなくONも実行するのが理解の肝(？)

**通信**
　データを飛ばすネット環境の設定
　　例えば有線or無線LAN+インターネット
　　例えば自営無線+ゲートウェイ+インターネット
　IoT的に言うと低速度だが低消費電力,更に広範囲だと好ましい
　　無線規格:LPWA
　　例えばSIGFOX、LoRaWAN、NB-IoT

**ゲートウェイ**
　プロトコル（通信のルール・規格）を変換
　異なるプロトコルを用いたネットワークを繋げる

**Arudino**
　AVRマイコン,入出力ポートを備えた基板,C++風のArduino言語とそれの統合開発環境から構成されるシステム。マイコンを指す時もあれば、言語を表す時もあれば、統合開発環境を表す時もあるらしい、、、

**Raspberry Pi**
ARMプロセッサを搭載したシングルボードコンピュータ。
　　

#〇AI#

**神経細胞の構造**
ニューロンとも呼ぶ。
樹状突起で入力される
軸索で出力する
軸索と樹状突起を繋げるのがシナプス

![1.jpg](https://qiita-image-store.s3.amazonaws.com/0/201155/519794fc-5852-6dc0-ad99-945688c5f827.jpeg)

**ニューラルネットワーク**
神経細胞の構造を概念的に模倣

![1.jpg](https://qiita-image-store.s3.amazonaws.com/0/201155/d4a6094d-72d6-6b4b-0017-08ae56645ae1.jpeg)



**データセット**
　クラスタリングする為にデータにラベルを付ける事
　例えば画像に"人"というラベルをつける
　MNIST,CIFAR10,IMDB,COCO

**形態素解析**
 自然言語で書かれた文を、形態素（言語で意味を持つ最小単位）に分割する技術
 http://gengoro.zoo.co.jp/

**共起**
　ある単語がある文章（または文）中に出たとき、その文章（文）中に別の限られた単語が頻繁に出現すること
　例えば 'take'という単語に'part' 'in'と言う単語がともに使われている
　例えば「選挙」という言葉と「出馬」という言葉が同時に出現する場合が比較的多い

**TF-IDF法**
　文章内の単語に重みを付ける
　『いくつかの文書があったとき、それぞれの文書を特徴付ける単語はどれだろう？』
　TFはTerm Frequency
　　それぞれの単語の文書内での出現頻度を表す
　　たくさん出てくる単語ほど重くない
　IDFはInverse Document Frequency
　　それぞれの単語がいくつの文書内で共通して使われているかを表す
　　いくつもの文書で横断的に使われている単語はそんなに重くない

#〇無線系

**MVNO**
Mobile Virtual Network Operatorの略。携帯電話事業社から無線通信インフラを借りてサービス提供する事業者(SOLAROMはNTTのインフラを借りている？？)

#〇その他#

**FBA**
　Fulfillment By Amazonの略　

**RPA**
（Robotic Process Automation）、「RPA」とは、ロボットによる業務自動化の取り組み