TOKYO JOHO UNIVERSITY - Research Server at Tokyo University

Webシステムプログラミングb
第 講目
第11講目
2016年12月7日(水)
Webシステムプログラミング講義資料
到達目標

到達目標

Webシステムを設計し、開発できること


最終成果物:学生生活で利用できるWebシステム
授業計画






第10講:Webシステムの基本設計 (1)
第11講:Webシステムの基本設計 (2)
第12講:WebシステムのDB設計
第13講:WebシステムのUI設計
第14講:Webシステムの処理
第15講:まとめ、平常試験 (2)
2
OKYO JOHO US
NIVERSITY
TOKYO
NFORMATION
CIENCES
OKYO UNIVERSITY
NIVERSITY OF
OF IT
NFORMATION
CIENCES
第10講:Webシステムの基本設計 (1)

講義内容

Webシステムの設計工程


Webシステムの構成



業務分析、要件定義、基本設計、論理設計、詳細設計
各種Webアプリケーションフレームワーク紹介
Model-View-Controller(MVC)に基づく設計
レポート課題

学生生活で利用できるWebシステムの要件定義書


システムのタイトルと最終成果物の洗い出し、要件定義書
レポートに最低限書く内容


業務分析・要件定義を行うこと
最終成果物の確認(DB定義書、画面遷移図、フローチャートなど)3
OKYO JOHO US
NIVERSITY
TOKYO
NFORMATION
CIENCES
OKYO UNIVERSITY
NIVERSITY OF
OF IT
NFORMATION
CIENCES
第10回レポート課題の解答例(1)

タイトル:ゼミ室の蔵書管理システム

業務分析




ゼミ室には教員の専門分野に関する書籍が豊富にある
研究を進める際に、ゼミ生はゼミ室で書籍を読んだり、
必要に応じて教員から許可を得て書籍を借りたりする
教員は誰に何の書籍を貸しているかは管理できていない
要件定義




ゼミ室の蔵書と貸し出し記録を管理したい
教員はゼミ生の名簿と蔵書を管理したい
教員、またはゼミ生は貸し出し記録を付けた
書籍の貸し出し冊数は5冊まで、期限は2週間とする
4
OKYO JOHO US
NIVERSITY
TOKYO
NFORMATION
CIENCES
OKYO UNIVERSITY
NIVERSITY OF
OF IT
NFORMATION
CIENCES
第10回レポート課題の解答例(2)

最終成果物一覧


第10回(12/2提出):要件定義書
第11回(12/9提出):基本設計書




機能、データ構造、画面設計図
第12回(12/16提出):ER図、テーブル定義書
第13回(1/6提出):画面遷移図
第14回(1/13提出):詳細設計書

各クラス・メソッドの定義書



引数、戻り値、処理内容
処理内容の手順は箇条書きで列挙
画面遷移図との対応が分かること
5
OKYO JOHO US
NIVERSITY
TOKYO
NFORMATION
CIENCES
OKYO UNIVERSITY
NIVERSITY OF
OF IT
NFORMATION
CIENCES
前回レポートのポイント

業務分析



現状の仕組みがどうなっているかを書く
作業の内容、流れ、問題点などを書く
よくない例(主観的な感想になっている)



ゲームをただ遊ぶだけではもったいない
就活でそういった企業に行く時の強みになる
要件定義


業務がどう改善されればよいかを書く
システムの機能はここでは書かない
6
OKYO JOHO US
NIVERSITY
TOKYO
NFORMATION
CIENCES
OKYO UNIVERSITY
NIVERSITY OF
OF IT
NFORMATION
CIENCES
システム設計の流れ

DB設計はシステム設計の一部
業務分析
今の業務はどうなっているのか
要件定義
何をしたいのか
今回はこの部分が中心
基本設計
DB設計は
この段階に含まれる
DB設計=DBの構造を設計
どんなシステムにすべきか
論理設計 どのように実現するか
詳細設計
方法を明確にする
7
OKYO JOHO US
NIVERSITY
TOKYO
NFORMATION
CIENCES
OKYO UNIVERSITY
NIVERSITY OF
OF IT
NFORMATION
CIENCES
各工程での成果物

