SlideShare une entreprise Scribd logo
1  sur  24
Webシステムプログラミングb
サンプル課題設計書
2015年12月18日(金)
Webシステムプログラミング講義資料
TOKYO JOHO UNIVERSITYTOKYO UNIVERSITY OF INFORMATION SCIENCES
到達目標
 到達目標
 Webシステムを設計し、開発できること
 最終成果物:学生生活で利用できるWebシステム
 授業計画
 第10講:Webシステムの基本設計 (1)
 第11講:Webシステムの基本設計 (2)
 第12講:WebシステムのDB設計
 第13講:WebシステムのUI設計
 第14講:Webシステムの処理
 第15講:まとめ、平常試験 (2)
2
TOKYO JOHO UNIVERSITYTOKYO UNIVERSITY OF INFORMATION SCIENCES
システム設計の流れ
 DB設計はシステム設計の一部
3
業務分析
要件定義
基本設計
論理設計
詳細設計
今の業務はどうなっているのか
何をしたいのか
どんなシステムにすべきか
どのように実現するか
方法を明確にする
今回はこの部分が中心
TOKYO JOHO UNIVERSITYTOKYO UNIVERSITY OF INFORMATION SCIENCES
各工程での成果物
 成果物
4
業務分析
要件定義
基本設計
論理設計
詳細設計
要件定義書
基本設計書
ER図、テーブル定義表
画面遷移図
詳細設計書
TOKYO JOHO UNIVERSITYTOKYO UNIVERSITY OF INFORMATION SCIENCES
サンプル課題
 タイトル:ゼミ室の蔵書管理システム
 業務分析
 ゼミ室には教員の専門分野に関する書籍が豊富にある
 研究を進める際に、ゼミ生はゼミ室で書籍を読んだり、
必要に応じて教員から許可を得て書籍を借りたりする
 教員は誰に何の書籍を貸しているかは管理できていない
 要件定義
 ゼミ室の蔵書と貸し出し記録を管理したい
 教員はゼミ生の名簿と蔵書を管理したい
 教員、またはゼミ生は貸し出し記録を付けた
 書籍の貸し出し冊数は5冊まで、期限は2週間とする 5
TOKYO JOHO UNIVERSITYTOKYO UNIVERSITY OF INFORMATION SCIENCES
基本設計(1)
 機能
 ログイン機能
 ユーザのID、パスワードでログイン
 ユーザ管理機能
 ユーザの追加・更新・削除が可能
 ユーザ毎に権限を付与し、利用できる機能を制限
 蔵書登録機能
 書籍の追加・更新・削除が可能
 書籍のタイトル、カテゴリ、出版社、発行年などを管理
 条件を指定した蔵書検索が可能
 貸し出し機能
 ユーザへの書籍貸し出しを台帳に記録
 ユーザへの貸し出し冊数の上限と期限を設ける
6
TOKYO JOHO UNIVERSITYTOKYO UNIVERSITY OF INFORMATION SCIENCES
レポー基本設計(2)
 データ構造
 ユーザ情報
 ユーザID、パスワード、名前、権限(管理者 or 利用者)
 ユーザ情報を変更できるのは管理者のみ
 蔵書情報
 書籍のタイトル、カテゴリ、出版社、発行年
 貸出台帳
 書籍と貸し出したユーザの紐付け
 貸出日、返却予定日、貸出状態(貸出OK or 貸出中)
7
TOKYO JOHO UNIVERSITYTOKYO UNIVERSITY OF INFORMATION SCIENCES
画面設計(1)
 画面設計図:蔵書リスト画面
8
書籍の新規登録
各レコードの操作が可能書籍リストを表形式で表示
※図作成には、リアルタイムコラボレーションツール「Cacoo」を利用
TOKYO JOHO UNIVERSITYTOKYO UNIVERSITY OF INFORMATION SCIENCES
画面設計(2)
 画面設計図:蔵書 新規登録画面
 すべての項目を入力し、「登録」ボタンで登録可
 タイトル、出版社:テキストボックス
 カテゴリ、発行年:選択ボックス
9
TOKYO JOHO UNIVERSITYTOKYO UNIVERSITY OF INFORMATION SCIENCES
画面設計(3)
 画面設計図:蔵書貸出画面
 「貸出可」より蔵書の貸出が可能
 「貸出書籍」より自分の書籍貸出状況を確認可
10
貸出操作が可能
TOKYO JOHO UNIVERSITYTOKYO UNIVERSITY OF INFORMATION SCIENCES
ER図
 以下の5テーブルで構成される
 users:利用者テーブル, books:蔵書テーブル
 categories:カテゴリテーブル, publishers:出版社テーブル
 circulations:貸出テーブル
11
1対多 多対1
TOKYO JOHO UNIVERSITYTOKYO UNIVERSITY OF INFORMATION SCIENCES
DBの正規化補足説明(1)
 正規化されていないテーブル
