Skip to content

作業履歴 2025-04-24

概要

2025-04-24の作業内容をまとめています。このジャーナルでは、システムの現状分析として「アーキテクチャ概要」と「ユースケース」の2つの重要なドキュメントを作成しました。これらのドキュメントは、Baukis-Kaiシステムの構造、機能、および利用パターンを包括的に説明し、開発チームや新しいメンバーがシステムを理解するための基盤となります。

コミット: 49163f7 - システムドキュメントの作成

概要

システムの現状分析として、アーキテクチャとユースケースに関する詳細なドキュメントを作成しました。これらのドキュメントは、システムの全体像を把握し、今後の開発や保守作業の指針となることを目的としています。

技術的詳細

  • アーキテクチャ概要: システムの構造、層、コンポーネント間の関係を詳細に説明
  • システム概要と主要機能
  • 3つの主要サブシステム(スタッフ、顧客、管理者インターフェース)
  • アプリケーション層構造(MVC拡張)
  • 名前空間とインターフェース構造
  • データモデルとその関連
  • ビジネスフロー
  • 認証・認可システム
  • 配置アーキテクチャ
  • 開発ガイドライン

  • ユースケース: システムの利用パターンを詳細に説明

  • アクター(職員、顧客、管理者)の定義
  • 各アクターのユースケース詳細
  • ユースケース関連図

メッセージ

docs:現状分析

変更されたファイル

  • A "docs/\343\202\242\343\203\274\343\202\255\343\203\206\343\202\257\343\203\201\343\203\243\346\246\202\350\246\201.md"
  • A "docs/\343\203\246\343\203\274\343\202\271\343\202\261\343\203\274\343\202\271.md"

変更内容

commit 49163f777eaed28780efdfe817f6749908e196cd
Author: k2works <kakimomokuri@gmail.com>
Date:   Thu Apr 24 18:47:02 2025 +0900

    docs:現状分析

