SlideShare une entreprise Scribd logo
1  sur  42
Télécharger pour lire hors ligne
GRIMOIRE du IT
Eloim, Essaim, frugativi et appellavi
First Edition - 07/12/2017
written by anh kura (LFTV)
エロイム, エッサイム, 我は求め訴えたり
IT 魔導の書
Summary & Index
IT 業界では⽇々数多くの呪⽂が唱えられ
ている。多くはオリジナルの英語がその
まま使われる。これは⽇本においても同
様であるが、⽇本では正しく発⾳され
ず、カタカナ英語となっており、オリジ
ナルとはかけ離れた呪⽂になっているこ
とが多い。
本書は、⽇系 IT 企業においてコミュニ
ケーターを⽬指す⼈向けに、必要最低限
となる⽇本語の呪⽂を浅く解説した⼊⾨
書である。
内容に関して多少偏りがあることは認識
いる。
Index
- Internet

(インターネット)
- Development Process

(開発⼯程)
- Inside of Server

(サーバーの中⾝)
- Implementation

(実装)
- Test

(テスト)
- Server & Security

(サーバーとセキュリティ)
Internet
(インターネット)
How Internet works?
Device(デバイス):
- PC(ピーシー)
- Smart Phone(スマホ)
- Tablet(タブレット)
Browser(ブラウザー):
- IE(アイイー)
- Chrome(クローム)
- Firefox(ファイヤー・フォックス)
Access(アクセス)
Response(レスポンス・応答)
User/Consumer

(ユーザー/コンシューマー)
Service
(サービス)
SNS(エスエヌエス)
Blog(ブログ)
Search Engine(検索エンジン)
- Google(グーグル)

- Yahoo!(ヤフー)
→ ググる(Search by google)
Chat tool(チャットツール)
- ChatWork(チャットワーク)

- Slack(スラック)
etc.
How Internet works?(DNS)
User/Consumer

(ユーザー/コンシューマー)
Name Server
(ネーム・サーバー)
Server
(サーバー)
www.homes.co.jp
lifull-tech.vn
www.homes.co.jp
= 123.223.111.xxxlifull-tech.vn
= xxx.xxx.xxx.xxx
lifull-tech.vn server
xxx.xxx.xxx.xxx
HOME’S server
xxx.xxx.xxx.xxx
Domain(ドメイン)
URL(ユーアールエル)
URL(ユーアールアイ)
IP Address(アイピーアドレス)
Global IP(グローバルアイピー)
インターネットの住所は数字の羅列。
⾜らなくなって困ってる。
DNS(ディーエヌエス)?
Domain Name System(ドメイン・ネーム・システム)
Address book of Internet. インターネットのアドレス帳のこと
How Internet works?(hosts)
Name Server
(ネーム・サーバー)
anhkura.vn
No. Idk
xxx.xxx.xxx.xxxHosts file
(ホスツ)
Okay. Got it!
Hosts(ホスツ)ファイルとは、アドレス帳のことで、IP アドレ
スと呼び⽅を登録しておくと、設定した呼び⽅で、サーバーを
呼び出すことができるようになる。個⼈の PC かサーバー上で
設定する。
例えば、個⼈の開発環境は社内だけで分かれば良いので、
Global な Name Server に登録する必要はなく(しない⽅が
良く)、Hosts に設定するのが⼀般的である。
Mac(マック) や Ubuntu(ウブンチュ)などの Unix(ユニック
ス)/Linux(リナックス)系OSの場合は、/etc/hosts にあり、
Windows の場合は、バージョンによって異なるが Windows/
system32/drivers/etc/hosts などにある。
Hosts に記載がある場合は、Name Server より優先される。
Name(ネーム)がひけない
名前解決できない
などと⾔う
Development
Process
(開発⼯程)
Development Process
Marketing

(マーケティング/市場調査)
Planning

(プランニング/企画/

要件定義)
Sales/Consultant

(営業/コンサル)
Design

(デザイン)
Development

(開発)
Test

(テスト)
UAT: User Acceptant Test

(受け⼊れテスト)
Launch/Release/Deployment
(ローンチ/リリース/デプロイ)
Customer(お客様) Development Team(開発チーム)
Upstream Process
(上流工程)
UT: Unit Test(ユニットテスト)
Integration Test(結合テスト)
Performance Test(パフォーマンステスト)
Security Test(セキュリティテスト・脆弱性テスト)
Various kind of process
management
Flow type
Methodology

(メソドロジー/⼿法)
考え⽅
Water fall

(ウォーターフォール)
PMBOK(ピンボック)
プロセスごとに役割分担が決ま
っており、完了させたら、次へ
次へと渡していく。仕様書が完
璧な場合うまくいく。
Agile

(アジャイル)
Scrum(スクラム)
Lean(リーン)
XP: eXtrem Programming

(エックスピー),
Kanban(カンバン)
etc
細かくフィードバックを受けな
がら認識の齟齬がないように、
より意味のあるプロダクトが作
れるように進める。
⽇本は契約の⽂化である点と、
発注側の負担が⼤きいのであま
りやりたがらない。
Roles(ロール/役割)
PO: Product Owner

PM: Project Manager
(ピーオー/ピーエム)
プロジェクトの責任者。
お客様であることがほとんど。
お⾦を出す意思決定をできる⼈で
ない場合は、注意が必要。
Designer

(デザイナー)
デザインする⼈。⽇本では
html, css まで書く場合が多い
html, css だけ書く⼈は、Coder

(コーダー)と呼ばれることがある。
⽇本にだけある特殊な職種。
Developer

(デベロッパー)
Frontend Engineer

(フロントエンドエンジニア)
プログラムを書く⼈。
アプリケーションを作る。
Server side Engineer

(サーバーサイドエンジニア)
Infrastructure Engineer

(インフラエンジニア)
Network Engineer

(ネットワークエンジニア)
サーバの設定等をやる⼈。
ベトナムにはあんまりいない。
Tester

(テスター)
QA: Quality Assurance

(キューエー)
QC: Quality Control

(キューシー)
テストしたり、テストを設計したり、
プロダクトの品質を管理する⼈。
Scrum Master

(スクラムマスター)
Scrum(スクラム)でやる場合の

PM みたいな⼈。
PO/PM との違いは⼈事権以外の
意思決定権がないことなど。
Keywords of Scrum
Keyword
(キーワード)
Description

(意味)
Keyword
(キーワード)
Description

(意味)
practice
(プラクティス)
Scrum の中で⾏うイベント
Ticket

(チケット)
タスク管理ツールなどで管理されるタ
スク
planning
(プランニング)
計画
Kanban/Scrum Board

(カンバン/スクラムボード)
タスクを可視化する表
Sprint/Iteration
(スプリント/イテレーション)
開発期間全体を⼀定期間ごとに区切っ
て開発をする区切りのこと
Velocity

(ベロシティ)
チームの開発速度
Daily Scrum/Daily Stand up
(デイリースクラム/デイリースタンド
アップ)
朝会
Pair Programming

(ペアプロ)
スキルの共有等の⽬的で、

2⼈1組でプログラミングを⾏う。
Review

(レビュー)
プロダクトオーナーにデモを⾏い、フ
ィードバックを受ける
CI/CD: Continuous Integration/
Delivery

(シーアイ/シーディ)
継続してリリースするための仕組み化
のことを⾔うことが多い
Retrospective

(レトロスペクティブ)
プロセスの振り返り会。

改善案を話し合う
Product Backlog

(プロダクトバックログ)
要件リスト

プロダクトオーナーが管理
Priority

(プライオリティ/優先順位)
優先順位。必ず優先順位順に作る。
Inside of Server
(サーバーの中⾝)
Programming Language
(プログラミング⾔語)
Type 例
Compiler Language

(コンパイラ⾔語)
Java(ジャバ), C(シー), C++(シープラプラ), C#(シーシャープ) etc
Script Language
(スクリプト⾔語)
PHP(ピーエイチピー), Ruby(ルビー), JavaScript(ジャバスクリプト,ジャ
バスク), Python(パイソン) etc.
Functional Language
(関数型⾔語)
Haskel(ハスケル), Lisp(リスプ), Scala(スカラ), etc
Web Server
(ウェブサーバー)
Web サーバーには、httpd(エイチティティピーディー, エイチティティピーデーモン)
をインストール・設定する必要がある。


