66
ゆるべん Webアプリ開発概要 Ver. 1.0 2013/1/27 @yktmnb http://wooven.org/

ゆるべん Webアプリ開発概要 20130127

  • Upload
    y

  • View
    3.059

  • Download
    2

Embed Size (px)

Citation preview

Page 1: ゆるべん Webアプリ開発概要 20130127

ゆるべんWebアプリ開発概要

Ver. 1.02013/1/27@yktmnb

http://wooven.org/

Page 2: ゆるべん Webアプリ開発概要 20130127

Y (@yktmnb)

SE (System Entertainer)

http://yktmnb.b.sourceforge.jp/

道産子(札幌系)、東京住まい

Profile

2

Page 3: ゆるべん Webアプリ開発概要 20130127

「Webアプリケーションって、どうやって動いてるの?」について、できるだけ簡単に説明することを目的とした資料です。

1時間程度で、なんとなく分かってもらうことが目的です。まずはスタート地点に立つ!

特定の開発言語や開発手法に依存しないことを前提としています。

About

3

Page 4: ゆるべん Webアプリ開発概要 20130127

•プログラムを書いたことのある人• Web全般の基礎知識(HTMLとか、

JavaScriptとか)を知っていて、これからWebアプリケーションを作ってみたい人

•関連キーワード(知識体系)を知りたい人

Target

4

Page 5: ゆるべん Webアプリ開発概要 20130127

• Webアプリの動く仕組みがざっくりわかる

• Webアプリを動かしてみたくなる

•何が分からないのか分かるようになる

Goal

5

Page 6: ゆるべん Webアプリ開発概要 20130127

Index

• Service

• Internet

• Cloud

• Database

• How to

6

Page 7: ゆるべん Webアプリ開発概要 20130127

Service

Page 8: ゆるべん Webアプリ開発概要 20130127

•「サービス」って経済用語• 第一次産業(農業、林業、漁業、...)でも、第二次産業(製造業、建築業、工業、...)でもない「第三次産業」が扱う「商品」のこと

(例)理美容、不動産、飲食、旅行、金融、運送、エンタメ、教育、医療、...

• 基本的には「サービス」=「形が残らない」

• 要は、相手の要求を満足してあげられたら、なんでも「サービス」と呼べる

What’s Service ?

8

Page 9: ゆるべん Webアプリ開発概要 20130127

とりあえず・・・

「サービス」と聞いたら「何かしてくれそう!」と思うことにしよう

• ちなみに「有償」か「無償」はサービス次第

What’s Service ?

9

Page 10: ゆるべん Webアプリ開発概要 20130127

「サービス」にはサービスごとに提供ルールがあり、お客はこのルールに従います。(例)吉野家の場合:店に入る→席に座る→「牛丼つゆだくだくスプーン玉」→商品が出てくる→食う→席でお会計→店を出る

(例)松屋の場合 :店に入る→食券を買う→席に座る→食券を渡す→商品が出てくる→食う→無言で店を出る

• このサービスごとの提供ルール(決まりごと)を「プロトコル」と呼びます。

• なので、松屋で店に入るなり席に座って「牛丼」とか言ってはいけない(プロトコルエラー)

What’s Service ?

10

Page 11: ゆるべん Webアプリ開発概要 20130127

「サービス」を提供してくれる人/モノのことを「サーバ(Server)」と呼ぶことにしよう。

(例)ビールサーバ・・・ビール(というサービス)を提供してくれるモノ

What’s Server ?

11

Page 12: ゆるべん Webアプリ開発概要 20130127

「サービス」を利用する人/モノのことを「クライアント(Client)」あるいは「ユーザ(User)」と呼ぶことにしよう。

What’s Client ?

12

クライアント(客)

サーバ(すき家)

注文「牛丼、玉」

商品「たまごの付いた牛丼」

Page 13: ゆるべん Webアプリ開発概要 20130127

•サービス

•プロトコル

•クライアント/サーバ

Remember me !

13

Page 14: ゆるべん Webアプリ開発概要 20130127

Internet

Page 15: ゆるべん Webアプリ開発概要 20130127

•(参考)ウェブの進化• http://www.evolutionoftheweb.com/?hl=ja

History

15

Page 16: ゆるべん Webアプリ開発概要 20130127

Browser

