SlideShare a Scribd company logo
非 エンジニアのための
これだけは押さえておきたい
WEBサービスの基礎技術
株式会社we-b 代表取締役 真子 就有
今日の最後にテストをします。
自己紹介&プロローグ
自己紹介
真子 就有

(まこ ゆきなり)


株式会社we-b 代表取締役

TECH::CAMP Founder
未経験から1ヶ月でサービスを作れるエンジニアになる

プログラミングキャンプ、TECH::CAMPを運営しています。
https://tech-camp.in/
これまで500名以上の

未経験者にプログラミングを教えてきました。
今は「エンジニアを育てる」

お仕事をさせて頂いておりますが、
過去は、1日16時間×週7でコードを

書き続ける数年間送っていました。
大企業の開発案件をこなしたこともあります。
プロデューサー、ディレクター、営業の方と

何度もやりとりする中で気づいたこと
エンジニアと非エンジニア
の間にある大きな壁
ディレクターAさん:

「仕様変更をお願いしたいけど、

どのくらい大変なのかわからないから頼みにくい…

的外れなことを言って怒らせてしまったらどうしよう」
エンジニアBさん:

「仕様変更頼まれたけど、技術的に難しいな…気持ち
分かってもらいたいけど、説明のしようがないから『無
理』と言うしかない。」
なぜ壁ができてしまうのか?
言語の壁と
まったく同じ
言語の壁 = 文化の壁 = 心の壁
①エンジニアが分かりやすく伝える

②非エンジニアが技術を学ぶ
壁をなくす方法:
エンジニア側も歩み寄りが必要です
しかし、IT業界にいる限り、

技術から離れることはできません
ネイティブ(エンジニア)になる必要はありませんが、

日常会話(基礎技術)くらいは分かるように

なることをおすすめします。
非エンジニアの皆様
さらにいうと、
今日をきっかけに自分でサービスを作れるよう

になってしまえば、良いなともおもっています。
さっそく勉強を始めていきましょう
今日の勉強会のゴール
WEBサービスに関連した基礎技術が

それぞれどのような役割を持っているか

イメージできるようになること
※本勉強会では、

「イメージをつかむ」ことが目的のため

 意図的に簡略化して説明している箇所があります。
目次
1. リクエストとレスポンス
2. サーバーとは何か
3. ウェブサイトの仕組み
4. サーバーサイドスクリプトとデータベース
目次
1. リクエストとレスポンス
2. サーバーとは何か
3. ウェブサイトの仕組み
4. サーバーサイドスクリプトとデータベース
ウェブサービスや、スマホアプリなど

インターネットを使ったサービスは、

サーバーと通信をしています。
※サーバーについては後程、詳しく解説します
PC、スマホからサーバーに情報を

要求することをリクエストと呼びます
http:://tech-camp.in

を見せて!
リクエストに応えて、サーバーからPC、スマホ側

に情報を返すことをレスポンスと呼びます。
OK!
サイトの情報渡すね!
ちなみに情報を要求する側は、クライアントサイド

情報を返す側をサーバーサイドと呼ばれます
「いろいろ要求するのはお客さん(クライアント)」

と覚えてしまいましょう。
クライアントサイド サーバーサイド
WEBサービスは、リクエストとレスポンスの

連続で成り立っています。
手紙のように往復でやりとりをするので

住所にあたるものが必要になります。
IPアドレス
IPアドレス:

54.248.81.201
住所:

渋谷区桜丘町29番24号
リクエストを送る際に必要なサーバーの住所
例えばfacebookのIPアドレスはこちらです
「31.13.82.1」

こんな数字を打ち込んだことはないですよね?
ちなみに「31.13.82.1」と打ち込んでも

ちゃんとアクセスできます。
http://facebook.com
よく知っているのはこっちだと思います。
ドメイン
数字の羅列であるIPアドレスに人間が分かりやすい

ようにつけられた紐付けられたIPアドレスの別名
31.13.82.1
わかりにくい!
facebook.com
わかりやすい!
この変換を名前解決と呼ぶ
リクエストを送る時、

http://facebook.comだけではIPアドレスがわからな
いので、名前解決を行なおうとします。
facebookのサーバー
http://facebook.comの

IPアドレスを知りたい!
IPアドレス:????
どうやって名前解決しているのか?
DNS(ドメインネームシステム)
インターネット上のドメイン名を管理するシステム。

複数のDNSサーバーによって成り立っている。
facebook.com?
54.248.81.201 DNSサーバー
普段は意識することはありませんが、

リクエストを送る前には、

まずドメインの名前解決をして

IPアドレスを取得しています。
ドメインを購入したことはあるでしょうか?
ドメインを買うと、サーバーのIPアドレスと