Apache(アパッチ), Nginx(エンジンエックス), Tomcat(トムキャット), Unicorn(ユ
ニコーン)など⾊々なものがある。
virtual hosts, vhosts(バーチャルホスト, ブイホスツ)を設定し、リクエストを受けた場
合に、何をどのように実⾏させるかなどを設定する。他にも⾊々設定する。
OS
(オーエス)
PC のローカルマシンの OS としてポピュラーなのは、Windows(ウィンドウズ),
Mac(マック), Ubuntu (ウブンチュ)あたりで、スマートフォンの場合は、Android(ア
ンドロイド), iOS (アイオーエス)など。
サーバー⽤としては、Unix(ユニックス), Linux(リナックス) 系の OS が多く、Linux
の Distribution として、AmazonLinux(アマゾンリナックス), CentOS(セントオーエ
ス), Redhat Linux(レッドハットリナックス) などなど⾊々なものがある。それぞれ違
いがあり、⽤途によって使い分けるが、まぁ AmazonLinux で良いかという⾵潮があ
ることは否めない。
サーバー⽤の OS には基本的に GUI (ジーユーアイ, Graphical User Interface) がな
く、デスクトップをマウスで操作するようなことはせず、コマンドを打って作業す
る。コマンドを打って作業する画⾯のことを、CUI(シーユーアイ, Character User
Interface)と呼んだり、CLI(シーエルアイ, Command Line Interface)コマンドを打
つ画⾯(アプリ)のことを Prompt(プロンプト)とか Terminal (ターミナル)などと呼ん
だりするが、⽬に優しく⿊背景に設定する⼈が多い。以前、営業の⼈に「⿊い画⾯を
開いている時は話しかけないようにしている」などと⾔われたことがあり、反省し
た。
Implementation
(実装)
Stage(ステージ)
User
Developer
Production Environment
(本番環境)
Develop Environment
(開発環境)
Local Machine
(ローカル)
Development(開発)
Deploy
(リリース)
Stage(ステージ)
開発の状態、進捗に応じて確認する環境を切り替える。最終的には本番環境へのリリースとなる。
上位サーバーへのリソースの配置を、Deploy(デプロイ) などと⾔う。
Live, Production(ライブ, プロダクション)環境。本番環境。
Pool(プール)環境。リリース直前の Production 環境と全く同じ構成の環境。
Staging(ステージング)環境とも⾔う。最終的なテストを⾏う
Backstage(バックステージ)環境。今回リリースする対象のファイル等のみがアッ
プされたテスト環境。ない場合もある。
Current(カレント)環境。各チームが開発中のものが集められたテスト環境。git を
使う場合、あまり必要がない。
Unit(ユニット)環境。個⼈の開発環境
ステージの例)
Version Control
(バージョン管理)
複数⼈のチームで開発する場合、誰がいつ何を変更したのかの履歴を管理する必要が
ある。リリースしたらバグがあったので、急遽前のバージョンに戻したいなどの状況
も考えられる。その際に利⽤するのがバージョン管理システムで、CSV(シーエスブ
イ), SVN(エスブイエヌ), Git(ギット)などがある。現在主流は、Git だが、SVN もま
だまだ残っている。
Git は⾃分でシステムを⽤意することも出来るが、便利なツールを統合したサービスを
利⽤するのが⼀般的で、代表的なものとして、github(ギットハブ), bitbucket(ビット
バケット), gitlab(ギットラブ・ギットラボ)などがある。
github のマスコットキャラクターは、Octocat(オクトキャット)と呼ばれており、可
愛い。
Version Control(バージョン管理)
git
remote
[app repository]
master branch
feature branch1
(remote)
feature branch2
feature branch1
(local)
feature branch1
commit
push
checkout
branch を切る
merge/ PR
アプリケーションごとに repository(リポジトリー)
を作成し、defalut になっている master ブランチや
develop ブランチなどから、開発⽤の branch(ブラ
ンチ)を作成(ブランチを切る)して、開発を⾏う。基
本的には、ローカル環境にcheckout(チェックアウ
ト)/clone(クローン) して、ローカルでの開発を進
め、commit(コミット) したり push(プッシュ) した
りする。サーバー上のものを remote(リモート)、⼿
元のものを Local(ローカル)と⾔う。
リリースする状態になった場合、master/develop
ブランチに merge(マージ) する。merge する際に
直接 merge する場合と、承認を経てから merge す
る Pull request(プルリクエスト・プルリク・RP )を
する場合がある。git を使った開発フローとして、
git-flow, github-flow などがあり、どのような⽅法
を取るかは、規模や状況によって変わってくる。
同じ箇所を修正してバッティングすることを、
Conflict (コンフリクト)と⾔う。コンフリクトした
ら泣きながら修正する。
Coding Standard
(コーディング規約)
複数⼈で開発をする場合、体裁が整っていないとソースコードは読みづらいので、書き⽅
を統⼀します。コーディングのガイドラインのことを Coding Standard(コーディング規
約)と呼び、⼀般的なものもあれば、独⾃で決めたものもあり、様々です。例えば PHP で
あれば、PSR-2(ピースエアールツー)などが有名です。
基本的に規約に則った書き⽅を⼼がけるべきですが、個⼈の⼼がけに依存すると定着しな
いことが多いため、システムで守らせるようにするのがスマートです。PHP であれば、
php-cs-fixer(ピーエイチピーシーエスフィクサー)、Ruby であれば rubocop(ルボコッ
プ・ロボコップ)などを利⽤するのが良いです。コーディング規約に限らず、ソースコー
ドをツールで解析することを、Static Code Analysis(静的コード解析)と呼びます。
コーディング規約の範疇なのか範疇外なのか微妙なところですが、コードを読みやすくす
るために⽇本で広く知られており、「これくらい⾔わなくてもやって当然」と思われてい
るのが、The Art of readable code(リーダブルコード)という書籍です。⼤事なことは、
どのようにコードを書くかについて共通認識を持つことです。それぞれが⾃⼰流にカスタ
マイズしては意味がありません。
Object-oriented
(オブジェクト指向)
Object-oriented Programming(オブジェクト指向, OOP)とは、オブジェクト同⼠の相互作⽤とし
て、システムの振る舞いを捉える考え⽅のことで、Encapsulation(カプセル化)、, Composition,
inherit and delegation(継承)、Polymorphism (ポリモーフィズム)といった特徴を持ちます。ナンノ
コッチャ!まぁ、みんなで開発する時に、便利な考え⽅だと思っておけば良いです。
オブジェクト指向のベスト・プラクティスをまとめたものをDesign Pattern(デザインパターン)と呼
び、様々なパターンがあります。実際にデザインパターンを意識してコーディングできる⼈は多くはな
いです。デザインパターンの中で最も有名なのが、MVC(エムブイシー) パターンです。Model(モデ
ル)-View(ビュー)-Controller(コントローラー)と⼤きく3つの役割に分けて実装する⽅法で、多くの
Framework (フレームワーク)に取り⼊れられています。
MVCフレームワークは、例えば…
- PHP: ZendFramework(ゼンド), CakePHP(ケイク), Symfony(シンフォニー), Laravel(ララベル)…

- Ruby: Ruby on Rails(RoR, レイルズ), Sinatra(シナトラ)
- Java: Struts(ストラッツ)
などなど。これらの View には、Template Engine(テンプレートエンジン)が採⽤されていることがほ
とんどで、有名なところでは、Smarty(スマーティ), Twig(ツイグ、トゥイグ), Blade(ブレード)など
があります。
近年の開発は、フレームワークを利⽤することが⼀般的であり、オブジェクト指向を理解したつもりに
なってしまう⼈が多く、経験を積んでもスキルが伸びない原因の1つになっています。
理由は様々ですが、複雑になりすぎたコードや汚いコードのことを Spaghetti Code(スパゲッティ
コード) と呼んだり、クソース, ウンコードなどと呼んだりします。
Test
(テスト)
Test(テスト)
Test には⾊々な種類がある。⼤雑把に⾔えば、Unit Test(単体テスト)→ Integration
Test(結合テスト)→System Test (システムテスト)→Acceptance Test(受け⼊れテスト)
の順番で⾏われる。
まずは、要求を分析し、どのような Test View Point(テスト観点)でテストすべきかを考
え、スケジュールに落とし込む Test Planning(テスト計画)を⾏う。Test View Point に
は、機能要件のテストだけでなく、⾮機能要件のテストもあり、例えば、Performance
Test(パフォーマンステスト), Security Test(セキュリティテスト/脆弱性テスト)などがあ
る。
要求に基づき、Test Spec/Test Case(テスト仕様書)を作成し、テストを実施する。
Test の中には、他の機能に影響が出ていないかを調べる Regression Test(リグレッション
テスト, 回帰テスト)や、ざっと確認する Smoke Test(スモークテスト), ⼀通り機能を使っ
てみる Walkthrough Test(ウォークスルーテスト), 特別情報を与えずユーザーとして使っ
てみる Monkey Test(モンキーテスト)など⾊々なものがあり、必要に応じて使い分ける。
ISTQB(アイエスティキュービー, International Software Testing Qualification Boards)
という団体があり、資格を発⾏している。テストにおいて国際的に通じる共通⾔語として
⼤変有益であり、LFTV においては、QA としての採⽤は ISTQB Foundation の資格を必
須とし、何となくテストしないようにしている。
Test(テスト)
Test 何? 誰がやる?
Unit Test
(ユニットテスト/単体テスト, UT)
関数やメソッド等の⼩さい単位での正しく動作するかのテス
ト。開発者がテストコードを書く。
網羅率のことを Coverage(カバレッジ)と⾔う。
Developer
Integration Test
(インテグレーションテスト/結合テスト)
開発した機能が全体として正しく動作するかを検証する。 QA
System Test

(システムテスト)
本番環境とほぼ同じ環境で、全体として正しく動作するかを
検証する。
QA
User Acceptance Test

(アクセプタンステスト/受け⼊れテスト, UAT)
発注者の本来の⽬的・意図通りに動作しているかを発注者が
検証する
Customer
Requirement Analysis
(要求分析)
Requirement Definition
(要件定義)
Basic Design
(基本設計)
Specific Design
(詳細設計)
Coding
(コーディング)
Code Review
(コードレビュー)
Unit Test
(単体テスト)
Integration Test
(結合テスト)
System Test
(システムテスト)
Acceptance Test
(受け⼊れテスト)
Automation Test
(⾃動テスト)
何度もやるテストは⾃動化すべきである。CI/CD の観点からも⾃動化を積極的に進めるべき。
Dev. Servers
Jenkins
Web Hook
Feed back
Clone
Push
Static Code Analysis
Unit Test
UI Test
Jenkins(ジェンキンス)が git のリポジトリ
のイベント(push など)を Webhook(ウェ
ブフック)などで監視し、静的コード解析や
UT, Selenium (セレニウム)による UI の⾃
動テスト, Jmeter(ジェイメーター) や
Apache Bench(アパッチベンチ)などによ
るパフォーマンステストなどなどを⾏い、
ChatWork や Slack といったチャットツー
ルにフィードバックする。などの構成が例
として挙げられる。
どこまでやるかは担保すべき品質の定義次
第である。
github を利⽤する場合、多くのツールが
Jenkins を介さなくても連携できるため、
その点で github のバリューは⾼い。お値
段も⾼い。
.
.
.
Server & Security
(サーバーとセキュリティ)
Various kind of servers
Server
(サーバー)
Cloud
(クラウド)
On Premise
(オンプレミス/オンプレ)
AWS
(エーダブリューエス)
heroku
(ヘロク)
Data Center
(データセンター)
Server Room
(サーバールーム)
例えば、普段は10くらいでそんなにアクセスがないけど、クリスマスシーズンはアクセスが100倍くらい増え
るというようなサービスの場合…
オンプレの場合、クリスマスシーズンに対応できる分のサーバーを購⼊して、設置しておく必要がある。お⾦
がかかるし、本当にそれで⼤丈夫か確証はない。
クラウドサーバーの場合、クリスマスシーズンのみ必要な分だけ増やして、普段は10にしておくということが
できる。無駄がない。
タイプ
例
Various kind of access
サーバーとの通信⽅法の種類のことをプロトコルと呼ぶ。サーバーはプロトコルごとに番号で指定された⼊り⼝を持っ
ており、それをポートと呼ぶ。ssh 通信のことを22番通信と呼んだりもする。サーバー管理者は必要に応じて、ポート
を開いたり閉じたり、番号を変えたりする。不⽤意に開いていると、いたずらされたり、ドロボウが⼊ってくる。通信
の制限のことを、Fire Wall(ファイヤーウォール)と呼ぶ。
通常はサービス単位でFire wallを設定するが、例えば中国の Great Fire Wall(グレートファイヤーウォール)のような、
Facebook や Twitter などの SNS への通信を国として制限している場合もある。
Protocol
(プロトコル)
Default Port