diff --git "a/docs/\343\202\242\343\203\274\343\202\255\343\203\206\343\202\257\343\203\201\343\203\243\346\246\202\350\246\201.md" "b/docs/\343\202\242\343\203\274\343\202\255\343\203\206\343\202\257\343\203\201\343\203\243\346\246\202\350\246\201.md"
new file mode 100644
index 0000000..d91f3e0
--- /dev/null
+++ "b/docs/\343\202\242\343\203\274\343\202\255\343\203\206\343\202\257\343\203\201\343\203\243\346\246\202\350\246\201.md"
@@ -0,0 +1,412 @@
+# Baukis-Kai システムアーキテクチャ概要
+
+## 1. システム概要
+
+Baukis-Kaiは顧客管理システムで、主に以下の機能を提供します:
+
+- スタッフによる顧客情報管理
+- 顧客のプログラム予約および参加管理
+- 顧客とスタッフ間のメッセージングシステム
+- 管理者によるスタッフ管理とシステム設定
+
+## 2. システム構成
+
+システムは以下の3つの主要なサブシステムに分かれています:
+
+1. **スタッフインターフェース**: スタッフが顧客情報やプログラムを管理するためのインターフェース
+2. **顧客インターフェース**: 顧客が自身の情報、予約、メッセージを管理するためのインターフェース
+3. **管理者インターフェース**: システム全体とスタッフを管理するための管理者用インターフェース
+
+## 3. アプリケーション層構造
+
+Railsアプリケーションの拡張版MVCアーキテクチャに基づいており、以下の層に分かれています:
+
+<img src="data:image/svg+xml;base64,PCFkb2N0eXBlIGh0bWw+PGh0bWwgbGFuZz0iZW4iPjxoZWFkPjxzY3JpcHQ+dmFyIF9fZXpIdHRwQ29uc2VudD17c2V0QnlDYXQ6ZnVuY3Rpb24oc3JjLHRhZ1R5cGUsYXR0cmlidXRlcyxjYXRlZ29yeSxmb3JjZSxjdXN0b21TZXRTY3JpcHRGbj1udWxsKXt2YXIgc2V0U2NyaXB0PWZ1bmN0aW9uKCl7aWYoZm9yY2V8fHdpbmRvdy5lelRjZkNvbnNlbnRbY2F0ZWdvcnldKXtpZih0eXBlb2YgY3VzdG9tU2V0U2NyaXB0Rm49PT0nZnVuY3Rpb24nKXtjdXN0b21TZXRTY3JpcHRGbigpO31lbHNle3ZhciBzY3JpcHRFbGVtZW50PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQodGFnVHlwZSk7c2NyaXB0RWxlbWVudC5zcmM9c3JjO2F0dHJpYnV0ZXMuZm9yRWFjaChmdW5jdGlvbihhdHRyKXtmb3IodmFyIGtleSBpbiBhdHRyKXtpZihhdHRyLmhhc093blByb3BlcnR5KGtleSkpe3NjcmlwdEVsZW1lbnQuc2V0QXR0cmlidXRlKGtleSxhdHRyW2tleV0pO319fSk7dmFyIGZpcnN0U2NyaXB0PWRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKHRhZ1R5cGUpWzBdO2ZpcnN0U2NyaXB0LnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKHNjcmlwdEVsZW1lbnQsZmlyc3RTY3JpcHQpO319fTtpZihmb3JjZXx8KHdpbmRvdy5lelRjZkNvbnNlbnQmJndpbmRvdy5lelRjZkNvbnNlbnQubG9hZGVkKSl7c2V0U2NyaXB0KCk7fWVsc2UgaWYodHlwZW9mIGdldEV6Q29uc2VudERhdGE9PT0iZnVuY3Rpb24iKXtnZXRFekNvbnNlbnREYXRhKCkudGhlbihmdW5jdGlvbihlelRjZkNvbnNlbnQpe2lmKGV6VGNmQ29uc2VudCYmZXpUY2ZDb25zZW50LmxvYWRlZCl7c2V0U2NyaXB0KCk7fWVsc2V7Y29uc29sZS5lcnJvcigiY2Fubm90IGdldCBleiBjb25zZW50IGRhdGEiKTtmb3JjZT10cnVlO3NldFNjcmlwdCgpO319KTt9ZWxzZXtmb3JjZT10cnVlO3NldFNjcmlwdCgpO2NvbnNvbGUuZXJyb3IoImdldEV6Q29uc2VudERhdGEgaXMgbm90IGEgZnVuY3Rpb24iKTt9fSx9Ozwvc2NyaXB0Pgo8c2NyaXB0PnZhciBlelRjZkNvbnNlbnQ9d2luZG93LmV6VGNmQ29uc2VudD93aW5kb3cuZXpUY2ZDb25zZW50Ontsb2FkZWQ6ZmFsc2Usc3RvcmVfaW5mbzpmYWxzZSxkZXZlbG9wX2FuZF9pbXByb3ZlX3NlcnZpY2VzOmZhbHNlLG1lYXN1cmVfYWRfcGVyZm9ybWFuY2U6ZmFsc2UsbWVhc3VyZV9jb250ZW50X3BlcmZvcm1hbmNlOmZhbHNlLHNlbGVjdF9iYXNpY19hZHM6ZmFsc2UsY3JlYXRlX2FkX3Byb2ZpbGU6ZmFsc2Usc2VsZWN0X3BlcnNvbmFsaXplZF9hZHM6ZmFsc2UsY3JlYXRlX2NvbnRlbnRfcHJvZmlsZTpmYWxzZSxzZWxlY3RfcGVyc29uYWxpemVkX2NvbnRlbnQ6ZmFsc2UsdW5kZXJzdGFuZF9hdWRpZW5jZXM6ZmFsc2UsdXNlX2xpbWl0ZWRfZGF0YV90b19zZWxlY3RfY29udGVudDpmYWxzZSx9O2Z1bmN0aW9uIGdldEV6Q29uc2VudERhdGEoKXtyZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24ocmVzb2x2ZSl7ZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiZXpDb25zZW50RXZlbnQiLGZ1bmN0aW9uKGV2ZW50KXt2YXIgZXpUY2ZDb25zZW50PWV2ZW50LmRldGFpbC5lelRjZkNvbnNlbnQ7cmVzb2x2ZShlelRjZkNvbnNlbnQpO30pO30pO308L3NjcmlwdD4KPHNjcmlwdD5pZih0eXBlb2YgX3NldEV6Q29va2llcyE9PSdmdW5jdGlvbicpe2Z1bmN0aW9uIF9zZXRFekNvb2tpZXMoZXpDb25zZW50RGF0YSl7dmFyIGNvb2tpZXM9d2luZG93LmV6Q29va2llUXVldWU7Zm9yKHZhciBpPTA7aTxjb29raWVzLmxlbmd0aDtpKyspe3ZhciBjb29raWU9Y29va2llc1tpXTtpZihlekNvbnNlbnREYXRhJiZlekNvbnNlbnREYXRhLmxvYWRlZCYmZXpDb25zZW50RGF0YVtjb29raWUudGNmQ2F0ZWdvcnldKXtkb2N1bWVudC5jb29raWU9Y29va2llLm5hbWUrIj0iK2Nvb2tpZS52YWx1ZTt9fX19CndpbmRvdy5lekNvb2tpZVF1ZXVlPXdpbmRvdy5lekNvb2tpZVF1ZXVlfHxbXTtpZih0eXBlb2YgYWRkRXpDb29raWVzIT09J2Z1bmN0aW9uJyl7ZnVuY3Rpb24gYWRkRXpDb29raWVzKGFycil7d2luZG93LmV6Q29va2llUXVldWU9Wy4uLndpbmRvdy5lekNvb2tpZVF1ZXVlLC4uLmFycl07fX0KYWRkRXpDb29raWVzKFtdKTtpZih3aW5kb3cuZXpUY2ZDb25zZW50JiZ3aW5kb3cuZXpUY2ZDb25zZW50LmxvYWRlZCl7X3NldEV6Q29va2llcyh3aW5kb3cuZXpUY2ZDb25zZW50KTt9ZWxzZSBpZih0eXBlb2YgZ2V0RXpDb25zZW50RGF0YT09PSJmdW5jdGlvbiIpe2dldEV6Q29uc2VudERhdGEoKS50aGVuKGZ1bmN0aW9uKGV6VGNmQ29uc2VudCl7aWYoZXpUY2ZDb25zZW50JiZlelRjZkNvbnNlbnQubG9hZGVkKXtfc2V0RXpDb29raWVzKHdpbmRvdy5lelRjZkNvbnNlbnQpO31lbHNle2NvbnNvbGUuZXJyb3IoImNhbm5vdCBnZXQgZXogY29uc2VudCBkYXRhIik7X3NldEV6Q29va2llcyh3aW5kb3cuZXpUY2ZDb25zZW50KTt9fSk7fWVsc2V7Y29uc29sZS5lcnJvcigiZ2V0RXpDb25zZW50RGF0YSBpcyBub3QgYSBmdW5jdGlvbiIpO19zZXRFekNvb2tpZXMod2luZG93LmV6VGNmQ29uc2VudCk7fTwvc2NyaXB0Pjx0aXRsZT5IVFRQIFN0YXR1cyA0MDAg4oCTIEJhZCBSZXF1ZXN0PC90aXRsZT48c3R5bGUgdHlwZT0idGV4dC9jc3MiPmJvZHkge2ZvbnQtZmFtaWx5OlRhaG9tYSxBcmlhbCxzYW5zLXNlcmlmO30gaDEsIGgyLCBoMywgYiB7Y29sb3I6d2hpdGU7YmFja2dyb3VuZC1jb2xvcjojNTI1RDc2O30gaDEge2ZvbnQtc2l6ZToyMnB4O30gaDIge2ZvbnQtc2l6ZToxNnB4O30gaDMge2ZvbnQtc2l6ZToxNHB4O30gcCB7Zm9udC1zaXplOjEycHg7fSBhIHtjb2xvcjpibGFjazt9IC5saW5lIHtoZWlnaHQ6MXB4O2JhY2tncm91bmQtY29sb3I6IzUyNUQ3Njtib3JkZXI6bm9uZTt9PC9zdHlsZT48L2hlYWQ+PGJvZHk+PGgxPkhUVFAgU3RhdHVzIDQwMCDigJMgQmFkIFJlcXVlc3Q8L2gxPjxociBjbGFzcz0ibGluZSIgLz48cD48Yj5UeXBlPC9iPiBFeGNlcHRpb24gUmVwb3J0PC9wPjxwPjxiPk1lc3NhZ2U8L2I+IFJlcXVlc3QgaGVhZGVyIGlzIHRvbyBsYXJnZTwvcD48cD48Yj5EZXNjcmlwdGlvbjwvYj4gVGhlIHNlcnZlciBjYW5ub3Qgb3Igd2lsbCBub3QgcHJvY2VzcyB0aGUgcmVxdWVzdCBkdWUgdG8gc29tZXRoaW5nIHRoYXQgaXMgcGVyY2VpdmVkIHRvIGJlIGEgY2xpZW50IGVycm9yIChlLmcuLCBtYWxmb3JtZWQgcmVxdWVzdCBzeW50YXgsIGludmFsaWQgcmVxdWVzdCBtZXNzYWdlIGZyYW1pbmcsIG9yIGRlY2VwdGl2ZSByZXF1ZXN0IHJvdXRpbmcpLjwvcD48cD48Yj5FeGNlcHRpb248L2I+PC9wPjxwcmU+amF2YS5sYW5nLklsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbjogUmVxdWVzdCBoZWFkZXIgaXMgdG9vIGxhcmdlCglvcmcuYXBhY2hlLmNveW90ZS5odHRwMTEuSHR0cDExSW5wdXRCdWZmZXIuZmlsbChIdHRwMTFJbnB1dEJ1ZmZlci5qYXZhOjc3OCkKCW9yZy5hcGFjaGUuY295b3RlLmh0dHAxMS5IdHRwMTFJbnB1dEJ1ZmZlci5wYXJzZVJlcXVlc3RMaW5lKEh0dHAxMUlucHV0QnVmZmVyLmphdmE6NDQyKQoJb3JnLmFwYWNoZS5jb3lvdGUuaHR0cDExLkh0dHAxMVByb2Nlc3Nvci5zZXJ2aWNlKEh0dHAxMVByb2Nlc3Nvci5qYXZhOjI1NikKCW9yZy5hcGFjaGUuY295b3RlLkFic3RyYWN0UHJvY2Vzc29yTGlnaHQucHJvY2VzcyhBYnN0cmFjdFByb2Nlc3NvckxpZ2h0LmphdmE6NjMpCglvcmcuYXBhY2hlLmNveW90ZS5BYnN0cmFjdFByb3RvY29sJENvbm5lY3Rpb25IYW5kbGVyLnByb2Nlc3MoQWJzdHJhY3RQcm90b2NvbC5qYXZhOjkzNykKCW9yZy5hcGFjaGUudG9tY2F0LnV0aWwubmV0Lk5pb0VuZHBvaW50JFNvY2tldFByb2Nlc3Nvci5kb1J1bihOaW9FbmRwb2ludC5qYXZhOjE3OTEpCglvcmcuYXBhY2hlLnRvbWNhdC51dGlsLm5ldC5Tb2NrZXRQcm9jZXNzb3JCYXNlLnJ1bihTb2NrZXRQcm9jZXNzb3JCYXNlLmphdmE6NTIpCglvcmcuYXBhY2hlLnRvbWNhdC51dGlsLnRocmVhZHMuVGhyZWFkUG9vbEV4ZWN1dG9yLnJ1bldvcmtlcihUaHJlYWRQb29sRXhlY3V0b3IuamF2YToxMTkwKQoJb3JnLmFwYWNoZS50b21jYXQudXRpbC50aHJlYWRzLlRocmVhZFBvb2xFeGVjdXRvciRXb3JrZXIucnVuKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjY1OSkKCW9yZy5hcGFjaGUudG9tY2F0LnV0aWwudGhyZWFkcy5UYXNrVGhyZWFkJFdyYXBwaW5nUnVubmFibGUucnVuKFRhc2tUaHJlYWQuamF2YTo2MykKCWphdmEuYmFzZSYjNDc7amF2YS5sYW5nLlRocmVhZC5ydW4oVGhyZWFkLmphdmE6ODI5KQo8L3ByZT48cD48Yj5Ob3RlPC9iPiBUaGUgZnVsbCBzdGFjayB0cmFjZSBvZiB0aGUgcm9vdCBjYXVzZSBpcyBhdmFpbGFibGUgaW4gdGhlIHNlcnZlciBsb2dzLjwvcD48aHIgY2xhc3M9ImxpbmUiIC8+PGgzPkFwYWNoZSBUb21jYXQvOS4wLjk1PC9oMz48c2NyaXB0IGRhdGEtY2Zhc3luYz0iZmFsc2UiPmZ1bmN0aW9uIF9lbWl0RXpDb25zZW50RXZlbnQoKXt2YXIgY3VzdG9tRXZlbnQ9bmV3IEN1c3RvbUV2ZW50KCJlekNvbnNlbnRFdmVudCIse2RldGFpbDp7ZXpUY2ZDb25zZW50OndpbmRvdy5lelRjZkNvbnNlbnR9LGJ1YmJsZXM6dHJ1ZSxjYW5jZWxhYmxlOnRydWUsfSk7ZG9jdW1lbnQuZGlzcGF0Y2hFdmVudChjdXN0b21FdmVudCk7fQooZnVuY3Rpb24od2luZG93LGRvY3VtZW50KXtmdW5jdGlvbiBfc2V0QWxsRXpDb25zZW50VHJ1ZSgpe3dpbmRvdy5lelRjZkNvbnNlbnQubG9hZGVkPXRydWU7d2luZG93LmV6VGNmQ29uc2VudC5zdG9yZV9pbmZvPXRydWU7d2luZG93LmV6VGNmQ29uc2VudC5kZXZlbG9wX2FuZF9pbXByb3ZlX3NlcnZpY2VzPXRydWU7d2luZG93LmV6VGNmQ29uc2VudC5tZWFzdXJlX2FkX3BlcmZvcm1hbmNlPXRydWU7d2luZG93LmV6VGNmQ29uc2VudC5tZWFzdXJlX2NvbnRlbnRfcGVyZm9ybWFuY2U9dHJ1ZTt3aW5kb3cuZXpUY2ZDb25zZW50LnNlbGVjdF9iYXNpY19hZHM9dHJ1ZTt3aW5kb3cuZXpUY2ZDb25zZW50LmNyZWF0ZV9hZF9wcm9maWxlPXRydWU7d2luZG93LmV6VGNmQ29uc2VudC5zZWxlY3RfcGVyc29uYWxpemVkX2Fkcz10cnVlO3dpbmRvdy5lelRjZkNvbnNlbnQuY3JlYXRlX2NvbnRlbnRfcHJvZmlsZT10cnVlO3dpbmRvdy5lelRjZkNvbnNlbnQuc2VsZWN0X3BlcnNvbmFsaXplZF9jb250ZW50PXRydWU7d2luZG93LmV6VGNmQ29uc2VudC51bmRlcnN0YW5kX2F1ZGllbmNlcz10cnVlO3dpbmRvdy5lelRjZkNvbnNlbnQudXNlX2xpbWl0ZWRfZGF0YV90b19zZWxlY3RfY29udGVudD10cnVlO3dpbmRvdy5lelRjZkNvbnNlbnQuc2VsZWN0X3BlcnNvbmFsaXplZF9jb250ZW50PXRydWU7fQpmdW5jdGlvbiBfY2xlYXJFekNvbnNlbnRDb29raWUoKXtkb2N1bWVudC5jb29raWU9ImV6Q01QQ29va2llQ29uc2VudD10Y2YyO0RvbWFpbj0ucGxhbnR1bWwuY29tO1BhdGg9LztleHBpcmVzPVRodSwgMDEgSmFuIDE5NzAgMDA6MDA6MDAgR01UIjt9Cl9jbGVhckV6Q29uc2VudENvb2tpZSgpO2lmKHR5cGVvZiB3aW5kb3cuX190Y2ZhcGkhPT0idW5kZWZpbmVkIil7d2luZG93LmV6Z2NvbnNlbnQ9ZmFsc2U7dmFyIGFtYXpvbkhhc1J1bj1mYWxzZTtmdW5jdGlvbiBfZXpBbGxvd2VkKHRjZGF0YSxwdXJwb3NlKXtyZXR1cm4odGNkYXRhLnB1cnBvc2UuY29uc2VudHNbcHVycG9zZV18fHRjZGF0YS5wdXJwb3NlLmxlZ2l0aW1hdGVJbnRlcmVzdHNbcHVycG9zZV0pO30KZnVuY3Rpb24gX2hhbmRsZUNvbnNlbnREZWNpc2lvbih0Y2RhdGEpe3dpbmRvdy5lelRjZkNvbnNlbnQubG9hZGVkPXRydWU7aWYoIXRjZGF0YS52ZW5kb3IuY29uc2VudHNbIjM0NyJdJiYhdGNkYXRhLnZlbmRvci5sZWdpdGltYXRlSW50ZXJlc3RzWyIzNDciXSl7d2luZG93Ll9lbWl0RXpDb25zZW50RXZlbnQoKTtyZXR1cm47fQp3aW5kb3cuZXpUY2ZDb25zZW50LnN0b3JlX2luZm89X2V6QWxsb3dlZCh0Y2RhdGEsIjEiKTt3aW5kb3cuZXpUY2ZDb25zZW50LmRldmVsb3BfYW5kX2ltcHJvdmVfc2VydmljZXM9X2V6QWxsb3dlZCh0Y2RhdGEsIjEwIik7d2luZG93LmV6VGNmQ29uc2VudC5tZWFzdXJlX2NvbnRlbnRfcGVyZm9ybWFuY2U9X2V6QWxsb3dlZCh0Y2RhdGEsIjgiKTt3aW5kb3cuZXpUY2ZDb25zZW50LnNlbGVjdF9iYXNpY19hZHM9X2V6QWxsb3dlZCh0Y2RhdGEsIjIiKTt3aW5kb3cuZXpUY2ZDb25zZW50LmNyZWF0ZV9hZF9wcm9maWxlPV9lekFsbG93ZWQodGNkYXRhLCIzIik7d2luZG93LmV6VGNmQ29uc2VudC5zZWxlY3RfcGVyc29uYWxpemVkX2Fkcz1fZXpBbGxvd2VkKHRjZGF0YSwiNCIpO3dpbmRvdy5lelRjZkNvbnNlbnQuY3JlYXRlX2NvbnRlbnRfcHJvZmlsZT1fZXpBbGxvd2VkKHRjZGF0YSwiNSIpO3dpbmRvdy5lelRjZkNvbnNlbnQubWVhc3VyZV9hZF9wZXJmb3JtYW5jZT1fZXpBbGxvd2VkKHRjZGF0YSwiNyIpO3dpbmRvdy5lelRjZkNvbnNlbnQudXNlX2xpbWl0ZWRfZGF0YV90b19zZWxlY3RfY29udGVudD1fZXpBbGxvd2VkKHRjZGF0YSwiMTEiKTt3aW5kb3cuZXpUY2ZDb25zZW50LnNlbGVjdF9wZXJzb25hbGl6ZWRfY29udGVudD1fZXpBbGxvd2VkKHRjZGF0YSwiNiIpO3dpbmRvdy5lelRjZkNvbnNlbnQudW5kZXJzdGFuZF9hdWRpZW5jZXM9X2V6QWxsb3dlZCh0Y2RhdGEsIjkiKTt3aW5kb3cuX2VtaXRFekNvbnNlbnRFdmVudCgpO30KZnVuY3Rpb24gX2hhbmRsZUdvb2dsZUNvbnNlbnRWMih0Y2RhdGEpe2lmKCF0Y2RhdGF8fCF0Y2RhdGEucHVycG9zZXx8IXRjZGF0YS5wdXJwb3NlLmNvbnNlbnRzKXtyZXR1cm47fQp2YXIgZ29vZ0NvbnNlbnRWMj17fTtpZih0Y2RhdGEucHVycG9zZS5jb25zZW50c1sxXSl7Z29vZ0NvbnNlbnRWMi5hZF9zdG9yYWdlPSdncmFudGVkJztnb29nQ29uc2VudFYyLmFuYWx5dGljc19zdG9yYWdlPSdncmFudGVkJzt9CmlmKHRjZGF0YS5wdXJwb3NlLmNvbnNlbnRzWzNdJiZ0Y2RhdGEucHVycG9zZS5jb25zZW50c1s0XSl7Z29vZ0NvbnNlbnRWMi5hZF9wZXJzb25hbGl6YXRpb249J2dyYW50ZWQnO30KaWYodGNkYXRhLnB1cnBvc2UuY29uc2VudHNbMV0mJnRjZGF0YS5wdXJwb3NlLmNvbnNlbnRzWzddKXtnb29nQ29uc2VudFYyLmFkX3VzZXJfZGF0YT0nZ3JhbnRlZCc7fQppZihnb29nQ29uc2VudFYyLmFuYWx5dGljc19zdG9yYWdlPT0nZGVuaWVkJyl7Z3RhZygnc2V0JywndXJsX3Bhc3N0aHJvdWdoJyx0cnVlKTt9Cmd0YWcoJ2NvbnNlbnQnLCd1cGRhdGUnLGdvb2dDb25zZW50VjIpO30KX190Y2ZhcGkoImFkZEV2ZW50TGlzdGVuZXIiLDIsZnVuY3Rpb24odGNkYXRhLHN1Y2Nlc3Mpe2lmKCFzdWNjZXNzfHwhdGNkYXRhKXt3aW5kb3cuX2VtaXRFekNvbnNlbnRFdmVudCgpO3JldHVybjt9CmlmKCF0Y2RhdGEuZ2RwckFwcGxpZXMpe19zZXRBbGxFekNvbnNlbnRUcnVlKCk7d2luZG93Ll9lbWl0RXpDb25zZW50RXZlbnQoKTtyZXR1cm47fQppZih0Y2RhdGEuZXZlbnRTdGF0dXM9PT0idXNlcmFjdGlvbmNvbXBsZXRlInx8dGNkYXRhLmV2ZW50U3RhdHVzPT09InRjbG9hZGVkIil7aWYodHlwZW9mIGd0YWchPSd1bmRlZmluZWQnKXtfaGFuZGxlR29vZ2xlQ29uc2VudFYyKHRjZGF0YSk7fQpfaGFuZGxlQ29uc2VudERlY2lzaW9uKHRjZGF0YSk7aWYodGNkYXRhLnB1cnBvc2UuY29uc2VudHNbIjEiXT09PXRydWUmJnRjZGF0YS52ZW5kb3IuY29uc2VudHNbIjc1NSJdIT09ZmFsc2Upe3dpbmRvdy5lemdjb25zZW50PXRydWU7KGFkc2J5Z29vZ2xlPXdpbmRvdy5hZHNieWdvb2dsZXx8W10pLnBhdXNlQWRSZXF1ZXN0cz0wO30KaWYod2luZG93Ll9fZXpjb25zZW50KXtfX2V6Y29uc2VudC5zZXRFem9pY0NvbnNlbnRTZXR0aW5ncyhlekNvbnNlbnRDYXRlZ29yaWVzKTt9Cl9fdGNmYXBpKCJyZW1vdmVFdmVudExpc3RlbmVyIiwyLGZ1bmN0aW9uKHN1Y2Nlc3Mpe3JldHVybiBudWxsO30sdGNkYXRhLmxpc3RlbmVySWQpO2lmKCEodGNkYXRhLnB1cnBvc2UuY29uc2VudHNbIjEiXT09PXRydWUmJl9lekFsbG93ZWQodGNkYXRhLCIyIikmJl9lekFsbG93ZWQodGNkYXRhLCIzIikmJl9lekFsbG93ZWQodGNkYXRhLCI0IikpKXtpZih0eXBlb2YgX19lej09Im9iamVjdCImJnR5cGVvZiBfX2V6LmJpdD09Im9iamVjdCImJnR5cGVvZiB3aW5kb3dbIl9lemFxIl09PSJvYmplY3QiJiZ0eXBlb2Ygd2luZG93WyJfZXphcSJdWyJwYWdlX3ZpZXdfaWQiXT09InN0cmluZyIpe19fZXouYml0LkFkZCh3aW5kb3dbIl9lemFxIl1bInBhZ2Vfdmlld19pZCJdLFtuZXcgX19lekRvdERhdGEoIm5vbl9wZXJzb25hbGl6ZWRfYWRzIix0cnVlKSxdKTt9fX19KTt9ZWxzZXtfc2V0QWxsRXpDb25zZW50VHJ1ZSgpO3dpbmRvdy5fZW1pdEV6Q29uc2VudEV2ZW50KCk7fX0pKHdpbmRvdyxkb2N1bWVudCk7PC9zY3JpcHQ+PC9ib2R5PjwvaHRtbD4=" class="uml" alt="uml diagram" title="" />