12
ID タイトル カテゴリ 出版社 発行年
1 Webエンジニアの教科書 理工系 シーアンドアール研究所 2015
2 たのしいRuby 理工系 ソフトバンククリエイ
ティブ
2010
3 嫌われる勇気 心理学 ダイヤモンド社 2013
4 PHP+MySQLマスターブッ
ク
理工系 マイナビ 2014
5 量子力学で生命の謎を解く 物理学 ソフトバンククリエイ
ティブ
2015
繰り返しが発生するフィールドは正規化
表.蔵書テーブル
TOKYO JOHO UNIVERSITYTOKYO UNIVERSITY OF INFORMATION SCIENCES
DBの正規化補足説明(2)
 正規化したテーブル
13
ID タイトル カテゴリID 出版社ID 発行年
1 Webエンジニアの教科書 1 1 2015
2 たのしいRuby 1 2 2010
3 嫌われる勇気 2 3 2013
4 PHP+MySQLマスターブック 1 4 2014
5 量子力学で生命の謎を解く 3 2 2015
ID 名前
1 理工系
2 心理学
3 物理学
ID 名前
1 シーアンドアール研究所
2 ソフトバンククリエイティブ
3 ダイヤモンド社
4 マイナビ
表.蔵書テーブル
表.カテゴリテーブル
表.出版社テーブル
TOKYO JOHO UNIVERSITYTOKYO UNIVERSITY OF INFORMATION SCIENCES
テーブル定義表(1)
フィールド名 型 Not
null
Key Auto
increment
Default 意味
id INT(11) YES 主キー YES NULL 利用者ID
name VARCHAR
(40)
NULL 名前
role INT(1) NULL 権限
(0:学生、1:教員)
14
表.利用者テーブル:users
TOKYO JOHO UNIVERSITYTOKYO UNIVERSITY OF INFORMATION SCIENCES
テーブル定義表(2)
フィールド名 型 Not
null
Key Auto
increment
Default 意味
id INT(11) YES 主キー YES NULL 蔵書ID
title VARCHAR
(40)
NULL 書籍名
category_id INT(11) YES 外部
キー
NULL カテゴリID
publisher_id INT(11) YES 外部
キー
NULL 出版社ID
year INT(4) NULL 発行年
15
表.蔵書テーブル:books
TOKYO JOHO UNIVERSITYTOKYO UNIVERSITY OF INFORMATION SCIENCES
テーブル定義表(3)
フィールド名 型 Not
null
Key Auto
increment
Default 意味
id INT(11) YES 主キー YES NULL カテゴリID
name VARCHAR
(20)
NULL カテゴリ名
16
表.カテゴリテーブル:categories
TOKYO JOHO UNIVERSITYTOKYO UNIVERSITY OF INFORMATION SCIENCES
テーブル定義表(4)
フィールド名 型 Not
null
Key Auto
increment
Default 意味
id INT(11) YES 主キー YES NULL 出版社ID
name VARCHAR
(40)
NULL 出版社名
17
表.出版社テーブル:publishers
TOKYO JOHO UNIVERSITYTOKYO UNIVERSITY OF INFORMATION SCIENCES
テーブル定義表(5)
フィールド名 型 Not
null
Key Auto
increment
Default 意味
id INT(11) YES 主キー YES NULL 貸出ID
user_id INT(11) YES 外部
キー
NULL 利用者ID
book_id INT(11) YES 外部
キー
NULL 蔵書ID
issue_date DATE NULL 貸出日
return_date DATE NULL 返却予定日
status INT(1) NULL 貸出状態
(0:貸出OK、
1:貸出中)
18
表.貸出テーブル:circulations
TOKYO JOHO UNIVERSITYTOKYO UNIVERSITY OF INFORMATION SCIENCES
DBの正規化補足説明(3)
 正規化が必要な理由
 データの矛盾を防ぐ
 フィールドの内容に変更があった場合の修正漏れを防ぐ
 例:出版社名に変更があった場合
 DB処理の効率化
 フィールドの内容に変更があった場合の修正は1箇所のみでOK
 同じ項目(例:同じ出版社)のレコードを全検索する場合の高速化
 カテゴリの再編時の手間を削減する
 例:理工系と物理学は理系に統合する場合
⇒カテゴリテーブルの修正のみでOK
 必ず第三正規形にすること
19
TOKYO JOHO UNIVERSITYTOKYO UNIVERSITY OF INFORMATION SCIENCES
DB設計とSQL文の対応(1)
 蔵書テーブル(books)のSQL文
20
CREATE TABLE `books` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`title` varchar(40) DEFAULT NULL,
`category_id` int(11) DEFAULT NULL,
`publisher_id` int(11) DEFAULT NULL,
`year` int(4) DEFAULT NULL,
PRIMARY KEY (`id`),
CONSTRAINT `category_id_fk` FOREIGN KEY (`category_id`)
REFERENCES `categories` (`id`) ON DELETE CASCADE
ON UPDATE CASCADE,
CONSTRAINT `publiser_id_fk` FOREIGN KEY (`publisher_id`)
REFERENCES `publishers` (`id`) ON DELETE CASCADE
ON UPDATE CASCADE
) ;
主キー
外部キー制約
※ CASCADE:親テーブルの更新
に合わせて更新
外部キー
TOKYO JOHO UNIVERSITYTOKYO UNIVERSITY OF INFORMATION SCIENCES
DB設計とSQL文の対応(2)
 カテゴリテーブル(books)のSQL文
 出版社テーブル(publishers)のSQL文