(ポート)
⽤途 関連⽤語
http
(エイチティティピー)
80
通常のブラウザアクセ
ス
https
(エイチティティピーエス)
443
個⼈情報等を送信する
時に暗号化する
SSL(エスエスエル)

SSL通信, SSL証明書
FTP
(エフティピー)
20, 21
ファイルをアップロー
ド・ダウンロードする
ssh
(エスエスエイチ)
22
サーバに⼊って⾊々や
る
Command Line

(コマンドライン)

(cmd, cli)
SMTP

(エスエムティピー)
23 メール
Fire Wall & Proxy
Fire Wall は特定の相⼿からの通信を遮断したり、特定の相⼿
からの通信だけを許可したりします。
This is Hiroshi speaking.
Can I talk to Ms. Hang??
Hiroshi san
Hang san
Fire Wall
Hiroshi さんと話
してはいけません。
Nguyen san
Nguyen さんとは
OK です。
This is Nguyen speaking.
Can I talk to Ms. Hang??
Fire Wall & Proxy
Fire Wall に通信をはじかれてしまう場合、別⼈になりすましてアクセスすることがあり
ます。別⼈になりすますことを Proxy(プロクシー)を通すとか Proxy をさすとか表現し
ます。(プロクシー → 串 → 刺す)
Could you call Ms. Hang?
Hiroshi san
Hang san
Fire Wall
Hiroshi さんと話
してはいけません。
Nguyen san
Nguyen さんとは
OKです。
OK, I got it.
This is Nguyen speaking.
Can I talk to Ms. Hang??
Yes, I'm here.
NAT(ナット)
個別に直接通信するのではなく、NAT(Nguyen Anh Tuan Network Address Transfer)サーバーを介して通
信するようにすることで、セキュリティを向上させることができます。Bastion(バッション/踏み台)サー
バーと呼ぶこともあります。
ssh 通信を Bastion サーバー経由で⾏うことを多段ssh(ただんエスエスエイチ), ssh tunnel(エスエスエイ
チ・トンネル), Port forward(ポート・フォワード)などという⾔葉を使って表現します。
NAT サーバーを経由する設定のことを Route Table(ルートテーブル)と呼びます。
セキュリティ⽬的ではありませんが、http/https のリクエストを⼀括で受けて、それぞれの Web サーバー
に振り分ける⽬的で Proxy サーバーを設置することもあります。先程の Proxy との違いは、ユーザー側で
はなく、サーバー側がなりすます点です。
Hiroshi san Hang sanFire Wall
NAT Server
(Nguyen san)
Nguyen さんとだけ
話してください。
Subnet(サブネット)
Subnet(サブネット)とは、Network を⼩分けにしたものです。セキュリティのためであっ
たり、役割のためであったりグルーピングしてあった⽅が何かと便利なことがあるので、
Subnet に分割します(本来の⽬的は違うけどいまは省略)。IP Address はインターネット
上の住所ですが、フロアくらいに思っておくと良いかも知れません。会社の受付があったり
来客⽤スペースがある Public なフロア、従業員が業務を⾏う Private なフロアなど。
IP Address 的には、以下のようになります。
Public Subnet
Private Subnet
Network
xxx.xxx.xxx.xxx
ネットワーク部
サブネット部
ホスト部
NACL & SG
Subnet に設定するセキュリティ設定のことを Network ACL(ネットワーク
エーシーエル)とか、NACL(ナクル)と呼びます。Network Access Control
Lists の略です。NACL では⼤雑把に許可する通信を設定します。
個別のサーバーにはそれぞれ個別に細かくセキュリティの設定をします。利⽤
しない Port を開けておくのは危ないので、必要な Port だけを開けるように
設定します。その設定は使い回しができるので、Security Group(セキュリ
ティグループ)と呼ばれています。
NACL と SG では、⼊ってくるものと出て⾏くものに分けて設定を⾏います。
⼊ってくるものを Inbound(インバウンド), 出ていくものを Outbound (アウ
トバウンド)と呼びます。
Public Subnet
Private Subnet
NACL
Security Group(SG)
Inbound Outbound
Availability Zone
(アベイラビリティゾーン)
NAT
Web Server API Server XX server
全部同じところに置いておくと、何か問題が発⽣した時に困るので、別のと
ころにバックアップを作り、⼿動/⾃動で切り替えます。
AWS では、⼤きく分けて Region(リージョン)とAvailability Zone(アベイラ
ビリティ・ゾーン、AZ)の2種類の Zoning の考え⽅があります。Region は
Tokyo とか Oregon とかサーバーが置いてある場所が全然違います。AZ
は、同じ Region 内にありますが、それぞれがなるべく影響しないように設
置されています。
Region ごとに提供されるサービスが異なります。
AWS で現在(1/12/2017)提供されているリージョンは、
North Virginia, Ohio, North Carolina, Oregon, Canada, Ireland,
Frankfurt, London, Tokyo, Seoul, Singapore, Sydney, Mumbai, San Paulo
で、最近中国から AWS は撤退・パートナー企業に譲渡されたので、Beijing
Region は AWS としてのサービスからは外れました。
AZ: a AZ: c
AZ AZ
AZ
Region
AZ AZ
AZ
Region
AZ AZ
AZ
Region
Region & Availability Zone
AZ: a
Load Balancer
(ロードバランサー)
LB
Web Server WEB Server WEB server
⼀度にたくさんのアクセスがあった場合、1台のサーバーでは処
理しきれなくなることがあります。その場合、同じ構成のサー
バーを⽤意しておいて、リクエストを分散させて処理を⾏いま
す。負荷分散と呼び、それを⾏うものを Load Balancer(ロード
バランサー)と呼びます。AWS では、ELB(イーエルビー/Elastic
Load Balancer) とか ALB(エーエルビー/Application Load
Balancer)と呼ばれています。ALB は ELB の新しいバージョンな
ので、今後 ELB を積極的に選択する理由はあまりありません
が、AWS の LB は古くから ELB と呼ばれてきたので、ALB も
ひっくるめて ELB と呼ぶことが多い気がします。
オンプレミスの場合、たくさんのアクセスを想定し、サーバーを
⽤意する必要がありますが、クラウドの場合、必要に応じて増や
すことができます。サーバーを増やすことを Scale out(スケー
ルアウト)と⾔い、ELB の機能で、ある⼀定の条件を超えたら⾃
動で増やす Auto Scaling(オートスケーリング)というものがあ
り、お財布に優しくなっています。Auto Scaling はサーバー郡
に対して設定できます(Auto Scaling Group)。


⼀⽅で、サーバーの容量や処理能⼒⾃体を増強して処理を⾏う場
合もあり、これを Scale Up(スケールアップ)と呼びます。
トラフィックを振り分ける
同じ内容のサーバー
普段はないけど、状況に応じ
てどんどん増やす/増える
(スケールアウト)
Various type of Servers
タイプ ⽤途 例 メモ
EC2
(イーシーツー/Elastic
Compute Cloud)
いわゆる普通のサーバ
ー
AMI(エーエムアイ/
Amazon Machin
Image)から簡単に⽴ち
上げられる
RDS
(アールディーエス/
Relational Database
Service)
データベース
Oracle, MySQL,
PostgreSQL
(オラクル, マイエスキ
ューエル, ポスグレ)
ElastiCache
(エラスティキャッシュ)
KVS(ケーブイエス/Key
Value Store)
キャッシュ
Redis, Memcache
(レディス, メムキャッ
シュ)
On Memory(オンメモ
リー)のキャッシュ。ア
クセスが速い。
S3
(エススリー/Simple
Storage Service)
File Storage

(ファイルストレージ)
ファイル置き場
S3の中にBucket(バケッ
ト)と呼ばれる容れ物を
作って使う
NoSQL
(ノーエスキューエル)
データベース
MongoDB
(モンゴデービー)
それぞれのサーバー1台1台のことをInstance(インスタンス)と呼び(EC2インスタンスとか)、インスタン
スごとにスペックを設定する。Small とか Large とか。
Other services
サービス名 ⽤途 メモ
SES
(エスイーエス/Simple Email
Service)
メール送信
オレゴンかバージニア。

EC2インスタンス内に、
SendMail(センドメール)や
Postfix(ポストフィックス)を建て
ても良い
KMS
(ケーエムエス/Key
Management Service)
暗号化キー
IAM

(アイアム/Identity and Access
Management)
アカウント
個別リソースへの権限設定をす
る。個別のアカウントの他、
IAM Role と呼ばれるサーバーに
付与するものもある設置する
Code Commit
(コードコミット)
バージョン管理
ソースコードのバージョン管理
ができる。IAM が必要。
VPC
(ブイピーシー/Virtual Private
Cloud)
サーバー群をひとまとめにする
括りのこと
VPC 同⼠を接続することを Peer
Connect(ピアコネクト)と⾔
う。同⼀ Region 内で Private IP
が被らない場合に接続できる
Distribution Tool
(ディストリビューションツール)
同じことをいちいち設定するのが⾯倒なので、設定ファイルを書いてコマンド等を実⾏して
簡単に再現できるようにする構成管理ツールのこと。設定の(半)⾃動配信。
VPC 全体の設定(ネットワーク設定など)を再現する場合は、CloudFormation(クラウド
フォーメーション),
個別サーバーの設定(インストールやアプリケーション設定、ソースコード配置など)は、
Ansible(アンシブル)やChef(シェフ・チェフ)などを利⽤するのが⼀般的。
基本的には、xml(エックスエムエル) や yml(ヤムル・ワイエムエル), json(ジェイソン) 等
に設定を書く。Template(テンプレート)と⾔ったり、Playbook(プレイブック)と⾔った
り、Cookbook, recipe(クックブック, レシピ)と⾔ったりする。
よく⽿にする Command
コマンド名 ⽤途 メモ
yum

(ユム・ヤム)
インストールに使う
rpm(アールピーエム), apt, apt-
get(アプト, エーピーティ) など
⾊々
ソースコードからインストール
する場合は、configure(コンフ
ィギュア)して、make(メイク)
する
grep

(グレップ)
⽂字列検索
nc

