書籍管理システム
内部設計書
第
2
版
Spring Soft.
平成 27 年 12 月 14 日
目 次
1 開発対象システム概要 3 1.1 主要機能 . . . . 3 1.2 開発環境 . . . . 3 1.3 Git による管理方針 . . . . 3 2 HTML/CSS コーディング規約 5 2.1 全体的なスタイルルール . . . . 5 2.2 一般的な書式ルール . . . . 5 2.3 全体的なメタルール . . . . 5 2.4 HTML のスタイルルール . . . . 5 2.5 HTML の書式ルール . . . . 6 2.6 CSS のスタイルルール . . . . 6 2.7 CSS 書式ルール . . . . 6 3 JavaScript コーディング規約 6 3.1 JavaScript の言語使用に関する記述 . . . . 7 3.2 JavaScript のスタイルに関するルール . . . . 7 4 モジュール構成 8 4.1 アカウント管理モジュール . . . . 8 4.1.1 Account Class . . . . 9 4.1.2 CreateAccount Class . . . . 11 4.1.3 EditAccount Class . . . . 12 4.1.4 Login Class . . . . 12 4.2 書籍情報管理モジュール . . . . 13 4.2.1 Book Class . . . . 13 4.2.2 BookManage Class . . . . 14 4.3 メールモジュール . . . . 20 4.3.1 Mail . . . . 20 4.3.2 MailManage . . . . 21 4.4 所有書籍検索モジュール . . . . 25 4.4.1 BookSearch Class . . . . 25 4.5 公開リストモジュール . . . . 29 4.5.1 PublicManage Class . . . . 29 4.6 サーバ通信モジュール . . . . 33 4.6.1 BrowserController Class . . . . 33 4.6.2 ServerController Class . . . . 36 4.7 ISBN 登録モジュール . . . . 38 4.7.1 ISBNController Class . . . . 38 4.8 コントローラモジュール . . . . 39 4.8.1 InOut Class . . . . 39 4.8.2 Change Class . . . . 405 サーバ詳細 51 5.1 概要 . . . . 51 5.1.1 サーバ詳細 . . . . 52 5.1.2 データベース情報 . . . . 52 6 データテーブル 53 6.1 データテーブル詳細 . . . . 53 6.2 テーブル内容 . . . . 54 6.2.1 アカウントテーブル詳細 . . . . 54 6.2.2 書籍情報テーブル詳細 . . . . 55 6.2.3 不要書籍テーブル . . . . 55 6.2.4 貸出テーブル . . . . 55 6.2.5 メールテーブル . . . . 55
1
開発対象システム概要
本システムは、一般のユーザがスマートフォンまたは PC などを用いて操作する Web システム として実装する。1.1
主要機能
主要機能について以下に記載する。 • アカウントを管理する。 • 書籍の情報を管理 (追加・編集・削除) する。 • 書籍情報を登録し、登録した情報を表示する。 • 登録書籍の検索が行われた時、検索条件に合った書籍を表示する。 • 不要な書籍を他アカウントが閲覧できる。 • 公開されている書籍の検索が行われた時、検索条件にあった書籍を表示する。 • 不要書籍所有者にメールを送信することができる。 • メールを受信でき、そのメールに対して返信できる。1.2
開発環境
開発環境について以下に記載する。 • プログラム言語:HTML・CSS・PHP・JavaScript • DBMS: MySQL • 設計書作成: LaTeX • バージョン管理: Git • HTTP サーバ: Node.js • 対象ブラウザ: safari、GoogleChrome1.3
Git による管理方針
Git に関する方針について、以下のように定める。 登録者 リポジトリにデータを登録できる者は、Spring Soft. のメンバーのみとする。登録者は、自 らが作成した、もしくは作成に関わったデータをリポジトリに登録することが可能である。 コミット・プッシュ・マージの条件 コミット・プッシュ・マージの条件を以下に示す。また、図 3 にマージまでの流れを示す。• ローカルブランチにコミットする際は、変更部分やどの部分のビルドが通らないかなど をコミット時に明記する。明記する際の言語は日本語とする。 • サポートブランチにはビルドが通らない状態のソースコードをプッシュしても構わない。 • ソースコードを統合ブランチにマージ (プル) する場合、必ずビルドが通る状態のソー スコードをマージする。 ディレクトリの構成 ディレクトリはモジュールごとに作る。ディレクトリ名はわかりやすい英語名をつけること とする。基本的には、言語設定で英語表示にしたときの各機能名をディレクトリ名とするこ とが望ましい。 ブランチの構成 1. 統合ブランチ master ブランチを統合ブランチとする。統合ブランチでは基本的に公開可能な状態の ファイルを管理する。この時、タグを使用しバージョン番号を記録する。 2. サポートブランチ 新規機能追加や、既存機能の強化、バグ修正といった作業を行う際は基本的にトピック ブランチを作成する。統合ブランチからサポートブランチを分岐させる際は、原則とし て分岐元となるファイルの ”ファイル名 ”と ”バージョン番号 ”を含んだ名前を付ける。 また、サポートブランチの場合でもコミットの際にはタグを使用しバージョン番号を記 録する。作業が完了し次第、統合ブランチにマージする。それぞれのサポートブランチ を大きく分けて以下の 2 つとする。 • Function ブランチ このブランチは新規機能追加と既存機能の強化をする際に用いる。このブランチを 作成する際は、ブランチ名の最後に ”-F ”を付けることとする。例えば、統合ブラ ンチの ”MRepo ”というディレクトリ (もしくはファイル) 名のバージョン 1.1 の ものから Function ブランチを作成する場合は、”MRepo 1.1-F ”というブランチ名 でトピックブランチを作成する。 • BugPatch ブランチ このブランチはバグ修正を行う際に作成するブランチである。このブランチを作成 する際は、ブランチ名の最後に ”-B ”を付けることとする。例えば、統合ブランチ の ”MRepo ”というディレクトリ (もしくはファイル) 名のバージョン 1.1 のもの から BugPatch ブランチを作成する場合は、”MRepo 1.1-B ”というブランチ名を 設定し、BugPatch ブランチを作成する。 バージョン番号 BOOK MAN-AGE を根本から変更する場合はメジャーバージョン番号を上げる。新機能の リリース (統合ブランチにファイルをアップする) 時はマイナーバージョン番号を上げる。 Function ブランチにファイルをアップする際はリビジョン番号を、BugPatch ブランチの際 はビルド番号を上げる。図 4 にブランチ構成の例を示す。この図は MRepo というファイル のバージョン 1.1 から Function ブランチと BugPatch ブランチを作成し、MRepo のバー ジョン 1.2 をリリースするまでの流れを表したものである。
2
HTML/CSS
コーディング規約
Google の HTML / CSS スタイルガイドを基とした、HTML/CSS コーディング規約を記述する。2.1
全体的なスタイルルール
プロトコル 埋め込みリソースからプロトコル表記 (HTTP:、HTTPs:) を省略する。2.2
一般的な書式ルール
インデント タブ1つ分でインデントする。スペースを使用したり、タブとスペースを混在させるのは禁 止とする。 大文字/小文字 小文字のみを使用する。alt 属性など値が文字列の場合は除く。 文末のスペース 文末のスペースを削除する。2.3
全体的なメタルール
エンコード エンコードは、UTF-8(BOM なし)を使用すること。2.4
HTML のスタイルルール
ドキュメントタイプ HTML5 のみを使用する。XHTML5 は使用しない。 HTML 記述の際の省略 可能な限り適切な HTML を記述する。 目的に応じた HTML の記述 目的に応じて HTML を記述する。見出しなら hx 要素、段落なら p 要素、アンカーなら a 要素 など目的に応じた HTML 要素を使う。リンクなら a 要素で書く。onclick のような JavaScript な振る舞いのものを要素の属性に入れない。 マルチメディアの代替えコンテンツ マルチメディアの要素には、代替コンテンツを提供する。画像には、意味のある代替テキス トを alt 属性として、動画・オーディオコンテンツにはキャプションを記述する。装飾的な 用途の場合など意味を持たない画像については、代替テキストは記述せずに alt=””とする。実態参照 不要な実体参照は使用しないこと。UTF-8 においては、―(—)・”(”)・ (☺)のような文字は実体参照を使う必要はない。HTML で特別な意味を持つ文字 ( < や & など)は例外である。
2.5
HTML の書式ルール
全般的な書式 ブロック要素・リスト要素・テーブル要素は改行してから記述し、それらの子要素にはイン デントを入れる。横並びリストなど改行による空白が問題になる場合は、li 要素をすべて一 行で書いても可能である。2.6
CSS のスタイルルール
目的に応じた CSS の記述 可能な限り適切な CSS を記述する。CSS バリデーターにバグがある場合や独自の構文を必 要としない限りは、適切な CSS を書く。HTML 同様 W3C CSS validator などのツールで検 証する。 ID とクラスの命名 ID とクラス名には意味の分かる範囲でできるだけ短い ID とクラス名を使用する。見た目を 反映したものやそれが何を表しているか不可解な名前ではなく、要素の目的や役割を反映し た名前を付ける。 タイプセクレタの記述 ID とクラス名にタイプセレクタは記述しない。パフォーマンスを考慮して不要な子孫セレク タも避ける。 0 と単位 値が「0」なら単位を省略する。2.7
CSS 書式ルール
ブロック単位のインデント その階層がわかるようにブロック単位でコードをインデントする。 プロパティの終端 すべてのプロパティの終端はセミコロンを書く。 CSS ルールの分離 別々の CSS ルールは改行して一行間を空けて書く。3
JavaScript
コーディング規約
3.1
JavaScript の言語使用に関する記述
変数宣言
変数の宣言をする場合は、必ず var を宣言する。 定数宣言
定数を宣言する場合は、NAME LIKE THIS のように、大文字とアンダーバーを用いて宣言 する。 文末のセミコロン 必ず文末にはセミコロンを使用する。 関数ネスト 関数のネストは使用しても構わない。 ブロック内での関数の宣言 if 文等のブロック内での関数宣言はしない。関数を使用する場合には、変数に関数を代入し て定義する。 標準化された機能 移植性と互換性を高度に保つために、非標準の機能よりも標準化された機能を優先的に利用 する。 プロパティ削除 プロパティ削除をする場合は、delete を使用せず null を使用する。 eval() ユーザーの入力に悪意のあるスクリプトが混入していた場合、実行されてしまうおそれがあ るため、ユーザーの文字列の入力に対して、eval を使用しない。 with() ローカル変数と衝突するプロパティを持ち、プログラムの意図を大きく変える恐れがあるた め、with は使用しない。 文字列リテラルが複数行になる場合 +記号を用いて文字列を連結して記述する。
3.2
JavaScript のスタイルに関するルール
命名規則 クラス名は、単語ごとにアルファベットの頭文字を大文字で記述する。関数名・変数名・メ ソッド名の場合は、文頭のアルファベットは小文字、それ以降の単語はアルファベットの頭 文字を大文字で記述する。定数名はすべて大文字で記述する。ClassNamesLikeThis(クラス名)
methodNamesLikeThis(メソッド名) functionNamesLikeThis(関数名) variableNamedLikeThis(変数名)
CONSTANT VALUES LIKE THIS(定数名) filenamedlikethis.js(ファイル名) インデント 行を折り返す場合は、上の行にある式の開始位置に左端を揃える。 空行 空行は論理的に関連性のあるコードをまとまりとして示すことができるため、適宜挿入する。 文字列を表す引用符 二重引用符 (”) ではなく、単一引用符 (’) を使用する。
4
モジュール構成
BOOK MAN-AGE のシステムは、次のモジュールで構成される。 • アカウント管理モジュール • 書籍情報管理モジュール • メールモジュール • 所有書籍検索モジュール • 公開リスト検索モジュール • サーバ通信モジュール • データベースコントロールモジュール • ISBN 登録モジュール • 画面遷移モジュール • ビューモジュール4.1
アカウント管理モジュール
本システムにおいて、使用されるアカウント情報の変更・追加を行う。また、BOOK MAN-AGE のログインとログアウトを行うモジュール。クラス図を図 6 に示す。 アカウントモジュールのメソッド構成は次の通りである。また、モジュールのフロー図は図 6, 図 7, 図 8 に示す。4.1.1 Account Class 4.1.1.1 プロパティ • - module.exports = Account 4.1.1.2 メソッド • - save(fn) • - update(fn) • - hashPassword(fn) • - getByName(name, fn) • - getID(id, fn) • - get(id, fn) • - authenticate(id, passward, fn) • - toJSON() account() 概要 アカウント情報を管理するメソッド。 引数 引数は Object とする。 動作 1つのオブジェクトを受け取る。そのオブジェクトのプロパティ群を、自分のプロパティ 群にマージを行う。 save() 概要 アカウントを保存するメソッド。 引数 引数はコールバック関数とする。 動作 アカウントがアカウント ID を持つ場合、アカウント情報の変更を行う。アカウント ID がなければ、新規アカウントとする。ユニークなアカウント ID を発行し、新規アカウ ントに与える。 update()
概要 アカウントデータをデータベースに記入するメソッド。 引数 引数はコールバック関数とする。 動作 名前によってアカウント ID をインデックス参照し、アカウントオブジェクトのプロパ ティ群をデータベースに記入を行う。 hashPassword() 概要 アカウントのパスワードを保護するメソッド。 引数 引数はコールバック関数とする。 動作 アカウントを新規作成するときには、password プロパティを、パスワードを使って生 成されたハッシュ値に置き返す。 getByName() 概要 アカウント情報をデータベースから取り出すメソッド。ログインフォームから入力され たときには、アカウント情報によってフェッチさせる。 引数 引数はアカウント名とコールバック関数とする。 動作 ログインファームから入力されたアカウント名を受け取る。受け取ったアカウント名か らアカウント ID を検索する。 getID() 概要 アカウント ID を取得するメソッド。 引数 引数はアカウント ID とコールバック関数とする。 動作 アカウント名をインデックスとするアカウント ID を取得する。 get()
概要 渡されたアカウント ID を持つアカウントのハッシュデータの取得するメソッド。 引数 引数はアカウント ID とコールバック関数とする。 動作 渡されたアカウント ID を持つアカウントのハッシュデータを取得を行う。取得したオ ブジェクトをアカウントオブジェクトに変換を行う。 authenticate() 概要 アカウント ID とパスワードを認証するメソッド。 引数 引数はアカウント ID・パスワード・コールバック関数とする。 動作 このメソッドでは、最初にアカウント ID によってアカウント情報の取得を行う。アカ ウントが保存されていなければ、コールバック関数を呼び出す。アカウントの情報と入 力されたパスワードをハッシュする。ハッシュした値と保存された値が一致しなければ、 入力されたアカウント情報は無効である。 toJSON() 概要 アカウント情報の保護すべき部分の削除を行うメソッド。 返り値 JOSN 形式でアカウント情報の ID・アカウント名を返す。 動作 パスワードの情報をレスポンスで返すアカウント情報を ID・アカウント名・メールの 未読の有無のみにする。 4.1.2 CreateAccount Class 4.1.2.1 プロパティ • - Account = require():var 4.1.2.2 メソッド • - submit(req,res,next) submit() 概要 クライアントから入力された情報から新規アカウントを作成するメソッド。
引数 引数はリクエスト・レスポンス・リクエストハンドラとする。 動作 HTTP POST リクエストを処理する経路を作成する。入力されたアカウント名が一意 であることの確認を行う。アカウント名がすでに使用されている場合は、エラーの表示 を行う。HTTP POST されたデータを使用して新規アカウントの作成を行う。作成し たアカウントを保存する。 4.1.3 EditAccount Class 4.1.3.1 プロパティ • - Account = require():var 4.1.3.2 メソッド • - submit(req,res,next) submit() 概要 クライアントが入力した情報からアカウント情報を編集するメソッド。 引数 引数はリクエスト・レスポンス・リクエストハンドラとする。 動作 アカウント名を変更する場合、入力されたアカウント名が一意であることの確認を行う。 アカウント名がすでに使用されている場合は、エラーの表示を行う。また、パスワード が変更する場合、現在のパスワードと一致するか照合を行う。一致した場合、パスワー ドの変更を可能にする。 変更されたアカウント情報を保存する。 4.1.4 Login Class 4.1.4.1 プロパティ • - Account = require():var 4.1.4.2 メソッド • - submit(req,res,next) • - logout(req,res) submit()
概要 システムのログインを処理するメソッド。 引数 引数はリクエスト・レスポンス・リクエストハンドラとする。 動作 システムのログインを処理する。入力されたアカウント ID とパスワードを Account.authenticate() によって照合を行う。一致した場合、セッションを確立させる。一致しない場合、エラー を表示させる。 logout() 概要 システムのログアウトを処理するメソッド。 引数 引数はリクエスト・レスポンスとする。 動作 システムのログアウトを行うため、セッションを破棄する。
4.2
書籍情報管理モジュール
本システムにおいて、所有書籍の追加・編集・削除・貸出を行うモジュール。 クラス図を図 9 に示す。 各操作の流れを 6.2.5 に示す。 4.2.1 Book Class 4.2.1.1 プロパティ • - account:String • - ID:int • - title:String • - author:String • - publisher:String • - genre:String • - storage:String • - borrower:String • - ISBN:int • - needed:byte• - loaned:byte • - date:int • - publicDate:int • - loanDate:int 4.2.2 BookManage Class 4.2.2.1 プロパティ • # myBooks 4.2.2.2 メソッド • + expandBooks({”words”:String}) : void • + requestISBN(ISBN) : String • + add({”request”:String,”words”:String}) : String • + edit({”request”:String,”words”:String}) : String • + loan({”request”:String,”words”:String}) : String • + delete({”request”:String,”words”:String}) : String expandBooks({”words”:String}) 概要 コントローラから呼び出される。引数として所有書籍の JSON を渡す。 引数 引数の JSON は、以下のとおりである。 { "words":書籍情報 } 書籍情報は複数の場合もあり、以下の様な JSON 形式で表される。 [ { "ID":書籍 ID, "title":書籍名, "author":著者, "publisher":出版社, "genre":ジャンル, "storage":所蔵場所, "borrower":貸出相手,
"ISBN":ISBN, "date":追加日 "needed":要不要, "publicDate":公開日 "loaned":貸出状態 "loanDate":貸出日 }, … ] 動作 JSON をオブジェクトに変換し、これを引数として冊数分の Book オブジェクトを生成 する。Book オブジェクトは myBooks プロパティに格納する。 requestISBN(Number) 概要 コントローラから呼び出される。引数として ISBN を渡す。返り値は JSON である。 引数 引数の Number は、書籍の ISBN である。長さは 13 桁、もしくは 10 桁である。 返り値 取得成功の JSON は、以下のとおりである。 { "result":ture, "words":書籍情報 } 書籍情報は以下の様な JSON 形式で表される。 { "title":書籍名, "author":著者, "publisher":出版社, "genre":ジャンル, "ISBN":ISBN, } 入力値エラーの JSON は、以下のとおりである。 { "result":false, "words":"入力が不正です。" } 通信エラーの JSON は、以下のとおりである。
{ "result":false, "words":"通信に失敗しました。" } 動作 引数の ISBN に対して、桁数、メタキャラクタ等の入力値チェックを行う。不正があれ ば入力値エラーを JSON で返り値として返す。 ISBN サーバ送信モジュールへ渡し、成功すれば返り値として JSON を返す。エラーが 返ってきた場合は通信エラーを JSON で返す。 add({”request”:String,”words”:String}) 概要 コントローラから呼び出される。引数として書籍追加の JSON を渡す。返り値は Boolean である。 引数 引数の JSON は、以下のとおりである。 { "request":リクエスト内容, "account":アカウント名, "words":書籍情報 } リクエスト内容には”add”(追加) がある。書籍情報は、以下の様な JSON 形式で表さ れる。 { "title":書籍名, "author":著者, "publisher":出版社, "genre":ジャンル, "storage":所蔵場所, "ISBN":ISBN, "needed":要不要 "date":追加日 "publicDate":追加日 } 返り値 追加成功の JSON は、以下のとおりである。 { "result":true, }
入力値エラーの JSON は、以下のとおりである。 { "result":false, "words":"入力が不正です。" } 通信エラーの JSON は、以下のとおりである。 { "result":false, "words":"通信に失敗しました。" } 動作 JSON をオブジェクトに変換し、メタキャラクタ等の入力値チェックを行う。不正があ れば入力値エラーを JSON で返り値として返す。
JSON をサーバ送信モジュールへ渡し、成功すれば返り値 ture を JSON で返す。エラー が返ってきた場合は通信エラーを JSON で返す。 その他 ”date”:追加日はリクエストの際に付加する。”publicDate”:公開日は”needed”:要不要に 依存して付加する。 edit({”request”:String,”words”:String}) 概要 コントローラから呼び出される。引数として書籍追加の JSON を渡す。返り値は Boolean である。 引数 引数の JSON は、以下のとおりである。 { "request":リクエスト内容, "account":アカウント名, "words":書籍情報 } リクエスト内容には”edit”(編集) がある。書籍情報は、以下の様な JSON 形式で表さ れる。 { "ID":書籍 ID, "title":書籍名, "author":著者, "publisher":出版社, "genre":ジャンル, "storage":所蔵場所,
"ISBN":ISBN, "needed":要不要 "date":追加日 "publicDate":追加日 } 返り値 編集成功の JSON は、以下のとおりである。 { "result":true, } 入力値エラーの JSON は、以下のとおりである。 { "result":false, "words":"入力が不正です。" } 通信エラーの JSON は、以下のとおりである。 { "result":false, "words":"通信に失敗しました。" } 動作 JSON をオブジェクトに変換し、メタキャラクタ等の入力値チェックを行う。不正があ れば入力値エラーを JSON で返り値として返す。
JSON をサーバ送信モジュールへ渡し、成功すれば返り値 ture を JSON で返す。エラー が返ってきた場合は通信エラーを JSON で返す。 その他 ”date”:追加日はリクエストの際に付加する。”publicDate”:公開日は”needed”:要不要に 依存して付加する。 loan({”request”:”String”,”words”:String}) 概要 コントローラから呼び出される。引数として書籍貸出の JSON を渡す。返り値は Boolean である。 引数 引数の JSON は、以下のとおりである。 { "request":リクエスト内容, "account":アカウント名,
"words":書籍情報 } リクエスト内容には”loan”(貸出) がある。書籍情報は、以下の様な JSON 形式で表さ れる。 { "ID":書籍 ID, "borrower":貸出相手, "loaned" :貸出状態 "loanDate":貸出日 } 返り値 貸出成功の JSON は、以下のとおりである。 { "result":true, } 入力値エラーの JSON は、以下のとおりである。 { "result":false, "words":"入力が不正です。" } 通信エラーの JSON は、以下のとおりである。 { "result":false, "words":"通信に失敗しました。" } 動作 JSON をオブジェクトに変換し、メタキャラクタ等の入力値チェックを行う。不正があ れば入力値エラーを JSON で返り値として返す。
JSON をサーバ送信モジュールへ渡し、成功すれば返り値 ture を JSON で返す。エラー が返ってきた場合は通信エラーを JSON で返す。 その他 ”loanDate”:貸出日は”add”リクエストの際に付加する。 delete({”request”:”delete”,”words”:String}) 概要 コントローラから呼び出される。引数として書籍削除の JSON を渡す。返り値は Boolean である。
引数 引数の JSON は、以下のとおりである。 { "request":リクエスト内容, "account":アカウント名, "words":書籍情報 } リクエスト内容には”delete”(削除) がある。書籍情報は、以下の様な JSON 形式で表さ れる。 { "ID":書籍 ID, } 返り値 削除成功の JSON は、以下のとおりである。 { "result":true, } 通信エラーの JSON は、以下のとおりである。 { "result":false, "words":"通信に失敗しました。" } 動作
JSON をサーバ送信モジュールへ渡し、成功すれば返り値 ture を JSON で返す。エラー が返ってきた場合は通信エラーを JSON で返す。
4.3
メールモジュール
マッチング機能において、他のユーザへメール作成と送信、また、送受信したメールデータを表 示するモジュール。 クラス図を図 15 へ示す。 また、メール作成のフロー図は図 ??に示す。 4.3.1 Mail 本システムのメール情報を保持するクラス。 4.3.1.1 プロパティ • - sender : String • + getter : String• + subtitle : String • + text : String • - sendDate : String • + unread : byte 4.3.2 MailManage 4.3.2.1 プロパティ • myMails 4.3.2.2 メソッド • + getMailInfo(”request”:String) : String • + getMailList(”request”:String) : String • - showMailList(”request”:String,”words”:[String]) : String • - getReSendAddress(”request”:String) : String • - getNewSendAddress(”request”:String) : String • + sendMail(”request”:String,”words”:[String]) : Boolean getMailInfo(”request”:String) 概要 コントローラ、または getMailList メソッドから呼び出される。引数としてメール情報 の JSON を渡す。返り値は JSON である。 引数 引数の JSON は”reqest”:リクエスト内容であり、リクエスト内容には”getSendedMail”(送 信済みメール情報の取得)”getIncomeMail”(送信済みメール情報の取得) がある。 返り値
返り値の JSON は”words”:メール情報である。返り値は以下のような JSON 形式で表 される。
[ { "sender":送信者, "getter":受信者, "subtitle":件名, "text":本文, "sendDate":送信日時, "unread":未読既読 } ] 動作 リクエストを元に transmission メソッドの引数を作成する。作成した引数を transmission メソッドへ渡し、メール情報の取得を要求する。呼び出し元がコントローラの場合は、 返ってきた値とボタン入力を引数として showMailList メソッドへ渡し、メール情報の 整形を要求する。呼び出し元が getMailList の場合は、呼び出し元へ JSON を返り値と して動作を終了する。 getMailList(”request”:String) 概要 サーバに問い合わせをして、ユーザ宛のメールまたはユーザの送信したメールの情報 を一覧で取得するメソッド。コントローラから呼び出される。引数としてメール情報の JSON を渡す。返り値は JSON である。 引数 引数の JSON は”reqest”:リクエスト内容であり、リクエスト内容には”getSendMail”(送 信済みメール情報の取得)、”getIncomeMail”(受信メール情報の取得) がある。 返り値 返り値の JSON は”words”:メール情報である。返り値は複数の場合もあり、以下のよう な JSON 形式で表される。 [ { "sender":送信者, "getter":受信者, "subtitle":件名, "sendDate":送信日時, "unread":未読既読 }, { ... } ... ]
動作 リクエストを元に getMailInfo メソッドの引数を作成する。作成した引数を getMailInfo メソッドへ渡し、メール情報の取得を要求する。返ってきた値を作成した配列に格納し、 上記の動作を 20 件分繰り返す。 配列の値とボタン入力を引数として showMailList メソッドへ渡し、メール情報の整形 を要求する。呼び出し元へ JSON を返り値として動作を終了する。 showMailList(”request”:String,”words”:[String]) 概要 取得したメールをソート・整形し、コントローラに渡すメソッド。getMailInfo または getmailList から呼び出される。引数としてメール情報の JSON を渡す。返り値は JSON である。 引数 引数の JSON は”request”:リクエスト内容、”words”:条件文である。リクエスト内容は ソート方法であり、”dayAscend”:送信日時昇順、”dayDescend”:送信日時降順がある。 条件文は複数の場合もあり、以下のような JSON 形式で表される。 [ { "sender":送信者, "getter":受信者, "subtitle":件名, "sendDate":送信日時, "unread":未読既読 }, { ... } ... ] 動作 リクエストを元に、引数で渡された配列のメール情報をソートし引数を作成する。作成 した引数を outGoMailTop メソッドまたは incomeMailTop メソッドへ渡し、メール情 報の一覧表示を要求する。呼び出し元へ JSON を返り値として動作を終了する。 getReSendAddress(”request”:String) 概要 メール送信の宛先を、受信メールの送信者 ID から取得するメソッド。sendMail メソッ ドから呼び出される。引数としてメール情報の JSON を渡す。返り値は JSON である。
引数 引数の JSON は”reqest”:リクエスト内容であり、リクエスト内容には”getSender”:送信 者 ID 取得がある。 返り値 返り値の JSON は”words”:送信者 ID である。 動作 リクエストを元に、所持している受信メール情報から送信者 ID を取得する。呼び出し 元へ JSON を返り値として動作を終了する。 getNewSendAddress(”request”:String) 概要 メール送信の宛先を、書籍所有者から取得するメソッド。sendMail メソッドから呼び出 される。引数としてメール情報の JSON を渡す。返り値は JSON である。 引数 引数の JSON は”reqest”:リクエスト内容であり、リクエスト内容には”getBookAccount”: 書籍所有者のアカウント ID 取得がある。 返り値 返り値の JSON は”words”:アカウント ID である。 動作 JSON をサーバ通信ジュールへ渡し、書籍情報を取得する。取得した書籍情報からアカ ウント ID を抜き出し、呼び出し元へ JSON を返り値として動作を終了する。 sendMail(”request”:String,”words”:[String]) 概要 コントローラから呼び出される。引数としてメールの JSON を渡す。返り値は Boolean である。 引数 引数の JSON は”request”:リクエスト内容,”words”:メール情報である。リクエスト内容 には”add”(追加) がある。メール情報は以下のような JSON 形式で表される。 [ { "subtitle":件名, "text":本文 } ] 返り値 送信成功の JSON は、以下のとおりである。
{ "result": true } 通信エラーの JSON は、以下のとおりである。 { "result":false, "words":"通信に失敗しました。" } 動作 JSON をオブジェクトに変換し、これを引数として Mail オブジェクトを生成する。引数 のメール情報を Mail オブジェクトへ格納する。HTTP サーバへ問い合わせをし、モー ダル背後の画面状態から、引数を渡すメソッドを選択する。受信メール BOX であれば getReSendAddress メソッドを、書籍詳細表示画面であれば getNewSendAddress メソッ ドを選択する。画面状態から、メソッドに対応した引数を生成し、引数を対象のメソッ ドへ渡す。返り値を Mail オブジェクトへ付加し、Mail オブジェクトは myMails プロパ ティに格納する。作成した Mail オブジェクトを引数としてサーバに渡し、DB への格 納を要求する。呼び出し元へ JSON を返り値として動作を終了する。 その他 ”sender”:送信者 ID、”sendDate”:送信日時、”unread”:未読既読、リクエストの際に付加 する。”getter”:getReSendAddress もしくは getNewSendAddress の返り値を付加する。
4.4
所有書籍検索モジュール
本システムにおいて、所有書籍のソート、検索を行うモジュール。 クラス図を図 17 に示す。 4.4.1 BookSearch Class 4.4.1.1 メソッド • + orSearch({”words”:String}) : String • + andSearch({”words”:String}) : String • + sort(int) : String orSearch({”words”:String}) 概要 コントローラから呼び出される。引数として検索ワードの JSON を渡す。返り値は JSON である。 引数 引数の JSON は、以下のとおりである。{ "words":条件文 } 条件文は複数の場合もあり、以下の様な JSON 形式で表される。 [条件文 1, 条件文 2, 条件文 3, … ] 返り値 返り値の JSON は、以下のとおりである。 { "words":書籍情報 } 書籍情報は複数の場合もあり、以下の様な JSON 形式で表される。 [ { "title":書籍名, "author":著者, "publisher":出版社, "genre":ジャンル, "storage":所蔵場所, "ISBN":ISBN, "needed":要不要 "borrower":貸出相手, "loaned" :貸出状態 "date":追加日 "publicDate":公開日 "loanDate":貸出日 }, … ] 動作 BookManage クラスの myBooks プロパティから書籍情報を取得する。 書籍名・著者・出版社・貸出相手に関する OR 検索を行い、結果を JSON に変換する。 JSON を返り値としてビューコントロールモジュールへ返す。 andSearch({”words”:String}) 概要 コントローラから呼び出される。引数として検索ワードの JSON を渡す。返り値は JSON である。 引数 引数の JSON は、以下のとおりである。
{ "words":条件文 } 条件文は、以下の様な JSON 形式で表される。 { "title":書籍名, "author":著者, "publisher":出版社, } 返り値 返り値の JSON は、以下のとおりである。 { "words":書籍情報 } 書籍情報は複数の場合もあり、以下の様な JSON 形式で表される。 [ { "title":書籍名, "author":著者, "publisher":出版社, "genre":ジャンル, "storage":所蔵場所, "ISBN":ISBN, "needed":要不要 "borrower":貸出相手, "loaned" :貸出状態 "date":追加日 "publicDate":公開日 "loanDate":貸出日 }, … ] 動作 BookManage クラスの myBooks プロパティから書籍情報を取得する。 書籍名・著者・出版社・貸出相手、またジャンル・所蔵場所・不要・貸出状態に関する AND 検索を行い、結果を JSON に変換する。 JSON を返り値としてビューコントロールモジュールへ返す。 sort(Number)
概要 コントローラから呼び出される。引数としてソート番号を渡す。返り値は JSON である。 引数 引数のソート番号は以下のとおりである。 ソート番号 昇降順 ソート方法 00 昇順 書籍名 01 昇順 著者 02 昇順 出版社 03 昇順 追加日 10 降順 書籍名 11 降順 著者 12 降順 出版社 13 降順 追加日 返り値 返り値の JSON は、以下のとおりである。 { "words":書籍情報 } 書籍情報は複数の場合もあり、以下の様な JSON 形式で表される。 [ { "title":書籍名, "author":著者, "publisher":出版社, "genre":ジャンル, "storage":所蔵場所, "ISBN":ISBN, "needed":要不要 "borrower":貸出相手, "loaned" :貸出状態 "date":追加日 "publicDate":公開日 "loanDate":貸出日 }, … ] 動作 BookManage クラスの myBooks プロパティから公開リスト情報を取得する。 引数のソート番号に対応するソートを行い、結果を JSON に変換する。 JSON を返り値としてビューコントロールモジュールへ返す。
4.5
公開リストモジュール
本システムにおいて、公開リストのソート、検索を行うモジュール。 クラス図を図 18 に示す。 4.5.1 PublicManage Class 4.5.1.1 プロパティ • - publicBooks 4.5.1.2 メソッド • + expandBooks(”words”:String ) : void • + orSearch({”request”:String,”words”:String}) : String • + andSearch({”request”:String,”words”:String}) : String • + sort(int) :String expandBooks({”words”:String}) 概要 コントローラから呼び出される。引数として所有書籍の JSON を渡す。 引数 引数の JSON は、以下のとおりである。 { "words":書籍情報 } 書籍情報は複数の場合もあり、以下の様な JSON 形式で表される。 [ { "account":所有アカウント "title":書籍名, "author":著者, "publisher":出版社, "genre":ジャンル, "ISBN":ISBN, "publicDate":公開日 }, … ]動作 JSON をオブジェクトに変換し、これを引数として冊数分の Book オブジェクトを生成 する。Book オブジェクトは publicBooks プロパティに格納する。 orSearch({”request”:String,”words”:String}) 概要 コントローラから呼び出される。引数として検索ワードの JSON を渡す。返り値は JSON である。 引数 引数の JSON は、以下のとおりである。 { "request":リクエスト内容, "words":条件文 } リクエスト内容には” orSearch”(OR 検索) がある。条件文は複数の場合もあり、以下の 様な JSON 形式で表される。 [条件文 1, 条件文 2, 条件文 3, … ] 返り値 取得成功の JSON は、以下のとおりである。 { "result":ture, "words":書籍情報 } 書籍情報は複数の場合もあり、以下の様な JSON 形式で表される。 [ { "account":所有アカウント "title":書籍名, "author":著者, "publisher":出版社, "genre":ジャンル, "ISBN":ISBN, }, … ] 入力値エラーの JSON は、以下のとおりである。 { "result":false,
"words":"入力が不正です。" } 通信エラーの JSON は、以下のとおりである。 { "result":false, "words":"通信に失敗しました。" } 動作 JSON をオブジェクトに変換し、メタキャラクタ等の入力値チェックを行う。不正があ れば入力値エラーを JSON で返り値として返す。
JSON をサーバ送信モジュールへ渡し、成功すれば返り値 ture を JSON で返す。エラー が返ってきた場合は通信エラーを JSON で返す。
JSON を引数として expandBooks メソッドを呼び出し、書籍情報を publicBooks プロ パティに格納する。 andSearch({”request”:String,”words”:String}) 概要 コントローラから呼び出される。引数として検索ワードの JSON を渡す。返り値は JSON である。 引数 引数の JSON は、以下のとおりである。 { "request":リクエスト内容, "words":条件文 } リクエスト内容には” andSearch”AND 検索) がある。条件文は、以下の様な JSON 形 式で表される。 { "title":書籍名, "author":著者, "publisher":出版社, } 返り値 取得成功の JSON は、以下のとおりである。 { "result":ture, "words":書籍情報 }
書籍情報は複数の場合もあり、以下の様な JSON 形式で表される。 [ { "account":所有アカウント "title":書籍名, "author":著者, "publisher":出版社, "genre":ジャンル, "ISBN":ISBN, }, … ] 入力値エラーの JSON は、以下のとおりである。 { "result":false, "words":"入力が不正です。" } 通信エラーの JSON は、以下のとおりである。 { "result":false, "words":"通信に失敗しました。" } 動作 JSON をオブジェクトに変換し、メタキャラクタ等の入力値チェックを行う。不正があ れば入力値エラーを JSON で返り値として返す。
JSON をサーバ送信モジュールへ渡し、成功すれば返り値 ture を JSON で返す。エラー が返ってきた場合は通信エラーを JSON で返す。
JSON を引数として expandBooks メソッドを呼び出し、書籍情報を publicBooks プロ パティに格納する。 sort(Number) 概要 コントローラから呼び出される。引数としてソート番号を渡す。返り値は JSON である。 引数 引数のソート番号は以下のとおりである。 返り値 引数の JSON は、以下のとおりである。 {
ソート番号 昇降順 ソート方法 00 昇順 書籍名 01 昇順 著者 02 昇順 出版社 03 昇順 追加日 10 降順 書籍名 11 降順 著者 12 降順 出版社 13 降順 追加日 "words":書籍情報 } 書籍情報は複数の場合もあり、以下の様な JSON 形式で表される。 [ { "account":所有アカウント "title":書籍名, "author":著者, "publisher":出版社, "genre":ジャンル, "ISBN":ISBN, "publicDate":公開日 }, … ] 動作 publicBooks プロパティから公開リスト情報を取得する。 引数のソート番号に対応するソートを行い、結果を JSON に変換する。 JSON を返り値としてビューコントロールモジュールへ返す。
4.6
サーバ通信モジュール
本システムにおいて、サーバに内蔵されたデータベースと通信を行う。 メソッド構成は次の通りである。また、モジュールのフロー図は図 19, 図 20 に示す。 4.6.1 BrowserController Class 本システムにおいて、ブラウザと HTTP サーバ間の通信を行うクラス。4.6.1.1 メソッド
• + connestablishment():boolean • - connfailed()
• - transmission(request JSON:String):request JSON:String • - reception(request JSON:String):String • - connectioncheck():String connestablishment() 概要 サーバと接続するメソッド。 引数 ボタン入力を引数とする。 返り値 接続に成功した場合は true、失敗した場合は false を返す。 動作 ブラウザと HTTP サーバを接続する。 動作詳細 ボタン入力を確認後、XML リクエストを送り、ブラウザと HTTP サーバを接続する。 接続できたら true、接続できなかったら false を返す。 connfailed() 概要 サーバと切断するメソッド。 引数 サーバからブラウザへのデータ終了時に出されるリクエストを引数とする。 返り値 返り値はない。 動作 ブラウザと HTTP サーバを切断する。 動作詳細 リクエストを確認後、ブラウザと HTTP サーバを切断する。 transmission() 概要 ブラウザからサーバにデータを送信するメソッド。
引数 引数の JSON は { "request":リクエスト内容, "words":条件文 } であり、リクエスト内容には、ログイン、書籍情報追加、書籍情報編集、公開書籍検索、 未読メール確認がある。 条件文は JSON 形式で表される、書籍情報追加の際は { "title":書籍名, "author":著者, "publisher":出版社, "genre":ジャンル, "storage":所蔵場所, "ISBN":ISBN, "needed":要不要 } の形で表す。 返り値 引数をそのまま返り値として返す。送信できなかった場合、エラーを返す。 動作 ブラウザに入力されたテキストとボタン入力から、リクエストと条件文を HTTP サー バに送信する。 reception() 概要 ブラウザがサーバからデータを受信するメソッド。 引数 サーバコントローラから送信された JSON を引数とする。 返り値 引数を返り値とする。ただし、ログインについては、認証が失敗した場合エラーを返す。 動作 サーバコントローラから送られてきた JSON をアカウントモジュールに送信する。 connectioncheck() 概要 通信が確立しなかった場合のエラーを判定するメソッド。接続確立メソッドと送信メソッ ドにおいて、接続できなかった場合をエラーとする。
引数 connestablishment() の返り値。 返り値 エラーがあれば false を返す。 動作 引数が true であれば、動作を終了する。false であれば、返り値を返す。 4.6.2 ServerController Class 本システムにおいて、HTTP サーバとデータベース間のデータの送受信を行うクラス。また、ア カウント情報の照合も行う。 4.6.2.1 メソッド • + datatransmission(request JSON:String):String • - datareception(request JSON:String):String • - servererror() • - accountcheck(request JSON:String):String datatransmission() 概要 サーバがデータベースにデータを送信するメソッド。 引数 引数の JSON は transmission() の返り値と等しい。 返り値 返り値は JSON で { "request":リクエスト内容, "words":条件文 } である。 ただし、アカウントのパスワードは返り値として渡さない。 動作 引数のリクエストと条件文を返り値としてデータベースに送信する。 datareception()
概要 サーバがデータベースからデータを受け取るメソッド。 引数 データベースから返信された返り値が引数となる。 返り値 なし。 動作 送信したリクエスト、条件文についてデータベースから返信された返り値を受け取る。 sabaerror() 概要 通信が確立しなかった場合のエラーを判定するメソッド。送信メソッドにおいて、接続 できなかった場合をエラーとする。 引数 なし。 返り値 なし。 動作 通信が確立しているかを判定し、通信できていなければエラーとする。エラーがあれば アラートで通知する。 accountcheck() 概要 アカウント情報の照合を行うメソッド。ブラウザから送られてきたアカウント ID と等 しい ID のアカウント情報を DB から受け取り、アカウントの照合を行う。 引数 transmission() の返り値であるパスワードと、datareception() の返り値であるパスワー ドを引数とする。 返り値 引数が等しければ、datatransmission() の引数としてリクエスト内容(メールの有無) と条件文(アカウント ID)を返す。引数が等しくなければ、reception() の引数として、 エラーを返す。 動作 ブラウザから送られてきたアカウント ID に対するパスワードと、データベースに問い 合わせたパスワードを比較し、アカウント照合を行う。 動作詳細 与えられた 2 つの引数を比較する。これらが等しければ、datatransmission() の引数と してリクエスト内容(メールの有無)と条件文(アカウント ID)を返す。引数が等し くなければ、reception() の引数として、エラーを返す。
4.7
ISBN 登録モジュール
本システムにおいて、AmazonAPI を用いた ISBN による書籍情報の登録を行う。 メソッド構成は次の通りである。また、モジュールのフロー図は図 21 に示す。 4.7.1 ISBNController Class 本システムにおいて、AmazonAPI を用いた ISBN による書籍情報の登録を行うクラス。 4.7.1.1 プロパティ • - table Name:String 4.7.1.2 メソッド • + isbnsearch(request JSON:String):String • - Amazonapi(request JSON):String • - isbnregistration(request JSON:String):String isbnsearch() 概要 データベースから指定された ISBN と一致する書籍を呼び出すメソッド。 引数 JSON のリクエスト内容である書籍検索、条件文として ISBN を引数とする。 返り値 指定された ISBN と一致する書籍情報。 動作 入力された ISBN についてデータベースに問い合わせ、指定された ISBN と一致する書 籍を呼び出す。 動作詳細 JSON のリクエスト内容である書籍検索、条件文として ISBN をデータベースに送信す る。データベースから対応した書籍情報を受け取る。ブラウザに情報を送信する。対応 した書籍が無ければ動作を終了する。 Amazonapi() 概要 入力された ISBN から AmazonAPI を用いて書籍情報を取得するメソッド。 引数 入力された ISBN と API へのリクエストを引数とする。 返り値 API から取得できる商品属性を JSON としたものを返り値とする。動作 API を利用し、Amazon から必要な書籍情報を取得する。 動作詳細 Amazon へレスポンスし、レスポンスを配列で取得する。あらかじめ設定した Respon-seGroup から呼び出したい情報を取得。管理しやすいように文字コードの宣言やスペー スの削除等を行う。データベースに渡す JSON を生成し返り値として返す。 isbnregistration() 概要 AmazonAPI から取得した書籍情報をデータベースに登録するメソッド。 引数 JSON のリクエスト内容として書籍追加、Amazonapi() の返り値を引数とする。 返り値 動作 生成した JSON を引数として datatransmission() を呼び出す。
4.8
コントローラモジュール
Web システム上に表示される各画面のボタン入出力情報と、そのボタンからのが画面遷移選択を 行うモジュール。また、モジュールのクラス図を図 22 に、モジュールのフロー図を図 23 に示す。 4.8.1 InOut Class 4.8.1.1 プロパティ • 入力ボタン情報:inputButton • 画面遷移モジュールへ返す遷移先情報:viewOutput 4.8.1.2 メソッド • + viewInPut(int) • + viewOutPut(int,String) viewInPut() 概要 各モジュールからのボタン操作の入力を受け取る。 引数 引数はボタン入力情報、場合によってユーザ入力情報。返り値 なし 動作 各モジュールからのボタン操作の入力を受け取る。の時ユーザからの入力があった場合、 その入力情報を保持している。 viewOutPut() 概要 受け取った入力に対して動作の返り値、場合によってはユーザの入力情報とともに画面 遷移モジュールに出力する。 引数 引数はボタン入力情報。場合によってユーザ入力情報。 返り値 出力した動作が終了したの値。 動作 Change クラスからの返り値を画面遷移モジュールへわたす。また、ユーザ入力情報が ある場合はその情報もわたす。 4.8.2 Change Class 4.8.2.1 プロパティ • 入力ボタン情報:inputButton 4.8.2.2 メソッド • + loginTop(int) • + newCreateTop(int) • + useterms(int) • + newCreateCompletion(int) • + mainTop(int) • + logOut(int) • + bomTop(int) • + opnTop(int) • + malTop(int) • + accTop(int) • + addBook(int)
• + trashBox(int) • + genre(int) • + sort(int) • + asvancedSearchTop(int) • + asvancedSearch(int) • + loanEdit(int) • + editBook(int) • + editCompletion(int) • + changeAccount(int) • + recordAccount(int) • + outGoMailTop(int) • + inComeMailTop(int) • + sendOutGoMail(int) • + bookTitle(int) • + loan(int) • + unbookTitle(int) • + mailTitle(int) • + closeModal(int) • + closeAccordion(int) • + inPutISBN(int,String) • + error(int) 以降各メソッドにて、引数に画面に出力が必要な情報がある場合は、その情報も含めて画面遷移モ ジュールへわたされる。 loginTop() 概要 ログイン画面への遷移を指示する。 引数 入力ボタン:1 番または 6 番 返り値 出力画面:Log04
動作
トップ画面 (Top01) の Login ボタン (1 番) とアカウント作成完了画面 (Log03) の確認 ボタン (6 番) 入力を受け取った際に、ログイン画面 (Log04) を呼び出す。 newCreateTop() 概要 アカウント新規作成画面への遷移を指示する。 引数 入力ボタン:2 番または 5 番 返り値 出力画面:Log01 動作 トップ画面 (Top0) の新規作成ボタン (2 番) と利用規約画面 (Log02) の戻るボタン (5 番) 入力を受け取った際に、アカウント新規作成画面 (Log01) を呼び出す。 useterms() 概要 利用規約画面への遷移を指示する。 引数 入力ボタン:3 番 返り値 出力画面:Log02 動作 アカウント新規作成画面 (Log01) の利用規約ボタン入力を受け取った際に、利用規約画 面 (Log02) を呼び出す。 newCreateCompletion() 概要 アカウント作成完了画面への遷移を指示する。 引数 入力ボタン:4 番 返り値 出力画面:Log03 動作 アカウント新規作成画面 (Log0) の作成ボタン入力を受け取った際に、アカウント作成 完了画面 (Log03) を呼び出す。 mainTop()
概要 メイン画面への遷移を指示する。 引数 入力ボタン:7 番または 8 番 7 番ボタン入力の際は、ユーザが入力した ID、パスワード情報を保持 返り値 出力画面:Man01 動作
ログイン画面 (Log04) の Login ボタン (7 番) とメイン画面 (Man01) の BOOKMAN-AGE のロゴ (8 番) 入力を受け取った際に、メイン画面 (Man01) を呼び出す。 logOut() 概要 本システムからログアウトした時に遷移する画面を指示する。 引数 入力ボタン:9 番 返り値 出力画面:Top01 動作 メイン画面 (Man01) のログアウトボタン入力を受け取った際に、トップページ画面 (Top01) を呼び出す。 bomTop() 概要 書籍管理トップ画面への遷移を指示する。 引数 入力ボタン:10 番または 31 番 返り値 出力画面:Bom01 動作
メイン画面 (Man01) の書籍管理ボタン (10 番) と書籍追加画面 (Bom04) の BACK ボタ ン (31 番) 入力を受け取った際に、書籍管理トップ画面 (Bom01) を呼び出す。 opnTop() 概要 公開リストトップ画面への遷移を指示する。 引数 入力ボタン:11 番
返り値 出力画面:Opn01 動作 メイン画面 (Man01) の公開リストボタン入力を受け取った際に、公開リストトップ画 面 (Opn01) を呼び出す。 malTop() 概要 メールトップ画面への遷移を指示する。 引数 入力ボタン:12 番 返り値 出力画面:Mal01 動作 メイン画面 (Man01) のメールボタン入力を受け取った際に、受信メール一覧画面 (Mal01) を呼び出す。 accTop() 概要 アカウント情報確認画面への遷移を指示する。 引数 入力ボタン:13 番または 58 番 返り値 出力画面:Acc01 動作 メイン画面 (Man01) のアカウントボタン (18 番) とアカウント情報編集画面 (Acc02) の登録ボタン (58 番) 入力を受け取った際に、アカウント情報確認画面 (Acc01) を呼び 出す。 contactTop() 概要 問い合わせ画面への遷移を指示する。 引数 入力ボタン:14 番 返り値 出力画面:Hel01
動作 メイン画面 (Man01) の問い合わせボタン入力を受け取った際に、問い合わせ画面 (Hel01) を呼び出す。 addBook() 概要 書籍追加画面への遷移を指示する。 引数 入力ボタン:19 番または 34 番 返り値 出力画面:Bom04 動作 書籍管理トップ画面 (Bom01) の追加ボタン (19 番) と書籍追加完了画面 (Bom08) の続 けて追加ボタン (34 番) 入力を受け取った際に、書籍追加 (Bom04) を呼び出す。 trashBox() 概要 書籍削除確認画面への遷移を指示する。 引数 入力ボタン:18 番 返り値 出力画面:Bom06 動作 書籍管理トップ画面 (Bom01) のゴミ箱ボタン入力を受け取った際に、書籍削除確認の モーダル表示 (Bom06) を呼び出す。 genre() 概要 ジャンルによる並び替えのためのプルダウンメニュー展開の指示をする。 引数 入力ボタン:21 番 返り値 出力画面:ジャンル項目のブルダウンメニュー 動作 書籍管理トップ画面 (Bom01) のジャンルボタン入力を受け取った際に、ジャンル項目 のプルダウンメニュー表示を呼び出す。 sort()
概要 並び替えのためのプルダウンメニュー展開の指示をする。 引数 入力ボタン:22 番 返り値 出力画面:並び替え項目のプルダウンメニュー 動作 書籍管理トップ画面 (Bom01) の並び替えボタン入力を受け取った際に、並び替え項目 のプルダウンメニュー表示を呼び出す。 asvancedSearchTop() 概要 詳細検索画面への遷移を指示する。 引数 入力ボタン:20 番 返り値 出力画面:Bom02 動作 書籍管理トップ画面 (Bom01) の詳細検索ボタン入力を受け取った際に、所有書籍詳細 検索のモーダル表示 (Bom02) を呼び出す。 asvancedSearch() 概要 所有書籍検索結果一覧への遷移を指示する。 引数 入力ボタン:28 番 各検索項目におけるユーザ入力情報 返り値 出力画面:Bom03 動作 所有書籍詳細検索画面 (Bom02) の検索ボタンを押した際に、所有書籍検索結果一覧画 面 (Bom03) を呼び出す。 loanEdit() 概要 貸出編集のモーダル画面展開を指示する。 引数 入力ボタン:18 番
返り値 出力画面:Bom07 動作 貸出詳細表示の編集ボタン入力を受け取った際に、貸出編集のモーダル表示 (Bom07) を呼び出す。 editBook() 概要 書籍編集画面への遷移を指示する。 引数 入力ボタン:19 番または 32 番または 36 番 返り値 出力画面:Bom05 動作 所有書籍詳細表示時の編集ボタン (19 番) と書籍追加完了画面 (Bom08) の修正ボタン (32 番)、書籍編集完了画面 (Bom09) の修正ボタン (36 番) 入力を受け取った際に、書籍 編集画面 (Bom05) を呼び出す。 editCompletion() 概要 書籍編集完了画面への遷移を指示する。 引数 入力ボタン:35 番 各書籍情報のユーザ入力情報 返り値 出力画面:Bom09 動作 書籍編集画面 (Bom05) の情報の変更ボタン入力を受け取った際に、書籍編集完了画面 (Bom09) を呼び出す。 changeAccount() 概要 アカウント情報編集画面への遷移を指示する。 引数 入力ボタン:55 番 返り値 出力画面:Acc02
動作 アカウント情報確認画面 (Acc01) の変更ボタン入力を受け取った際に、アカウント情報 編集画面 (Acc02) を呼び出す。 recordAccount() 概要 アカウント情報確認画面への遷移を指示する。 引数 入力ボタン:58 番 各項目のユーザ入力情報 返り値 出力画面:Acc01 動作 アカウント情報編集画面 (Acc02) の登録ボタン入力を受け取った際に、アカウント情報 確認画面 (Acc01) を呼び出す。 outGoMailTop() 概要 送信メール一覧表示画面への遷移を指示する。 引数 入力ボタン:51 番 返り値 出力画面:Mal04 動作 受信メール一覧画面 (Mal01) の送信メールボタン入力を受け取った際に、送信メール一 覧画面 (Mal04) を呼び出す。 incomeMailTop() 概要 受信メール一覧画面への遷移を指示する。 引数 入力ボタン:53 番 返り値 出力画面:Mal01 動作 送信メール一覧画面 (Mal04) の受信メールボタン入力を受け取った際に、受信メール一 覧画面 (Mal01) を呼び出す。
sendOutGoMail() 概要 メール送信確認画面のポップアップ表示を指示する。 引数 入力ボタン:49 番 返り値 出力画面:Mal03 動作 返信メール作成画面 (Mal02) にの送信ボタン入力を受け取った際に、送信確認 (Mal03) のポップアップ表示を呼び出す。 bookTitle() 概要 所有書籍の詳細情報を表示するアコーディオンメニュー展開を指示する。 引数 入力ボタン:16 番 返り値 出力画面:選択した書籍の詳細情報のアコーディオンメニュー展開 動作 書籍管理トップ画面 (Bom01) の一覧表示されている書籍のタイトルを押す入力を受け 取った際に、その下に書籍詳細情報のアコーディオンメニュー表示を呼び出す。 loan() 概要 所有書籍の貸出詳細情報を表示するコーディオン展開を指示する。 引数 入力ボタン:18 番 返り値 出力画面:選択した書籍の貸出情報のアコーディオンメニュー展開 動作 書籍管理トップ画面 (Bom01) のカバン型ボタン入力を受け取った際に、その下に貸出 状態のアコーディオンメニュー表示を呼び出す。 unbookTitle() 概要 不要書籍の詳細情報を表示するアコーディオンメニュー展開を指示する。
引数 入力ボタン:41 番 返り値 出力画面:選択した書籍の詳細情報のアコーディオンメニュー展開 動作 公開リストトップ画面 (Opn01) の一覧表示されている書籍のタイトルを押す入力を受 け取った際に、その下に書籍詳細情報のアコーディオンメニュー表示を呼び出す。 mailTitle() 概要 メールの本文詳細を表示するアコーディオンメニュー展開を指示する。 引数 入力ボタン:50 番 返り値 出力画面:選択したメールの本文詳細のアコーディオンメニュー展開 動作 受信メール一覧画面 (Mal01) の表示されているメールを押す入力を受け取った際に、そ の下にメール本文詳細のアコーディオンメニュー表示を呼び出す。 closeModal() 概要 モーダル展開を閉じる指示をする。 引数 入力ボタン:60 番 返り値 出力画面:モーダル展開直前の画面 動作 展開されている各モーダル画面の×ボタン入力を受け取った際に、モーダルを閉じ、そ の前の画面に戻る。この時ユーザによる入力があった場合は破棄される。 closeAccordion() 概要 アコーディオンメニュー展開を閉じる指示をする。 引数 入力ボタン:61 番 返り値 出力画面:アコーディオンメニュー展開直前の画面
動作 展開されているアコーディオンメニュー表示の×ボタン入力を受け取った際に、アコー ディオンメニュー表示を閉じる。 inPutIsbn() 概要 ISBN から書籍情報の入力補助の指示をする。 引数 入力ボタン:29 番 ユーザが入力した ISBN 情報 返り値 出力画面:任意の枠に必要な情報が書き込まれている状態。 動作
書籍追加画面 (Bom04) と書籍編集画面 (Bom05) の情報の取得ボタンに、ISBN が入力 された状態である入力を受け取った際に、書籍名・著者・出版社の入力補助を行う。こ の時入力される情報は DB 内に ISBN が一致するものが存在した場合は、DB から取得 し、なければ Amazon の API から ISBN を取得するモジュールにわたされる。 error() 概要 エラー画面への遷移を指示する。 引数 入力ボタン:ユーザによる入力フォームが存在し、入力エラーが想定されるボタン 返り値 なし 動作 データの送受信において想定された入力値が出ない、入力必要項目が不足している状態 でボタンが押された際に、操作が完了していないことを知らせるエラー画面 (Err01) を 呼び出す。
5
サーバ詳細
5.1
概要
本システムでは、弊社にサーバを構築する。構築にあたって購入するサーバは「HP ProLiant ML110 Gen9」とする。 サーバのデータのやり取りとして、クライアントからのアクセスが弊社 HTTP サーバにリクエ ストとして送信される。その後 DBMS によって DB サーバから必要な情報を HTTP サーバへ返 し、クライアントへデータの送信を行うとする。図 1: コントローラモジュールクラス図
クライアントから ISBN による情報要求が来た時、以前 Amazon から ISBN 書籍情報を取得し てある場合、その情報をクライアントへと返す。もし、Amazon から取得できていない場合は、 Amazon 提供の API を用いて、Amazon から必要な情報を取得し、その情報をクライアントへと 返す。Amazon から取得した情報は DB へと格納し、次回要求時に渡すように準備する。 5.1.1 サーバ詳細 使用するサーバのスペックを以下の表 1 に示す。 サーバのバックアップは弊社内で一定期間ごとに行い、障害対策をする。 サーバ OS には Windows7 使用し、HTTP サーバには Node.jsv0.10.25 を使用する。 5.1.2 データベース情報 本システムにて構築する DBMS は MySQL5.7.9 とする。以下の表 2 に仕様についてまとめたも のを示す。
図 2: コントローラモジュールフロー図