成果物
業務分析
要件定義書
要件定義
基本設計
基本設計書
論理設計
ER図、テーブル定義書
画面遷移図
詳細設計
詳細設計書
8
OKYO JOHO US
NIVERSITY
TOKYO
NFORMATION
CIENCES
OKYO UNIVERSITY
NIVERSITY OF
OF IT
NFORMATION
CIENCES
第11講:Webシステムの基本設計 (2)

講義内容

スピーディーな開発手法



Webシステムの基本設計


Web API、ライブラリの活用
ソーシャル連携サービス
機能、データ構造、画面設計図
レポート課題

学生生活で利用できるWebシステムの基本設計書

システムの機能とデータ構造



データの登録・表示・更新・削除ができること(CRUD)
ログイン機能があると尚良(要セッション管理)
画面設計図
9
OKYO JOHO US
NIVERSITY
TOKYO
NFORMATION
CIENCES
OKYO UNIVERSITY
NIVERSITY OF
OF IT
NFORMATION
CIENCES
Webシステムの開発最前線
スピーディーな開発
• クラウドの活用
• Amazon Web Services、Microsoft Azure、Heroku
• マッシュアップ(プログラムのパーツの組み合わせ)
• Web API、ソーシャルログイン、ライブラリ(git)
• CMS(Content Management System)の活用
• WordPress、Movable Type、NetCommons、Joomla!
• Moodle、Mahara
10
OKYO JOHO US
NIVERSITY
TOKYO
NFORMATION
CIENCES
OKYO UNIVERSITY
NIVERSITY OF
OF IT
NFORMATION
CIENCES
クラウドの活用

クラウドの必要性




Webシステムの開発・公開にはサーバが必要
サーバ以外にもネットワーク、電源や空調などが必要
コストや効率性を考慮したVPS(仮想サーバ)という選択肢
代表的なクラウドサービス(IaaS or PaaS)



AWS(Amazon Web Services)
Apache CloudStack
Heroku
11
OKYO JOHO US
NIVERSITY
TOKYO
NFORMATION
CIENCES
OKYO UNIVERSITY
NIVERSITY OF
OF IT
NFORMATION
CIENCES
AWS(Amazon Web Services)

Amazonが提供する仮想サーバやデータベースサーバ

独自Webサイト、ECサイトの構築が可能
インスタンス=仮想サーバの実体
インスタンスの情報
公開用IPアドレス
12
OKYO JOHO US
NIVERSITY
TOKYO
NFORMATION
CIENCES
OKYO UNIVERSITY
NIVERSITY OF
OF IT
NFORMATION
CIENCES
AWSで動作中のWebシステム
公開用IPアドレス
ターミナル画面
13
OKYO JOHO US
NIVERSITY
TOKYO
NFORMATION
CIENCES
OKYO UNIVERSITY
NIVERSITY OF
OF IT
NFORMATION
CIENCES
Apache CouldStack

情報大生が卒研テーマとして、学内VPSを提供中

ゼミ・プロジェクトのWebサーバに利用可能
実行中のインスタンス
14
OKYO JOHO US
NIVERSITY
TOKYO
NFORMATION
CIENCES
OKYO UNIVERSITY
NIVERSITY OF
OF IT
NFORMATION
CIENCES
Heroku

Ruby on Rails用のPaaS(Platform as a Service)

現在はJava, Node.js, Scala, Python, PHPなどもサポート
15
OKYO JOHO US
NIVERSITY
TOKYO
NFORMATION
CIENCES
OKYO UNIVERSITY
NIVERSITY OF
OF IT
NFORMATION
CIENCES
マッシュアップ

マッシュアップとは


複数のWeb APIやWeb上のデータを組み合わせること
メリット



課題



既存Webシステムの機能やデータ活用による新サービス提供
システム開発効率の向上
Web APIのインタフェースやフォーマットの統一
Web APIの学習コストの削減
マッシュアップの分類



presentation マッシュアップ
data マッシュアップ
logic マッシュアップ
16
OKYO JOHO US
NIVERSITY
TOKYO
NFORMATION
CIENCES
OKYO UNIVERSITY
NIVERSITY OF
OF IT
NFORMATION
CIENCES
presentation マッシュアップ

概要


Webページ内に1つ以上のWebシステムのコンテンツ
をまとめて表示すること
実現方法