(エヌシー, ネットキャット)
ネットワークの疎通確認に使う
相⼿のPortを指定して通信でき
るか調べる
sudo
(スドゥ, スドー)
root(ルート) ユーザとして実⾏
する
SuperUserDo
その他に、AWS 専⽤のコマンド aws-cli などをインストールして使ったりすることもある。
コマンド名が、ちょっと頭おかしい感じなのは、きっと当時作った⼈が疲れてたからに違いない。
ギットハブのマスターから開発ブランチ切って、そこで実装してく
ださい。コーディング規約はピーエスアールツーで、レビューする
の⾯倒なのでコミットする前にピーエイチピーシーエスフィクサー
とかでチェックしてください。実装終わったらマスターにたいして
プルリク投げてください。レビューしてオッケーならマスターに
マージします。
マスターにマージされたらジェンキンスがウェブフックでセレニウ
ムをキックして、カレント環境に対してテストするから、それが終
わったらそれも確認してくださいね。
全部問題なかったらステージング環境にアップして、再度テスト。
それも問題なかったらピーオーの承認もらって、プロダクション環
境にデプロイするから、デプロイ完了したら本番にアクセスして
ざっとウォークスルーして、チャットワークで報告してください。
練習問題
倉林 寛⾄ - Kurabayashi Hiroshi
CIO at LIFULL Tech Vietnam Co.,Ltd., HCMC
@kura kura@lifull-tech.vn
We are hiring!
http://lifull-tech.vn
オリジナルとなる英語単語の抑揚をなくし、短⾳を短くせず、⾳節ごとに語尾までハッキリ発⾳すると、⾃然なカタカナ英語になる。

Contenu connexe

Tendances

Pythonの処理系はどのように実装され,どのように動いているのか? 我々はその実態を調査すべくアマゾンへと飛んだ.
Pythonの処理系はどのように実装され,どのように動いているのか? 我々はその実態を調査すべくアマゾンへと飛んだ.Pythonの処理系はどのように実装され,どのように動いているのか? 我々はその実態を調査すべくアマゾンへと飛んだ.
Pythonの処理系はどのように実装され,どのように動いているのか? 我々はその実態を調査すべくアマゾンへと飛んだ.kiki utagawa
 
関数プログラミング入門
関数プログラミング入門関数プログラミング入門
関数プログラミング入門Hideyuki Tanaka
 
目grep入門 +解説
目grep入門 +解説目grep入門 +解説
目grep入門 +解説murachue
 
Where狙いのキー、order by狙いのキー
Where狙いのキー、order by狙いのキーWhere狙いのキー、order by狙いのキー
Where狙いのキー、order by狙いのキーyoku0825
 
片手間MySQLチューニング戦略
片手間MySQLチューニング戦略片手間MySQLチューニング戦略
片手間MySQLチューニング戦略yoku0825
 
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」Takuto Wada
 
MySQLアンチパターン
MySQLアンチパターンMySQLアンチパターン
MySQLアンチパターンyoku0825
 
30分で分かる!OSの作り方
30分で分かる!OSの作り方30分で分かる!OSの作り方
30分で分かる!OSの作り方uchan_nos
 
RxSwift コードリーディングの勘所@社内RxSwift勉強会
RxSwift コードリーディングの勘所@社内RxSwift勉強会RxSwift コードリーディングの勘所@社内RxSwift勉強会
RxSwift コードリーディングの勘所@社内RxSwift勉強会Yuki Takahashi
 
良い?悪い?コードコメントの書き方
良い?悪い?コードコメントの書き方良い?悪い?コードコメントの書き方
良い?悪い?コードコメントの書き方Shigenori Sagawa
 
Clojureの世界と実際のWeb開発
Clojureの世界と実際のWeb開発Clojureの世界と実際のWeb開発
Clojureの世界と実際のWeb開発Tsutomu Yano
 
Test Yourself - テストを書くと何がどう変わるか
Test Yourself - テストを書くと何がどう変わるかTest Yourself - テストを書くと何がどう変わるか
Test Yourself - テストを書くと何がどう変わるかTakuto Wada
 
Serf / Consul 入門 ~仕事を楽しくしよう~
Serf / Consul 入門 ~仕事を楽しくしよう~Serf / Consul 入門 ~仕事を楽しくしよう~
Serf / Consul 入門 ~仕事を楽しくしよう~Masahito Zembutsu
 
何となく勉強した気分になれるパーサ入門
何となく勉強した気分になれるパーサ入門何となく勉強した気分になれるパーサ入門
何となく勉強した気分になれるパーサ入門masayoshi takahashi
 
CODE BLUE 2014 : バグハンターの愉しみ by キヌガワマサト Masato Kinugawa
CODE BLUE 2014 : バグハンターの愉しみ by キヌガワマサト Masato KinugawaCODE BLUE 2014 : バグハンターの愉しみ by キヌガワマサト Masato Kinugawa
CODE BLUE 2014 : バグハンターの愉しみ by キヌガワマサト Masato KinugawaCODE BLUE
 
プロダクトに 1 から Vue.js を導入した話
プロダクトに 1 から Vue.js を導入した話プロダクトに 1 から Vue.js を導入した話
プロダクトに 1 から Vue.js を導入した話Shohei Okada
 
4bit-CPU : TD4の解説
4bit-CPU : TD4の解説4bit-CPU : TD4の解説
4bit-CPU : TD4の解説Seong-Hun Choe
 
Clojureに入門してみた、2017年秋
Clojureに入門してみた、2017年秋Clojureに入門してみた、2017年秋
Clojureに入門してみた、2017年秋Satoshi KOBAYASHI
 
不遇の標準ライブラリ - valarray
不遇の標準ライブラリ - valarray不遇の標準ライブラリ - valarray
不遇の標準ライブラリ - valarrayRyosuke839
 

Tendances (20)

Pythonの処理系はどのように実装され,どのように動いているのか? 我々はその実態を調査すべくアマゾンへと飛んだ.
Pythonの処理系はどのように実装され,どのように動いているのか? 我々はその実態を調査すべくアマゾンへと飛んだ.Pythonの処理系はどのように実装され,どのように動いているのか? 我々はその実態を調査すべくアマゾンへと飛んだ.
Pythonの処理系はどのように実装され,どのように動いているのか? 我々はその実態を調査すべくアマゾンへと飛んだ.
 
関数プログラミング入門
関数プログラミング入門関数プログラミング入門
関数プログラミング入門
 
目grep入門 +解説
目grep入門 +解説目grep入門 +解説
目grep入門 +解説
 
Where狙いのキー、order by狙いのキー
Where狙いのキー、order by狙いのキーWhere狙いのキー、order by狙いのキー
Where狙いのキー、order by狙いのキー
 
片手間MySQLチューニング戦略
片手間MySQLチューニング戦略片手間MySQLチューニング戦略
片手間MySQLチューニング戦略
 
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
 
MySQLアンチパターン
MySQLアンチパターンMySQLアンチパターン
MySQLアンチパターン
 
30分で分かる!OSの作り方
30分で分かる!OSの作り方30分で分かる!OSの作り方
30分で分かる!OSの作り方
 
RxSwift コードリーディングの勘所@社内RxSwift勉強会
RxSwift コードリーディングの勘所@社内RxSwift勉強会RxSwift コードリーディングの勘所@社内RxSwift勉強会
RxSwift コードリーディングの勘所@社内RxSwift勉強会
 
良い?悪い?コードコメントの書き方
良い?悪い?コードコメントの書き方良い?悪い?コードコメントの書き方
良い?悪い?コードコメントの書き方
 
Clojureの世界と実際のWeb開発
Clojureの世界と実際のWeb開発Clojureの世界と実際のWeb開発
Clojureの世界と実際のWeb開発
 
Test Yourself - テストを書くと何がどう変わるか
Test Yourself - テストを書くと何がどう変わるかTest Yourself - テストを書くと何がどう変わるか
Test Yourself - テストを書くと何がどう変わるか
 
Serf / Consul 入門 ~仕事を楽しくしよう~
Serf / Consul 入門 ~仕事を楽しくしよう~Serf / Consul 入門 ~仕事を楽しくしよう~
Serf / Consul 入門 ~仕事を楽しくしよう~
 
レシピの作り方入門
レシピの作り方入門レシピの作り方入門
レシピの作り方入門
 
何となく勉強した気分になれるパーサ入門
何となく勉強した気分になれるパーサ入門何となく勉強した気分になれるパーサ入門
何となく勉強した気分になれるパーサ入門
 
CODE BLUE 2014 : バグハンターの愉しみ by キヌガワマサト Masato Kinugawa
CODE BLUE 2014 : バグハンターの愉しみ by キヌガワマサト Masato KinugawaCODE BLUE 2014 : バグハンターの愉しみ by キヌガワマサト Masato Kinugawa
CODE BLUE 2014 : バグハンターの愉しみ by キヌガワマサト Masato Kinugawa
 
プロダクトに 1 から Vue.js を導入した話
プロダクトに 1 から Vue.js を導入した話プロダクトに 1 から Vue.js を導入した話
プロダクトに 1 から Vue.js を導入した話
 
4bit-CPU : TD4の解説
4bit-CPU : TD4の解説4bit-CPU : TD4の解説
4bit-CPU : TD4の解説
 
Clojureに入門してみた、2017年秋
Clojureに入門してみた、2017年秋Clojureに入門してみた、2017年秋
Clojureに入門してみた、2017年秋
 
不遇の標準ライブラリ - valarray
不遇の標準ライブラリ - valarray不遇の標準ライブラリ - valarray
不遇の標準ライブラリ - valarray
 

Similaire à IT魔導の書 ~ Grimoire du IT

プライベートクラウドの動向とIT業へのインパクト(インタリオセミナー072409)最終版
プライベートクラウドの動向とIT業へのインパクト(インタリオセミナー072409)最終版プライベートクラウドの動向とIT業へのインパクト(インタリオセミナー072409)最終版
プライベートクラウドの動向とIT業へのインパクト(インタリオセミナー072409)最終版Tomoaki Sawada
 
テスト駆動で行うネットワーク自動化のすすめ
テスト駆動で行うネットワーク自動化のすすめテスト駆動で行うネットワーク自動化のすすめ
テスト駆動で行うネットワーク自動化のすすめkinunori
 
デスクトップエンジニアという働き方
デスクトップエンジニアという働き方デスクトップエンジニアという働き方
デスクトップエンジニアという働き方Hiroshi Oyamada
 
Kobe sec#7 summary
Kobe sec#7 summaryKobe sec#7 summary
Kobe sec#7 summaryYukio NAGAO
 
Intalio会社概要とIntalio Bopの特長 030109
Intalio会社概要とIntalio Bopの特長 030109Intalio会社概要とIntalio Bopの特長 030109
Intalio会社概要とIntalio Bopの特長 030109Tomoaki Sawada
 
コントロールベンダー視点での Command line interface (CLI)
コントロールベンダー視点での Command line interface (CLI)コントロールベンダー視点での Command line interface (CLI)
コントロールベンダー視点での Command line interface (CLI)Daizen Ikehara
 
ソニーのディープラーニングツールで簡単エッジコンピューティング
ソニーのディープラーニングツールで簡単エッジコンピューティングソニーのディープラーニングツールで簡単エッジコンピューティング
ソニーのディープラーニングツールで簡単エッジコンピューティングRyohei Kamiya
 
