プログラミングでよく出てくるカタカナや略語をまとめる

調べて理解してもすぐに忘れるので、辞書的な感じで使うようです。

#CLI
command line interface。
Heroku CLI, vue cliなど。

#GUI
グラフィカルユーザーインタフェース。
1980年代からコンピュータのユーザーインタフェース（UI）として本格的に使われ始めた。

#O/Rマッパー

#データベース系
そもそもデータベースとは: 大量の情報を保存し、コンピュータから効率良くアクセスできるように加工したデータの集まりのこと

#####DBMS(データベース管理システム)
データベースを管理するコンピュータシステムのこと。大量のデータを多人数でも安全かつ簡単に扱えるようになる。

なぜエクセルやテキストファイル出なくDBMSが必要なのか？
--多人数でデータを共有するのに向かない/大量のデータを扱える形式になっていない/読み書きを自動化するのにプログラミング技術が必要/万一の事故に対応できない



###RDB(リレーショナルデータベース)
#####RDBMS(リレーショナルデータベース管理システム)
「関係データベース」とも呼ばれ、現在最も広く利用されているデータベース。
Excelシートのように列と行からなる2次元表の形式でデータを管理するため、理解しやすいという特徴がある。
MySQLとはpostgresqlとか(多分プログラミングやってて訊くのはこの2つ)
他にもOracle社のOracle Database、IBM社のDB2、Microsoft社のSQL Serverなどがある。