16

Page 17: ゆるべん Webアプリ開発概要 20130127

Browser

17

•URL...?•HTTP...?

•HTML...?•CSS...?•JavaScript...?

Page 18: ゆるべん Webアプリ開発概要 20130127

•URI (Uniform Resource Identifier)

•HTTP (Hyper Text Transfer Protocol)

•HTML(Hyper Text Markup Language)

World Wide Web

18 Mapping the internet | nicolasrapp.comhttp://nicolasrapp.com/?p=1180

Page 19: ゆるべん Webアプリ開発概要 20130127

•URI 「お店の住所」

•HTTP 「注文のルール(プロトコル)」

•HTML「商品」

World Wide Web

19 Mapping the internet | nicolasrapp.comhttp://nicolasrapp.com/?p=1180

Page 20: ゆるべん Webアプリ開発概要 20130127

World Wide Web

20

Webブラウザ(クライアント)

Google社のWebサーバ

① URL は 「http://www.google.co.jp/」

カタカタカタカタ...ターン!

※実際にはDNSサーバを経由しているが、ここでは割愛

②何かください(HTTPリクエスト)

④これをあげよう(HTTPレスポンス)

③「来たか・・・!!」ガタッ

⑤もらった何か(HTML)を表示

Page 21: ゆるべん Webアプリ開発概要 20130127

World Wide Web

21

URI

URL (Uniform Resource Locator)

HTTP

HTMLインターネット上のどこにあるかを指定

インターネット上での通信プロトコルを指定

Page 22: ゆるべん Webアプリ開発概要 20130127

インターネット上でサービス(HTMLとか)を提供してくれるモノ(PCなど)を「Web サーバ」と呼ぶことにしよう。

→自分のPCをWebサーバにすることは「可能」

Web Server

22

Page 23: ゆるべん Webアプリ開発概要 20130127

自分の「PC」や会社の「PC」を「サーバ」に変身させるためには「ミドルウェア」が必要だと覚えよう

→PCはそのままではサーバとして動かない。たとえばHTMLを提供するサーバにしたいならば「Apache HTTP Server」というソフト(ミドルウェア)をインストールする必要がある

Middleware

23

Page 24: ゆるべん Webアプリ開発概要 20130127

「サーバ」に変身した「PC」は、何が変わったの??というか、ミドルウェアは自分のPCに何をしたんだー!!

→あるPC上の設定が、変わってます

Middleware

24

Page 25: ゆるべん Webアプリ開発概要 20130127

URL を思い出してみよう。

「http://www.google.co.jp/」

↓ 実際には

「http://www.google.co.jp:80/index.html」

URL には、いくつか省略してよいルールがある。

One more time...

25

Page 26: ゆるべん Webアプリ開発概要 20130127

URL を分解してみよう。

「http://www.google.co.jp:80/index.html」

「http」・・・プロトコル(正式にはスキーム名)

「www.google.co.jp」・・・ドメイン名(正式にはホスト名≒Web上の住所)

   「:80」・・・ポート番号(!?)         

「index.html」・・・ファイル名(正式にはパス名)     

U・R・L

26

Page 27: ゆるべん Webアプリ開発概要 20130127

ネットワーク上でサービスを提供するためには「ポート番号」という「通信の通り道」を「開ける」必要がある、と覚えよう。

•PCはデフォルトでは通信の通り道が塞がっている

•ミドルウェアは通り道を開ける設定をしている

•Webサーバは 80 番ポートを開けている

Port number

27

Page 28: ゆるべん Webアプリ開発概要 20130127

そろそろ、Web アプリの話をしよう。

Web Apps

28

Page 29: ゆるべん Webアプリ開発概要 20130127

Web Server

29

Webブラウザ(クライアント)

Google社のWebサーバ

何かください(HTTPリクエスト)

これをあげよう(HTTPレスポンス)

Web サーバはクライアントからのHTTPリクエストに対して、HTMLをHTTPレスポンスとして返す

Page 30: ゆるべん Webアプリ開発概要 20130127

Web Server

30

Web サーバの URL は、常に同じ「ファイル」を示します

(例)http://somewhere/path/to/hoge.html

 →必ず「hoge.html」という HTML が返ってくる

一昔前の「ホームページ」ってこんなのだったよね(Web 1.0 とか言われたり)

