プログラミング学習 11日目
1,そもそも、AWSとは
嫁に、AWSってなんなん?と聞かれてうまく説明ができなかった。
自分では理解できているつもりだったが、知らない人に説明して理解してもらえないということは、深く理解できおらず、砕けた説明ができないのではと思い、一度調べてまとめてみた。
(あくまでも自分で調べて、理解している内容なのであしからず)
AWS(Amazon Web Services)とは、 Amazon様が提供するクラウドコンピューティングサービスの総称。
では、このクラウドコンピューティングサービスがなんなのか。
本来ではあれば自分で用意する、サーバー(でっかいコンピューターの箱)、ストレージ(HDD的なやつ)、ソフトウェア(実際にさわれないやつ)などが、自分のPCとネット環境があればそれらのものをお借りして利用できるサービス。
ようは、代わりに設備を用意してくれてるってこと。
今は当たり前のように電気やガス、水道を利用しているが、昔の人は薪を集めて火を焚き、井戸を掘ったり、川に水を汲みに行ったり、などをしていたが、今はそれぞれの電力会社、ガス会社、水道会社が設備を整えているので、私たちはそのサービズを利用して、料理したり、洗濯したり、ゲームしたりをなどを行う。
これの、インターネット版がクラウドコンピューティングサービス。
サーバーを用意して、どこに設置するのか(場所の確保)、どのように管理するか、などが必要になるがクラウドコンピューティングサービスのおかげで契約すればすぐに利用ができて、開発が進められる。
そして、クラウドコンピューテイングには種類がある。
どこまでの用意してくれているかで、タイプが異なる。
1:IaaS
インフラストラクチャー・アズ・ア・サービスの略。
サーバー、ストレージ、インフラを用意してくれる。
OSやプログラミング言語などは自分で決めて、開発を進めれる。
自由度は高いがその分知識も必要。
2:PaaS
プラットフォーム・アズ・ア・サービスの略。
開発に必要なソフトウェアまでを用紙してくれる。
主に、ミドルウェアやデータベース管理システム、プログラミング言語、Webサーバーなど。
ちなみに、ミドルウェアとはOSとアプリケーションの間のソフトウェアで、複数のアプリケーションで使うけどOSに組み込むのはめんどいから間に置いておく便利なもの。正直よくわかっていない。
3:SaaS
ソフトウェア・アズ・ア・サービスの略。
もう完成されたアプリケーションを利用する。
この三つの中で一番身近でわかりやすい。
例えば、
・Microsoft の Officeシリーズ
・Google の Gmail
を想像すればわかる。
昨日利用していたAWSのEC2とRDSをこの中で分類すると、EC2がIaaSでRDSがPaaSだと思う。
2,Node.jsについて
別のテキストでNode.jsを学習していたのだが、調べてみるとNode.jsはプログラミング言語ではないとのこと。JavaScriptの亜種だと思っていた。
厳密には、クライアントサイド(フロントエンド)で使用するJavaScriptを、サーバーサイド(バックエンド)で動かすことができる。
クライアントサイドでのJavaScriptは、HTML/CSSと組み合わせて、Web画面の表示部分を操作するのに対して、サーバーサイドでは、サーバー内のデータの処理を操作する。
ちなみに、Node.jsはJavaScriptのライブラリの一種になるらしい。(衝撃)
とりあえず、サーバーサイド版JavaScriptという理解でよさそう。
さらに、Node.jsのライブラリがあり、それはパッケージと呼ばれる。
それらのパッケージを管理するソフト、通称パッケージマネージャーがnpm。Node.jsをインストール時に一緒にインストールする。(標準搭載)
同じパッケージマネージャーで、yarnというのがあるがnpmと互換性があり、さらにセキュリティも強くインストールの速度もはやいのでyarnが使われることが最近多いらしい。
ここでややこしかったのが、yarnを使ってパッケージのインストールをするときでも、そのパッケージを「npmパッケージ」と呼ばれるらしい。
パッケージインストールする時にインストールの方法に2種類あり、
・グローバルインストール
・ローカルインストール
がある。
グローバルインストールをすると、 Node.js の全体に npm パッケージをインストールする。
ローカルインストールは、現在のディレクトリにのみインストールを行う。他のディレクトリから利用することはできないので、他のディレクトリに影響を与えない。
なので基本的には、ライブラリのインストールはこっちですることが多い。