11月18日の学び(React.js)

フロントエンドはそこまで深く踏み込む気はないが動作概要だけでも知っておくこと。

React.jsとは

  • JavaScriptでの開発に用いられるUI用の汎用ライブラリ
  • 比較対象として挙げられるBackbone.jsやAngular.jsとも併用できます。

SPA

  • シングルページアプリケーション
  • 仮想DOMの利用により効率的な画面更新が可能

webpack

  • React.jsやCSSなど複数のソースファイルから配布用のパッケージを作成するツール
  • 以前はgruntやgulpといったツールが利用されていたらしい

React.jsの動作①

  • ブラウザは直接Reactのソースコードを読み込めないため、先にindex.html内のタグを経由してReactの実行ファイルのapp.jsを読み込む
  • 内でReactの適用がなされる

React.jsの動作②

  • ページ状態を保持している「プレーンなJSのオブジェクト」に、 -「テンプレート的な関数」を作用させて、「仮想DOM」と呼ばれるDOMの設計図を取り出し、
  • その設計図を使って本物のDOMを構築する。

ここでいう「プレーンなJSのオブジェクト」とは、JSONをパースしたりするだけで取得でき、タグとかの文字列を一切含まない、クリーンなデータを保持しているJSオブジェクト

React.jsプロジェクトの作成

npmとyarnの2通りの方法がある

npmの場合

  • ブラウザに読み込ませるソースコード用のディレクトリsrcを作成
  • React.jsのソースコードのapp.jsをsrc内に作成
  • webpackが生成するブラウザ動作用のjsファイル出力先としてdistを作成
  • "npm run build"コマンドでwebpackを利用して配布用のパッケージを作成する

11月18日(Node.js)

  • フロントエンドにはそんなに踏み込む気はないが、簡単にでも手を動かす・動かさないで全然異なるため軽くでも触っておく。
  • まぁ確かに画面作るのにわざわざJava + Tomcatとかは面倒。。。

Node.jsの概要

  • JavaScriptで動作するサーバ環境(一般的にはWebサーバ)
  • WebサーバというとApacheIISなどを想定するが、Node.jsはそれらを一切使用しない
  • 代わりに「サーバを作る」ところから実装を始める(わずか数行で簡易Webサーバを作成可能)

もう少し詳しく

シングルスレッド・非同期IOなのが特徴。チャットのようにリアルタイムでどんどん情報が更新されるのには向いているが、CPUリソースを大量に消費するような処理を行うプログラムには向いていない。

ハロワコード

  • node hello_world.jsで実行できる
var http = require('http');
  
var server = http.createServer(function(req, res){
        res.writeHead(200, {'Content-Type': 'text/plain'});
        res.write('Hello Wrold');
        res.end();
});

server.listen(1234);
console.log('サーバを起動しました。');

11月17日(Maven)

Mavenプロジェクトを作成するとフォルダ構成やconfigファイルなどが自動で作成される。

Mavenとは

以下のように複数の機能を持つJavaのビルドツール。

  • プログラムのビルド:コンパイルからjar/warファイルの作成に関する全ての作業 -プログラムのテストと実行
  • ライブラリの管理:プログラムの動作に必要なライブラリ全てを自動でダウンロード・インストール
  • デプロイ作業:Gitなどを利用してクラウド環境にデプロイすることも可能

Maven関連の単語

ゴール

compile/packageを指定した場合はtargetフォルダ内に作成される

  • compile:javaのクラスファイルの作成
  • test-compile:UT用のテストファイルをコンパイル
  • test:テストを単体で実行
  • package:jar/warファイルの作成
  • clean:不要ファイルの削除

自動化の観点から

  • ソースコードとpom.xmlがあるならば最低限ゴールの指定さえできれば必要なjar/warファイルの作成までは可能。
  • 「デプロイ先」「configファイル」は環境(テスト環境、ステージング環境、コンパイル環境)毎に違うのでそこをどう自動化するか。

11月15日の学び(コメントの書き方)

コメントの書き方

  • ソースコードはロジックのみが記載されている。
  • 「実装の内容」に関して記載するよりは(それは読めばわかる)、「なぜその処理を実装しているのか」という理由を書くこと
  • 「実装の内容」を書く場合は個別のメソッドではなく、メソッド全体の処理概要を記載すること

11月14日の学び③(VPC)

VPC概要

  • VPCAWS上のユーザ毎のプライベートなネットワーク環境
  • VPCリージョン単位で作成されるため、VPC作成時は最初にリージョンを選択する − VPC同一リージョン内の複数AZをまたぐことが可能

VPCとインターネットの接続

VPCとサブネット

  • サブネットは複数AZを跨げないため、必ず一つのAZを指定する必要がある
  • パブリックサブネット:DGWとしてIGWが指定されたサブネット。外部に公開しているサーバが用いる。 −プライベートサブネット:DGWとしてIGWは指定されていないサブネット。内部に閉じたサーバが用いる。

確認事項

  • 現在の各サーバのサブネットとAZの関係を抑えること!

11月14日の学び(リージョンとAZ)②

リージョン→AZ(アベイラビリティゾーン)

リージョン

  • 2016年時点で全世界に13箇所のリージョンが存在

AZ

  • 1つのリージョンには複数のAZが存在
  • 同一リージョン内のAZをまたぐ場合はprivateIPアドレスを利用可能

AWSのサービス

各サービス毎に適用される範囲が異なり「グローバルサービス・リージョンサービス・AZサービス」からなる

  • グローバルサービス:Route53・IAMなど
  • リージョンサービス:S3など
  • AZサービス:EC2インスタンスなど

11月14日の学び①(ELB)

ELB作成

  • ELB作成時にロードバランサインスタンスに対して固有のDNS名が割り当てられる(例:myLB-1234567890.us-east-1.elb.amazonaws.com)
  • ロードバランサは一意のDNS名を1つもつ
  • 独自のドメイン名でユーザにアクセスさせたい場合は、DNSにCNAMEを登録できる

ELB名前解決

ユーザからのリクエストの受信

疑問点

確認事項