ソフトウェアテストの歴史と近年の動向
ソフトウェアテストの歴史と近年の動向ソフトウェアテストの歴史と近年の動向
ソフトウェアテストの歴史と近年の動向Keizo Tatsumi
 
ネットワークコマンド入力に対応したツール事例
ネットワークコマンド入力に対応したツール事例ネットワークコマンド入力に対応したツール事例
ネットワークコマンド入力に対応したツール事例fumoto kazuhiro
 
ビジュアライゼーションの役割とUI開発のイノベーション(2)
ビジュアライゼーションの役割とUI開発のイノベーション(2)ビジュアライゼーションの役割とUI開発のイノベーション(2)
ビジュアライゼーションの役割とUI開発のイノベーション(2)BizCOLLEGE
 
Css nite(2010.09.23)
Css nite(2010.09.23)Css nite(2010.09.23)
Css nite(2010.09.23)Yoshiki Ushida
 
とあるメーカーのRedmine活用事例
とあるメーカーのRedmine活用事例とあるメーカーのRedmine活用事例
とあるメーカーのRedmine活用事例agileware_jp
 
俺 と ご褒美 Bot
俺 と ご褒美 Bot俺 と ご褒美 Bot
俺 と ご褒美 BotMasayuki KaToH
 
[db tech showcase Tokyo 2017] E35: 12台でやってみた!DWHソフトウェアアプライアンス Db2 Warehouse ~...
[db tech showcase Tokyo 2017] E35: 12台でやってみた!DWHソフトウェアアプライアンス Db2 Warehouse ~...[db tech showcase Tokyo 2017] E35: 12台でやってみた!DWHソフトウェアアプライアンス Db2 Warehouse ~...
[db tech showcase Tokyo 2017] E35: 12台でやってみた!DWHソフトウェアアプライアンス Db2 Warehouse ~...Insight Technology, Inc.
 
コミュニケーションソフトウェアを創るということ
コミュニケーションソフトウェアを創るということコミュニケーションソフトウェアを創るということ
コミュニケーションソフトウェアを創るということKazuho Oku
 
01 idea table3.0
01 idea table3.001 idea table3.0
01 idea table3.0umisuzume
 
Visual Studio による開発環境・プログラミングの進化
Visual Studio による開発環境・プログラミングの進化Visual Studio による開発環境・プログラミングの進化
Visual Studio による開発環境・プログラミングの進化Fujio Kojima
 
X dev 20121106
X dev 20121106X dev 20121106
X dev 20121106Ken Azuma
 

Similaire à IT魔導の書 ~ Grimoire du IT (20)

プライベートクラウドの動向とIT業へのインパクト(インタリオセミナー072409)最終版
プライベートクラウドの動向とIT業へのインパクト(インタリオセミナー072409)最終版プライベートクラウドの動向とIT業へのインパクト(インタリオセミナー072409)最終版
プライベートクラウドの動向とIT業へのインパクト(インタリオセミナー072409)最終版
 
テスト駆動で行うネットワーク自動化のすすめ
テスト駆動で行うネットワーク自動化のすすめテスト駆動で行うネットワーク自動化のすすめ
テスト駆動で行うネットワーク自動化のすすめ
 
デスクトップエンジニアという働き方
デスクトップエンジニアという働き方デスクトップエンジニアという働き方
デスクトップエンジニアという働き方
 
Kobe sec#7 summary
Kobe sec#7 summaryKobe sec#7 summary
Kobe sec#7 summary
 
Intalio会社概要とIntalio Bopの特長 030109
Intalio会社概要とIntalio Bopの特長 030109Intalio会社概要とIntalio Bopの特長 030109
Intalio会社概要とIntalio Bopの特長 030109
 
Lt 110416
Lt 110416Lt 110416
Lt 110416
 
コントロールベンダー視点での Command line interface (CLI)
コントロールベンダー視点での Command line interface (CLI)コントロールベンダー視点での Command line interface (CLI)
コントロールベンダー視点での Command line interface (CLI)
 
ソニーのディープラーニングツールで簡単エッジコンピューティング
ソニーのディープラーニングツールで簡単エッジコンピューティングソニーのディープラーニングツールで簡単エッジコンピューティング
ソニーのディープラーニングツールで簡単エッジコンピューティング
 
ソフトウェアテストの歴史と近年の動向
ソフトウェアテストの歴史と近年の動向ソフトウェアテストの歴史と近年の動向
ソフトウェアテストの歴史と近年の動向
 
ネットワークコマンド入力に対応したツール事例
ネットワークコマンド入力に対応したツール事例ネットワークコマンド入力に対応したツール事例
ネットワークコマンド入力に対応したツール事例
 
ビジュアライゼーションの役割とUI開発のイノベーション(2)
ビジュアライゼーションの役割とUI開発のイノベーション(2)ビジュアライゼーションの役割とUI開発のイノベーション(2)
ビジュアライゼーションの役割とUI開発のイノベーション(2)
 
Css nite(2010.09.23)
Css nite(2010.09.23)Css nite(2010.09.23)
Css nite(2010.09.23)
 
とあるメーカーのRedmine活用事例
とあるメーカーのRedmine活用事例とあるメーカーのRedmine活用事例
とあるメーカーのRedmine活用事例
 
俺 と ご褒美 Bot
俺 と ご褒美 Bot俺 と ご褒美 Bot
俺 と ご褒美 Bot
 
[db tech showcase Tokyo 2017] E35: 12台でやってみた!DWHソフトウェアアプライアンス Db2 Warehouse ~...
[db tech showcase Tokyo 2017] E35: 12台でやってみた!DWHソフトウェアアプライアンス Db2 Warehouse ~...[db tech showcase Tokyo 2017] E35: 12台でやってみた!DWHソフトウェアアプライアンス Db2 Warehouse ~...
[db tech showcase Tokyo 2017] E35: 12台でやってみた!DWHソフトウェアアプライアンス Db2 Warehouse ~...
 
C language Sem 01
C language Sem 01C language Sem 01
C language Sem 01
 
コミュニケーションソフトウェアを創るということ
コミュニケーションソフトウェアを創るということコミュニケーションソフトウェアを創るということ
コミュニケーションソフトウェアを創るということ
 
01 idea table3.0
01 idea table3.001 idea table3.0
01 idea table3.0
 
Visual Studio による開発環境・プログラミングの進化
Visual Studio による開発環境・プログラミングの進化Visual Studio による開発環境・プログラミングの進化
Visual Studio による開発環境・プログラミングの進化
 
X dev 20121106
X dev 20121106X dev 20121106
X dev 20121106
 

Plus de Hiroshi KURABAYASHI

Salary and pricing analysis in Vietnam Lab. Type development
Salary and pricing analysis in Vietnam Lab. Type developmentSalary and pricing analysis in Vietnam Lab. Type development
Salary and pricing analysis in Vietnam Lab. Type developmentHiroshi KURABAYASHI
 
Sách ma thuật IT - Grimoire du IT
Sách ma thuật IT - Grimoire du ITSách ma thuật IT - Grimoire du IT
Sách ma thuật IT - Grimoire du ITHiroshi KURABAYASHI
 
Đồ Họa Cá Nhân ~Personal Canvas~
Đồ Họa Cá Nhân ~Personal Canvas~Đồ Họa Cá Nhân ~Personal Canvas~
Đồ Họa Cá Nhân ~Personal Canvas~Hiroshi KURABAYASHI
 
「らしく」ハタラコウ。〜 雲の向こう側
「らしく」ハタラコウ。〜 雲の向こう側「らしく」ハタラコウ。〜 雲の向こう側
「らしく」ハタラコウ。〜 雲の向こう側Hiroshi KURABAYASHI
 
「らしく」ハタラコウ。 ChatWork x クラウドソーシング
「らしく」ハタラコウ。 ChatWork x クラウドソーシング「らしく」ハタラコウ。 ChatWork x クラウドソーシング
「らしく」ハタラコウ。 ChatWork x クラウドソーシングHiroshi KURABAYASHI
 
たぶん大規模組織でのChatWork活用
たぶん大規模組織でのChatWork活用たぶん大規模組織でのChatWork活用
たぶん大規模組織でのChatWork活用Hiroshi KURABAYASHI
 

Plus de Hiroshi KURABAYASHI (12)

Salary and pricing analysis in Vietnam Lab. Type development
Salary and pricing analysis in Vietnam Lab. Type developmentSalary and pricing analysis in Vietnam Lab. Type development
Salary and pricing analysis in Vietnam Lab. Type development
 
ChatWork Cafe vol.0@HCMC
ChatWork Cafe vol.0@HCMCChatWork Cafe vol.0@HCMC
ChatWork Cafe vol.0@HCMC
 
Sách ma thuật IT - Grimoire du IT
Sách ma thuật IT - Grimoire du ITSách ma thuật IT - Grimoire du IT
Sách ma thuật IT - Grimoire du IT
 
Đồ Họa Cá Nhân ~Personal Canvas~
Đồ Họa Cá Nhân ~Personal Canvas~Đồ Họa Cá Nhân ~Personal Canvas~
Đồ Họa Cá Nhân ~Personal Canvas~
 
Agile in Offshore development
Agile in Offshore developmentAgile in Offshore development
Agile in Offshore development
 
「らしく」ハタラコウ。〜 雲の向こう側
「らしく」ハタラコウ。〜 雲の向こう側「らしく」ハタラコウ。〜 雲の向こう側
「らしく」ハタラコウ。〜 雲の向こう側
 
「らしく」ハタラコウ。 ChatWork x クラウドソーシング
「らしく」ハタラコウ。 ChatWork x クラウドソーシング「らしく」ハタラコウ。 ChatWork x クラウドソーシング
「らしく」ハタラコウ。 ChatWork x クラウドソーシング
 
たぶん大規模組織でのChatWork活用
たぶん大規模組織でのChatWork活用たぶん大規模組織でのChatWork活用
たぶん大規模組織でのChatWork活用
 
Post-it better way!
Post-it better way!Post-it better way!
Post-it better way!
 
20110928 queensenglish
20110928 queensenglish20110928 queensenglish
20110928 queensenglish
 
20110924 umbr
20110924 umbr20110924 umbr
20110924 umbr
 
LT 20110825 bdc
LT 20110825 bdcLT 20110825 bdc
LT 20110825 bdc
 

Dernier

論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video UnderstandingToru Tamaki
 
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsUtilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsWSO2
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。iPride Co., Ltd.
 
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Gamesatsushi061452
 
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...Toru Tamaki
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。iPride Co., Ltd.
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。iPride Co., Ltd.
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイスCRI Japan, Inc.
 
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptxsn679259
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルCRI Japan, Inc.
 