Page 31: ゆるべん Webアプリ開発概要 20130127

Web Apps

31

「Web アプリケーション」は、ある URL に HTTP リクエストが来たときに動く「プログラム」と覚えよう

(例)http://somewhere/path/to/hoge.php

 →プログラム「hoge.php」の実行結果が HTTP レスポンスとして返ってくる

Gmail (というWeb アプリ)にアクセスすると、毎回実行結果(= 受信メールの一覧)が異なるイメージと同じ

Page 32: ゆるべん Webアプリ開発概要 20130127

Web Apps

32

Webブラウザ(クライアント)

食べログのWeb アプリケーション

サーバ

川崎のラーメン店の総合ランキングが知りたーい!

(HTTPリクエスト)

こんなん出ましたけどー(HTTPレスポンス)

ユーザのクチコミ評価結果から

ランキングを生成!!

指定場所や時期でランキング結果が毎回変わる!

Page 33: ゆるべん Webアプリ開発概要 20130127

Web Apps Server

33

「Web アプリケーションサーバ」は、Web アプリを動かす際に必要なミドルウェアと覚えよう

Web アプリの言語によって、必要となるミドルウェアが異なります(例)Java で Web アプリを作る・・・Apache Tomcat とか

(例)VB や C# で Web アプリを作る・・・Microsoft IIS とか

Page 34: ゆるべん Webアプリ開発概要 20130127

Server Apps vs Client Apps

34

Web アプリをはじめとする「サーバサイド・アプリケーション」と、ブラウザやスマホアプリ、Flash といった「クライアントサイド・アプリケーション」は、呼び出されるタイミング(イベント)が異なることを覚えておこう(= プログラムの書き方が異なる)

(例)ブラウザ・・・人(ユーザ)が実行した時

(例)Web アプリ・・・HTTP リクエストが来た時

Page 35: ゆるべん Webアプリ開発概要 20130127

Cloud

Page 36: ゆるべん Webアプリ開発概要 20130127

•クラウド・コンピューティングって何?• 要は「ネット上で公開したサービス」のこと

• 技術用語ではなく、ビジネス用語

• 明確な定義は無いので「この技術使わないとクラウドじゃない!」ということでもない

What’s Cloud ?

36

Page 37: ゆるべん Webアプリ開発概要 20130127

•会社の偉い人「社内でサーバ立ててシステム運用?(=従来のSIってこと)んなことしたら開発費や保守費かかってマジ半端ない\(^o^)/」