21
CREATE TABLE `categories` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(40) DEFAULT NULL,
PRIMARY KEY (`id`)
);
CREATE TABLE `publishers` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(40) DEFAULT NULL,
PRIMARY KEY (`id`)
);
TOKYO JOHO UNIVERSITYTOKYO UNIVERSITY OF INFORMATION SCIENCES
画面遷移図
 業務フローに従い画面遷移とその条件を図示する
 構成要素
 画面ID/画面名
 画面を一意に識別する識別子(画面一覧やレイアウトの照合用)
 遷移矢線
 画面の順序関係を記述。交錯しないように配置
 ボタン名(イベント)
 画面遷移を起こすトリガーを記述
 ボタン名を記述しておけば、押下時に画面遷移することが分かる
 アクション(データの発生やメール配信など)
 画面遷移に伴って起動される動作を記述
 データ登録やメール配信のアクションを記述 22
TOKYO JOHO UNIVERSITYTOKYO UNIVERSITY OF INFORMATION SCIENCES
レポート作成例:画面遷移図
 ゼミ室蔵書管理システムの画面遷移図
23
TOKYO JOHO UNIVERSITYTOKYO UNIVERSITY OF INFORMATION SCIENCES
開発について
 想定される構成例
 画面のフォーム:HTML, JS
 DB登録処理:PHP
 DB:MySQL
 進め方
 複数人で相談して役割分担(画面、DB、DB登録処理など)
 最低限できて欲しい機能:蔵書リスト画面、蔵書貸出画面
 できなくてもよい機能:
 ログイン機能:勉強にはなるが、セッション管理が必要
 ユーザ管理機能:ユーザはDBから直接追加でもよい
 開発期間:2週間程度が目安
24

Contenu connexe

Tendances

Tendances (20)

SQLアンチパターン - ナイーブツリー
SQLアンチパターン - ナイーブツリーSQLアンチパターン - ナイーブツリー
SQLアンチパターン - ナイーブツリー
 
心理的安全性と、Veinの紹介 Psychological safety and introduction of Vein
心理的安全性と、Veinの紹介 Psychological safety and introduction of Vein心理的安全性と、Veinの紹介 Psychological safety and introduction of Vein
心理的安全性と、Veinの紹介 Psychological safety and introduction of Vein
 
Elasticsearch の検索精度のチューニング 〜テストを作って高速かつ安全に〜
Elasticsearch の検索精度のチューニング 〜テストを作って高速かつ安全に〜Elasticsearch の検索精度のチューニング 〜テストを作って高速かつ安全に〜
Elasticsearch の検索精度のチューニング 〜テストを作って高速かつ安全に〜
 
暗号技術入門
暗号技術入門暗号技術入門
暗号技術入門
 
Laravel × レイヤードアーキテクチャを実践して得られた知見と反省 / Practice of Laravel with layered archi...
Laravel × レイヤードアーキテクチャを実践して得られた知見と反省 / Practice of Laravel with layered archi...Laravel × レイヤードアーキテクチャを実践して得られた知見と反省 / Practice of Laravel with layered archi...
Laravel × レイヤードアーキテクチャを実践して得られた知見と反省 / Practice of Laravel with layered archi...
 
SPAセキュリティ入門~PHP Conference Japan 2021
SPAセキュリティ入門~PHP Conference Japan 2021SPAセキュリティ入門~PHP Conference Japan 2021
SPAセキュリティ入門~PHP Conference Japan 2021
 
PostgreSQLの行レベルセキュリティと SpringAOPでマルチテナントの ユーザー間情報漏洩を防止する (JJUG CCC 2021 Spring)
PostgreSQLの行レベルセキュリティと SpringAOPでマルチテナントの ユーザー間情報漏洩を防止する (JJUG CCC 2021 Spring)PostgreSQLの行レベルセキュリティと SpringAOPでマルチテナントの ユーザー間情報漏洩を防止する (JJUG CCC 2021 Spring)
PostgreSQLの行レベルセキュリティと SpringAOPでマルチテナントの ユーザー間情報漏洩を防止する (JJUG CCC 2021 Spring)
 
ポストモーテムやってみた #yjbonfire
ポストモーテムやってみた #yjbonfireポストモーテムやってみた #yjbonfire
ポストモーテムやってみた #yjbonfire
 
BigQuery で 150万円 使ったときの話
BigQuery で 150万円 使ったときの話BigQuery で 150万円 使ったときの話
BigQuery で 150万円 使ったときの話
 
Java ORマッパー選定のポイント #jsug
Java ORマッパー選定のポイント #jsugJava ORマッパー選定のポイント #jsug
Java ORマッパー選定のポイント #jsug
 
PHPからgoへの移行で分かったこと
PHPからgoへの移行で分かったことPHPからgoへの移行で分かったこと
PHPからgoへの移行で分かったこと
 
DDD x CQRS 更新系と参照系で異なるORMを併用して上手くいった話
DDD x CQRS   更新系と参照系で異なるORMを併用して上手くいった話DDD x CQRS   更新系と参照系で異なるORMを併用して上手くいった話
DDD x CQRS 更新系と参照系で異なるORMを併用して上手くいった話
 
