大学での成果物
予約・注文システム -おひさま-
- チーム開発&個人開発
使用技術:Ruby(Ruby on Rails), HTML, CSS, MySQL, Git, Docker, Heroku
概要:様々な食品や日用品等を注文できるWebアプリケーション
開発背景:
生協などの予約注文システムは、会員登録をしていない場合にどんな商品が 置いてあるのかがよく分からないという経験をしたことが何度かあります。そのため、「会員登録をする前にどんな商品が置いてあるか知りたい」と考えるようになりました。 コロナ禍の近所のスーパーでさえ外出しにくい状況で、生協のようなシステムの需要が非常に高まりましたが、「会員登録をしないと商品が見られないなら、既に何があるかを知っているスーパーに行こうかな」と考えてしまいます。ユーザの不安な思いを減少したいという思いから、ユーザにとって他のシステムより分かりやすい・より使いやすいを目指し、おひさまーとシステムを開発しました。
開発人数:4人(プログラミングは皆個々で開発)
役割:アプリケーションの概要から実装、テストまで全て
課題解決にむけたアクション:
会員登録(ログイン)をする前に、商品一覧をカテゴリー別に表示すること で、システムに登録されている全ての商品を見られるようになり、また、カテゴリー内で検索機能を使用できるようにしたため、より商品を探しやすくなっ ています。その他の工夫点としては、定期便を作成し、管理者側で発送予定の曜日ごとにカート内の商品を注文する処理を行えるようにしたため、ユーザからは毎週定期便やカート内の商品が自動注文されるようになっています。
成果・結果:
約2ヶ月間でアプリケーションの概要からテストを行いました。また、開発に携わっていない12人の友人達にシステムを操作してもらい、フィードバックを頂けました。フィードバックでは、エラー文やボタン名等の日本語化が不十分であることや、カートに入れた商品を「注文する」ボタンが無い理由を記載していないため、ユーザからは自動で注文されることが分からなかったこと等の意見が得られました。このアプリケーションは改善の余地が多大にあるため、目標である「より分かりやすい・より使いやすい」を目指し、努力し続けています。
RFP(提案依頼書)の作成
仮想プロジェクトの設定から考え、ユースケース記述・ユースケース図の作成をしました。そこから、概念レベルモデリング(COM)・仕様レベルモデリング(SOM)・物理レベルモデリング(POM)を考える上で、非機能要件の検討の仕方や物理設計を学びました。
次に、仮想プロジェクトにおける脅威を識別するために、データフローを書き出し、脅威分析モデル「STRIDE」による脅威の洗い出しを行いました。
最後に、POM(物理設計)への脅威マッピングに取り組み、どんなセキュリティ対策が必要となるかを考えました。そして、全ての必要であるセキュリティ対策を物理設計にまとめ、完成したものが右上のGoogleスライド p.18に載っています。
オンラインストア -Fiori-
使用技術:JavaScript(Vue.js), Docker
概要:
本アプリケーションでは、花束や切花を販売しており、主に機能は三つあります。一つ目は、最初にサイトを開いた際に、おすすめの商品が表示される機能です。二つ目は、商品の検索ができる機能です。こちらは、オンラインストア上に販売している花や花束の名前を入力する方法と、サイトのページに表示されているカテゴリー名をクリックする方法の二通りがあります。三つ目は、商品をカートに入れられる機能です。こちらは、商品の在庫がある場合にカートに入れることや、カート内を表示できたり、注文を確定できたりします。
機能:
1. おすすめ商品の表示
2. 検索
2-1. 入力フォームによる検索
2-2. カテゴリー名クリックによる検索
3. 購入(カートに入れる)ボタン
3-1. カートへの商品追加
i. 在庫あり
ii. 在庫なし
3-2. カート内の表示
3-3. 注文確定ボタン
i. カート内に商品がある
ii. カート内に商品がない
directでの学習アプリ
使用技術:
JavaScript、PostgreSQL、directのチャット、directのノート、directのセレクトスタンプ
ボットの概要とユースケース:
今回作成したものは、「学習の記録の手伝いに加えて、平均学習時間を教えてくれるボット」です。ユースケースとしては、主に「学習宣言・学習時間の記録(ノート)・学習時間の確認(チャット)・平均学習時間の計算」の4つです。チャットに「学習内容:数字」のように学習内容と学習時間(分)を送信することで、データベースに記録することができます。「:」は半角でなければなりません。
学習宣言とは、「課題・インフラ・セキュリティ・プログラミング」の4つの項目から今やる学習を選択することです。チャットに「will」と送信した際に、ボットから先程の4項目を選ぶことができるセレクトスタンプが送られてきます。選択することで、学習についての宣言を行えるため、学習意欲の向上を意図しています。
学習時間の記録(ノート)とは、今まで記録したデータベースにある学習内容や、平均の学習時間、応援メッセージを含む内容のノートが作成されることです。チャットに「print」と送信することで、ボットがノートを新規作成してくれるため、学習の記録を振り返ることができます。
学習時間の確認(チャット)とは、今まで記録したデータベースにある学習内容や、平均の学習時間をボットがチャットに送信してくれることです。チャットに「logs」と送信することで、学習の記録を振り返ることができますが、ノートは作成しません。加えて、応援メッセージも送られません。ノートを作成したくはないが、学習記録が知りたい際に便利となっています。
平均学習時間の計算とは、今まで記録したデータベースにある学習時間から平均時間が知れることです。チャットに「ave」と送信することで、「平均学習時間:x分」と応援メッセージが返ってきます。平均学習時間のみを知りたい際に便利となっています。
苦労した点:
1つ目に、平均学習時間を返す際に、文字だけでは一目でどれだけ勉強をしているかが分かりにくいと判断し、スタンプや応援メッセージも返すことで解決できると考えました。まず、データベースにアクセスして、属性timeの値を得て、次に平均を求め、その値によって応援メッセージとスタンプを決めます。平均学習時間をif文で分けるにあたって、分けるための数値は日頃の目標である分数(ふんすう)にしています。応援メッセージとスタンプは、自身のやる気が出るよう設定をすることで、さらに上を目指すことが可能となっています。
2つ目に、出力の際の見やすさが大切だと考え、改行や空白をあけることを意識しました。そのため、データベースにアクセスした結果をreturnで返す際は、何度も実行し、自分の求める形で出力されるように取り組みました。また、機能を分けることで、必要な情報だけを知ることができるように工夫を行いました。例えば、printと送信すればノートに「学習内容や時間、平均や応援メッセージ」が返ってきます。これをlogsにすれば、チャットに「学習内容や時間、平均が返ってきたり、aveにすれば、チャットに「平均や応援メッセージ」が返ってきます。
メモアプリ
概要:
ひとことメモとして予定を登録できるアプリケーションを作成しました。開発メンバーは、私と友人の2人です。サーバプログラムは友人が担当し、クライアントプログラムは、私が担当しました。
使用技術:
主に「GUI・Flask・ファイル書込み」の三つです。GUIにて登録したメモがブラウザに表示され、メモはmemolog.csvというファイルにログとして保存されます。
予定登録方法:
GUI画面にある「メモを追加」のフォームに文字を入力して、「日付選択」をクリックして予定の日付を選択した上で、「決定」ボタンをクリックすることで、ブラウザ画面に予定が表示されます。
このアプリケーションは、サーバプログラムを止めてしまうとブラウザでの表示がリセットするため、今までのひとことメモはmemolog.csvファイルに保存されており、そこから確認することが可能となっております。
その他工夫点:
ブラウザ表示では予定は、日付順にソートされるようになっていますが、memolog.csvファイルは、記録用であるためソートはしていません。