6
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

未経験初心者がWEB家計簿を作ってみた【Rails / Docker / Heroku / CircleCI】

Last updated at Posted at 2021-12-21

初めに

こんにちは。
当記事は独学・未経験者がポートフォリオを兼ねてWEBアプリを作った、ご紹介させて頂きたいと思います。

昨今、未経験者が作成したポートフォリオ作成記事も多く存在するので、何番煎じかにはなってしまいますが、
この記事も同じ初学者の方の参考になればうれしく思います

概要

共同口座専用の家計簿アプリ「キョウドウコウザ」
 http://www.kyodokoza.com/

シンプルかつ見やすさにこだわった「共同口座(共用口座・共同財布)向けの家計簿アプリ」です。

img1.png img2.png


img3.png img4.png


家計簿アプリは世の中に多々ありますが、私個人に合うものがなかったため自作しました。また、同様の悩みを抱える方にお使いいただければと思っております。

工夫した点

ユーザー目線

  • スマホで利用することが多くなることを想定し、レスポンシブ化
  • 夫婦二人で使うことにこだわりたかったので、ユーザーの交流などはできない仕様に。また、登録作業をできうる限りセキュリティに配慮しつつ、シンプルにした
    (2人が会員登録→片方が他方の認証コードとアドレスを入力)
  • 入力のモチベーションアップのため、入力履歴の可視化
  • 入力作業の効率化のため、支出のテンプレート機能を導入。また、テンプレート化しても毎月の額が変動する(電気代や携帯料金等)ことを想定し、テンプレートとして登録された支出の額を修正し、選択した上で支出に反映。

開発者目線

  • CircleCIでCI/CDパイプラインの構築
  • dockerのコンテナをDB/Rails/webpack-dev-serverの3コンテナ構造とし、ホットリロードで開発効率化


アプリ作成の経緯

現状

夫婦で、共同口座形式で家計を運用してます。

月初に夫婦それぞれの口座から、共同口座に定額入金

→普段は個人口座/個人財布から出金

→月末にレシートや領収書を元に共同口座から清算

課題

  • 清算作業が月末に偏るため、ヌケモレ発生する。
  • 月末以外は、夫婦合わせて現状どれくらい支出があるかわからない

その後いくつかの家計簿アプリやエクセルを使いましたが、そこでも課題を感じました。


  • 写真の画像解析で自動入力→ 解析制度が悪い。
  • 料金がかかる
  • 作業が属人化する(夫婦2人のコスト意識向上につながらない)

目標

  • 随時支出の記録を行い、月末以外でも支出の合計を把握しやすいようにする
  • 夫婦2人で手軽に入力作業ができるようにする
  • 今後複雑な解析をしたいと考えた時のために、データをエクセルと統合できるようにする


実装機能

基本機能

  • ゲストログイン機能
  • 会員登録、家族登録、ログイン
  • メールを用いたパスワードリセット機能

記録機能

  • ユーザ・家族情報の編集、削除
  • カテゴリ登録、編集、削除
  • 目標額の設定、編集
  • 支出の登録、編集、削除
  • 収入の登録、編集、削除
  • 毎月支出されることが多い項目(固定費)の登録、編集、削除

集計・見える化機能 等

  • 支出・収入の一覧、ソート機能(カテゴリ毎、ユーザー毎)
  • 月毎の支出の集計(カテゴリ毎、ユーザー毎、対目標額)
  • 月毎の比較(支出、収入)
  • 残高表示
  • エクセル出力機能(単月出力・範囲指定による複数月出力)
  • メールでの毎週のレポート機能
  • 入力履歴の可視化
  • SNSシェアボタン


使用技術

フロントエンド

  • HTML/CSS
  • Javascript
  • Bootstrap 5.1.0
  • chart.js

バックエンド

  • Ruby 2.7.4
  • Ruby on Rails 6.1.4
  • RSpec

インフラ・開発環境

  • Docker/Docker-compode
  • CircleCI(CI/CD)
  • Heroku
  • SendGrid(mailer)

主要gem

  • chartkick(グラフの描画)
  • caxlsx(excel出力)
  • rspec(テスト)
  • whenever(バッチ処理 / 定期メール配信等)


ER図

ER.png

参考情報:私のこれまでの学習履歴

29歳・大学院卒です。
そんな私ですが「Webエンジニア」という職種を目指すきっかけがあり、2021年3月よりプログラミング学習を開始しました。
おおよそ以下のようなスケジュールで学習を進めていました。
離職しながらの学習だったのですが、家庭の事情で1日平均5時間程度のみ作業にあてていました。
期間は、ざっくり7か月です。

  • 2021/3: HTML/CSS(Progate)
  • 2021/4: Javascript(Progate)
  • 2021/5: 基本情報技術者試験
  • 2021/6~7: Ruby/rails(railsチュートリアル)
  • 2021/8: React基礎(Progate等)、Docker
  • 2021/9: 本アプリ作成

さいごに

結婚されてる方やカップルの方は、
ぜひキョウドウコウザを使っていただけると幸いです。
そして、本記事のコメントや私のツイッターあてにコメントいただけると嬉しいです。
忌憚なき意見を頂戴いただけると幸いです。

ツイッター↓
https://twitter.com/SHOMATSUDA3

6
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?