レガシーコード改善のススメ
レガシーコード改善のススメレガシーコード改善のススメ
レガシーコード改善のススメ
 
暗号技術の実装と数学
暗号技術の実装と数学暗号技術の実装と数学
暗号技術の実装と数学
 
Supabase Edge Functions と Netlify Edge Functions を使ってみる – 機能とその比較 –
Supabase Edge Functions と Netlify Edge Functions を使ってみる – 機能とその比較 –Supabase Edge Functions と Netlify Edge Functions を使ってみる – 機能とその比較 –
Supabase Edge Functions と Netlify Edge Functions を使ってみる – 機能とその比較 –
 
MariaDBとMroongaで作る全言語対応超高速全文検索システム
MariaDBとMroongaで作る全言語対応超高速全文検索システムMariaDBとMroongaで作る全言語対応超高速全文検索システム
MariaDBとMroongaで作る全言語対応超高速全文検索システム
 
テストコードの DRY と DAMP
テストコードの DRY と DAMPテストコードの DRY と DAMP
テストコードの DRY と DAMP
 
Node.js Native ESM への道 〜最終章: Babel / TypeScript Modules との闘い〜
Node.js Native ESM への道  〜最終章: Babel / TypeScript Modules との闘い〜Node.js Native ESM への道  〜最終章: Babel / TypeScript Modules との闘い〜
Node.js Native ESM への道 〜最終章: Babel / TypeScript Modules との闘い〜
 
Javaメモリ勉強会
Javaメモリ勉強会Javaメモリ勉強会
Javaメモリ勉強会
 
開発速度が速い #とは(LayerX社内資料)
開発速度が速い #とは(LayerX社内資料)開発速度が速い #とは(LayerX社内資料)
開発速度が速い #とは(LayerX社内資料)
 

En vedette

Oracle と sql server 比べてみよう (sql server)
Oracle と sql server 比べてみよう (sql server)Oracle と sql server 比べてみよう (sql server)
Oracle と sql server 比べてみよう (sql server)
Masayuki Ozawa
 
Sql server のバックアップとリストアの基礎
Sql server のバックアップとリストアの基礎Sql server のバックアップとリストアの基礎
Sql server のバックアップとリストアの基礎
Masayuki Ozawa
 
[B24] Oracle から SQL Server システム移行の勘所 by Norio Nakamura
[B24] Oracle から SQL Server システム移行の勘所 by Norio Nakamura[B24] Oracle から SQL Server システム移行の勘所 by Norio Nakamura
[B24] Oracle から SQL Server システム移行の勘所 by Norio Nakamura
Insight Technology, Inc.
 

En vedette (11)

はじめてのSQLチューニング(oracle)
はじめてのSQLチューニング(oracle)はじめてのSQLチューニング(oracle)
はじめてのSQLチューニング(oracle)
 
Oracle と sql server 比べてみよう (sql server)
Oracle と sql server 比べてみよう (sql server)Oracle と sql server 比べてみよう (sql server)
Oracle と sql server 比べてみよう (sql server)
 
設計書からの卒業
設計書からの卒業設計書からの卒業
設計書からの卒業
 
Sql server のバックアップとリストアの基礎
Sql server のバックアップとリストアの基礎Sql server のバックアップとリストアの基礎
Sql server のバックアップとリストアの基礎
 
Oracle Advanced Analytics 概要
Oracle Advanced Analytics 概要Oracle Advanced Analytics 概要
Oracle Advanced Analytics 概要
 
Cloudera World Tokyo 2015 Oracleセッション資料 「ビッグデータ/IoTの最新事例とHadoop活用の勘所」
Cloudera World Tokyo 2015 Oracleセッション資料 「ビッグデータ/IoTの最新事例とHadoop活用の勘所」Cloudera World Tokyo 2015 Oracleセッション資料 「ビッグデータ/IoTの最新事例とHadoop活用の勘所」
Cloudera World Tokyo 2015 Oracleセッション資料 「ビッグデータ/IoTの最新事例とHadoop活用の勘所」
 
Oracle Labs 発! Parallel Graph AnalytiX(PGX)
Oracle Labs 発! Parallel Graph AnalytiX(PGX)Oracle Labs 発! Parallel Graph AnalytiX(PGX)
Oracle Labs 発! Parallel Graph AnalytiX(PGX)
 
[B24] Oracle から SQL Server システム移行の勘所 by Norio Nakamura
[B24] Oracle から SQL Server システム移行の勘所 by Norio Nakamura[B24] Oracle から SQL Server システム移行の勘所 by Norio Nakamura
[B24] Oracle から SQL Server システム移行の勘所 by Norio Nakamura
 
0からのウェブディレクション講座:設計編 v5.3
0からのウェブディレクション講座:設計編 v5.30からのウェブディレクション講座:設計編 v5.3
0からのウェブディレクション講座:設計編 v5.3
 
SQLアンチパターン メンター用資料
SQLアンチパターン メンター用資料SQLアンチパターン メンター用資料
SQLアンチパターン メンター用資料
 