・[参考記事: 初心者向けの解説書でSQLとリレーショナルデータベースの基本を押さえよう](https://codezine.jp/article/detail/12216)

#####木構造で保存する階層型データベースっていうのもあるけどRDBの普及で一般的じゃなくなった

#トランザクション処理
システムの稼働形態として、要求に対して即座に処理を行い、結果が反映されるもの。 リアルタイムに処理結果を反映する必要のあるシステムは、こうした形態である。複数の処理をひとつにまとめたもので、それ以上には分割できない処理の一塊。 例）銀行ATM、座席予約システムなど
[TECHCAMPの「トランザクションとは」](https://tech-camp.in/note/technology/100096/#IT)がわかりやすかったので以下引用します。
>A口座(残高20,000円)から10,000円をB口座(残高30,000円)に振り込む場合
①A口座から10,000円を引き出し、口座残高を20,000-10,000=10,000円にする
②B口座に10,000円を振り込み、口座残高を30,000+10,000=40,000円にする

>①②処理を独立させてしまうと、もし①が成功②が失敗した場合、振込予定だった10,000円が中に浮いたような状態に。A口座から10,000円が引き出されたのにも関わらず、B口座は残高が30,000円のまま。
つまりA口座から出金された10,000円が消失したことに。それはヤバイ。

>そこで2つの処理をひとかたまり(トランザクション処理)としてをひとかたまりにして、どちらも成功しないと全体として成功した状態にならないようにする。

>トランザクションには「失敗か成功」しかないなく、それ以上分けることができない処理で、処理結果は「失敗」か「成功」のみ。中途半端な結果は出ず、失敗すれば実行前に戻る

・[動画で理解したい人におすすめのYoutube](https://www.youtube.com/watch?v=d3FRYLfGT6A)

###ロールバックとは
トランザクション処理で失敗したときに処理前の状態に戻す事。
ちなみに成功した時は「コミット」という。

#バッチ処理
一連の処理をまとめて自動で行う処理方式を「バッチ処理」といいます。大量のデータを一括で処理できるメリットがあり、処理の単位は「バッチ」です。

###トランザクション処理とバッチ処理との違い
バッチ処理がまとめて処理を行うのに対し、トランザクション処理は順次処理を行う。

#CDN: コンテンツデリバリーネットワーク

#MVC
Model, View, Controller。
アプリケーションを整理するための概念.
ビューでユーザーが行ったアクションを、コントローラーが受け取りモデルに渡し、モデルはデータベースから取得したデータをプログラムで使いやすいように取り出し変換する。


####メリット: 役割分担で開発、保守の効率化、変更時の作業が軽くなる
・役割や機能別でコードを分けることにより、開発するときも、変更する時も、保守するときも、「このコードはどこの関連か？」と迷うことがなくなる。
・各モジュールで役割分担していることにより、保守性が上がり、品質も向上する
・コードを再利用できることが多い
・独立性が高く、別れている分野ごとに専門性に特化しているため、バグやトラブルが起こっても各機能への影響が少なく、柔軟に対応できる

####デメリット： きちんと役割分担しないと上記のメリットが享受できなくなる。

#リポジトリ
リポジトリとはパッケージの提供元のこと。作成元ということではなく、配布してくれている場所

#パッケージ管理
Linuxでのソフトウェアの管理方法。
パッケージ(必要なソフトやライブラリのひとまとめにしたもの)を管理してくれる。

###パッケージ管理コマンド①Red Hat系のOS、CentOSやFedraで使う時
####yum
Yellowdog Updater Modifiedの略。パッケージ管理ツールの1つ。

####RPM
「Red Hat Package Manager」の略だったのだが現代では「RPM Package Manager」の略で再帰的頭字語になっている。パッケージ管理ツールの1つ。

###パッケージ管理コマンド②UbuntuなどDebian系で使う時
####apt

#OSについて
OSとは: コンピュータの、入出力や同時並行処理などを管理するプログラムのこと。

####Windowsとは？
マイクロソフトにお金を払って使わせてもらっているソフトだから、Linuxと違って無料じゃ無いという点が特徴。
Windows系PCには最初からインストールされているため、WindowsというOSにお金を払ってるという意識は薄いかもしれないが、PCの代金にライセンス契約料が上乗せされている。

####Unixとは？
WindowsもmacOSもなかった1969年にアメリカのベル研究所で開発されためちゃくちゃ古いOS。
最初は無料だったので爆発的に普及した。膨大な数の改造Unixが発明され収集が付かなくなり、えらい人達がこれは「金になるぞーーー」と言って「ライセンス契約しなきゃ全部の機能は使わせないぜ！」となった。
後述のLinuxの誕生で一般的に使われることはなくなったが引き続き企業のサーバーに使われ続けているらしい。

###Linuxとは？
Unixがライセンス契約で面倒臭くなった頃に、フィンランドの天才大学生が独自に発明したOS。
Like Unix(UnixみたいなOS)でLinux(多分)。
天才学生がオープンに誰でも使っていいぜ！と言ったため、面倒なUnixの代わりに爆発的に普及し、オープンソースのOSの代表格になった。
「Windows」や「MacOS」の仲間で、無料で使うことができるため、パソコンの本体さえあればインストールするだけでパソコンが使えるようになる。

#####Linuxって何がいいの？
「オープンソースであること」「動作が軽量であること」「自由度が高いこと」「新しくOSを作ることができること」「用途が幅広いこと」が強み。

#####補足：　Linuxディストリビューションとは
それぞれの利用目的に沿ったさまざまなアプリケーション（ソフトウェア）を集めたもの。
主に「Red Hat（レッドハット）系」「Slackware（スラックウェア）系」「Debian（デビアン）系」の3つに分かれる。
distribution=配布という意味で元々は、アプリケーションソフトなどを簡単にインストールできるようにまとめたファイルが「ディストリビューションパッケージ」と呼ばれていた。

###Red Hat系OS: Red Hat Enterprise Linux(RHEL)とは？
Red Hat社が提供している企業向けのLinuxで最も有名なLinux有償ディストリビューションである。
一台に1年で約10万円ほどかかるらしい。


###Red Hat系OS: CentOSとは？
Red Hat系のLinuxOSで「100%の互換性を持つRHELのクローンを作りあげること」を目標にしている。
安定稼働・サーバーや企業向け・OSに関する情報量が多いのに、完全無償である。
`サーバーを立てたい人向けのOS`

CentOSの画面(パソコンとしては不向きらしいけど)↓
![スクリーンショット 2021-04-02 17.31.13.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/619224/f4074747-4ef4-53b2-6933-fc46759d2958.png)


https://eng-entrance.com/centos_redhat

###Red Hat系OS: Fedoraとは？
Red Hat Enterprise Linux (RHEL) のベータ版で、Fedoraで安定した物がRHELに組み込まれる。
つまりテスト用のRHELって感じ。

###Debian系OS: Ubuntuとは？

「誰にでも使いやすいOS」を提供することを開発目標にしており、初心者に優しいOSとして名高い。
`普通にパソコンとして利用したい人向けのOS`

Ubuntuの画面(wikipediaより)↓
![スクリーンショット 2021-04-02 17.28.32.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/619224/e7fbf02b-0488-ad15-4c2f-40ca319c38c9.png)


https://eng-entrance.com/what-is-ubuntu

#SPA
Single Page Applicationの略。
SlackやTrelloなどがそれ。画面遷移しなくても1ページのみで操作が完結するのが特徴だが、読み込みが遅いのがたまに傷。

#JS系の用語
##Node.jsとは？
「JavaScript実行環境」WebサーバでもなければRailsのようなWebフレームワークでもない。
基本生JSはブラウザでしか動作しないが、Node.jsはブラウザでないPC上でも動く。

https://qiita.com/non_cal/items/a8fee0b7ad96e67713eb

#Ruby, Rails系の用語
###アセットパイプラインとは？
JavaScriptやCSSを最小化や圧縮して連結するフレームワーク。
つまりサイトの速度効率をあげる為のもの。Sassのコンパイルとかもできるっぽい。
モダンな環境では使われないかもな技術だけど、まだまだ使われてるところはたくさん。

https://blog.mothule.com/ruby/rails/ruby-rails-assets-pipeline-use

###Active Recordとは？
SQLがかけなくてもい〜い感じにDB処理ができるところ。