各サービスが提供するスクリプトの埋め込み
具体例



Twitterウィジェット
Facebookソーシャルプラグイン
ブログパーツ
17
OKYO JOHO US
NIVERSITY
TOKYO
NFORMATION
CIENCES
OKYO UNIVERSITY
NIVERSITY OF
OF IT
NFORMATION
CIENCES
data マッシュアップ

概要


複数のWebシステムからデータを取得し結合すること
実現方法



Web API(多くが地図API)を使ってデータを重ねあわせて表示
多くが地図ベースのマッシュアップとして実現
具体例




気象情報サービス
災害情報マップ
お祭りの山車位置共有サービス
お祭りの出店マップ
18
OKYO JOHO US
NIVERSITY
TOKYO
NFORMATION
CIENCES
OKYO UNIVERSITY
NIVERSITY OF
OF IT
NFORMATION
CIENCES
logic マッシュアップ

概要


複数のWeb APIの入出力処理を連結させること
実現方法



あるAPIの出力結果を別のAPIの入力に与えて処理する
高度なプログラミング知識が必要となる
具体例
到着地の住所から経路探索
※実際は開発者しか知らない

19
OKYO JOHO US
NIVERSITY
TOKYO
NFORMATION
CIENCES
OKYO UNIVERSITY
NIVERSITY OF
OF IT
NFORMATION
CIENCES
Web APIの活用

ソーシャル連携サービス



Twitter、FacebookのIDによる認証機能
Twitter、Facebookでのつながり情報、登録情報の活用
Web APIの利用
の利用

プログラムから外部Webシステムの機能を利用する関数群
インターネット
A
P
I
① 問い合わせ
プログラム
例:ブログ
③ 返信
D
図. Web APIの仕組み
Webシステム
DB
② データ処理
D
20
OKYO JOHO US
NIVERSITY
TOKYO
NFORMATION
CIENCES
OKYO UNIVERSITY
NIVERSITY OF
OF IT
NFORMATION
CIENCES
ソーシャルアカウントでのログイン
21
OKYO JOHO US
NIVERSITY
TOKYO
NFORMATION
CIENCES
OKYO UNIVERSITY
NIVERSITY OF
OF IT
NFORMATION
CIENCES
スピーディーな開発の事例

Tripline:旅の軌跡を記録するサービス
旅の軌跡
認証
地図
シェア
マッシュアップによる開発速度&利便性向上
22
OKYO JOHO US
NIVERSITY
TOKYO
NFORMATION
CIENCES
OKYO UNIVERSITY
NIVERSITY OF
OF IT
NFORMATION
CIENCES
CMS(Content Management System)

CMSとは

Webの専門知識がなくても、Webサイト管理ができる


コンテンツとレイアウトの分離


一般利用者でもWebサイト運用が可能
ライターとデザイナーの分業が容易
代表的なCMS





WordPress:ブログ、Webサイトとして広く利用
Movable Type:企業のWebサイトとして利用
OpenPNE:mixi同様のSNSを構築可
NetCommons:eラーニングサイトに利用
Joomla!:高機能なCMS、サイト全体のデザイン統一
23
OKYO JOHO US
NIVERSITY
TOKYO
NFORMATION
CIENCES
OKYO UNIVERSITY
NIVERSITY OF
OF IT
NFORMATION
CIENCES
WordPressのインストール画面
24
OKYO JOHO US
NIVERSITY
TOKYO
NFORMATION
CIENCES
OKYO UNIVERSITY
NIVERSITY OF
OF IT
NFORMATION
CIENCES
WordPressで作成したサイト
25
OKYO JOHO US
NIVERSITY
TOKYO
NFORMATION
CIENCES
OKYO UNIVERSITY
NIVERSITY OF
OF IT
NFORMATION
CIENCES
Joomla!によるWebサイト作成例
26
OKYO JOHO US
NIVERSITY
TOKYO
NFORMATION
CIENCES
OKYO UNIVERSITY
NIVERSITY OF
OF IT
NFORMATION
CIENCES
Joomla!の管理画面

コンテンツとテンプレートを分けて管理可能

記事やメニュー、画像の登録・編集が可能
記事の一覧
27
OKYO JOHO US
NIVERSITY
TOKYO
NFORMATION
CIENCES
OKYO UNIVERSITY
NIVERSITY OF
OF IT
NFORMATION
CIENCES
Web開発技術の基本