紐付ける設定を行ないます。
ドメイン IPアドレス
※サーバーを借りるとIPアドレスを教えてもらえます
復習:リクエストとレスポンス
•WEBサービスは、リクエストとレスポンスの

連続で成り立っている
•情報を要求する側は、クライアントサイド、情報を返
す側をサーバーサイドと呼ぶ
•IPアドレスはサーバーの住所をしめす数字の羅列
•ドメインは人間が分かりやすいようにつけられたIPア
ドレスの別名
目次
1. リクエストとレスポンス
2. サーバーとは何か
3. ウェブサイトの仕組み
4. サーバーサイドスクリプトとデータベース
先ほど、サーバーとはリクエストに対して

レスポンスを返すものだと学びました。
サーバーと聞くとなんだか凄いものだと

思ってる方は多いようです。
こんなごついイメージですか?
ざっくりいうと電源つけっぱで

ネットに繋がった画面のないパソコンです。
みなさんのお持ちのパソコンでも

設定をすればサーバーにできます。
必要な設定の1つがIPアドレスを固定する

ということです。
みなさんのお持ちのPCはIPアドレスが

コロコロ変わる住所不定の状況にあります。
✕
自分のPCがリクエストを

受けることはないので固定されたIPは必要ない
IPアドレスを固定するには、

プロバイダーと別途契約が必要です。
ところで、

みなさんのお持ちのパソコンの
OSはなんですか?
デスクトップOSの世界では

未だwindowsのシェアが圧倒的です。
Linux
2%
Mac
7%
Windows
92%
2015年2月デスクトップOSシェア/円グラフ - Net Applications報告
OSシェア:デスクトップ
ちなみにモバイルOSだとiOSとAndroidが二強です。

このあたりはご存知の方も多いと思います。
その他
11%
Android
36%
iOS
53%
OSシェア:モバイル/タブレット 全体 - NetMarketShare 2014年2月
OSシェア:モバイル/タブレット
サーバーも普通のPC・モバイル端末と

同じようにOSが入っています。
UnixというOSを聞いたことがあるでしょうか。

サーバー用OSのシェアではwindowsは少数派です。
その他
10%
Windows
32% Unix(Linux含む)
59%
参照URL: http://w3techs.com/technologies/details/os-unix/all/all
OSシェア:Webサーバー
Unix
ざっくり言うと、OSの元祖のようなもの

1969年にAT&Tのベル研究所で開発開始
http://ja.wikipedia.org/wiki/UNIX#/media/File:Unix_history-simple.svg
UNIX
さらにUnixの内訳をみると、

LinuxというOSが大半を占めています。
その他
10%
Windows
32% Unix(Linux含む)
59%
参照URL: http://w3techs.com/technologies/details/os-unix/all/all
Linux:60%

Unknown:40%
UNIXの内訳
Linux
UNIXをベースにしたOSの一種

サーバーOSとして世界的に大きなシェアを占めている

Linuxをベースとして様々なバージョンが存在している
■代表的なLinuxベースOS
例:CentOSのデスクトップ画面
WindowsとMac以外の画面を見る機会は少ないですが

LinuxOSもPCにインストールすれば普通に使えます。
少しややこしいですが、
サーバー用のOSはLinuxがよく使われていると
理解できれば大丈夫です。
なぜエンジニアは、Macを使っているのか?
「単純にかっこいい、つかいやすい。」

というのもありますが、
OSXがUNIXをベースとしたOSで、実際に動かすサー
バーの環境と近いというのも理由のひとつです
OSXはUnixがベースになっている

WindowsはUnixベースではありません
サーバーとOSについて学んだので

それに関連した話をします。
エンジニアが黒い画面を開いて

カタカタしてるのを見た事ありませんか?
表示されているのは得たいのしれない文字だけ
マウスやトラックパッドを使って直感的に

パソコンを操作できるのは今や当たり前です
昔のパソコンは文字を打つことしかできませんでした。
これはCUI(character-based user interface)と
呼ばれます。
クリックだけで誰もが使える

今のGUI(グラフィカルユーザーインターフェイス)を

普及させようと推し進めたのは、

故スティーブジョブズ氏だったりします。
エンジニアはいつも黒い文字だけの画面を

開いている理由は、開発はCUIを中心に行なうこ
とが多いからです。
すごい勢いでタイピングしてるように見せて、

実はただフォルダを移動してるだけだったりします。
復習:サーバーとは何か
• サーバーは特定のリクエストに対してレスポンスを
返す電源ネットつけっぱのコンピューター
• サーバーのOSはLinuxが使われていることが多い
• 直感的にマウス等で操作ができるGUIに対し、開発
はコマンド操作のみのCUIが中心である
目次
1. リクエストとレスポンス
2. サーバーとは何か
3. ウェブサイトの仕組み
4. サーバーサイドスクリプトとデータベース
みなさんは、