20161005_Oracle/SQL Serverの AWS への移行 ~その選択肢と注意事項~ by 株式会社インサイトテクノロジー 宮地敬史
20161005_Oracle/SQL Serverの AWS への移行 ~その選択肢と注意事項~ by 株式会社インサイトテクノロジー 宮地敬史20161005_Oracle/SQL Serverの AWS への移行 ~その選択肢と注意事項~ by 株式会社インサイトテクノロジー 宮地敬史
20161005_Oracle/SQL Serverの AWS への移行 ~その選択肢と注意事項~ by 株式会社インサイトテクノロジー 宮地敬史
 

Similaire à Webシステムプログラミング設計書2015

Windowsストア[DB]アプリ入門
Windowsストア[DB]アプリ入門Windowsストア[DB]アプリ入門
Windowsストア[DB]アプリ入門
Akira Hatsune
 
kagami_comput2015_1
kagami_comput2015_1kagami_comput2015_1
kagami_comput2015_1
swkagami
 
Shibya.trac #2: TracとTestLinkの合わせ技
Shibya.trac #2: TracとTestLinkの合わせ技Shibya.trac #2: TracとTestLinkの合わせ技
Shibya.trac #2: TracとTestLinkの合わせ技
Toshiyuki Kawanishi
 

Similaire à Webシステムプログラミング設計書2015 (20)

Visual Studio による開発環境・プログラミングの進化
Visual Studio による開発環境・プログラミングの進化Visual Studio による開発環境・プログラミングの進化
Visual Studio による開発環境・プログラミングの進化
 
Webシステムプログラミング20150413
Webシステムプログラミング20150413Webシステムプログラミング20150413
Webシステムプログラミング20150413
 
Webシステムプログラミング20161003
Webシステムプログラミング20161003Webシステムプログラミング20161003
Webシステムプログラミング20161003
 
Windowsストア[DB]アプリ入門
Windowsストア[DB]アプリ入門Windowsストア[DB]アプリ入門
Windowsストア[DB]アプリ入門
 
Visual Studio 2008による 開発環境・プログラミングの進化
Visual Studio 2008による 開発環境・プログラミングの進化Visual Studio 2008による 開発環境・プログラミングの進化
Visual Studio 2008による 開発環境・プログラミングの進化
 
kagami_comput2015_1
kagami_comput2015_1kagami_comput2015_1
kagami_comput2015_1
 
Tech summitの歩き方 開発者編
Tech summitの歩き方 開発者編Tech summitの歩き方 開発者編
Tech summitの歩き方 開発者編
 
Tech summitの歩き方 開発者編
Tech summitの歩き方 開発者編Tech summitの歩き方 開発者編
Tech summitの歩き方 開発者編
 
Webシステムプログラミング概要20150630
Webシステムプログラミング概要20150630Webシステムプログラミング概要20150630
Webシステムプログラミング概要20150630
 
基礎演習V_20151006
基礎演習V_20151006基礎演習V_20151006
基礎演習V_20151006
 
Lt 110416
Lt 110416Lt 110416
Lt 110416
 
【Xpages day2016】標準コントールを使わないxpage開発
【Xpages day2016】標準コントールを使わないxpage開発【Xpages day2016】標準コントールを使わないxpage開発
【Xpages day2016】標準コントールを使わないxpage開発
 
ソフトウェア設計原則【SOLID】を学ぶ #2 インターフェイス分離の原則.pdf
ソフトウェア設計原則【SOLID】を学ぶ #2 インターフェイス分離の原則.pdfソフトウェア設計原則【SOLID】を学ぶ #2 インターフェイス分離の原則.pdf
ソフトウェア設計原則【SOLID】を学ぶ #2 インターフェイス分離の原則.pdf
 
基礎演習V 河野ゼミ紹介20161025
基礎演習V 河野ゼミ紹介20161025基礎演習V 河野ゼミ紹介20161025
基礎演習V 河野ゼミ紹介20161025
 
jjug_night_20161121
jjug_night_20161121jjug_night_20161121
jjug_night_20161121
 
Titanium実装最初の一歩.
Titanium実装最初の一歩. Titanium実装最初の一歩.
Titanium実装最初の一歩.
 
わんくま名古屋#36 (20150725) Windows 10 ユニバーサル Windows アプリ開発入門
わんくま名古屋#36 (20150725) Windows 10 ユニバーサル Windows アプリ開発入門わんくま名古屋#36 (20150725) Windows 10 ユニバーサル Windows アプリ開発入門
わんくま名古屋#36 (20150725) Windows 10 ユニバーサル Windows アプリ開発入門
 
Shibya.trac #2: TracとTestLinkの合わせ技
Shibya.trac #2: TracとTestLinkの合わせ技Shibya.trac #2: TracとTestLinkの合わせ技
Shibya.trac #2: TracとTestLinkの合わせ技
 
Dart / Flutter コードファイルジェネレート入門
Dart / Flutter コードファイルジェネレート入門Dart / Flutter コードファイルジェネレート入門
Dart / Flutter コードファイルジェネレート入門
 
kagami_comput2016_01
kagami_comput2016_01kagami_comput2016_01
kagami_comput2016_01
 

Plus de 義広 河野

