制作物紹  ▷  Java|冷蔵庫内食品管理システム

冷蔵庫内食品管理システム

主な使用技術:Java MySQL

目次:

|   制作のきっかけ  |   苦労したこと  |   試行錯誤  |   工夫  |   完成品について  |   今後について  |

Reason制作のきっかけ

まず先にJavaを使用した理由ですが、これは授業内でちょうどJavaを学習していた時期で、SEとして今後キャリアを作っていきたいと考えた時、Javaである程度のことができないと話にならない、オブジェクト指向を理解していないとだめだ、と思ったためです。言語を先に決めたのはあまり好ましい話ではありませんが、予めご承知おきください。
さて、なぜ冷蔵庫内食品管理システムを制作しようと思ったかということですが、単純明快、普段から面倒に思っていたからです。私は現在一人暮らしをしており、料理が趣味ということもあって完全自炊で生活を送っています。食材もかなり色々なものを買う方なので、例えばチャービルやローズマリーなんかはいつの間にか悪くなっている、といったことがよくありました。
しかし、気づいたら悪くなっているものなので、毎日気にかけている余裕もないですし(というか忘れてますし)、これをシステム化出来たら便利なんじゃないかなという想いから制作に至りました。

Difficulty苦労したこと

このシステムではjdbcドライバを用いてMySQLと接続しているのですが、その接続が成功するまでに多くの時間を要しました。最初はVisual Studio Codeを用いて開発を行っていて、そこから接続しようとしていました。
しかし、VSCodeの性質上、Javaプロジェクトとはまた異なること、そして調べてもあまりVSCodeから接続した事例がヒットしないことなどから、うまく接続ができないでいました。もちろん周囲の有識者に相談をしながら開発をしましたが、結局エラーの原因は見つからず、別の手段を試すことになりました。これが、Eclipseを使用することで、Javaプロジェクトを作り、そこで管理するというものです。
これによって問題はすんなりと解決しました。しかし、そもそもこれはローカル上で処理を行っていることに問題が起因しており、クラウドサーバー上でシステムを構築すれば、問題なく開発ができたのではないか、と今では思っています。

Trial and Error試行錯誤

この開発は、初めてしっかりと設計から始めたシステムでした。ユースケース駆動開発を用いて、シーケンス図やクラス図を作成し、Javaの特性をしっかりと活かせるように試行錯誤して制作しました。 実際に利用するユーザにとっては、設計段階で決める導線が一番影響するかと思います。しかしこれまでずっと個人開発だった私にとって、今後チーム開発をすることを想定し、無駄なコードを記述しないということを意識できたのは大きな成長につながりました。
設計することによって無駄な手戻りも防ぐことができましたし、効率的なシステムの開発につながったと考えております。

Ideas工夫

ただ食品の管理を行うのではUX的にあまりよくないと考えました。そこで例えば検索機能を付けたり、該当メニューが作れるかをシステム側で判断したりと、初歩的ながら少しでもユーザビリティを高めるように機能を付けました。
また、導線についても直感的に理解しやすいように考えて制作しました。ごちゃごちゃとしすぎてもわかりにくいですし、逆にあまりに深くまで潜らないと機能を利用できないようであれば、まとまっていても使用しにくくなってしまうはずです。丁度良い度合いの導線を考え、イメージで操作できるように工夫しました。

Finished完成品について

この完成品は、ローカル上のものであるために、ユーザからは利用できなくなっています。私の環境で初めて動くわけですが、私も他のシステムを制作していく中で競合してしまったので、一度利用できない状態にしています。ソースコードは残っているので、このコードを参照しながら、改善版のシステムにしていきたいと考えています。
[githubのリポジトリ]

Future今後について

今後は、以下の3つを中心にブラッシュアップしていこうと考えています。

  1. サーバーを構築し、インターネット上で誰でも利用できるように公開する(AWSを検討)
  2. データベースの最適化を行い、大規模リクエストに対して最適な処理が行えるようにする(場合によってNoSQLの利用も検討)
  3. 独立化していたメモ機能に肉付けを行い、他のメニューなどの機能と関連付ける等より利用しやすい機能へと発展させる

また、場合によってはJavaから別言語(Go等)やフレームワークの利用(Spring, Django等)に乗り換える可能性もあります。
これは、将来的に最も利用していきたい技術が自分の中で確立してから行うことになるだろうと考えています。