Web開発での必須スキル






HTML/CSSは基本中の基本
Webの仕組み:HTTP、GET/POST
クライアントサイド:ブラウザ、JavaScript、jQuery
サーバサイド:
サーバサイド:PHP、Ruby、Servlet、DB
、
、
、
サーバ運用:Linux、Apache、ネットワーク
学び方は実践あるのみ!


まずはWeb開発の全体的な知識を得る
実際に開発をしながら、自分の得意分野を見つける
28
OKYO JOHO US
NIVERSITY
TOKYO
NFORMATION
CIENCES
OKYO UNIVERSITY
NIVERSITY OF
OF IT
NFORMATION
CIENCES
Webシステムの基本設計

基本設計

機能設計、データ構造は前回の講義を参照



機能設計:要件定義を満たす機能の洗い出し
データ構造:機能を実現するために記録すべきデータの整理
画面設計図



機能毎に必要な画面とその構成を図示する
各画面の入力フォームの内容、ボタンの配置など
ボタン操作時の処理や画面遷移はまだやらなくてよい
29
OKYO JOHO US
NIVERSITY
TOKYO
NFORMATION
CIENCES
OKYO UNIVERSITY
NIVERSITY OF
OF IT
NFORMATION
CIENCES
レポート課題

学生生活で利用できるWebシステムの基本設計書

システムの機能とデータ構造



データの登録・表示・更新・削除ができること(CRUD)
ログイン機能があると尚良(要セッション管理)
画面設計図

データの登録・表示・更新・削除に対応した画面設計を行うこと


データの種類毎の一覧表示、新規登録、編集画面があるはず
削除はボタン操作のみでOK(入力情報がないため)
30
OKYO JOHO US
NIVERSITY
TOKYO
NFORMATION
CIENCES
OKYO UNIVERSITY
NIVERSITY OF
OF IT
NFORMATION
CIENCES
レポート作成例:基本設計(1)

機能

ログイン機能


ユーザ管理機能



ユーザの追加・更新・削除が可能
ユーザ毎に権限を付与し、利用できる機能を制限
蔵書登録機能




ユーザのID、パスワードでログイン
書籍の追加・更新・削除が可能
書籍のタイトル、カテゴリ、出版社、発行年などを管理
条件を指定した蔵書検索が可能
貸し出し機能


ユーザへの書籍貸し出しを台帳に記録
ユーザへの貸し出し冊数の上限と期限を設ける
31
OKYO JOHO US
NIVERSITY
TOKYO
NFORMATION
CIENCES
OKYO UNIVERSITY
NIVERSITY OF
OF IT
NFORMATION
CIENCES
レポート作成例:基本設計(2)

データ構造

ユーザ情報



蔵書情報


ユーザID、パスワード、名前、権限(管理者 or 利用者)
ユーザ情報を変更できるのは管理者のみ
書籍のタイトル、カテゴリ、出版社、発行年
貸出台帳


書籍と貸し出したユーザの紐付け
貸出日、返却予定日、貸出状態(貸出OK or 貸出中)
32
OKYO JOHO US
NIVERSITY
TOKYO
NFORMATION
CIENCES
OKYO UNIVERSITY
NIVERSITY OF
OF IT
NFORMATION
CIENCES
レポート作成例:基本設計(3)

画面設計図:蔵書リスト画面
書籍リストを表形式で表示
各レコードの操作が可能
書籍の新規登録
※図作成には、リアルタイムコラボレーションツール「Cacoo」を利用
33
OKYO JOHO US
NIVERSITY
TOKYO
NFORMATION
CIENCES
OKYO UNIVERSITY
NIVERSITY OF
OF IT
NFORMATION
CIENCES
レポート作成例:基本設計(4)

画面設計図:蔵書 新規登録画面

すべての項目を入力し、「登録」ボタンで登録可


タイトル、出版社:テキストボックス
カテゴリ、発行年:選択ボックス
34
OKYO JOHO US
NIVERSITY
TOKYO
NFORMATION
CIENCES
OKYO UNIVERSITY
NIVERSITY OF
OF IT
NFORMATION
CIENCES
レポート作成例:基本設計(5)