## コミット: f6d663a

### メッセージ
build:レストア
### 変更されたファイル

- M .devcontainer/devcontainer.json
- M Dockerfile
- A Dockerfile-base
- M README.md
- M docker-compose.yml

### 変更内容

```diff
commit f6d663a639d8545e7b41788280fa5da2561c8291
Author: k2works <kakimomokuri@gmail.com>
Date:   Thu Apr 24 17:13:56 2025 +0900

    build:レストア

diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json
index 52f7251..55a3816 100644
--- a/.devcontainer/devcontainer.json
+++ b/.devcontainer/devcontainer.json
@@ -2,7 +2,6 @@
 // README at: https://github.com/devcontainers/templates/tree/main/src/docker-in-docker
 {
    "name": "Docker in Docker",
-   // Or use a Dockerfile or Docker Compose file. More info: https://containers.dev/guide/dockerfile
    "image": "baukis-kai",

    "features": {
diff --git a/Dockerfile b/Dockerfile
index 91daa36..c68b6cd 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -1,90 +1,4 @@
-FROM ubuntu:18.04
-
-# Setup locale
-RUN \
-apt-get -yq update && \
-apt-get install -y language-pack-ja-base language-pack-ja
-RUN update-locale LANG=ja_JP.UTF-8 LANGUAGE=ja_JP:ja
-ENV LANG=ja_JP.UTF-8
-ENV LC_ALL=ja_JP.UTF-8
-ENV LC_CTYPE=ja_JP.UTF-8
-
-RUN apt-get update && \
-    apt-get install -y \
-           sudo \
-           build-essential \
-           zip \
-           unzip \
-           git \
-           curl \
-           wget \
-           git-core \
-           libssl-dev \
-           libqt4-dev \
-           libc6-dev \
-           automake \
-           libtool \
-           libyaml-dev \
-           zlib1g \
-           zlib1g-dev \
-           openssl \
-           libreadline-dev \
-           libxml2-dev \
-           libxslt1-dev \
-           libncurses5-dev \
-           pkg-config \
-           chrpath \
-           libfontconfig1-dev \
-           libxft-dev \
-           libpq-dev \
-           libsqlite3-dev \
-           libmysqlclient-dev \
-           default-mysql-client \
-           postgresql-client \
-           xvfb \
-           qtbase5-dev \
-           libqt5webkit5-dev \
-           libqtwebkit-dev \
-           xauth \
-           libcurl4-openssl-dev \
-           software-properties-common \
-           libffi-dev \
-           libgdbm5 \
-           libgdbm-dev \
-           libdb-dev \
-           lsof \
-           vim
-
-# Ruby
-ENV RUBY_VER 2.4.0
-ENV BUNDLER_VER 1.13.7
-RUN rm -rf ~/.rbenv
-RUN git clone https://github.com/sstephenson/rbenv ~/.rbenv
-RUN git clone https://github.com/sstephenson/ruby-build.git ~/.rbenv/plugins/ruby-build
-RUN ~/.rbenv/plugins/ruby-build/install.sh
-RUN echo 'export PATH="/$HOME/.rbenv/bin:$PATH"' >> ~/.bash_profile
-RUN echo 'eval "$(rbenv init -)"' >> ~/.bash_profile
-RUN . ~/.bash_profile && \
-         rbenv install $RUBY_VER  && \
-         rbenv global $RUBY_VER
-ENV PATH ~/.rbenv/shims:$PATH
-RUN ~/.rbenv/shims/gem install bundler:$BUNDLER_VER
-
-# Node
-ENV NODE_VER 16
-RUN curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.37.2/install.sh | bash
-RUN . $HOME/.nvm/nvm.sh && \
-    nvm install $NODE_VER && \
-    nvm use $NODE_VER && \
-    node -v && npm -v && \
-    npm i -g yarn
-RUN apt install -y nodejs
-
-# Workaround for Ruby
-RUN apt-get install -y libmysqlclient-dev
-RUN ~/.rbenv/shims/gem install mysql2 -v '0.4.5' --source 'https://rubygems.org/'
-RUN apt-get install -y libssl1.0-dev
-RUN ~/.rbenv/shims/gem install puma -v '3.6.0' --source 'https://rubygems.org/'
+FROM baukis-kai

 # Bundle install
 WORKDIR /srv
@@ -92,4 +6,6 @@ COPY Gemfile /srv/Gemfile
 COPY Gemfile.lock /srv/Gemfile.lock
 RUN ~/.rbenv/shims/bundle install

-SHELL ["/bin/bash", "-c"]
\ No newline at end of file
+COPY . /srv
+
+CMD ["bash", "-c", "bundle exec rake assets:precompile && bundle exec rake db:migrate && bundle exec rails server -b 0.0.0.0"]
diff --git a/Dockerfile-base b/Dockerfile-base
new file mode 100644
index 0000000..91daa36
--- /dev/null
+++ b/Dockerfile-base
@@ -0,0 +1,95 @@
+FROM ubuntu:18.04
+
+# Setup locale
+RUN \
+apt-get -yq update && \
+apt-get install -y language-pack-ja-base language-pack-ja
+RUN update-locale LANG=ja_JP.UTF-8 LANGUAGE=ja_JP:ja
+ENV LANG=ja_JP.UTF-8
+ENV LC_ALL=ja_JP.UTF-8
+ENV LC_CTYPE=ja_JP.UTF-8
+
+RUN apt-get update && \
+    apt-get install -y \
+           sudo \
+           build-essential \
+           zip \
+           unzip \
+           git \
+           curl \
+           wget \
+           git-core \
+           libssl-dev \
+           libqt4-dev \
+           libc6-dev \
+           automake \
+           libtool \
+           libyaml-dev \
+           zlib1g \
+           zlib1g-dev \
+           openssl \
+           libreadline-dev \
+           libxml2-dev \
+           libxslt1-dev \
+           libncurses5-dev \
+           pkg-config \
+           chrpath \
+           libfontconfig1-dev \
+           libxft-dev \
+           libpq-dev \
+           libsqlite3-dev \
+           libmysqlclient-dev \
+           default-mysql-client \
+           postgresql-client \
+           xvfb \
+           qtbase5-dev \
+           libqt5webkit5-dev \
+           libqtwebkit-dev \
+           xauth \
+           libcurl4-openssl-dev \
+           software-properties-common \
+           libffi-dev \
+           libgdbm5 \
+           libgdbm-dev \
+           libdb-dev \
+           lsof \
+           vim
+
+# Ruby
+ENV RUBY_VER 2.4.0
+ENV BUNDLER_VER 1.13.7
+RUN rm -rf ~/.rbenv
+RUN git clone https://github.com/sstephenson/rbenv ~/.rbenv
+RUN git clone https://github.com/sstephenson/ruby-build.git ~/.rbenv/plugins/ruby-build
+RUN ~/.rbenv/plugins/ruby-build/install.sh
+RUN echo 'export PATH="/$HOME/.rbenv/bin:$PATH"' >> ~/.bash_profile
+RUN echo 'eval "$(rbenv init -)"' >> ~/.bash_profile
+RUN . ~/.bash_profile && \
+         rbenv install $RUBY_VER  && \
+         rbenv global $RUBY_VER
+ENV PATH ~/.rbenv/shims:$PATH
+RUN ~/.rbenv/shims/gem install bundler:$BUNDLER_VER
+
+# Node
+ENV NODE_VER 16
+RUN curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.37.2/install.sh | bash
+RUN . $HOME/.nvm/nvm.sh && \
+    nvm install $NODE_VER && \
+    nvm use $NODE_VER && \
+    node -v && npm -v && \
+    npm i -g yarn
+RUN apt install -y nodejs
+
+# Workaround for Ruby
+RUN apt-get install -y libmysqlclient-dev
+RUN ~/.rbenv/shims/gem install mysql2 -v '0.4.5' --source 'https://rubygems.org/'
+RUN apt-get install -y libssl1.0-dev
+RUN ~/.rbenv/shims/gem install puma -v '3.6.0' --source 'https://rubygems.org/'
+
+# Bundle install
+WORKDIR /srv
+COPY Gemfile /srv/Gemfile
+COPY Gemfile.lock /srv/Gemfile.lock
+RUN ~/.rbenv/shims/bundle install
+
+SHELL ["/bin/bash", "-c"]
\ No newline at end of file
diff --git a/README.md b/README.md
index 20b3b14..8067995 100644
--- a/README.md
+++ b/README.md
@@ -42,16 +42,12 @@ Baukis 改
    1. [検索フォーム](#検索フォーム)

 ## アプリケーション環境構築
-### Vagarntのセットアップ
-```
-vagrant up
-vagrant ssh
-```

 ### Dockerのセットアップ
 ```