Dernier (10)

論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
 
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsUtilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native Integrations
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
 
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 

IT魔導の書 ~ Grimoire du IT

  • 1. GRIMOIRE du IT Eloim, Essaim, frugativi et appellavi First Edition - 07/12/2017 written by anh kura (LFTV) エロイム, エッサイム, 我は求め訴えたり IT 魔導の書
  • 2. Summary & Index IT 業界では⽇々数多くの呪⽂が唱えられ ている。多くはオリジナルの英語がその まま使われる。これは⽇本においても同 様であるが、⽇本では正しく発⾳され ず、カタカナ英語となっており、オリジ ナルとはかけ離れた呪⽂になっているこ とが多い。 本書は、⽇系 IT 企業においてコミュニ ケーターを⽬指す⼈向けに、必要最低限 となる⽇本語の呪⽂を浅く解説した⼊⾨ 書である。 内容に関して多少偏りがあることは認識 いる。 Index - Internet
 (インターネット) - Development Process
 (開発⼯程) - Inside of Server
 (サーバーの中⾝) - Implementation
 (実装) - Test
 (テスト) - Server & Security
 (サーバーとセキュリティ)
  • 4. How Internet works? Device(デバイス): - PC(ピーシー) - Smart Phone(スマホ) - Tablet(タブレット) Browser(ブラウザー): - IE(アイイー) - Chrome(クローム) - Firefox(ファイヤー・フォックス) Access(アクセス) Response(レスポンス・応答) User/Consumer
 (ユーザー/コンシューマー) Service (サービス) SNS(エスエヌエス) Blog(ブログ) Search Engine(検索エンジン) - Google(グーグル)
 - Yahoo!(ヤフー) → ググる(Search by google) Chat tool(チャットツール) - ChatWork(チャットワーク)
 - Slack(スラック) etc.
  • 5. How Internet works?(DNS) User/Consumer
 (ユーザー/コンシューマー) Name Server (ネーム・サーバー) Server (サーバー) www.homes.co.jp lifull-tech.vn www.homes.co.jp = 123.223.111.xxxlifull-tech.vn = xxx.xxx.xxx.xxx lifull-tech.vn server xxx.xxx.xxx.xxx HOME’S server xxx.xxx.xxx.xxx Domain(ドメイン) URL(ユーアールエル) URL(ユーアールアイ) IP Address(アイピーアドレス) Global IP(グローバルアイピー) インターネットの住所は数字の羅列。 ⾜らなくなって困ってる。 DNS(ディーエヌエス)? Domain Name System(ドメイン・ネーム・システム) Address book of Internet. インターネットのアドレス帳のこと
  • 6. How Internet works?(hosts) Name Server (ネーム・サーバー) anhkura.vn No. Idk xxx.xxx.xxx.xxxHosts file (ホスツ) Okay. Got it! Hosts(ホスツ)ファイルとは、アドレス帳のことで、IP アドレ スと呼び⽅を登録しておくと、設定した呼び⽅で、サーバーを 呼び出すことができるようになる。個⼈の PC かサーバー上で 設定する。 例えば、個⼈の開発環境は社内だけで分かれば良いので、 Global な Name Server に登録する必要はなく(しない⽅が 良く)、Hosts に設定するのが⼀般的である。 Mac(マック) や Ubuntu(ウブンチュ)などの Unix(ユニック ス)/Linux(リナックス)系OSの場合は、/etc/hosts にあり、 Windows の場合は、バージョンによって異なるが Windows/ system32/drivers/etc/hosts などにある。 Hosts に記載がある場合は、Name Server より優先される。 Name(ネーム)がひけない 名前解決できない などと⾔う
  • 8. Development Process Marketing
 (マーケティング/市場調査) Planning
 (プランニング/企画/
 要件定義) Sales/Consultant
 (営業/コンサル) Design
 (デザイン) Development
 (開発) Test
 (テスト) UAT: User Acceptant Test
 (受け⼊れテスト) Launch/Release/Deployment (ローンチ/リリース/デプロイ) Customer(お客様) Development Team(開発チーム) Upstream Process (上流工程) UT: Unit Test(ユニットテスト) Integration Test(結合テスト) Performance Test(パフォーマンステスト) Security Test(セキュリティテスト・脆弱性テスト)
  • 9. Various kind of process management Flow type Methodology
 (メソドロジー/⼿法) 考え⽅ Water fall
 (ウォーターフォール) PMBOK(ピンボック) プロセスごとに役割分担が決ま っており、完了させたら、次へ 次へと渡していく。仕様書が完 璧な場合うまくいく。 Agile
 (アジャイル) Scrum(スクラム) Lean(リーン) XP: eXtrem Programming
 (エックスピー), Kanban(カンバン) etc 細かくフィードバックを受けな がら認識の齟齬がないように、 より意味のあるプロダクトが作 れるように進める。 ⽇本は契約の⽂化である点と、 発注側の負担が⼤きいのであま りやりたがらない。
  • 10. Roles(ロール/役割) PO: Product Owner
 PM: Project Manager (ピーオー/ピーエム) プロジェクトの責任者。 お客様であることがほとんど。 お⾦を出す意思決定をできる⼈で ない場合は、注意が必要。 Designer
 (デザイナー) デザインする⼈。⽇本では html, css まで書く場合が多い html, css だけ書く⼈は、Coder
 (コーダー)と呼ばれることがある。 ⽇本にだけある特殊な職種。 Developer
 (デベロッパー) Frontend Engineer
 (フロントエンドエンジニア) プログラムを書く⼈。 アプリケーションを作る。 Server side Engineer
 (サーバーサイドエンジニア) Infrastructure Engineer
 (インフラエンジニア) Network Engineer
 (ネットワークエンジニア) サーバの設定等をやる⼈。 ベトナムにはあんまりいない。 Tester
 (テスター) QA: Quality Assurance
 (キューエー) QC: Quality Control
 (キューシー) テストしたり、テストを設計したり、 プロダクトの品質を管理する⼈。 Scrum Master
 (スクラムマスター) Scrum(スクラム)でやる場合の
 PM みたいな⼈。 PO/PM との違いは⼈事権以外の 意思決定権がないことなど。
  • 11. Keywords of Scrum Keyword (キーワード) Description
 (意味) Keyword (キーワード) Description
 (意味) practice (プラクティス) Scrum の中で⾏うイベント Ticket
 (チケット) タスク管理ツールなどで管理されるタ スク planning (プランニング) 計画 Kanban/Scrum Board
 (カンバン/スクラムボード) タスクを可視化する表 Sprint/Iteration (スプリント/イテレーション) 開発期間全体を⼀定期間ごとに区切っ て開発をする区切りのこと Velocity
 (ベロシティ) チームの開発速度 Daily Scrum/Daily Stand up (デイリースクラム/デイリースタンド アップ) 朝会 Pair Programming
 (ペアプロ) スキルの共有等の⽬的で、
 2⼈1組でプログラミングを⾏う。 Review
 (レビュー) プロダクトオーナーにデモを⾏い、フ ィードバックを受ける CI/CD: Continuous Integration/ Delivery
 (シーアイ/シーディ) 継続してリリースするための仕組み化 のことを⾔うことが多い Retrospective
 (レトロスペクティブ) プロセスの振り返り会。
 改善案を話し合う Product Backlog
 (プロダクトバックログ) 要件リスト
 プロダクトオーナーが管理 Priority
 (プライオリティ/優先順位) 優先順位。必ず優先順位順に作る。
  • 13. Programming Language (プログラミング⾔語) Type 例 Compiler Language
 (コンパイラ⾔語) Java(ジャバ), C(シー), C++(シープラプラ), C#(シーシャープ) etc Script Language (スクリプト⾔語) PHP(ピーエイチピー), Ruby(ルビー), JavaScript(ジャバスクリプト,ジャ バスク), Python(パイソン) etc. Functional Language (関数型⾔語) Haskel(ハスケル), Lisp(リスプ), Scala(スカラ), etc
  • 14. Web Server (ウェブサーバー) Web サーバーには、httpd(エイチティティピーディー, エイチティティピーデーモン) をインストール・設定する必要がある。 
 Apache(アパッチ), Nginx(エンジンエックス), Tomcat(トムキャット), Unicorn(ユ ニコーン)など⾊々なものがある。 virtual hosts, vhosts(バーチャルホスト, ブイホスツ)を設定し、リクエストを受けた場 合に、何をどのように実⾏させるかなどを設定する。他にも⾊々設定する。
  • 15. OS (オーエス) PC のローカルマシンの OS としてポピュラーなのは、Windows(ウィンドウズ), Mac(マック), Ubuntu (ウブンチュ)あたりで、スマートフォンの場合は、Android(ア ンドロイド), iOS (アイオーエス)など。 サーバー⽤としては、Unix(ユニックス), Linux(リナックス) 系の OS が多く、Linux の Distribution として、AmazonLinux(アマゾンリナックス), CentOS(セントオーエ ス), Redhat Linux(レッドハットリナックス) などなど⾊々なものがある。それぞれ違 いがあり、⽤途によって使い分けるが、まぁ AmazonLinux で良いかという⾵潮があ ることは否めない。 サーバー⽤の OS には基本的に GUI (ジーユーアイ, Graphical User Interface) がな く、デスクトップをマウスで操作するようなことはせず、コマンドを打って作業す る。コマンドを打って作業する画⾯のことを、CUI(シーユーアイ, Character User Interface)と呼んだり、CLI(シーエルアイ, Command Line Interface)コマンドを打 つ画⾯(アプリ)のことを Prompt(プロンプト)とか Terminal (ターミナル)などと呼ん だりするが、⽬に優しく⿊背景に設定する⼈が多い。以前、営業の⼈に「⿊い画⾯を 開いている時は話しかけないようにしている」などと⾔われたことがあり、反省し た。
  • 18. Stage(ステージ) 開発の状態、進捗に応じて確認する環境を切り替える。最終的には本番環境へのリリースとなる。 上位サーバーへのリソースの配置を、Deploy(デプロイ) などと⾔う。 Live, Production(ライブ, プロダクション)環境。本番環境。 Pool(プール)環境。リリース直前の Production 環境と全く同じ構成の環境。 Staging(ステージング)環境とも⾔う。最終的なテストを⾏う Backstage(バックステージ)環境。今回リリースする対象のファイル等のみがアッ プされたテスト環境。ない場合もある。 Current(カレント)環境。各チームが開発中のものが集められたテスト環境。git を 使う場合、あまり必要がない。 Unit(ユニット)環境。個⼈の開発環境 ステージの例)
  • 19. Version Control (バージョン管理) 複数⼈のチームで開発する場合、誰がいつ何を変更したのかの履歴を管理する必要が ある。リリースしたらバグがあったので、急遽前のバージョンに戻したいなどの状況 も考えられる。その際に利⽤するのがバージョン管理システムで、CSV(シーエスブ イ), SVN(エスブイエヌ), Git(ギット)などがある。現在主流は、Git だが、SVN もま だまだ残っている。 Git は⾃分でシステムを⽤意することも出来るが、便利なツールを統合したサービスを 利⽤するのが⼀般的で、代表的なものとして、github(ギットハブ), bitbucket(ビット バケット), gitlab(ギットラブ・ギットラボ)などがある。 github のマスコットキャラクターは、Octocat(オクトキャット)と呼ばれており、可 愛い。
  • 20. Version Control(バージョン管理) git remote [app repository] master branch feature branch1 (remote) feature branch2 feature branch1 (local) feature branch1 commit push checkout branch を切る merge/ PR アプリケーションごとに repository(リポジトリー) を作成し、defalut になっている master ブランチや develop ブランチなどから、開発⽤の branch(ブラ ンチ)を作成(ブランチを切る)して、開発を⾏う。基 本的には、ローカル環境にcheckout(チェックアウ ト)/clone(クローン) して、ローカルでの開発を進 め、commit(コミット) したり push(プッシュ) した りする。サーバー上のものを remote(リモート)、⼿ 元のものを Local(ローカル)と⾔う。 リリースする状態になった場合、master/develop ブランチに merge(マージ) する。merge する際に 直接 merge する場合と、承認を経てから merge す る Pull request(プルリクエスト・プルリク・RP )を する場合がある。git を使った開発フローとして、 git-flow, github-flow などがあり、どのような⽅法 を取るかは、規模や状況によって変わってくる。 同じ箇所を修正してバッティングすることを、 Conflict (コンフリクト)と⾔う。コンフリクトした ら泣きながら修正する。
  • 21. Coding Standard (コーディング規約) 複数⼈で開発をする場合、体裁が整っていないとソースコードは読みづらいので、書き⽅ を統⼀します。コーディングのガイドラインのことを Coding Standard(コーディング規 約)と呼び、⼀般的なものもあれば、独⾃で決めたものもあり、様々です。例えば PHP で あれば、PSR-2(ピースエアールツー)などが有名です。 基本的に規約に則った書き⽅を⼼がけるべきですが、個⼈の⼼がけに依存すると定着しな いことが多いため、システムで守らせるようにするのがスマートです。PHP であれば、 php-cs-fixer(ピーエイチピーシーエスフィクサー)、Ruby であれば rubocop(ルボコッ プ・ロボコップ)などを利⽤するのが良いです。コーディング規約に限らず、ソースコー ドをツールで解析することを、Static Code Analysis(静的コード解析)と呼びます。 コーディング規約の範疇なのか範疇外なのか微妙なところですが、コードを読みやすくす るために⽇本で広く知られており、「これくらい⾔わなくてもやって当然」と思われてい るのが、The Art of readable code(リーダブルコード)という書籍です。⼤事なことは、 どのようにコードを書くかについて共通認識を持つことです。それぞれが⾃⼰流にカスタ マイズしては意味がありません。
  • 22. Object-oriented (オブジェクト指向) Object-oriented Programming(オブジェクト指向, OOP)とは、オブジェクト同⼠の相互作⽤とし て、システムの振る舞いを捉える考え⽅のことで、Encapsulation(カプセル化)、, Composition, inherit and delegation(継承)、Polymorphism (ポリモーフィズム)といった特徴を持ちます。ナンノ コッチャ!まぁ、みんなで開発する時に、便利な考え⽅だと思っておけば良いです。 オブジェクト指向のベスト・プラクティスをまとめたものをDesign Pattern(デザインパターン)と呼 び、様々なパターンがあります。実際にデザインパターンを意識してコーディングできる⼈は多くはな いです。デザインパターンの中で最も有名なのが、MVC(エムブイシー) パターンです。Model(モデ ル)-View(ビュー)-Controller(コントローラー)と⼤きく3つの役割に分けて実装する⽅法で、多くの Framework (フレームワーク)に取り⼊れられています。 MVCフレームワークは、例えば… - PHP: ZendFramework(ゼンド), CakePHP(ケイク), Symfony(シンフォニー), Laravel(ララベル)…
 - Ruby: Ruby on Rails(RoR, レイルズ), Sinatra(シナトラ) - Java: Struts(ストラッツ) などなど。これらの View には、Template Engine(テンプレートエンジン)が採⽤されていることがほ とんどで、有名なところでは、Smarty(スマーティ), Twig(ツイグ、トゥイグ), Blade(ブレード)など があります。 近年の開発は、フレームワークを利⽤することが⼀般的であり、オブジェクト指向を理解したつもりに なってしまう⼈が多く、経験を積んでもスキルが伸びない原因の1つになっています。 理由は様々ですが、複雑になりすぎたコードや汚いコードのことを Spaghetti Code(スパゲッティ コード) と呼んだり、クソース, ウンコードなどと呼んだりします。
  • 24. Test(テスト) Test には⾊々な種類がある。⼤雑把に⾔えば、Unit Test(単体テスト)→ Integration Test(結合テスト)→System Test (システムテスト)→Acceptance Test(受け⼊れテスト) の順番で⾏われる。 まずは、要求を分析し、どのような Test View Point(テスト観点)でテストすべきかを考 え、スケジュールに落とし込む Test Planning(テスト計画)を⾏う。Test View Point に は、機能要件のテストだけでなく、⾮機能要件のテストもあり、例えば、Performance Test(パフォーマンステスト), Security Test(セキュリティテスト/脆弱性テスト)などがあ る。 要求に基づき、Test Spec/Test Case(テスト仕様書)を作成し、テストを実施する。 Test の中には、他の機能に影響が出ていないかを調べる Regression Test(リグレッション テスト, 回帰テスト)や、ざっと確認する Smoke Test(スモークテスト), ⼀通り機能を使っ てみる Walkthrough Test(ウォークスルーテスト), 特別情報を与えずユーザーとして使っ てみる Monkey Test(モンキーテスト)など⾊々なものがあり、必要に応じて使い分ける。 ISTQB(アイエスティキュービー, International Software Testing Qualification Boards) という団体があり、資格を発⾏している。テストにおいて国際的に通じる共通⾔語として ⼤変有益であり、LFTV においては、QA としての採⽤は ISTQB Foundation の資格を必 須とし、何となくテストしないようにしている。
  • 25. Test(テスト) Test 何? 誰がやる? Unit Test (ユニットテスト/単体テスト, UT) 関数やメソッド等の⼩さい単位での正しく動作するかのテス ト。開発者がテストコードを書く。 網羅率のことを Coverage(カバレッジ)と⾔う。 Developer Integration Test (インテグレーションテスト/結合テスト) 開発した機能が全体として正しく動作するかを検証する。 QA System Test
 (システムテスト) 本番環境とほぼ同じ環境で、全体として正しく動作するかを 検証する。 QA User Acceptance Test
 (アクセプタンステスト/受け⼊れテスト, UAT) 発注者の本来の⽬的・意図通りに動作しているかを発注者が 検証する Customer Requirement Analysis (要求分析) Requirement Definition (要件定義) Basic Design (基本設計) Specific Design (詳細設計) Coding (コーディング) Code Review (コードレビュー) Unit Test (単体テスト) Integration Test (結合テスト) System Test (システムテスト) Acceptance Test (受け⼊れテスト)
  • 26. Automation Test (⾃動テスト) 何度もやるテストは⾃動化すべきである。CI/CD の観点からも⾃動化を積極的に進めるべき。 Dev. Servers Jenkins Web Hook Feed back Clone Push Static Code Analysis Unit Test UI Test Jenkins(ジェンキンス)が git のリポジトリ のイベント(push など)を Webhook(ウェ ブフック)などで監視し、静的コード解析や UT, Selenium (セレニウム)による UI の⾃ 動テスト, Jmeter(ジェイメーター) や Apache Bench(アパッチベンチ)などによ るパフォーマンステストなどなどを⾏い、 ChatWork や Slack といったチャットツー ルにフィードバックする。などの構成が例 として挙げられる。 どこまでやるかは担保すべき品質の定義次 第である。 github を利⽤する場合、多くのツールが Jenkins を介さなくても連携できるため、 その点で github のバリューは⾼い。お値 段も⾼い。 . . .
  • 28. Various kind of servers Server (サーバー) Cloud (クラウド) On Premise (オンプレミス/オンプレ) AWS (エーダブリューエス) heroku (ヘロク) Data Center (データセンター) Server Room (サーバールーム) 例えば、普段は10くらいでそんなにアクセスがないけど、クリスマスシーズンはアクセスが100倍くらい増え るというようなサービスの場合… オンプレの場合、クリスマスシーズンに対応できる分のサーバーを購⼊して、設置しておく必要がある。お⾦ がかかるし、本当にそれで⼤丈夫か確証はない。 クラウドサーバーの場合、クリスマスシーズンのみ必要な分だけ増やして、普段は10にしておくということが できる。無駄がない。 タイプ 例
  • 29. Various kind of access サーバーとの通信⽅法の種類のことをプロトコルと呼ぶ。サーバーはプロトコルごとに番号で指定された⼊り⼝を持っ ており、それをポートと呼ぶ。ssh 通信のことを22番通信と呼んだりもする。サーバー管理者は必要に応じて、ポート を開いたり閉じたり、番号を変えたりする。不⽤意に開いていると、いたずらされたり、ドロボウが⼊ってくる。通信 の制限のことを、Fire Wall(ファイヤーウォール)と呼ぶ。 通常はサービス単位でFire wallを設定するが、例えば中国の Great Fire Wall(グレートファイヤーウォール)のような、 Facebook や Twitter などの SNS への通信を国として制限している場合もある。 Protocol (プロトコル) Default Port
 (ポート) ⽤途 関連⽤語 http (エイチティティピー) 80 通常のブラウザアクセ ス https (エイチティティピーエス) 443 個⼈情報等を送信する 時に暗号化する SSL(エスエスエル)
 SSL通信, SSL証明書 FTP (エフティピー) 20, 21 ファイルをアップロー ド・ダウンロードする ssh (エスエスエイチ) 22 サーバに⼊って⾊々や る Command Line
 (コマンドライン)
 (cmd, cli) SMTP
 (エスエムティピー) 23 メール
  • 30. Fire Wall & Proxy Fire Wall は特定の相⼿からの通信を遮断したり、特定の相⼿ からの通信だけを許可したりします。 This is Hiroshi speaking. Can I talk to Ms. Hang?? Hiroshi san Hang san Fire Wall Hiroshi さんと話 してはいけません。 Nguyen san Nguyen さんとは OK です。 This is Nguyen speaking. Can I talk to Ms. Hang??
  • 31. Fire Wall & Proxy Fire Wall に通信をはじかれてしまう場合、別⼈になりすましてアクセスすることがあり ます。別⼈になりすますことを Proxy(プロクシー)を通すとか Proxy をさすとか表現し ます。(プロクシー → 串 → 刺す) Could you call Ms. Hang? Hiroshi san Hang san Fire Wall Hiroshi さんと話 してはいけません。 Nguyen san Nguyen さんとは OKです。 OK, I got it. This is Nguyen speaking. Can I talk to Ms. Hang?? Yes, I'm here.
  • 32. NAT(ナット) 個別に直接通信するのではなく、NAT(Nguyen Anh Tuan Network Address Transfer)サーバーを介して通 信するようにすることで、セキュリティを向上させることができます。Bastion(バッション/踏み台)サー バーと呼ぶこともあります。 ssh 通信を Bastion サーバー経由で⾏うことを多段ssh(ただんエスエスエイチ), ssh tunnel(エスエスエイ チ・トンネル), Port forward(ポート・フォワード)などという⾔葉を使って表現します。 NAT サーバーを経由する設定のことを Route Table(ルートテーブル)と呼びます。 セキュリティ⽬的ではありませんが、http/https のリクエストを⼀括で受けて、それぞれの Web サーバー に振り分ける⽬的で Proxy サーバーを設置することもあります。先程の Proxy との違いは、ユーザー側で はなく、サーバー側がなりすます点です。 Hiroshi san Hang sanFire Wall NAT Server (Nguyen san) Nguyen さんとだけ 話してください。
  • 33. Subnet(サブネット) Subnet(サブネット)とは、Network を⼩分けにしたものです。セキュリティのためであっ たり、役割のためであったりグルーピングしてあった⽅が何かと便利なことがあるので、 Subnet に分割します(本来の⽬的は違うけどいまは省略)。IP Address はインターネット 上の住所ですが、フロアくらいに思っておくと良いかも知れません。会社の受付があったり 来客⽤スペースがある Public なフロア、従業員が業務を⾏う Private なフロアなど。 IP Address 的には、以下のようになります。 Public Subnet Private Subnet Network xxx.xxx.xxx.xxx ネットワーク部 サブネット部 ホスト部
  • 34. NACL & SG Subnet に設定するセキュリティ設定のことを Network ACL(ネットワーク エーシーエル)とか、NACL(ナクル)と呼びます。Network Access Control Lists の略です。NACL では⼤雑把に許可する通信を設定します。 個別のサーバーにはそれぞれ個別に細かくセキュリティの設定をします。利⽤ しない Port を開けておくのは危ないので、必要な Port だけを開けるように 設定します。その設定は使い回しができるので、Security Group(セキュリ ティグループ)と呼ばれています。 NACL と SG では、⼊ってくるものと出て⾏くものに分けて設定を⾏います。 ⼊ってくるものを Inbound(インバウンド), 出ていくものを Outbound (アウ トバウンド)と呼びます。 Public Subnet Private Subnet NACL Security Group(SG) Inbound Outbound
  • 35. Availability Zone (アベイラビリティゾーン) NAT Web Server API Server XX server 全部同じところに置いておくと、何か問題が発⽣した時に困るので、別のと ころにバックアップを作り、⼿動/⾃動で切り替えます。 AWS では、⼤きく分けて Region(リージョン)とAvailability Zone(アベイラ ビリティ・ゾーン、AZ)の2種類の Zoning の考え⽅があります。Region は Tokyo とか Oregon とかサーバーが置いてある場所が全然違います。AZ は、同じ Region 内にありますが、それぞれがなるべく影響しないように設 置されています。 Region ごとに提供されるサービスが異なります。 AWS で現在(1/12/2017)提供されているリージョンは、 North Virginia, Ohio, North Carolina, Oregon, Canada, Ireland, Frankfurt, London, Tokyo, Seoul, Singapore, Sydney, Mumbai, San Paulo で、最近中国から AWS は撤退・パートナー企業に譲渡されたので、Beijing Region は AWS としてのサービスからは外れました。 AZ: a AZ: c AZ AZ AZ Region AZ AZ AZ Region AZ AZ AZ Region Region & Availability Zone AZ: a
  • 36. Load Balancer (ロードバランサー) LB Web Server WEB Server WEB server ⼀度にたくさんのアクセスがあった場合、1台のサーバーでは処 理しきれなくなることがあります。その場合、同じ構成のサー バーを⽤意しておいて、リクエストを分散させて処理を⾏いま す。負荷分散と呼び、それを⾏うものを Load Balancer(ロード バランサー)と呼びます。AWS では、ELB(イーエルビー/Elastic Load Balancer) とか ALB(エーエルビー/Application Load Balancer)と呼ばれています。ALB は ELB の新しいバージョンな ので、今後 ELB を積極的に選択する理由はあまりありません が、AWS の LB は古くから ELB と呼ばれてきたので、ALB も ひっくるめて ELB と呼ぶことが多い気がします。 オンプレミスの場合、たくさんのアクセスを想定し、サーバーを ⽤意する必要がありますが、クラウドの場合、必要に応じて増や すことができます。サーバーを増やすことを Scale out(スケー ルアウト)と⾔い、ELB の機能で、ある⼀定の条件を超えたら⾃ 動で増やす Auto Scaling(オートスケーリング)というものがあ り、お財布に優しくなっています。Auto Scaling はサーバー郡 に対して設定できます(Auto Scaling Group)。 
 ⼀⽅で、サーバーの容量や処理能⼒⾃体を増強して処理を⾏う場 合もあり、これを Scale Up(スケールアップ)と呼びます。 トラフィックを振り分ける 同じ内容のサーバー 普段はないけど、状況に応じ てどんどん増やす/増える (スケールアウト)
  • 37. Various type of Servers タイプ ⽤途 例 メモ EC2 (イーシーツー/Elastic Compute Cloud) いわゆる普通のサーバ ー AMI(エーエムアイ/ Amazon Machin Image)から簡単に⽴ち 上げられる RDS (アールディーエス/ Relational Database Service) データベース Oracle, MySQL, PostgreSQL (オラクル, マイエスキ ューエル, ポスグレ) ElastiCache (エラスティキャッシュ) KVS(ケーブイエス/Key Value Store) キャッシュ Redis, Memcache (レディス, メムキャッ シュ) On Memory(オンメモ リー)のキャッシュ。ア クセスが速い。 S3 (エススリー/Simple Storage Service) File Storage
 (ファイルストレージ) ファイル置き場 S3の中にBucket(バケッ ト)と呼ばれる容れ物を 作って使う NoSQL (ノーエスキューエル) データベース MongoDB (モンゴデービー) それぞれのサーバー1台1台のことをInstance(インスタンス)と呼び(EC2インスタンスとか)、インスタン スごとにスペックを設定する。Small とか Large とか。
  • 38. Other services サービス名 ⽤途 メモ SES (エスイーエス/Simple Email Service) メール送信 オレゴンかバージニア。
 EC2インスタンス内に、 SendMail(センドメール)や Postfix(ポストフィックス)を建て ても良い KMS (ケーエムエス/Key Management Service) 暗号化キー IAM
 (アイアム/Identity and Access Management) アカウント 個別リソースへの権限設定をす る。個別のアカウントの他、 IAM Role と呼ばれるサーバーに 付与するものもある設置する Code Commit (コードコミット) バージョン管理 ソースコードのバージョン管理 ができる。IAM が必要。 VPC (ブイピーシー/Virtual Private Cloud) サーバー群をひとまとめにする 括りのこと VPC 同⼠を接続することを Peer Connect(ピアコネクト)と⾔ う。同⼀ Region 内で Private IP が被らない場合に接続できる
  • 39. Distribution Tool (ディストリビューションツール) 同じことをいちいち設定するのが⾯倒なので、設定ファイルを書いてコマンド等を実⾏して 簡単に再現できるようにする構成管理ツールのこと。設定の(半)⾃動配信。 VPC 全体の設定(ネットワーク設定など)を再現する場合は、CloudFormation(クラウド フォーメーション), 個別サーバーの設定(インストールやアプリケーション設定、ソースコード配置など)は、 Ansible(アンシブル)やChef(シェフ・チェフ)などを利⽤するのが⼀般的。 基本的には、xml(エックスエムエル) や yml(ヤムル・ワイエムエル), json(ジェイソン) 等 に設定を書く。Template(テンプレート)と⾔ったり、Playbook(プレイブック)と⾔った り、Cookbook, recipe(クックブック, レシピ)と⾔ったりする。
  • 40. よく⽿にする Command コマンド名 ⽤途 メモ yum
 (ユム・ヤム) インストールに使う rpm(アールピーエム), apt, apt- get(アプト, エーピーティ) など ⾊々 ソースコードからインストール する場合は、configure(コンフ ィギュア)して、make(メイク) する grep
 (グレップ) ⽂字列検索 nc
 (エヌシー, ネットキャット) ネットワークの疎通確認に使う 相⼿のPortを指定して通信でき るか調べる sudo (スドゥ, スドー) root(ルート) ユーザとして実⾏ する SuperUserDo その他に、AWS 専⽤のコマンド aws-cli などをインストールして使ったりすることもある。 コマンド名が、ちょっと頭おかしい感じなのは、きっと当時作った⼈が疲れてたからに違いない。
  • 41. ギットハブのマスターから開発ブランチ切って、そこで実装してく ださい。コーディング規約はピーエスアールツーで、レビューする の⾯倒なのでコミットする前にピーエイチピーシーエスフィクサー とかでチェックしてください。実装終わったらマスターにたいして プルリク投げてください。レビューしてオッケーならマスターに マージします。 マスターにマージされたらジェンキンスがウェブフックでセレニウ ムをキックして、カレント環境に対してテストするから、それが終 わったらそれも確認してくださいね。 全部問題なかったらステージング環境にアップして、再度テスト。 それも問題なかったらピーオーの承認もらって、プロダクション環 境にデプロイするから、デプロイ完了したら本番にアクセスして ざっとウォークスルーして、チャットワークで報告してください。 練習問題
  • 42. 倉林 寛⾄ - Kurabayashi Hiroshi CIO at LIFULL Tech Vietnam Co.,Ltd., HCMC @kura kura@lifull-tech.vn We are hiring! http://lifull-tech.vn オリジナルとなる英語単語の抑揚をなくし、短⾳を短くせず、⾳節ごとに語尾までハッキリ発⾳すると、⾃然なカタカナ英語になる。