画面設計図:蔵書貸出画面


「貸出可」より蔵書の貸出が可能
「貸出書籍」より自分の書籍貸出状況を確認可
貸出操作が可能
35
OKYO JOHO US
NIVERSITY
TOKYO
NFORMATION
CIENCES
OKYO UNIVERSITY
NIVERSITY OF
OF IT
NFORMATION
CIENCES
リレーショナルデータベースの復習

用語




スキーマ(schema):DBの構造を定義したもの
表(テーブル、table):リレーションともよぶ
行(レコード、row):1件のデータのこと
列(フィールド、column):各項目のこと
36
OKYO JOHO US
NIVERSITY
TOKYO
NFORMATION
CIENCES
OKYO UNIVERSITY
NIVERSITY OF
OF IT
NFORMATION
CIENCES
関係モデルと関係データベース

関係モデル


例:「商品」を「輸出先」に”売る”という関係
関係モデルの考え方を使って関係データベースを設計
37
OKYO JOHO US
NIVERSITY
TOKYO
NFORMATION
CIENCES
OKYO UNIVERSITY
NIVERSITY OF
OF IT
NFORMATION
CIENCES
データベース設計の手順
1. データとその関連(ER)を分析する
2. 表を作る
3. 表を正規化する
 第一正規形
 第二正規形
 第三正規形
38
OKYO JOHO US
NIVERSITY
TOKYO
NFORMATION
CIENCES
OKYO UNIVERSITY
NIVERSITY OF
OF IT
NFORMATION
CIENCES
データとその関連(ER)の分析

ERモデル


現実世界をEntity(実体)とRelationship(関連)に概念化
現状の世界からにEntity(実体)をとらえる



例:商品(商品コード、商品名、単価)
例:輸出先(輸出先コード、輸出先名)
実体同士のRelationship(関連)について考える

例:売上
39
OKYO JOHO US
NIVERSITY
TOKYO
NFORMATION
CIENCES
OKYO UNIVERSITY
NIVERSITY OF
OF IT
NFORMATION
CIENCES
ERモデル

Entity(実体)とRelationship(関連)
・多数の商品が多数の輸出先
に売られる
・多数の輸出先は多数の商品
を買っている
多対多の関係
※商品がひとつの場合、
1対多の関係となる
※商品ひとつ輸出先ひとつの場合、
1対1の関係となる
40
OKYO JOHO US
NIVERSITY
TOKYO
NFORMATION
CIENCES
OKYO UNIVERSITY
NIVERSITY OF
OF IT
NFORMATION
CIENCES
ER図


ERモデルをよりデータベース設計に近い形で図式化
様々な書き方がある
41
OKYO JOHO US
NIVERSITY
TOKYO
NFORMATION
CIENCES
OKYO UNIVERSITY
NIVERSITY OF
OF IT
NFORMATION
CIENCES
データベース設計の手順
1. データとその関連(ER)を分析する
2. 表を作る
3. 表を正規化する
 第一正規形
 第二正規形
 第三正規形
42
OKYO JOHO US
NIVERSITY
TOKYO
NFORMATION
CIENCES
OKYO UNIVERSITY
NIVERSITY OF
OF IT
NFORMATION
CIENCES
表の作成

売上報告書から表を作成してみる
43
OKYO JOHO US
NIVERSITY
TOKYO
NFORMATION
CIENCES
OKYO UNIVERSITY
NIVERSITY OF
OF IT
NFORMATION
CIENCES
非正規形


繰り返し項目が排除されていない表
リレーショナルデータベースでは、
非正規形の表はうまく処理できない
44
OKYO JOHO US
NIVERSITY
TOKYO
NFORMATION
CIENCES
OKYO UNIVERSITY
NIVERSITY OF
OF IT
NFORMATION
CIENCES
データベース設計の手順
1. データとその関連(ER)を分析する
2. 表を作る
3. 表を正規化する
 第一正規形
 第二正規形
 第三正規形
45
OKYO JOHO US
NIVERSITY
TOKYO
NFORMATION
CIENCES
OKYO UNIVERSITY
NIVERSITY OF
OF IT
NFORMATION
CIENCES
正規化



