3shinichirou0515shinichirou05152518762007-01-04T18:35:00Z2007-01-10T07:57:00Z1138679046518927211.56043.課題解決のプロセス●石本4月・リスク分析を行った・JavaとEclipseをインストールし、プログラミング環境の整備を行った ・Tomcatをインストールし、JSP/サーブレットを用いたサーバサイドWebアプリケーションの開発環境を整えた・Cygwin、PostgreSQLをインストールし、データベースを利用できるようにした・依頼者/利用者の本当のニーズ獲得について講義を受けた・依頼者との円滑なコミュニケーションについて講義を受けた・ABSの開発を開始した5月・開発者間の円滑なコミュニケーションについて講義を受けた・日本語の縮約演習を行い、日本語のスキルアップを図った・UI仕様書作成法について講義を受けた・ソフトウェアテストについて講義を受けた・ABSに、ユーザ権限、管理者権限でのログイン認証機能を追加した →データベースにユーザ情報、管理者情報を登録し、ログイン画面で入力されたID、パスワードと比較することによって実現した。また、sessionを用いることによってログイン無しで権限の必要なページに飛ぶことが出来ないようにした。6月・ABSに在庫管理システムを追加した →データベースを用いて実現した。・サーバの構築を行った →サーバとなるPCにJava、Tomcat、PostgreSQLをインストールすることによって実現した。また、学外からもアクセス可能にするため、サーバを学内ネットワーク接続から研究ネットワーク接続に変更した。その際、セキュリティ対策のためにsshの設定を行い、特定のユーザしかサーバにログイン出来ないようにした。・プレゼンテーションにおける注意点について講義を受けた・納品プレゼンテーションを行った →パワーポイントと開発したソフトウェアを用いてプレゼンを行った。7月・中間報告書の作成を行った・中間発表のサブポスターを作成した・中間発表を行った8月・前期に学んだことを復習した・後期に開発するソフトウェアについて依頼者と打ち合わせを行った →依頼者からの要求は以下の9点だった。 1.カレンダーを1ヶ月単位で見られるようにして欲しい 2.午前、午後、1日中がわかるようにして欲しい 3.3ヶ月分の予約が見られるようにして欲しい 4.カメラなどのオプションの項目を付けて欲しい 5.管理者は1人にして欲しい 6.どの機材を使ったかが分かるようにして欲しい 7.Webで予約できるようにして欲しい 8.予約者の詳細な情報が分かるようにして欲しい 9.貸し出した機材によって料金が分かるようにして欲しい ・依頼者との打ち合わせを元に、開発するソフトウェアについてグループで話し合った ・ライブラリーにて参考になりそうな書物を見繕い、JSP/サーブレットを用いたWebアプリケーションについて知識を深めた ・インターネットを用いて参考になりそうなサイトを検索し、JSP/サーブレットについて知識を深めた9月 ・要求定義書、画面遷移図を元にソフトウェアの開発を開始した →私は管理者ページの開発を受け持った。当初は前期に開発したABSを元にソフトウェアの開発を行おうと考えていたが、ABSはデータベースへのアクセスの仕方が特殊なため断念し、1から開発を行うことになった。開発は前期と同じEclipseを用いて行った。 ・データベースを構築した →言語は前期と同じくPostgreSQLを用いた。ユーザ情報のテーブル、管理者情報のテーブル、予約情報のテーブルの3つのテーブルを作成した。10月 ・開発中のソフトウェアにログイン認証機能を追加した ・依頼者と第2回打ち合わせを行った →まず、パワーポイントと画面遷移図を用いて現在の開発状況を報告し、完成予定画面の説明を行った。次に開発中に浮かんできた疑問点について依頼者と意見交換を行った。そして最後に開発中のシステムについて依頼者の意見を伺って打ち合わせを終えた。 11月 ・開発中のシステムにユーザ情報の変更機能を追加した →管理者が扱いやすいように、氏名・会社名からユーザの検索を行えるようにした。検索後は、ユーザが仮名順に表示され、それをクリックすることによってユーザの情報が変更出来るようにした。変更できる点は以下の3点である。 1.ユーザ情報の変更 2.ユーザ情報の削除 3.そのユーザの予約の取り消し ・開発中のシステムにエラー処理を追加した →追加したエラー処理は以下の2点である。 1.入力欄の全角・半角・数字・必須入力・文字数判定のエラー処理 2.ログイン認証のエラー処理12月 ・開発中のシステムにカレンダーを取り入れ、カレンダーからの予約登録機能を追加した →本システムでは、依頼者側の都合によりユーザは予約する日から1週間以内に予約を入れることが出来ないようになっている。どうしても予約を入れたい場合は管理者側に連絡を入れ、管理者が予約をすることになる。管理者が予約を行う場合は、カレンダーの予約を入れたい日時をクリックし、予約を行いたいユーザのIDを入力する。すると、予約画面が表示されるので必要事項を入力して予約を行う。また、すでに予約が入っている日時には重複して予約がされないようにカレンダーの表示を変えた。これは、カレンダーが表示される度にデータベースから予約情報のデータを読み込むことによって実現した。 ・開発中のシステムにカレンダーからの臨時休日設定機能を追加した →予約登録機能と同様に、すでに休日が入っている日時のカレンダー表示を変更した。 ・成果発表に用いるパワーポイントの作成を行った。 →中間発表の経験を生かして、文字数を少なくし、口頭での説明をしやすいようにした。 ・成果発表に必要なサブポスターの作成を行った。 ・成果発表を行った。 →中間発表では、「原稿を読み上げているだけで分かりづらい」「専門用語を使われても分からない」などの意見があったので、成果発表では原稿を用いず、専門用語も使わずに発表を行った。 ・最終報告書の役割分担を行った1月 ・最終報告書を作成した (文責:石本信一朗)4.プロジェクト内のインターワーキング●石本「全体的に使いやすいようにして欲しい」という依頼者の依頼を満たすために、デザイン担当の小山と協力し、機能の面だけでなく、デザインの面でも使いやすいソフトウェアの作成を行った。また、開発したソフトウェアの完成度を上げるため、テスト担当の川合と協力して、誤作動箇所の修正を行った。<後期> 前期はABSという元からあるソフトウェアを改良開発していくものだったため、コーディング作業は1人で十分であった。また、他のグループメンバーと協力する必要もあまり無かった。しかし、後期は実際の企業から依頼を受けて開発が行われたので、要求定義→設計→開発→テスト→納品の手順をしっかりと踏む必要があった。そのため、グループメンバーと協力して作業を進めることが多くなった。後期はコーディング作業が前期よりも多かったため、コーディング担当を2人(石本、川合)にして作業を分担した。コーディング担当同士でプログラムに食い違いが生じないようにマメに連絡を取り合い、データベースの属性値、変数、開発するソフトウェアの内容を統一し、開発をスムーズに進めた。また、1からの開発となったので、要求定義担当の常盤と協力して依頼者の要求を逐一確認し、それを元にコーディング作業を行った。実際にコーディングを行う際には、中川の作成した画面遷移図を用いて、常に開発しているソフトウェアの完成系を頭に入れながらコーディングを行った。これによって、どの部分からどのようにコーディングを進めれば良いかが分かり、スムーズにコーディング作業を行うことが出来た。また、どんなに性能の良いシステムを開発しても、ユーザが使いづらいと判断したら、それは使えないシステムということになってしまうので、デザイン担当の小山と協力して、デザイン面でもユーザビリティに富んだ、使いやすいソフトウェアの開発を行った。また、今回開発したソフトウェアでは、カレンダーから予約を行えるようにしなければならなかったので、小山にカレンダーを作成してもらい、それにデータベースとのやり取りをするプログラムを追加することで問題を解決した。 (文責:石本信一朗)6.まとめ6.1 プロジェクトの成果 前期の活動で得られた成果は、「システム」「コミュニケーション」「ユーザインタフェース」の3点に分けることが出来る。 まず、「システム」の観点から得られた成果を以下に記す。 ・Cygwin、Eclipse、Tomcatなどの開発環境の整備 ・サーバの構築 ・Javaプログラミングの技術向上 ・PostgreSQLを用いたデータベース管理 ・JSP/サーブレットを用いたWebアプリケーションの作成<Cygwin、Eclipse、Tomcatなどの開発環境の整備> 前期に行う模擬開発演習や、後期に行う本格的な開発に向けて開発環境の整備を行った。各自のノートPCにCygwin、Eclipse、Tomcatをインストールすることによって、メンバー全員がJSP/サーブレットを用いたWebアプリケーションの開発を行えるようにした。Cygwinは、Unixで頻繁に使用されるシェルやコマンドなどのプログラムをWindows上でソースコードからコンパイルできるようにしたものであり、PostgreSQLを使用するために用いた。Eclipseは、JSP/サーブレットを用いたWebアプリケーションを作成する際に、プログラムの作成及びコンパイルをするために使用した。Tomcatは、JSP/サーブレットを用いたWebアプリケーションをブラウザで表示するために必要とした。<サーバの構築> まず、サーバコンピュータにLinuxのOSをインストールし、初期設定を行った。その後、Java及びTomcatのインストールを行い、開発したWebアプリケーションがサーバ上で動作するようにした。また、SSHをインストールすることで、各自のノートPCからサーバコンピュータを扱えるようにした。<Javaプログラミングの技術向上> 後期に行う本格的な開発に向けて、Javaプログラミングの技術向上を図った。具体的には、今期行われていた情報アーキテクチャ演習Ⅰの課題を行い、さらに模擬開発演習としてABSの改良を行うことでプログラミング技術を向上させた。<PostgreSQLを用いたデータベース管理> PostgeSQLを用いて、データベースを管理する技術を学んだ。また、サーブレットの中にPostgreSQLのコマンドを書くことで、作成したWebアプリケーションからデータベースへデータの読み書きをする技術を学んだ。<JSP/サーブレットを用いたWebアプリケーションの作成> 模擬開発演習でABSの改良を行うことで、JSP/サーブレットを用いたWebアプリケーションの作成方法とそのプログラミングの流れを学んだ。 次に、「コミュニケーション」の観点から得られた成果を以下に記す。 ・日本語のスキルアップ ・書類作成技術の向上 ・依頼者とのミーティング ・コミュニケーションシート作成 ・納品プレゼンテーション<日本語のスキルアップ> 正しい日本語の運用方法について講義を受け、日本語のスキルアップを図った。その後、依頼者とのミーティングやプレゼンテーションの際に、正しい日本語を意識することによって、日本語のスキルがアップした。<書類作成技術の向上> 書類作成技術を向上させるため、正しい日本語の運用方法について講義を受け、パラグラフや段落構成について確認をした。また、段落部分の日本語文と箇条書き部分の日本語の区別についても学び、新聞記事の縮約演習を行った。その結果、書類作成技術が向上した。<依頼者とのミーティング> 仮想の依頼者とのミーティングを行うことで、後期に行う本当の依頼者とのミーティングの予行演習を行った。この予行演習で、ミーティングの難しさ、ミーティングの前に下調べをしておくことの重要さ、ミーティングの進め方、依頼者への質問の仕方、及び、優先して引き出さなければならない情報など、多くのことを学んだ。<コミュニケーションシート作成> コミュニケーションシートを作成し、仮想の依頼者に内容を確認してもらうことで、依頼者側と開発者側での依頼内容の食い違いを防ぐことができた。<納品プレゼンテーション> 講師の方々や去年このプロジェクトを行った先輩方の前で、模擬開発演習で改良を行ったABSの納品プレゼンテーションを行った。これによって、納品プレゼンテーションがどのようなものなのかイメージを持つことができた。 最後に「ユーザインタフェース」の観点から得られた成果を以下に記す。 ・ユーザビリティ ・UI設計書の作成<ユーザビリティ> ユーザビリティについての講義を受けることで、ユーザビリティの重要性を理解することができた。<UI設計書の作成> UI設計書作成法についての講義を受けることで、UI設計書がどのようなものか学ぶことができた。後期に得られた成果も「システム」「コミュニケーション」「ユーザインタフェース」の3点に分けることが出来る。 まず、「システム」の観点から得られた成果を以下に記す。 ・1からのコーディング<1からのコーディング> 前期はABSという元からあるソフトウェアの改良を行ったが、後期は実際の企業から依頼を受け、0からソフトウェアの開発を行った。何のヒントも助けもなく、0からコーディングをするというのは初めてのことだったので、初めはどのように手を付けて良いか分からなかった。ここで、コーディングの助けになったのは「要求定義書」と「画面遷移図」だった。「要求定義書」とは依頼者の要求をどのように満たすかをまとめた書類で、「画面遷移図」とは開発するソフトウェアの画面の流れが一目で分かる図である。この二つの書類を見ながら、どのようにコーディングを進めていくのかを頭でまとめてから作業をすることによって、効率よくスムーズにコーディングを行うことが出来た。今回の経験から、企業などからの依頼を受けてソフトウェアの開発を行う際には、要求定義をしっかりと行い、画面遷移図などをしっかりと作成してからコーディングを開始することが大切だと学んだ。 次に、「コミュニケーション」の観点から得られた成果を以下に記す。 ・コーディング担当同士でのコミュニケーション ・要求定義書担当とコーディング担当とのコミュニケーション ・画面遷移図担当とコーディング担当とのコミュニケーション ・要求定義書担当と画面遷移図担当とのコミュニケーション ・依頼者とのコミュニケーション ・成果発表(プレゼンテーション)<コーディング担当同士でのコミュニケーション> コーディングを行う人が複数いる場合、プログラムの中で使用する変数やデータベースの属性値等を統一する必要がある。今回2人でコーディングを行ったことで、お互いにコミュニケーションを取り合い、開発に対する考えを統一することの大切さを学んだ。<要求定義書担当とコーディング担当とのコミュニケーション> 依頼者に使用して頂くソフトウェアを開発するに当たって、依頼者の要求を取り入れることはとても重要なことである。依頼者の要求がまとめてある要求定義書はコーディングを行う際にとても重要なものになる。要求定義書担当は要求の変更が出る度にコーディング担当とコミュニケーションを取り、最新の要求定義をコーディング担当に知らせる必要があると学んだ。<画面遷移図担当とコーディング担当とのコミュニケーション> 今回の開発で、画面遷移図のようにソフトウェアの画面遷移が分かるとコーディングがしやすくなることが分かった。画面遷移図担当は画面遷移図が更新される度にコーディング担当にコミュニケーションを取って、変更を知らせる必要があると学んだ。<要求定義書担当と画面遷移図担当とのコミュニケーション> 要求定義書に書かれている内容と画面遷移図に書かれている内容に食い違いが生じてはいけないので、お互いにコミュニケーションを取り、内容を統一することが大切だと学んだ。<依頼者とのコミュニケーション>後期の開発では、依頼者との打ち合わせを3回行った。1回目の打ち合わせでは、前期に改良開発を行ったABSを用いて、こちらがどのようなことが出来るのかを依頼者に理解して頂き、その上でどのようなソフトウェアを開発して欲しいのか説明を受けた。2回目の打ち合わせでは、現在の開発状況を報告し、新たに挙がってきた疑問点について依頼者にお聞きした。3回目の打ち合わせでは、実際に開発したシステムを操作してもらい、それについての意見を頂いた。毎回の打ち合わせの後にコミュニケーションシートを用いて評価することによって、1回目の打ち合わせよりも、2回目3回目の打ち合わせの方がより良いコミュニケーションを取ることが出来た。また、疑問点が出る度にメールでお聞きすることによって依頼者の要求を逐一引き出すことに成功した。引き出した要求はこちらで要求定義書という形にまとめて依頼者に確認して頂いた。こうすることによって開発者側と依頼者側で認識の食い違いが起こらないようにした。<成果発表(プレゼンテーション)> 中間発表では「パワーポイントがごちゃごちゃしていて分かりづらい」「専門用語が多すぎて分からない」「原稿を読んでいるだけで発表がつまらない」などの意見が出たので、成果発表では原稿を用いず、パワーポイントも簡単にして、分かりやすい発表を心がけた。 最後に「ユーザインタフェース」の観点から得られた成果を以下に記す。 ・ユーザビリティ評価<ユーザビリティ評価> ユーザビリティ評価とは、開発メンバーとは全く関係のないユーザに製品を使用して貰うことによって、製品のユーザビリティ状況を把握し、問題点や改善すべき課題を明確にする手法である。今回、開発したソフトウェアに対してこのユーザビリティ評価を実施し、ユーザビリティの問題点を調査した。その結果、予想もしなかった箇所でユーザが行き詰まることがあり、開発者側と使用者側との認識の違いを思い知らされた。 (文責:石本信一朗)6.2 プロジェクトにおける自分の役割●石本 主にプログラミング担当として、ABSの改良を行った。実装した機能は、ログイン認証機能、管理者やユーザ情報の登録/更新/削除機能、書籍の在庫情報の追加、の3つである。また、データベースの作成やサーバの構築、グループメンバーへの作業の分担も行った。 前期では、プログラミングを担当することで、JSP/サーブレットを用いたWebアプリケーションのプログラムの流れを掴むことができた。さらに、メンバーで分担して作業を行う際は、開発メンバー内での情報の共有が重要であることを知った。<後期> 後期もプログラミング担当として主にコーディング作業を行った。前期と比べてコーディングの量が多かったため、グループメンバーと作業を分担して、主に管理者画面のコーディング作業を行った。後期は前期とは異なり、1からコーディングを行わなければならなかったので、要求定義をしっかりとこなして、依頼者の要求を的確に満たし、画面遷移図などで完成系を決めておくことの重要さが身に染みた。要求定義書、画面遷移図に沿ったコーディングをするという自分の役割をしっかりとこなせたと思う。 (文責:石本信一朗)6.3 今後の課題 今後の課題として、さらなるJavaプログラミング技術の向上が挙げられる。前期の模擬開発演習では、ABSの改良点が見つかっても、Javaプログラミングの技術不足のため改良できないことがあった。また、依頼者とのミーティングの際には、話し合いの内容にばかり注意が向き、言葉使いが疎かになってしまうことや、自分たちの技術とシステムの難易度を考慮せずに改良点を提案し、時間と技術が足りず開発を断念することがあった。後期ではこのようなことが無いよう、自分たちの技術と依頼者の依頼内容を良く考慮し、開発の見積もりを立てることが重要だと考えられる。 システムの観点では、時間が足りず、テストプログラムが作成できなかったことと、セキュリティが甘かったことが挙げられる。 プロジェクトの観点から考えると、メンバー同士の情報の共有が甘く、自分以外のメンバーが行っている作業の内容をほとんど把握できなかったことが挙げられる。<後期> 今後の課題としては、前期と同じくやはりJavaプログラミング技術の向上が挙げられる。プログラミング技術が足りないために力業で解決してしまうことが多々あり、効率の良いプログラミングをすることが出来なかった。メンバー間での情報共有が甘く、開発が滞ることもあった。また、ユーザビリティに富んだ、ユーザにとって使いやすいソフトウェアの開発を目指していたが、完成したシステムに対してユーザビリティ評価を行うと、思いもよらない所でユーザが操作を誤ることがあった。このことから、ユーザインタフェースについての知識がまだまだ足りないと感じた。コミュニケーションの観点からは、依頼者との打ち合わせの際に会話が無くなり、シーンとなってしまう場面が何度かあった。今後はこのようなことが起こらないように、コミュニケーション能力も向上させる必要があると感じた。 (文責:石本信一朗)