Plus de 義広 河野 (20)

河野ゼミ説明会20221116
河野ゼミ説明会20221116河野ゼミ説明会20221116
河野ゼミ説明会20221116
 
河野ゼミ研究紹介20221019
河野ゼミ研究紹介20221019河野ゼミ研究紹介20221019
河野ゼミ研究紹介20221019
 
河野ゼミ研究紹介20211020
河野ゼミ研究紹介20211020河野ゼミ研究紹介20211020
河野ゼミ研究紹介20211020
 
河野ゼミ紹介20201118
河野ゼミ紹介20201118河野ゼミ紹介20201118
河野ゼミ紹介20201118
 
オンライン文化学術展2020「河野ゼミ研究紹介」
オンライン文化学術展2020「河野ゼミ研究紹介」オンライン文化学術展2020「河野ゼミ研究紹介」
オンライン文化学術展2020「河野ゼミ研究紹介」
 
専門演習_河野ゼミ説明会20191120
専門演習_河野ゼミ説明会20191120専門演習_河野ゼミ説明会20191120
専門演習_河野ゼミ説明会20191120
 
専門演習_河野ゼミ紹介20191023
専門演習_河野ゼミ紹介20191023専門演習_河野ゼミ紹介20191023
専門演習_河野ゼミ紹介20191023
 
コミュニティカレッジさくら20190825
コミュニティカレッジさくら20190825コミュニティカレッジさくら20190825
コミュニティカレッジさくら20190825
 
高大連携授業20190730
高大連携授業20190730高大連携授業20190730
高大連携授業20190730
 
高大連携授業20190730(抜粋)
高大連携授業20190730(抜粋)高大連携授業20190730(抜粋)
高大連携授業20190730(抜粋)
 
千葉市若葉区共催市民公開講座_20190711
千葉市若葉区共催市民公開講座_20190711千葉市若葉区共催市民公開講座_20190711
千葉市若葉区共催市民公開講座_20190711
 
プレゼンの作り方2019
プレゼンの作り方2019プレゼンの作り方2019
プレゼンの作り方2019
 
プレゼン勉強会_若葉区公開講座_20190620
プレゼン勉強会_若葉区公開講座_20190620プレゼン勉強会_若葉区公開講座_20190620
プレゼン勉強会_若葉区公開講座_20190620
 
専門演習説明会『河野ゼミの紹介2019』
専門演習説明会『河野ゼミの紹介2019』専門演習説明会『河野ゼミの紹介2019』
専門演習説明会『河野ゼミの紹介2019』
 
ソーシャルメディアを活用した地域の情報発信_02_20190616
ソーシャルメディアを活用した地域の情報発信_02_20190616ソーシャルメディアを活用した地域の情報発信_02_20190616
ソーシャルメディアを活用した地域の情報発信_02_20190616
 
教育システム情報学会(JSiSE) 2018年度第6回研究会_20190316
教育システム情報学会(JSiSE) 2018年度第6回研究会_20190316教育システム情報学会(JSiSE) 2018年度第6回研究会_20190316
教育システム情報学会(JSiSE) 2018年度第6回研究会_20190316
 
卒業論文ルーブリック_20181217
卒業論文ルーブリック_20181217卒業論文ルーブリック_20181217
卒業論文ルーブリック_20181217
 
プログラミング応用b 長期課題(2)
プログラミング応用b 長期課題(2)プログラミング応用b 長期課題(2)
プログラミング応用b 長期課題(2)
 
教員免許状更新講習20180821
教員免許状更新講習20180821教員免許状更新講習20180821
教員免許状更新講習20180821
 
高大連携授業20180803
高大連携授業20180803高大連携授業20180803
高大連携授業20180803
 