現実世界のデータをリレーショナルデータベース
の表に落とし込む作業
1行に1つの値が入る表の形にする
非正規形の表をデータの矛盾が発生しないよう
複数の表に分割する
46
OKYO JOHO US
NIVERSITY
TOKYO
NFORMATION
CIENCES
OKYO UNIVERSITY
NIVERSITY OF
OF IT
NFORMATION
CIENCES
第一正規形を作る

1行に1つの値が入るように表を分割する
47
OKYO JOHO US
NIVERSITY
TOKYO
NFORMATION
CIENCES
OKYO UNIVERSITY
NIVERSITY OF
OF IT
NFORMATION
CIENCES
第一正規形の表まとめ

第一正規形



表を2次元の単純な表としたもの
1行に1つの値が入るようにした表
「売上明細」(第一正規形②)の問題点


商品に関するデータと売上に関するデータが混在
新しい商品でまだ売っていない商品は追加できない
48
OKYO JOHO US
NIVERSITY
TOKYO
NFORMATION
CIENCES
OKYO UNIVERSITY
NIVERSITY OF
OF IT
NFORMATION
CIENCES
第二正規形を作る(2)

「売上明細」(第一正規形②)を分割する
49
OKYO JOHO US
NIVERSITY
TOKYO
NFORMATION
CIENCES
OKYO UNIVERSITY
NIVERSITY OF
OF IT
NFORMATION
CIENCES
第二正規形を作る(3)

主キーによって他の列の値がきまる


「商品」表は、「商品コード」列の値が決まると
「商品名」と「単価」の値が決まる
「売上明細」表は、「報告書コード」列と
「商品コード」列の値が決まると「個数」の値が決まる
50
OKYO JOHO US
NIVERSITY
TOKYO
NFORMATION
CIENCES
OKYO UNIVERSITY
NIVERSITY OF
OF IT
NFORMATION
CIENCES
第二正規形


主キーによって他の列の値が決まるようにした表
関数従属


「ある列の値によって他の列の値が決まる」こと
主キーに他の列が関数従属するように表を分割する
51
OKYO JOHO US
NIVERSITY
TOKYO
NFORMATION
CIENCES
OKYO UNIVERSITY
NIVERSITY OF
OF IT
NFORMATION
CIENCES
第二正規形の表まとめ

「売上」(第一正規形①)はそのままで第二正規形

主キーの「報告書コード」が決まると他の値が決まる
52
OKYO JOHO US
NIVERSITY
TOKYO
NFORMATION
CIENCES
OKYO UNIVERSITY
NIVERSITY OF
OF IT
NFORMATION
CIENCES
第三正規形を作る(1)

「売上」(第二正規形③)の問題点


「売上」表には、輸出先に関するデータと売上に関する
データが混在
一度も輸出していないが輸出先には存在するイタリア
を管理できない!
53
OKYO JOHO US
NIVERSITY
TOKYO
NFORMATION
CIENCES
OKYO UNIVERSITY
NIVERSITY OF
OF IT
NFORMATION
CIENCES
第三正規形を作る(2)

「売上」表(第二正規形③)を分割する
54
OKYO JOHO US
NIVERSITY
TOKYO
NFORMATION
CIENCES
OKYO UNIVERSITY
NIVERSITY OF
OF IT
NFORMATION
CIENCES
第三正規形


各項目の値が、主キーのみで決まる表
推移従属している


「ある列の値によって間接的に他の列の値が決まる」こと
第三正規形では、推移従属を除くように表を分割
55
OKYO JOHO US
NIVERSITY
TOKYO
NFORMATION
CIENCES
OKYO UNIVERSITY
NIVERSITY OF
OF IT
NFORMATION
CIENCES
第三正規形(補足)

「売上」表(第二正規形③)では

「報告書コード」が決まれば、「輸出先コード」が決まり、
それにより間接的に「輸出先名」が決まっていた
56
OKYO JOHO US
NIVERSITY
TOKYO
NFORMATION
CIENCES
OKYO UNIVERSITY
NIVERSITY OF
OF IT
NFORMATION
CIENCES
第三正規形にまでにした表

リレーショナルデータベースではこの表を使う
57
OKYO JOHO US
NIVERSITY
TOKYO
NFORMATION
CIENCES
OKYO UNIVERSITY
NIVERSITY OF
OF IT
NFORMATION
CIENCES