•エリック・シュミット「だったらネット上のサービス借りたらいいさ(ドヤ」

•すぐに使えるお手軽さがウリ♪

Why Cloud ?

37

Page 38: ゆるべん Webアプリ開発概要 20130127

XaaSCloud = X as a Service

38

SaaS (Software as a Service)

PaaS (Platform as a Service)

IaaS (Infrastructure as a Service) = HaaS (Hardware as a Service)

Soft

Hard

DaaS (Desktop as a Service)

MaaS (Metal as a Service)

STaaS (Storage as a Service)

LBaaS (Load Balancer as a Service)

DaaS (Database as a Service) aPaaS (application Platform as a Service)

iPaaS (integration Platform as a Service)

Page 39: ゆるべん Webアプリ開発概要 20130127

XaaS

クラウド = ネット上のサービスなら何でも

39

SaaS (Software as a Service)

PaaS (Platform as a Service)

IaaS (Infrastructure as a Service) = HaaS (Hardware as a Service)

具体的

自由度高

DaaS (Desktop as a Service)

MaaS (Metal as a Service)

STaaS (Storage as a Service)

LBaaS (Load Balancer as a Service)

DaaS (Database as a Service) aPaaS (application Platform as a Service)

iPaaS (integration Platform as a Service)

SaaS (Software as a Service)

PaaS (Platform as a Service)

いわゆる「Webアプリ」

Webアプリを動かす環境

IaaS (Infrastructure as a Service)

サーバを自由に使わせてくれるらしいよ

公開されているサービスを使う

決められたルールでサービスを作る

ルールも自作レンタルサーバ

Page 40: ゆるべん Webアプリ開発概要 20130127

SaaS vs PaaS vs IaaS

40

図:SaaS/PaaS/IaaSの構成要素出展:SaaS/PaaS/IaaSとは(http://itpro.nikkeibp.co.jp/article/Keyword/20110216/357282/)

Page 41: ゆるべん Webアプリ開発概要 20130127

•パブリック・クラウドって何?• インターネット上に公開したサービスのこと

•プライベート・クラウドって何?• (たとえば社内とか)限定された範囲に公開したサービスのこと

• ある意味、「社内サーバ」をカッコよく言い直しただけといえば・・・おや、誰か来t(ry

Public ? Private ?

41

Page 42: ゆるべん Webアプリ開発概要 20130127

• Web アプリの「開発」は自分のPCで

• Web アプリの「公開」はクラウドで

• IaaS 環境なら自由に動かせる

• その分、公開までの手間はかかる

• PaaS 環境には制約がある

• たとえば、Google App Engine 上では Java と Python しか動かせない、ファイルが保存できない、とか(ただし、その分公開するまでの手間は楽)

Trend

42

Page 43: ゆるべん Webアプリ開発概要 20130127

Database

Page 44: ゆるべん Webアプリ開発概要 20130127

Webアプリの実行結果を保存しておくには、どうしたらよいだろう?(例)カウンターの数字を保存したい

(例)掲示板の書き込みを保存したい

もちろん、ファイルに書き込んでもOK!

Data

44

Page 45: ゆるべん Webアプリ開発概要 20130127

次の要件にピン!ときたら「データベース」を使うことを検討しよう(例)データが壊れたり、データ同士の矛盾がないように安全に保管する必要がある。

(例)たくさん保存したデータの中から検索する必要がある。しかも高速に。

データベースは「安全にデータを保管し、高速にデータを探すことに特化したミドルウェア」と覚えよう(よく、「DBサーバ」と呼んだりします)

Database

45

Page 46: ゆるべん Webアプリ開発概要 20130127

データベースにも種類があります。

特に有名なのが、表で管理する「リレーショナル・データベース(RDB)」。

有償製品だと Oracle や SQL Server、無償だと MySQL、PostgreSQL あたりが有名。

Database

46

Page 47: ゆるべん Webアプリ開発概要 20130127

保管している表にデータを登録したり、表からデータを検索するためには「SQL」という言語を使う必要があることを覚えておこう。

Database

47

ID 名前 既婚1 X YES2 Y NO3 Z YES

「人物」表

SELECT 名前 FROM 人物 WHERE 既婚=’NO’;

Page 48: ゆるべん Webアプリ開発概要 20130127

最近、RDB や SQL を使わないデータベースが登場し、流行っているような気がする・・・

ひとくくりに「NoSQL」と呼んだりしているけど、特に「KVS(Key-Value Store)」は Google の「Bigtable」で有名。

保管したいデータの特性で RDB か NoSQL を選ぶ!

Trend

48

Page 49: ゆるべん Webアプリ開発概要 20130127

How to

Page 50: ゆるべん Webアプリ開発概要 20130127

結局、Webアプリってどうやって作るの?1.作りたいサービス(=Webアプリ)を考える

2.実行環境(開発言語)を決める

3.開発環境を用意する

4.作る

5.公開する

Constructions

50

Page 51: ゆるべん Webアプリ開発概要 20130127

1.作りたいサービス(=Webアプリ)を考える

一番重要。なぜそのサービスは必要なの?

誰のため?何のため?

もちろん、自己満でも練習のためでもOK!

Constructions

51

Page 52: ゆるべん Webアプリ開発概要 20130127

2.実行環境(開発言語)を決める

これも重要。そのサービスはどこに公開するの?

インターネット?社内?学内?自宅?

ネット上なら PaaS 使う or 自宅サーバにチャレンジ

自分の得意な言語から実行環境を決めるのがオススメ

Constructions

52

Page 53: ゆるべん Webアプリ開発概要 20130127

3.開発環境を用意する

開発言語まで決まれば、あとは言語ごとに決められた手順で開発環境を作るだけ!

SDK(Software Development Kit)やミドルウェア、IDE(Integrated Development Environment)など、ネット上にたくさん情報があるのでググるべし

Constructions

53

Page 54: ゆるべん Webアプリ開発概要 20130127

4.作る

サービスが提供する「画面」を考えたり、画面上のボタンをクリックしたときの「動作」を考えたり・・・

まずは自分のPC上で Hello World を動かしてみよう!

ブラウザから自分のサービスにアクセスして動いた時の感動は・・・ひとしおです

Constructions

54

Page 55: ゆるべん Webアプリ開発概要 20130127

5.公開する

自分のPC上でサービスが完成したら、みんなに使ってもらおう!

ちなみに、公開用のマシン(サーバ)に作ったWebアプリを置くことを「デプロイ(deploy)する」と言います

Constructions

55

Page 56: ゆるべん Webアプリ開発概要 20130127

•これから深く勉強するためには・・・?1. 公開されている技術仕様、知識体系を学ぶ。

2. 人のソースを読む。

3. 手を動かしてみる。作って覚える。

•自分が困っていること、悩んでいることの大半は、先人も同じ道を辿っているはず、と思うべし(探せば解が見つかる)

Why not ?

56

Page 57: ゆるべん Webアプリ開発概要 20130127

アプリ開発は習うより慣れろ!自分の手を動かして、体で覚えよう!!

57

Page 58: ゆるべん Webアプリ開発概要 20130127

This is all

Page 59: ゆるべん Webアプリ開発概要 20130127

See more...•以下、プロを目指す人に向けて・・・

• HTTP や HTML の仕様を深く知りたい

•「RFC(Request for Comments)」や「W3C」の技術仕様を読んでみよう!

• RFC 2616 (HTTP 1.1)• http://tools.ietf.org/html/rfc2616

• HTML 4.0 Specification• http://www.w3.org/TR/REC-html40-971218/

59

Page 60: ゆるべん Webアプリ開発概要 20130127

See more...• Webアプリの開発全般を深く知りたい

• 「ソフトウェア工学」や「ソフトウェア開発工程」を勉強しよう• Git とか Subversion はソフトウェア開発工程の「ソフトウェア構成管理」を実現するためのツールの一例です

• ソフトウェア開発工程モデルの例• 「アジャイル」→比較的小規模ならこちら

• 「ウォーターフォール」→大規模はこっち

• 情報処理技術者試験を受験してみよう60

Page 61: ゆるべん Webアプリ開発概要 20130127

See more...

•プログラムの設計手法を深く知りたい• 「オブジェクト指向設計の原則」「パターン」を勉強しよう

• パターンの例• 「デザインパターン」まずはこれを理解

• 「J2EEパターン」Javaで作る人は推奨

• 「アーキテクチャ・パターン」アーキテクト目指すなら「POSA」を理解すること(あの「MVC」もPOSAの一例です)

61

Page 62: ゆるべん Webアプリ開発概要 20130127

See more...

•プログラムのテスト手法を深く知りたい

• IEEE が「テスト設計技法」を定義しています

• アプリケーション開発で最も奥が深く、どうテストすべきなのか…(むしろ知りたいくらい)

• とりあえず、「バグのないプログラムはない」とだけ覚えておこう

62

Page 63: ゆるべん Webアプリ開発概要 20130127

See more...

• Web のセキュリティを深く知りたい

• IPA が無償で情報公開しています

• 安全なウェブサイトの作り方

• http://www.ipa.go.jp/security/vuln/websecurity.html

•ログインの仕組みについて深く知りたい

• 「認証」「認可」について勉強しよう

63

Page 64: ゆるべん Webアプリ開発概要 20130127

See more...•アプリ開発でお金を稼ぎたい

• 「共通フレーム2007」を勉強しよう

• プロセス、共通言語、見積もり手法や契約方法等、基本的な枠組みが定義されています

• 顧客とのやりとり手法なら「REBOK(要求工学知識体系)」や「BABOK(ビジネス分析知識体系)」を勉強しよう

• プロジェクトの管理手法なら「PMBOK(プロジェクト管理知識体系)」を勉強しよう

64

Page 65: ゆるべん Webアプリ開発概要 20130127

おまけ巷で話題となりつつある「Firefox OS」上で動くアプリも立派な「Webアプリ」。

「Webアプリ」が必ずしもサーバ技術とは言えなくなってきたので、「サーバサイドWebアプリケーション」「クライアントサイドWebアプリ」と呼ぶ必要があるのかも・・・

See more...

65

Page 66: ゆるべん Webアプリ開発概要 20130127

End