ブラウザを使って多くのウェブサイトを

見ていると思います。
ウェブサイトの画面は

どのような技術で表示されているのか

学んでいきましょう。
HTML
ウェブページを作成するために開発された言語。

文書の構造を明確にしたり文書の中に画像や動画を配
置できる。
HTMLファイル ブラウザの画面
世の中のあらゆるウェブサイトは

HTMLで書かれています。
こちらはTECH::CAMPのウェブサイトです

HTMLを表示するとこのようになります。

しかし、注意すべき点としては

HTMLはあくまでサイトの文章、画像の構造を

決めるためのものだということです。
いわゆるデザインに関する情報は

CSSという言語で指定していきます
CSS
ウェブページのスタイル(見た目)を指定するための言
語です。文章構造とデザインを切り分けることができ
ます。
CSSファイル
HTMLファイル
実行結果
見た目に関する情報はCSSで

まとめて管理することができます。

例えばウェブサイトの見出しの色だけ変えたい時、
HTMLが見た目の情報を持っていると、

全てを編集しないといけないので骨が折れます。
修正 修正 修正
CSSでまとめて管理していると

1つのファイルを編集するだけで済みます

修正
ウェブサイトをつくりたいとおもったら、サーバーに
HTMLとCSSファイルをアップロードしておきます。
アップロード
レスポンスでHTMLファイルとCSSファイルを

返すことでウェブページを表示することができます。
復習:ウェブサイトの仕組み
• HTMLはウェブページを制作するための言語で、文
章の構造を決めることができる。
• CSSは、ウェブページのスタイル(見た目)を指定す
ることができる
• レスポンスでHTMLとCSSを返すことでウェブペー
ジを表示することができる

目次
1. リクエストとレスポンス
2. サーバーとは何か
3. ウェブサイトの仕組み
4. サーバーサイドスクリプトとデータベース
次に、サーバーがリクエストを

受け取ったときの処理について考えていきます。
http:://tech-camp.in

を見せて!
最後はレスポンスを

返すことがゴールです
レスポンス
OK!
サイトの情報渡すね!
サーバー内部でどんなことが

行われているか見ていきましょう!
あらゆるプログラムは、先ほど解説した

LinuxOSの上で動作します
リクエスト
レスポンス
ここにただHTMLファイルを置くだけでも

ウェブサイトは作れます
リクエスト
レスポンス
そのかわり、いつ見ても

まったく同じページが表示されます。
ただのブログなら良いかもしれませんが

サービスをつくることはできません。
サービスをつくるには、

①データを保存する仕組み

②サービスの仕様を反映したロジック

が必要です。
サーバーサイドスクリプト

(ruby/java/PHP)
データベース
ロジックはサーバーサイドスクリプト、

データの保存はデータベースが担当します。
リクエスト
レスポンス
データベースから解説していきます
サーバーサイドスクリプト

(ruby/java/PHP)
データベース
リクエスト
レスポンス
facebookのようなウェブサービスには

多くの情報がのっています。
これらのデータを保存しておく場所が必要です。
データベース
データを保存するシステム。通常エクセルのような

表形式で保存され、1つの表をテーブルと呼ぶ。
id 名前 性別 年齢 住所
1 真子 男性 25 東京
2 木村 女性 21 神奈
3 鈴木 男性 22 栃木
4 小林 男性 23 群馬
ユーザーテーブル
id 本文 日時 投稿者id
1 おはよう 14/1/1 1
2 こんにちは 14/1/2 2
3 おやすみ 14/1/3 3
4 さよなら 14/1/4 4
投稿テーブル
データベースを操作するための言語も存在します
SQL(エスキューエル)
データベースを操作するための言語。

テーブルの読み出し、追加、更新などの操作ができる
id 名前 性別 年齢 住所
1 真子 男性 25 東京
2 木村 女性 21 神奈
3 鈴木 男性 22 栃木
SELECT * FROM USERS WHERE ID = 1;
例:ユーザーテーブルからIDが1のレコード(列)を取り出す
次にサーバーサイドスクリプトについて説明します
サーバーサイドスクリプト

(ruby/java/PHP)
データベース
リクエスト
レスポンス
データベースはただデータが

保存されているだけなので、

それだけでサービスをつくることはできません。
サービスの仕様にもとづいたロジックや

実際に返すHTMLの情報をプログラムしておく

必要があります。
サーバーサイドスクリプト
Ruby、Java、PHPを始めとするサーバー

での処理を担うプログラム。これらを用いてロジック

を書くことで動的なアプリケーションを作成できる
サーバーサイドスクリプトは、必要に応じて