Webシステムプログラミング設計書2015

  • 2. TOKYO JOHO UNIVERSITYTOKYO UNIVERSITY OF INFORMATION SCIENCES 到達目標  到達目標  Webシステムを設計し、開発できること  最終成果物:学生生活で利用できるWebシステム  授業計画  第10講:Webシステムの基本設計 (1)  第11講:Webシステムの基本設計 (2)  第12講:WebシステムのDB設計  第13講:WebシステムのUI設計  第14講:Webシステムの処理  第15講:まとめ、平常試験 (2) 2
  • 3. TOKYO JOHO UNIVERSITYTOKYO UNIVERSITY OF INFORMATION SCIENCES システム設計の流れ  DB設計はシステム設計の一部 3 業務分析 要件定義 基本設計 論理設計 詳細設計 今の業務はどうなっているのか 何をしたいのか どんなシステムにすべきか どのように実現するか 方法を明確にする 今回はこの部分が中心
  • 4. TOKYO JOHO UNIVERSITYTOKYO UNIVERSITY OF INFORMATION SCIENCES 各工程での成果物  成果物 4 業務分析 要件定義 基本設計 論理設計 詳細設計 要件定義書 基本設計書 ER図、テーブル定義表 画面遷移図 詳細設計書
  • 5. TOKYO JOHO UNIVERSITYTOKYO UNIVERSITY OF INFORMATION SCIENCES サンプル課題  タイトル:ゼミ室の蔵書管理システム  業務分析  ゼミ室には教員の専門分野に関する書籍が豊富にある  研究を進める際に、ゼミ生はゼミ室で書籍を読んだり、 必要に応じて教員から許可を得て書籍を借りたりする  教員は誰に何の書籍を貸しているかは管理できていない  要件定義  ゼミ室の蔵書と貸し出し記録を管理したい  教員はゼミ生の名簿と蔵書を管理したい  教員、またはゼミ生は貸し出し記録を付けた  書籍の貸し出し冊数は5冊まで、期限は2週間とする 5
  • 6. TOKYO JOHO UNIVERSITYTOKYO UNIVERSITY OF INFORMATION SCIENCES 基本設計(1)  機能  ログイン機能  ユーザのID、パスワードでログイン  ユーザ管理機能  ユーザの追加・更新・削除が可能  ユーザ毎に権限を付与し、利用できる機能を制限  蔵書登録機能  書籍の追加・更新・削除が可能  書籍のタイトル、カテゴリ、出版社、発行年などを管理  条件を指定した蔵書検索が可能  貸し出し機能  ユーザへの書籍貸し出しを台帳に記録  ユーザへの貸し出し冊数の上限と期限を設ける 6
  • 7. TOKYO JOHO UNIVERSITYTOKYO UNIVERSITY OF INFORMATION SCIENCES レポー基本設計(2)  データ構造  ユーザ情報  ユーザID、パスワード、名前、権限(管理者 or 利用者)  ユーザ情報を変更できるのは管理者のみ  蔵書情報  書籍のタイトル、カテゴリ、出版社、発行年  貸出台帳  書籍と貸し出したユーザの紐付け  貸出日、返却予定日、貸出状態(貸出OK or 貸出中) 7
  • 8. TOKYO JOHO UNIVERSITYTOKYO UNIVERSITY OF INFORMATION SCIENCES 画面設計(1)  画面設計図:蔵書リスト画面 8 書籍の新規登録 各レコードの操作が可能書籍リストを表形式で表示 ※図作成には、リアルタイムコラボレーションツール「Cacoo」を利用
  • 9. TOKYO JOHO UNIVERSITYTOKYO UNIVERSITY OF INFORMATION SCIENCES 画面設計(2)  画面設計図:蔵書 新規登録画面  すべての項目を入力し、「登録」ボタンで登録可  タイトル、出版社:テキストボックス  カテゴリ、発行年:選択ボックス 9
  • 10. TOKYO JOHO UNIVERSITYTOKYO UNIVERSITY OF INFORMATION SCIENCES 画面設計(3)  画面設計図:蔵書貸出画面  「貸出可」より蔵書の貸出が可能  「貸出書籍」より自分の書籍貸出状況を確認可 10 貸出操作が可能
  • 11. TOKYO JOHO UNIVERSITYTOKYO UNIVERSITY OF INFORMATION SCIENCES ER図  以下の5テーブルで構成される  users:利用者テーブル, books:蔵書テーブル  categories:カテゴリテーブル, publishers:出版社テーブル  circulations:貸出テーブル 11 1対多 多対1
  • 12. TOKYO JOHO UNIVERSITYTOKYO UNIVERSITY OF INFORMATION SCIENCES DBの正規化補足説明(1)  正規化されていないテーブル 12 ID タイトル カテゴリ 出版社 発行年 1 Webエンジニアの教科書 理工系 シーアンドアール研究所 2015 2 たのしいRuby 理工系 ソフトバンククリエイ ティブ 2010 3 嫌われる勇気 心理学 ダイヤモンド社 2013 4 PHP+MySQLマスターブッ ク 理工系 マイナビ 2014 5 量子力学で生命の謎を解く 物理学 ソフトバンククリエイ ティブ 2015 繰り返しが発生するフィールドは正規化 表.蔵書テーブル
  • 13. TOKYO JOHO UNIVERSITYTOKYO UNIVERSITY OF INFORMATION SCIENCES DBの正規化補足説明(2)  正規化したテーブル 13 ID タイトル カテゴリID 出版社ID 発行年 1 Webエンジニアの教科書 1 1 2015 2 たのしいRuby 1 2 2010 3 嫌われる勇気 2 3 2013 4 PHP+MySQLマスターブック 1 4 2014 5 量子力学で生命の謎を解く 3 2 2015 ID 名前 1 理工系 2 心理学 3 物理学 ID 名前 1 シーアンドアール研究所 2 ソフトバンククリエイティブ 3 ダイヤモンド社 4 マイナビ 表.蔵書テーブル 表.カテゴリテーブル 表.出版社テーブル
  • 14. TOKYO JOHO UNIVERSITYTOKYO UNIVERSITY OF INFORMATION SCIENCES テーブル定義表(1) フィールド名 型 Not null Key Auto increment Default 意味 id INT(11) YES 主キー YES NULL 利用者ID name VARCHAR (40) NULL 名前 role INT(1) NULL 権限 (0:学生、1:教員) 14 表.利用者テーブル:users
  • 15. TOKYO JOHO UNIVERSITYTOKYO UNIVERSITY OF INFORMATION SCIENCES テーブル定義表(2) フィールド名 型 Not null Key Auto increment Default 意味 id INT(11) YES 主キー YES NULL 蔵書ID title VARCHAR (40) NULL 書籍名 category_id INT(11) YES 外部 キー NULL カテゴリID publisher_id INT(11) YES 外部 キー NULL 出版社ID year INT(4) NULL 発行年 15 表.蔵書テーブル:books
  • 16. TOKYO JOHO UNIVERSITYTOKYO UNIVERSITY OF INFORMATION SCIENCES テーブル定義表(3) フィールド名 型 Not null Key Auto increment Default 意味 id INT(11) YES 主キー YES NULL カテゴリID name VARCHAR (20) NULL カテゴリ名 16 表.カテゴリテーブル:categories
  • 17. TOKYO JOHO UNIVERSITYTOKYO UNIVERSITY OF INFORMATION SCIENCES テーブル定義表(4) フィールド名 型 Not null Key Auto increment Default 意味 id INT(11) YES 主キー YES NULL 出版社ID name VARCHAR (40) NULL 出版社名 17 表.出版社テーブル:publishers
  • 18. TOKYO JOHO UNIVERSITYTOKYO UNIVERSITY OF INFORMATION SCIENCES テーブル定義表(5) フィールド名 型 Not null Key Auto increment Default 意味 id INT(11) YES 主キー YES NULL 貸出ID user_id INT(11) YES 外部 キー NULL 利用者ID book_id INT(11) YES 外部 キー NULL 蔵書ID issue_date DATE NULL 貸出日 return_date DATE NULL 返却予定日 status INT(1) NULL 貸出状態 (0:貸出OK、 1:貸出中) 18 表.貸出テーブル:circulations
  • 19. TOKYO JOHO UNIVERSITYTOKYO UNIVERSITY OF INFORMATION SCIENCES DBの正規化補足説明(3)  正規化が必要な理由  データの矛盾を防ぐ  フィールドの内容に変更があった場合の修正漏れを防ぐ  例:出版社名に変更があった場合  DB処理の効率化  フィールドの内容に変更があった場合の修正は1箇所のみでOK  同じ項目(例:同じ出版社)のレコードを全検索する場合の高速化  カテゴリの再編時の手間を削減する  例:理工系と物理学は理系に統合する場合 ⇒カテゴリテーブルの修正のみでOK  必ず第三正規形にすること 19
  • 20. TOKYO JOHO UNIVERSITYTOKYO UNIVERSITY OF INFORMATION SCIENCES DB設計とSQL文の対応(1)  蔵書テーブル(books)のSQL文 20 CREATE TABLE `books` ( `id` int(11) NOT NULL AUTO_INCREMENT, `title` varchar(40) DEFAULT NULL, `category_id` int(11) DEFAULT NULL, `publisher_id` int(11) DEFAULT NULL, `year` int(4) DEFAULT NULL, PRIMARY KEY (`id`), CONSTRAINT `category_id_fk` FOREIGN KEY (`category_id`) REFERENCES `categories` (`id`) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `publiser_id_fk` FOREIGN KEY (`publisher_id`) REFERENCES `publishers` (`id`) ON DELETE CASCADE ON UPDATE CASCADE ) ; 主キー 外部キー制約 ※ CASCADE:親テーブルの更新 に合わせて更新 外部キー
  • 21. TOKYO JOHO UNIVERSITYTOKYO UNIVERSITY OF INFORMATION SCIENCES DB設計とSQL文の対応(2)  カテゴリテーブル(books)のSQL文  出版社テーブル(publishers)のSQL文 21 CREATE TABLE `categories` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(40) DEFAULT NULL, PRIMARY KEY (`id`) ); CREATE TABLE `publishers` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(40) DEFAULT NULL, PRIMARY KEY (`id`) );
  • 22. TOKYO JOHO UNIVERSITYTOKYO UNIVERSITY OF INFORMATION SCIENCES 画面遷移図  業務フローに従い画面遷移とその条件を図示する  構成要素  画面ID/画面名  画面を一意に識別する識別子(画面一覧やレイアウトの照合用)  遷移矢線  画面の順序関係を記述。交錯しないように配置  ボタン名(イベント)  画面遷移を起こすトリガーを記述  ボタン名を記述しておけば、押下時に画面遷移することが分かる  アクション(データの発生やメール配信など)  画面遷移に伴って起動される動作を記述  データ登録やメール配信のアクションを記述 22
  • 23. TOKYO JOHO UNIVERSITYTOKYO UNIVERSITY OF INFORMATION SCIENCES レポート作成例:画面遷移図  ゼミ室蔵書管理システムの画面遷移図 23
  • 24. TOKYO JOHO UNIVERSITYTOKYO UNIVERSITY OF INFORMATION SCIENCES 開発について  想定される構成例  画面のフォーム:HTML, JS  DB登録処理:PHP  DB:MySQL  進め方  複数人で相談して役割分担(画面、DB、DB登録処理など)  最低限できて欲しい機能:蔵書リスト画面、蔵書貸出画面  できなくてもよい機能:  ログイン機能:勉強にはなるが、セッション管理が必要  ユーザ管理機能:ユーザはDBから直接追加でもよい  開発期間:2週間程度が目安 24