-cd /vagrant/
-docker-compose build
+docker build -t baukis-kai -f Dockerfile-base .
+docker compose build
+docker compose up -d
 ```

 ### 追加Gemセットアップ
diff --git a/docker-compose.yml b/docker-compose.yml
index f15c0d7..1c4c872 100644
--- a/docker-compose.yml
+++ b/docker-compose.yml
@@ -1,5 +1,18 @@
 version: '2'
 services:
+  app:
+    build:
+      context: .
+    depends_on:
+      - db
+    environment:
+      MYSQL_HOST: db
+      MYSQL_PORT: 3306
+      MYSQL_USER: user
+      MYSQL_PASSWORD: pass
+      MYSQL_DATABASE: app_development
+    ports:
+      - "3000:3000"
   db:
     image: mysql:5.7
     environment:
@@ -10,33 +23,11 @@ services:
       - 3306:3306
     volumes:
       - mysql-db:/var/lib/mysql
-  web:
-    build: .
-    environment:
-      - RAILS_ENV=production
-      - RAILS_SERVE_STATIC_FILES=public
-      - SECRET_KEY_BASE=8ea360b9c9f1fd8686e20bcf0e02ddcbcd78ad5984559739e04f343d79e44d3cecb09a2b930d0c78bfc5778026b7905a414222f43dd24db86fc076e43e4c35fa
-      - DATABASE_URL=db
-    command: bundle exec rails s -p 3000 -b '0.0.0.0'
-    volumes:
-      - .:/myapp
-    ports:
-      - "3000:3000"
-    depends_on:
-      - db
-  proxy:
-    image: nginx:1.11
-    ports:
-      - "80:80"
-    depends_on:
-      - web
-    volumes:
-      - ./nginx_default.conf:/etc/nginx/conf.d/default.conf

   console:
     build:
       context: .
-      dockerfile: ./Dockerfile
+      dockerfile: Dockerfile-base
     environment:
       MYSQL_HOST: db
       MYSQL_PORT: 3306

コミット: 826251b

メッセージ

build:ファイルの整理

変更されたファイル

  • M .gitignore
  • D .idea/.generators
  • D .idea/.rakeTasks
  • D .idea/misc.xml
  • D .idea/modules.xml
  • D .idea/vagrant.xml
  • D .idea/vcs.xml
  • D Jenkinsfile
  • M README.md
  • D Vagrantfile
  • D circle.yml

変更内容

commit 826251ba59558977a2b089cb862f1c21b7d57cbe
Author: k2works <kakimomokuri@gmail.com>
Date:   Thu Apr 24 16:35:17 2025 +0900

    build:ファイルの整理

diff --git a/.gitignore b/.gitignore
index 05ce7cf..40045d9 100644
--- a/.gitignore
+++ b/.gitignore
@@ -106,4 +106,6 @@ bower.json
 # Ignore Byebug command history file.
 .byebug_history

-public/assets/
\ No newline at end of file
+public/assets/
+.idea/
+*.iml
\ No newline at end of file
diff --git a/.idea/.generators b/.idea/.generators
deleted file mode 100644
index a68204b..0000000
--- a/.idea/.generators
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<Settings><!--This file was automatically generated by Ruby plugin.
-You are allowed to: 
-1. Reorder generators
-2. Remove generators
-3. Add installed generators
-To add new installed generators automatically delete this file and reload the project.
---><GeneratorsGroup><Generator name="annotate:install" /><Generator name="assets" /><Generator name="channel" /><Generator name="coffee:assets" /><Generator name="controller" /><Generator name="erd:install" /><Generator name="factory_girl:model" /><Generator name="generator" /><Generator name="helper" /><Generator name="i18n" /><Generator name="i18n_locale" /><Generator name="i18n_translation" /><Generator name="integration_test" /><Generator name="jbuilder" /><Generator name="job" /><Generator name="js:assets" /><Generator name="kaminari:config" /><Generator name="kaminari:views" /><Generator name="mailer" /><Generator name="migration" /><Generator name="model" /><Generator name="rack:dev-mark:install" /><Generator name="resource" /><Generator name="rspec:controller" /><Generator name="rspec:feature" /><Generator name="rspec:helper" /><Generator name="rspec:install" /><Generator name="rspec:integration" /><Generator name="rspec:job" /><Generator name="rspec:mailer" /><Generator name="rspec:model" /><Generator name="rspec:observer" /><Generator name="rspec:request" /><Generator name="rspec:scaffold" /><Generator name="rspec:view" /><Generator name="scaffold" /><Generator name="scaffold_controller" /><Generator name="task" /><Generator name="test_unit:controller" /><Generator name="test_unit:generator" /><Generator name="test_unit:helper" /><Generator name="test_unit:integration" /><Generator name="test_unit:job" /><Generator name="test_unit:mailer" /><Generator name="test_unit:model" /><Generator name="test_unit:plugin" /><Generator name="test_unit:scaffold" /></GeneratorsGroup></Settings>
diff --git a/.idea/.rakeTasks b/.idea/.rakeTasks
deleted file mode 100644
index 435f846..0000000
--- a/.idea/.rakeTasks
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<Settings><!--This file was automatically generated by Ruby plugin.
-You are allowed to: 
-1. Remove rake task
-2. Add existing rake tasks
-To add existing rake tasks automatically delete this file and reload the project.
---><RakeGroup description="" fullCmd="" taksId="rake"><RakeTask description="List versions of all Rails frameworks and the environment" fullCmd="about" taksId="about" /><RakeTask description="Add schema information (as comments) to model and fixture files" fullCmd="annotate_models" taksId="annotate_models" /><RakeTask description="Adds the route map to routes.rb" fullCmd="annotate_routes" taksId="annotate_routes" /><RakeGroup description="" fullCmd="" taksId="app"><RakeTask description="Applies the template supplied by LOCATION=(/path/to/template) or URL" fullCmd="app:template" taksId="template" /><RakeTask description="Update configs and some other initially generated files (or use just update:configs or update:bin)" fullCmd="app:update" taksId="update" /><RakeGroup description="" fullCmd="" taksId="templates"><RakeTask description="" fullCmd="app:templates:copy" taksId="copy" /></RakeGroup><RakeGroup description="" fullCmd="" taksId="update"><RakeTask description="" fullCmd="app:update:bin" taksId="bin" /><RakeTask description="" fullCmd="app:update:configs" taksId="configs" /><RakeTask description="" fullCmd="app:update:upgrade_guide_info" taksId="upgrade_guide_info" /></RakeGroup></RakeGroup><RakeGroup description="" fullCmd="" taksId="assets"><RakeTask description="Remove old compiled assets" fullCmd="assets:clean[keep]" taksId="clean[keep]" /><RakeTask description="Remove compiled assets" fullCmd="assets:clobber" taksId="clobber" /><RakeTask description="Load asset compile environment" fullCmd="assets:environment" taksId="environment" /><RakeTask description="Compile all the assets named in config.assets.precompile" fullCmd="assets:precompile" taksId="precompile" /><RakeTask description="" fullCmd="assets:clean" taksId="clean" /></RakeGroup><RakeGroup description="" fullCmd="" taksId="cache_digests"><RakeTask description="Lookup first-level dependencies for TEMPLATE (like messages/show or comments/_comment.html)" fullCmd="cache_digests:dependencies" taksId="dependencies" /><RakeTask description="Lookup nested dependencies for TEMPLATE (like messages/show or comments/_comment.html)" fullCmd="cache_digests:nested_dependencies" taksId="nested_dependencies" /></RakeGroup><RakeGroup description="" fullCmd="" taksId="db"><RakeTask description="Creates the database from DATABASE_URL or config/database.yml for the current RAILS_ENV (use db:create:all to create all databases in the config). Without RAILS_ENV or when RAILS_ENV is development, it defaults to creating the development and test databases" fullCmd="db:create" taksId="create" /><RakeTask description="Drops the database from DATABASE_URL or config/database.yml for the current RAILS_ENV (use db:drop:all to drop all databases in the config). Without RAILS_ENV or when RAILS_ENV is development, it defaults to dropping the development and test databases" fullCmd="db:drop" taksId="drop" /><RakeGroup description="" fullCmd="" taksId="environment"><RakeTask description="Set the environment value for the database" fullCmd="db:environment:set" taksId="set" /></RakeGroup><RakeGroup description="" fullCmd="" taksId="fixtures"><RakeTask description="Loads fixtures into the current environment's database" fullCmd="db:fixtures:load" taksId="load" /><RakeTask description="" fullCmd="db:fixtures:identify" taksId="identify" /></RakeGroup><RakeTask description="Migrate the database (options: VERSION=x, VERBOSE=false, SCOPE=blog)" fullCmd="db:migrate" taksId="migrate" /><RakeGroup description="" fullCmd="" taksId="migrate"><RakeTask description="Display status of migrations" fullCmd="db:migrate:status" taksId="status" /><RakeTask description="" fullCmd="db:migrate:change" taksId="change" /><RakeTask description="" fullCmd="db:migrate:down" taksId="down" /><RakeTask description="" fullCmd="db:migrate:redo" taksId="redo" /><RakeTask description="" fullCmd="db:migrate:reset" taksId="reset" /><RakeTask description="" fullCmd="db:migrate:up" taksId="up" /></RakeGroup><RakeTask description="Rolls the schema back to the previous version (specify steps w/ STEP=n)" fullCmd="db:rollback" taksId="rollback" /><RakeGroup description="" fullCmd="" taksId="schema"><RakeGroup description="" fullCmd="" taksId="cache"><RakeTask description="Clears a db/schema_cache.dump file" fullCmd="db:schema:cache:clear" taksId="clear" /><RakeTask description="Creates a db/schema_cache.dump file" fullCmd="db:schema:cache:dump" taksId="dump" /></RakeGroup><RakeTask description="Creates a db/schema.rb file that is portable against any DB supported by Active Record" fullCmd="db:schema:dump" taksId="dump" /><RakeTask description="Loads a schema.rb file into the database" fullCmd="db:schema:load" taksId="load" /><RakeTask description="" fullCmd="db:schema:load_if_ruby" taksId="load_if_ruby" /></RakeGroup><RakeTask description="Loads the seed data from db/seeds.rb" fullCmd="db:seed" taksId="seed" /><RakeTask description="Creates the database, loads the schema, and initializes with the seed data (use db:reset to also drop the database first)" fullCmd="db:setup" taksId="setup" /><RakeGroup description="" fullCmd="" taksId="structure"><RakeTask description="Dumps the database structure to db/structure.sql" fullCmd="db:structure:dump" taksId="dump" /><RakeTask description="Recreates the databases from the structure.sql file" fullCmd="db:structure:load" taksId="load" /><RakeTask description="" fullCmd="db:structure:load_if_sql" taksId="load_if_sql" /></RakeGroup><RakeTask description="Retrieves the current schema version number" fullCmd="db:version" taksId="version" /><RakeTask description="" fullCmd="db:_dump" taksId="_dump" /><RakeTask description="" fullCmd="db:abort_if_pending_migrations" taksId="abort_if_pending_migrations" /><RakeTask description="" fullCmd="db:charset" taksId="charset" /><RakeTask description="" fullCmd="db:check_protected_environments" taksId="check_protected_environments" /><RakeTask description="" fullCmd="db:collation" taksId="collation" /><RakeGroup description="" fullCmd="" taksId="create"><RakeTask description="" fullCmd="db:create:all" taksId="all" /></RakeGroup><RakeGroup description="" fullCmd="" taksId="drop"><RakeTask description="" fullCmd="db:drop:_unsafe" taksId="_unsafe" /><RakeTask description="" fullCmd="db:drop:all" taksId="all" /></RakeGroup><RakeTask description="" fullCmd="db:forward" taksId="forward" /><RakeTask description="" fullCmd="db:load_config" taksId="load_config" /><RakeTask description="" fullCmd="db:purge" taksId="purge" /><RakeGroup description="" fullCmd="" taksId="purge"><RakeTask description="" fullCmd="db:purge:all" taksId="all" /></RakeGroup><RakeTask description="" fullCmd="db:reset" taksId="reset" /><RakeGroup description="" fullCmd="" taksId="test"><RakeTask description="" fullCmd="db:test:clone" taksId="clone" /><RakeTask description="" fullCmd="db:test:clone_schema" taksId="clone_schema" /><RakeTask description="" fullCmd="db:test:clone_structure" taksId="clone_structure" /><RakeTask description="" fullCmd="db:test:deprecated" taksId="deprecated" /><RakeTask description="" fullCmd="db:test:load" taksId="load" /><RakeTask description="" fullCmd="db:test:load_schema" taksId="load_schema" /><RakeTask description="" fullCmd="db:test:load_structure" taksId="load_structure" /><RakeTask description="" fullCmd="db:test:prepare" taksId="prepare" /><RakeTask description="" fullCmd="db:test:purge" taksId="purge" /></RakeGroup></RakeGroup><RakeGroup description="" fullCmd="" taksId="dev"><RakeTask description="Toggle development mode caching on/off" fullCmd="dev:cache" taksId="cache" /></RakeGroup><RakeTask description="Generate an Entity-Relationship Diagram based on your models" fullCmd="erd" taksId="erd" /><RakeTask description="Print out all defined initializers in the order they are invoked by Rails" fullCmd="initializers" taksId="initializers" /><RakeGroup description="" fullCmd="" taksId="log"><RakeTask description="Truncates all/specified *.log files in log/ to zero bytes (specify which logs with LOGS=test,development)" fullCmd="log:clear" taksId="clear" /></RakeGroup><RakeTask description="Prints out your Rack middleware stack" fullCmd="middleware" taksId="middleware" /><RakeTask description="Enumerate all annotations (use notes:optimize, :fixme, :todo for focus)" fullCmd="notes" taksId="notes" /><RakeGroup description="" fullCmd="" taksId="notes"><RakeTask description="Enumerate a custom annotation, specify with ANNOTATION=CUSTOM" fullCmd="notes:custom" taksId="custom" /><RakeTask description="" fullCmd="notes:fixme" taksId="fixme" /><RakeTask description="" fullCmd="notes:optimize" taksId="optimize" /><RakeTask description="" fullCmd="notes:todo" taksId="todo" /></RakeGroup><RakeTask description="Remove schema information from model and fixture files" fullCmd="remove_annotation" taksId="remove_annotation" /><RakeTask description="Removes the route map from routes.rb" fullCmd="remove_routes" taksId="remove_routes" /><RakeTask description="Restart app by touching tmp/restart.txt" fullCmd="restart" taksId="restart" /><RakeTask description="Print out all defined routes in match order, with names" fullCmd="routes" taksId="routes" /><RakeTask description="Generate a cryptographically secure secret key (this is typically used to generate a secret for cookie sessions)" fullCmd="secret" taksId="secret" /><RakeTask description="Run all specs in spec directory (excluding plugin specs)" fullCmd="spec" taksId="spec" /><RakeGroup description="" fullCmd="" taksId="spec"><RakeTask description="Run the code examples in spec/controllers" fullCmd="spec:controllers" taksId="controllers" /><RakeTask description="Run the code examples in spec/features" fullCmd="spec:features" taksId="features" /><RakeTask description="Run the code examples in spec/models" fullCmd="spec:models" taksId="models" /><RakeTask description="Run the code examples in spec/routing" fullCmd="spec:routing" taksId="routing" /><RakeTask description="Run the code examples in spec/services" fullCmd="spec:services" taksId="services" /><RakeTask description="" fullCmd="spec:prepare" taksId="prepare" /><RakeTask description="" fullCmd="spec:statsetup" taksId="statsetup" /></RakeGroup><RakeTask description="Report code statistics (KLOCs, etc) from the application or engine" fullCmd="stats" taksId="stats" /><RakeTask description="Runs all tests in test folder" fullCmd="test" taksId="test" /><RakeGroup description="" fullCmd="" taksId="test"><RakeTask description="Run tests quickly, but also reset db" fullCmd="test:db" taksId="db" /><RakeTask description="" fullCmd="test:controllers" taksId="controllers" /><RakeTask description="" fullCmd="test:functionals" taksId="functionals" /><RakeTask description="" fullCmd="test:generators" taksId="generators" /><RakeTask description="" fullCmd="test:helpers" taksId="helpers" /><RakeTask description="" fullCmd="test:integration" taksId="integration" /><RakeTask description="" fullCmd="test:jobs" taksId="jobs" /><RakeTask description="" fullCmd="test:mailers" taksId="mailers" /><RakeTask description="" fullCmd="test:models" taksId="models" /><RakeTask description="" fullCmd="test:prepare" taksId="prepare" /><RakeTask description="" fullCmd="test:run" taksId="run" /><RakeTask description="" fullCmd="test:units" taksId="units" /></RakeGroup><RakeGroup description="" fullCmd="" taksId="time"><RakeTask description="List all time zones, list by two-letter country code (`rails time:zones[US]`), or list by UTC offset (`rails time:zones[-8]`)" fullCmd="time:zones[country_or_offset]" taksId="zones[country_or_offset]" /><RakeTask description="" fullCmd="time:zones" taksId="zones" /><RakeGroup description="" fullCmd="" taksId="zones"><RakeTask description="" fullCmd="time:zones:all" taksId="all" /><RakeTask description="" fullCmd="time:zones:local" taksId="local" /><RakeTask description="" fullCmd="time:zones:us" taksId="us" /></RakeGroup></RakeGroup><RakeGroup description="" fullCmd="" taksId="tmp"><RakeTask description="Clear cache and socket files from tmp/ (narrow w/ tmp:cache:clear, tmp:sockets:clear)" fullCmd="tmp:clear" taksId="clear" /><RakeTask description="Creates tmp directories for cache, sockets, and pids" fullCmd="tmp:create" taksId="create" /><RakeGroup description="" fullCmd="" taksId="cache"><RakeTask description="" fullCmd="tmp:cache:clear" taksId="clear" /></RakeGroup><RakeGroup description="" fullCmd="" taksId="pids"><RakeTask description="" fullCmd="tmp:pids:clear" taksId="clear" /></RakeGroup><RakeGroup description="" fullCmd="" taksId="sockets"><RakeTask description="" fullCmd="tmp:sockets:clear" taksId="clear" /></RakeGroup></RakeGroup><RakeTask description="" fullCmd="default" taksId="default" /><RakeTask description="" fullCmd="environment" taksId="environment" /><RakeGroup description="" fullCmd="" taksId="erd"><RakeTask description="" fullCmd="erd:generate" taksId="generate" /><RakeTask description="" fullCmd="erd:load_models" taksId="load_models" /><RakeTask description="" fullCmd="erd:options" taksId="options" /></RakeGroup><RakeGroup description="" fullCmd="" taksId="rails"><RakeTask description="" fullCmd="rails:template" taksId="template" /><RakeGroup description="" fullCmd="" taksId="templates"><RakeTask description="" fullCmd="rails:templates:copy" taksId="copy" /></RakeGroup><RakeTask description="" fullCmd="rails:update" taksId="update" /><RakeGroup description="" fullCmd="" taksId="update"><RakeTask description="" fullCmd="rails:update:bin" taksId="bin" /><RakeTask description="" fullCmd="rails:update:configs" taksId="configs" /></RakeGroup></RakeGroup><RakeGroup description="" fullCmd="" taksId="railties"><RakeGroup description="" fullCmd="" taksId="install"><RakeTask description="" fullCmd="railties:install:migrations" taksId="migrations" /></RakeGroup></RakeGroup><RakeTask description="" fullCmd="set_annotation_options" taksId="set_annotation_options" /><RakeTask description="" fullCmd="tmp" taksId="tmp" /><RakeTask description="" fullCmd="tmp/cache" taksId="tmp/cache" /><RakeTask description="" fullCmd="tmp/cache/assets" taksId="tmp/cache/assets" /><RakeTask description="" fullCmd="tmp/pids" taksId="tmp/pids" /><RakeTask description="" fullCmd="tmp/sockets" taksId="tmp/sockets" /></RakeGroup></Settings>
diff --git a/.idea/misc.xml b/.idea/misc.xml
deleted file mode 100644
index 5e26784..0000000
--- a/.idea/misc.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project version="4">
-  <component name="ProjectRootManager" version="2" languageLevel="JDK_1_3" default="false" project-jdk-name="rbenv: 2.4.0" project-jdk-type="RUBY_SDK">
-    <output url="file://$PROJECT_DIR$/out" />
-  </component>
-</project>
\ No newline at end of file
diff --git a/.idea/modules.xml b/.idea/modules.xml
deleted file mode 100644
index 1f69da7..0000000
--- a/.idea/modules.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project version="4">
-  <component name="ProjectModuleManager">
-    <modules>
-      <module fileurl="file://$PROJECT_DIR$/baukis-kai.iml" filepath="$PROJECT_DIR$/baukis-kai.iml" />
-    </modules>
-  </component>
-</project>
\ No newline at end of file
diff --git a/.idea/vagrant.xml b/.idea/vagrant.xml
deleted file mode 100644
index c6e2d31..0000000
--- a/.idea/vagrant.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project version="4">
-  <component name="VagrantProjectSettings">
-    <option name="instanceFolder" value="$PROJECT_DIR$" />
-  </component>
-</project>
\ No newline at end of file
diff --git a/.idea/vcs.xml b/.idea/vcs.xml
deleted file mode 100644
index 35eb1dd..0000000
--- a/.idea/vcs.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project version="4">
-  <component name="VcsDirectoryMappings">
-    <mapping directory="" vcs="Git" />
-  </component>
-</project>
\ No newline at end of file
diff --git a/Jenkinsfile b/Jenkinsfile
deleted file mode 100644
index 098e206..0000000
--- a/Jenkinsfile
+++ /dev/null
@@ -1,24 +0,0 @@
-node('master') {
-
-  stage 'Checkout'
-  git url: 'https://github.com/k2works/baukis-kai.git'
-
-  stage 'Prepare'
-  env.PATH = '/usr/local/bin:$HOME/.rbenv/shims:$HOME/.rbenv/bin:$PATH'
-  sh 'eval "$(rbenv init -)"'
-  sh 'rbenv local 2.4.0'
-
-  stage 'Prepare test'
-  sh "bundle install"
-  sh "bundle exec rake db:migrate"
-  sh "bundle exec rake db:test:prepare"
-
-  stage "Unit test"
-  sh "bundle exec rspec spec/controllers/*_spec.rb"
-  sh "bundle exec rspec spec/models/*_spec.rb"
-  sh "bundle exec rspec spec/routing/*_spec.rb"
-  sh "bundle exec rspec spec/services/*_spec.rb"
-
-  stage "Integration test"
-  sh "bundle exec rspec spec/features/*_spec.rb"
-}
diff --git a/README.md b/README.md
index 14a6731..20b3b14 100644
--- a/README.md
+++ b/README.md
@@ -10,7 +10,6 @@ Baukis 改
 |:---------------|:-------------|:------------|
 | ruby           |2.4.0    |             |
 | rails          |5.0.1    |             |
-| vagrant        |1.8.7    |             |
 | docker         |1.12.5    |             |
 | docker-compose |1.8.0    |             |

diff --git a/Vagrantfile b/Vagrantfile
deleted file mode 100644
index b27838b..0000000
--- a/Vagrantfile
+++ /dev/null
@@ -1,27 +0,0 @@
-# -*- mode: ruby -*-
-# vi: set ft=ruby :
-
-Vagrant.configure("2") do |config|
-  config.vm.box = "hiroshima-arc/manhattan"
-  config.vm.box_version = "1.0.0"
-
-  config.vm.network :forwarded_port, guest:80, host:8888, id:"nginx"
-  config.vm.network :forwarded_port, guest:3000, host:3000, id:"rails"
-  config.vm.network :forwarded_port, guest:3306, host:3306, id:"mysql"
-  config.vm.network :forwarded_port, guest:5432, host:5432, id:"postgresql"
-  config.vm.network :forwarded_port, guest:6379, host:6379, id:"redis"
-  config.vm.network :forwarded_port, guest:27017, host:27017, id:"mongodb"
-  config.vm.network :forwarded_port, guest:8080, host:8080, id:"jenkins"
-  config.vm.network :private_network, ip:"127.0.0.1"
-
-  config.vm.synced_folder ".", "/vagrant", mount_options: ['dmode=777','fmode=777']
-
-  config.vm.provider "virtualbox" do |vb|
-    vb.gui = false
-
-    # Use VBoxManage to customize the VM. For example to change memory:
-    vb.customize ["modifyvm", :id, "--memory", "4096"]
-    vb.customize ["modifyvm", :id, "--vram", "128"]
-    vb.customize ["modifyvm", :id, "--accelerate3d", "on"]
-  end
-end
\ No newline at end of file
diff --git a/circle.yml b/circle.yml
deleted file mode 100644
index 150a280..0000000
--- a/circle.yml
+++ /dev/null
@@ -1,5 +0,0 @@
-deployment:
-  staging:
-    branch: master
-    heroku:
-      appname: baukis-kai
\ No newline at end of file

コミット: 835dfd2

メッセージ

build:devcontainerセットアップ

変更されたファイル

  • A .devcontainer/devcontainer.json

変更内容

commit 835dfd2f8375a81df83e71c3b6b91ffbd65b6448
Author: k2works <kakimomokuri@gmail.com>
Date:   Thu Apr 24 16:29:16 2025 +0900

    build:devcontainerセットアップ

diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json
new file mode 100644
index 0000000..52f7251
--- /dev/null
+++ b/.devcontainer/devcontainer.json
@@ -0,0 +1,31 @@
+// For format details, see https://aka.ms/devcontainer.json. For config options, see the
+// README at: https://github.com/devcontainers/templates/tree/main/src/docker-in-docker
+{
+   "name": "Docker in Docker",
+   // Or use a Dockerfile or Docker Compose file. More info: https://containers.dev/guide/dockerfile
+   "image": "baukis-kai",
+
+   "features": {
+       "ghcr.io/devcontainers/features/docker-in-docker:2": {
+           "version": "latest",
+           "enableNonRootDocker": "true",
+           "moby": "true"
+       }
+   },
+
+   // Use 'forwardPorts' to make a list of ports inside the container available locally.
+   // "forwardPorts": [],
+
+   // Use 'postCreateCommand' to run commands after the container is created.
+   // "postCreateCommand": "docker --version",
+
+   // Configure tool-specific properties.
+  "customizations" : {
+    "jetbrains" : {
+      "backend" : "IntelliJ"
+    }
+  },
+
+   // Uncomment to connect as root instead. More info: https://aka.ms/dev-containers-non-root.
+   // "remoteUser": "root"
+}

コミット: 5517d0b

メッセージ

build:レストア

変更されたファイル

  • M Dockerfile
  • M Gemfile
  • M Gemfile.lock
  • M config/database.yml
  • M config/environments/development.rb
  • M docker-compose.yml

変更内容

commit 5517d0b74d777666bfef08aad9a3a87b14bf6c0e
Author: k2works <kakimomokuri@gmail.com>
Date:   Thu Apr 24 16:00:48 2025 +0900

    build:レストア

diff --git a/Dockerfile b/Dockerfile
index de3b64d..91daa36 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -1,9 +1,95 @@
-FROM ruby:2.4
-
-RUN apt-get update -qq && apt-get install -y build-essential libpq-dev nodejs
-RUN mkdir /myapp
-WORKDIR /myapp
-ADD Gemfile /myapp/Gemfile
-ADD Gemfile.lock /myapp/Gemfile.lock
-RUN bundle install
-ADD . /myapp
\ No newline at end of file
+FROM ubuntu:18.04
+
+# Setup locale
+RUN \
+apt-get -yq update && \
+apt-get install -y language-pack-ja-base language-pack-ja
+RUN update-locale LANG=ja_JP.UTF-8 LANGUAGE=ja_JP:ja
+ENV LANG=ja_JP.UTF-8
+ENV LC_ALL=ja_JP.UTF-8
+ENV LC_CTYPE=ja_JP.UTF-8
+
+RUN apt-get update && \
+    apt-get install -y \
+           sudo \
+           build-essential \
+           zip \
+           unzip \
+           git \
+           curl \
+           wget \
+           git-core \
+           libssl-dev \
+           libqt4-dev \
+           libc6-dev \
+           automake \
+           libtool \
+           libyaml-dev \
+           zlib1g \
+           zlib1g-dev \
+           openssl \
+           libreadline-dev \
+           libxml2-dev \
+           libxslt1-dev \
+           libncurses5-dev \
+           pkg-config \
+           chrpath \
+           libfontconfig1-dev \
+           libxft-dev \
+           libpq-dev \
+           libsqlite3-dev \
+           libmysqlclient-dev \
+           default-mysql-client \
+           postgresql-client \
+           xvfb \
+           qtbase5-dev \
+           libqt5webkit5-dev \
+           libqtwebkit-dev \
+           xauth \
+           libcurl4-openssl-dev \
+           software-properties-common \
+           libffi-dev \
+           libgdbm5 \
+           libgdbm-dev \
+           libdb-dev \
+           lsof \
+           vim
+
+# Ruby
+ENV RUBY_VER 2.4.0
+ENV BUNDLER_VER 1.13.7
+RUN rm -rf ~/.rbenv
+RUN git clone https://github.com/sstephenson/rbenv ~/.rbenv
+RUN git clone https://github.com/sstephenson/ruby-build.git ~/.rbenv/plugins/ruby-build
+RUN ~/.rbenv/plugins/ruby-build/install.sh
+RUN echo 'export PATH="/$HOME/.rbenv/bin:$PATH"' >> ~/.bash_profile
+RUN echo 'eval "$(rbenv init -)"' >> ~/.bash_profile
+RUN . ~/.bash_profile && \
+         rbenv install $RUBY_VER  && \
+         rbenv global $RUBY_VER
+ENV PATH ~/.rbenv/shims:$PATH
+RUN ~/.rbenv/shims/gem install bundler:$BUNDLER_VER
+
+# Node
+ENV NODE_VER 16
+RUN curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.37.2/install.sh | bash
+RUN . $HOME/.nvm/nvm.sh && \
+    nvm install $NODE_VER && \
+    nvm use $NODE_VER && \
+    node -v && npm -v && \
+    npm i -g yarn
+RUN apt install -y nodejs
+
+# Workaround for Ruby
+RUN apt-get install -y libmysqlclient-dev
+RUN ~/.rbenv/shims/gem install mysql2 -v '0.4.5' --source 'https://rubygems.org/'
+RUN apt-get install -y libssl1.0-dev
+RUN ~/.rbenv/shims/gem install puma -v '3.6.0' --source 'https://rubygems.org/'
+
+# Bundle install
+WORKDIR /srv
+COPY Gemfile /srv/Gemfile
+COPY Gemfile.lock /srv/Gemfile.lock
+RUN ~/.rbenv/shims/bundle install
+
+SHELL ["/bin/bash", "-c"]
\ No newline at end of file
diff --git a/Gemfile b/Gemfile
index 7d8acb2..40c2377 100644
--- a/Gemfile
+++ b/Gemfile
@@ -79,7 +79,7 @@ group :test do
 end

 # Windows does not include zoneinfo files, so bundle the tzinfo-data gem
-gem 'tzinfo-data', platforms: [:mingw, :mswin, :x64_mingw, :jruby]
+gem 'tzinfo-data'

 gem 'font-awesome-rails'
 gem 'rails_12factor', group: :production
@@ -94,5 +94,4 @@ gem 'email_validator', '~> 1.6'
 gem 'jquery-ui-rails', '~> 5.0', '>= 5.0.5'
 gem 'momentjs-rails'
 gem 'bootstrap3-datetimepicker-rails'
-gem 'tag-it-rails'
-
+gem 'tag-it-rails'
\ No newline at end of file
diff --git a/Gemfile.lock b/Gemfile.lock
index ac11a7f..600d0fd 100644
--- a/Gemfile.lock
+++ b/Gemfile.lock
@@ -297,6 +297,8 @@ GEM
     turbolinks-source (5.0.0)
     tzinfo (1.2.2)
       thread_safe (~> 0.1)
+    tzinfo-data (1.2025.2)
+      tzinfo (>= 1.0.0)
     uglifier (3.0.4)
       execjs (>= 0.3.0, < 3)
     web-console (3.4.0)
diff --git a/config/database.yml b/config/database.yml
index 544640b..c44d192 100644
--- a/config/database.yml
+++ b/config/database.yml
@@ -16,7 +16,7 @@ default: &default
   pool: 5
   username: root
   password: password
-  host: 127.0.0.1
+  host: <%= ENV.fetch("MYSQL_HOST", "127.0.0.1") %>

 development:
   <<: *default
diff --git a/config/environments/development.rb b/config/environments/development.rb
index 63bc608..cfacff4 100644
--- a/config/environments/development.rb
+++ b/config/environments/development.rb
@@ -53,9 +53,9 @@ Rails.application.configure do
   config.file_watcher = ActiveSupport::EventedFileUpdateChecker

   config.baukis_kai = {
-      staff: { host: '0.0.0.0', path: 'staff' },
-      admin: { host: '0.0.0.0', path: 'admin' },
-      customer: { host: '0.0.0.0', path: '' },
+      staff: { host: '127.0.0.1', path: 'staff' },
+      admin: { host: '127.0.0.1', path: 'admin' },
+      customer: { host: '127.0.0.1', path: '' },
       restrict_ip_addresses: false
   }

diff --git a/docker-compose.yml b/docker-compose.yml
index 52da61d..f15c0d7 100644
--- a/docker-compose.yml
+++ b/docker-compose.yml
@@ -1,7 +1,15 @@
 version: '2'
 services:
   db:
-    image: mysql
+    image: mysql:5.7
+    environment:
+      MYSQL_ROOT_PASSWORD: password
+      MYSQL_USER: user
+      MYSQL_PASSWORD: pass
+    ports:
+      - 3306:3306
+    volumes:
+      - mysql-db:/var/lib/mysql
   web:
     build: .
     environment:
@@ -23,4 +31,24 @@ services:
     depends_on:
       - web
     volumes:
-      - ./nginx_default.conf:/etc/nginx/conf.d/default.conf
\ No newline at end of file
+      - ./nginx_default.conf:/etc/nginx/conf.d/default.conf
+
+  console:
+    build:
+      context: .
+      dockerfile: ./Dockerfile
+    environment:
+      MYSQL_HOST: db
+      MYSQL_PORT: 3306
+      MYSQL_USER: user
+      MYSQL_PASSWORD: pass
+      MYSQL_DATABASE: app_development
+    volumes:
+      - .:/srv
+    depends_on:
+      - db
+    stdin_open: true
+
+volumes:
+  mysql-db:
+    driver: local