SQLを用いてデータベースから情報を取得します
サーバーサイドスクリプト

(Ruby/Java/PHP)
データベース
SELECT * FROM USERS 

WHERE ID = 1;
サーバーサイドサイドスクリプトは、データベースから
取得したデータを利用して HTML/CSS を生成します。
サーバーサイドスクリプト

( Ruby / Java / PHP )
データベースから取得したデータ
Ruby、PHP、Javaなど複数のサーバーサイドス
クリプトの言語がありますが、書き方が違うだけ
で役割は変わりありません。
サーバーサイドスクリプト

(Ruby/Java/PHP)
データベース
最後は、サーバーからクライアントサイドに

HTML/CSSを返して終了です。
リクエスト
レスポンス
ブラウザが理解できるのは HTML/CSS だけです。

データベースやサーバーサイドスクリプトは、ブラ
ウザとは全く関係ありません。
復習:

サーバーサイドスクリプトと データベース
• データベースは、データの保存するシステムで

テーブルとよばれる表形式で保存される
• SQLはデータベースを操作するための言語
• サーバーサイドスクリプト(Ruby、Java、PHP等)は

ウェブサービスのロジックを担当する
• サーバーサイドスクリプトは、データベースから必要な

データを取得する

おまけ
ライブコーディングによる

Rubyプログラミング基礎講座
最後にTECH::CAMPについて

ご紹介させてください。
https://tech-camp.in/
TECH::CAMPとは?
未経験から最短1ヶ月でサービスを作れるエンジニア
を育てるプログラミング学習キャンプです。
未経験から急成長 短期集中キャンプ いつでも質問可能
TECH::CAMPで急成長できる理由
土日祝日含む12∼24時で
即疑問解消する
手厚い質問サポート
×
わかりやすさにこだわった
完全オリジナルの
オンライン学習システム
オリジナル学習システム TECH::MASTER
Ruby HTML・CSS Ruby on Rails
わかりやすさにこだわり抜き、既に900回以上の
アップデートを重ねています。用語集や練習問題も
充実、他に教材を用意する必要はありません
12時∼24時まで質問し放題の質問サポート体制
桜丘のキャンプでメンターが質問に即回答
します。オフィスは土日を含め12時∼2
4時まで開放
キャンプで直接質問 オンライン質問対応
自宅や職場で学習していても画面共有し
ながらメンターに質問する事ができま
す。オンラインは土日を含め12時∼2
4時まで受付。
学習コース①:WEBアプリケーションコース
124
Ruby on Rails を中心に、Webアプリケーションを
つくるために必要な技術力を身につけます。
Ruby & Ruby on Rails
Rubyは近年で最も伸びている
プログラミング言語の1つです。
世界的なフレームワークRuby
On Railsを使いWEBアプリケー
ション開発を学びます。
ソースコード管理Git
Gitはプログラマーにとって
必須のソースコード管理ツール
です。Gitを使いチーム開発を
どのように行っていくかも
学んで頂きます。
HTML5 & CSS3
SQL
Webブラウザの表示で必要な
マークアップ言語の基礎です。
モバイル、タブレッドあらゆる
デバイスでも美しくに描画できる
コーディング技術を身につけます。
SQLはデータベースを扱うため
の言語で、データベースを
絡めたアプリケーションを
構築するには必須の知識です。
学習コース②:iPhoneアプリコース
125
Swift・Xcodeを中心にiPhoneアプリをリリースする
ために必要な技術力を身につけます。
iPhoneアプリコースは5月30日よりスタート予定(初回は招待制)
実施予定と参加要項
■次回実施
5/30 ∼ 6/30 ※締め切り5月24日(日)18時
5/30(土)夕方にキックオフ会を予定
■参加要項
• 期間内に合計100時間以上、学習時間を確保できる方

(受講期間は1ヶ月か2ヶ月をお選びいただけます。)
• Mac(PC)を持参できる方

※月額5000円(税抜)でMacのレンタルを行っています
• キャンプ終了後も継続的に学習を続け、技術を活かして活躍してい
く意志のある方

復習テスト!!
全問正解すると
TECH::CAMPノート
もしくはペン
お好きなほうを
プレゼント!!
サーバーのOSは ??? が
使われていることが多い
B:RelaxA:Linux
サーバーの住所をしめす数字の
羅列のことを ?? と呼ぶ
B:ITアドレスA:IPアドレス
開発はコマンド操作のみの
?? が中心である
B:CUIA:GUI
データベースを操作するための
言語は ??? である。
B:SSLA:SQL
次のRubyコードの出力結果は?
B:8A:4
本日はありがとうございました。

More Related Content

非エンジニアのためのこれだけは押さえておきたいWEBサービスの基礎技術