Author: softcompdev2
-
アーキテクチャ
アーキテクチャ AWS構成図 ドローンベンチャー企業の生産部品の在庫管理システムのAWS構成図です。 AWS Fargate を使用して Amazon Elastic Container Service (Amazon ECS) にコンテナ化された Java マイクロサービスをデプロイします。コンテナ管理にAmazon Elastic Container Registry (Amazon ECR) を使用します。AWS Fargate を使用して Amazon ECS に Java マイクロサービスをデプロイします。 テクノロジースタック ECS(Elastic Container Service) サーバーとして、Amazon ECS(Elastic Container Service)を用います。 RDS / Aurora データベースとして、RDS / Aurora の PostgreSQL を用います。 ※ 今回は運営側ですでに構築したAuroraに利用するため、このタスクで構築する必要はありません。 https://github.com/dotlife-dev/lxp-practical-project/blob/main/drone/dev/src/main/resources/application.properties にアクセス情報を記載しています。 ソーステクノロジースタック Java マイクロサービス (Spring Boot で実装されたもの)…
-
ミッションの理解
産業用ドローンを開発するベンチャー企業の生産部品の在庫管理システム新規開発プロジェクトに参加していただきます。 あなたの役割はインフラエンジニアで、ミッションは「サービスの信頼性や安定性を確保する」です。 具体的には、以下のインフラ構築、運用保守業務に従事していただきます。 ・サーバー、データベース、ネットワークの構築 ・セキュリティの設定 ・デプロイ環境(CI・CD)の構築 ・ロギングとモニタリングの設定 ・インフラコスト管理の設定 ・セキュリティテストの実施 ・自動化とインフラのコード化 ・障害対応(アクセスログの調査) ・Linuxコマンドの利用 ・運用報告書の作成 インフラエンジニアには、以下の経験を有している前提です。
-
プロジェクトの理解
シソーラス定義 ワード 意味 クライアント企業 システムを発注するお客様・企業 在庫管理システム 企業や組織が製品や資材などの在庫を効率的に管理するためのソフトウェアシステム。在庫の受け入れ、保管、追跡、および出荷などのさまざまなプロセスを自動化し、効率的かつ正確な在庫管理を実現。 プロジェクト概要 クライアント企業 クライアント企業は、「ドローンが空を飛び交い、さまざまな社会課題を解決し、人々の生活や社会を豊かにする」というミッションを掲げ、2016年に創業した、主に産業用途のドローンを開発しているベンチャー企業です。 産業用ドローンは業務の効率化、コスト削減、およびリスク低減を目的に使用されます。主に人命救助や農業分野など様々な領域で活用され、特にインフラ設備の点検に重宝されています。これらのドローンは4つのプロペラが搭載され、対角に配置されたプロペラが交互に回転することで安定性を保ちます。重要な機能として、高解像度のカメラ、セキュリティ対策機能、高精度のセンサー、およびGPS機能の搭載が挙げられます。これらの機能により、産業用ドローンは安全で効率的な業務の実行が可能となります。 ドローンに必要な部品の数は、機種や用途によって異なりますが、以下の部品が必要です。 (※上記は参考画像です。参照元組織と本擬似実務は関係ございません。) プロジェクトの狙い クライアント企業の産業用ドローンの活用の幅は年々広がっており、現在ではインフラ、巡回、物流、農業、災害対策、セキュリティ対策分野で利用され、順調に売上が拡大しています。 その一方、各分野でドローンに求められるニーズが異なり、カスタマイズ要件が増えています。ドローンの生産では、プラットフォーム(基本的な構成)をベースに追加部品を組み込むで各分野のニーズに応える生産方式を採用しています。 従来導入していたパッケージ型の生産(購買・生産管理・販売管理・在庫管理)システムでは、この生産方式に耐えれない、パッケージをカスタマイズするにしてもコストが莫大にかかることが事前調査で判明し、独自のドローン生産システムを開発することが、クライアント企業内で決定しました。 今回のプロジェクトでは、産業用ドローンの生産システム全体像(購買システム・生産管理システム・販売管理システム・在庫管理システム)のうち、以下の機能を有する在庫管理システムを新規に開発します。 ステークホルダー 前提
-
レビュー機能を開発しましょう(管理画面)
レビュー機能は、製品やサービス、アプリケーションなどに対するユーザーの評価や意見を収集するための機能です。 ユーザーは製品やサービスに対して星や数値で評価を行い、それに加えてテキストでコメントやレビューを投稿することができます。これにより、他のユーザーが製品やサービスの利点や欠点を知る手助けとなります。 現状 管理画面には、レビュー(評価・コメント)を閲覧する画面はありません。 開発タスク 画面仕様 機能仕様 左サイドバーの仕様 ヘッダーに「レビュー」を追加してください。 メニューにレビュー一覧を追加してください。 レビュー画面の仕様 レビューの一覧を表示してください。 項目は、レビュー登録日時、商品ID、ユーザー名(ユーザーID)、評価、コメントです。 商品IDをクリックしたら、管理画面の商品画面に遷移してください。 ユーザーIDをクリックしたら管理画面のユーザー画面に遷移してください。
-
レコメンデーション機能を開発しましょう
レコメンデーション機能は、ユーザーに対して特定のアイテムやコンテンツを推薦する機能です。ユーザーが過去に評価したアイテムや他のユーザーの評価データを元に、類似のユーザーやアイテムを推薦します。類似のユーザーが好むアイテムを推定することで、新しいアイテムをレコメンドします。 現状 商品画面では、商品名(name)、商品説明(description)、画像(cover)、価格(price)を表示しており、 レビュー機能の開発で、評価、コメント一覧を追加しました。 開発タスク おすすめ商品のリストを追加してください。 画面仕様 機能仕様 おすすめ商品の仕様 おすすめ商品を最大5件表示してください。 おすすめ商品は、商品画像、評価(その商品を評価したユーザーの評価値の平均)、商品名を表示してください。 おすすめ商品は横スクロールできるようにしてください。約1000pxの横幅で3つの商品が表示されるぐらいのサイズ感、デザインにしてください。 レコメンデーションのアルゴリズム アルゴリズムは、ユーザーベースの協調フィルタリング、またはアイテムベースの協調フィルタリングで実装してください。 類似度はコサイン類似度を用いてください。 データが足りないときは? 協調フィルタリングでは、多くのユーザーの評価情報が必要です。正しく動くことを検証するために、疑似データを生成して、データベースに保存するマイグレーションコードを実装してください。
-
レビュー機能を開発しましょう(フロント画面)
レビュー機能は、製品やサービス、アプリケーションなどに対するユーザーの評価や意見を収集するための機能です。 ユーザーは製品やサービスに対して星や数値で評価を行い、それに加えてテキストでコメントやレビューを投稿することができます。これにより、他のユーザーが製品やサービスの利点や欠点を知る手助けとなります。 現状 商品画面では、商品名(name)、商品説明(description)、画像(cover)、価格(price)を表示しています。 開発タスク 画面仕様 機能仕様 評価・コメント一覧の仕様 商品に対する評価(5段階)とコメントを表示してください。 評価・コメントは最新の10件を表示してください。 評価・コメント入力の仕様 ユーザーは評価(5段階)の入力できます。評価は input タグの type=number または select タグで実装してください。input タグの場合は、min と max を指定してください。select タグの場合、option は 1,2,3,4,5 です。 コメントの最大入力数は100文字です。100文字以上の場合、登録できません。 登録の仕様 評価とコメントは必須です。入力されていなければ、登録ボタンは disabled にしてください。どちらとも入力されたら disabled を解除してください。 ユーザーが登録ボタンを押したら、評価とコメントをデータベースに登録します。 ユーザーはログインしていなければ登録できません。ログインしていなければ、評価・コメント・登録ボタンは表示しません。 登録完了したら、「評価とコメントを登録しました」とメッセージを表示してください。
-
デザインを変更してユーザー体験を向上させましょう
商品画面のデザインを変更したり、商品の追加情報を表示したりすることで、ユーザー体験の向上を図りたいです。 現状 http://localhost:8000/nesciunt-nisi-qui-neque-molestias などの商品画面では、商品名(name)、商品説明(description)、画像(cover)、価格(price)を表示、ユーザーは数量を入力してカートに追加することができます。 商品情報は管理画面で確認できます。例えば、http://localhost:8000/admin/products/12/edit です。 開発タスク 画面仕様 機能仕様 画面レイアウトを画面仕様に従い修正してください。 価格は日本円表示にしてください。1ドル140円で計算してください。 価格の右横に送料を表示してください。固定で980円です。 SKUを表示してください。 「かごに追加」に用語を変更してください。 モバイルに対応するようレスポシンプルにしてください。
-
バグ修正:管理画面:住所一覧
ヒント 以下の前提知識が必要となります。わからない技術がある場合、事前に調べてから取り組んでください。 開発内容 管理画面の住所一覧でエラーが発生しているので修正してください。 http://localhost:8000/admin/addresses エラーメッセージ 期待される動作 管理画面の住所一覧が正しく表示されること
-
開発環境構築
ヒント 以下の前提知識が必要となります。わからない技術がある場合、事前に調べてから取り組んでください。 リポジトリの作成 https://github.com/dotlife-dev/lxp-practical-project/tree/main/laracom を自身のリポジトリに fork してください。 https://github.com/dotlife-dev/lxp-practical-project/tree/main/laracom に対して commit や merge request などは絶対にしないでください。 リポジトリのクーロン $ git clone {{ リポジトリURL }} で自身の環境にリポジトリをクーロンしてください。 ローカル環境 README に記載されている方法でローカル環境を構築してください。 https://github.com/dotlife-dev/lxp-practical-project/tree/main/laracom ⚠ ポイント データベースのマイグレーション # php artisan migrate –seed を実行した際に以下エラーが表示されたら、リポジトリの Issue で解決策を探してみましょう。 https://github.com/jsdecena/laracom/issues?q=is%3Aissue+Connection+refused+is%3Aclosed ユーザー情報 http://localhost:8000/admin/ にアクセスして以下のユーザー情報でログインしてください。