Java(gradle) × postgreSQL × Dockerで作成したTodoアプリを作成するまで〜技術選定理由・躓いた点まとめ〜
2年半前に作成したリポジトリに追加実装を行ったため、技術選定理由や躓いた点をまとめます。
実行環境は、ローカルのみです。
リポジトリ
使用技術やER図に関しては、Wikiにまとめています。
サービス構成図
今回追加した機能
追加機能
- GitHub・Googleアカウントを利用したログイン機能
- ユーザー名, パスワードでのユーザー登録 / ログイン機能
- Todoの更新 / 削除機能
環境整備
- Dockerでのローカル実行環境の構築
- Unit Testの追加
- Javadocの生成
- カバレッジレポートの生成
技術選定理由
フロントエンド
選定技術: JavaScript, Thymeleaf(テンプレートエンジン)
選定理由: Thymeleafの理解を深めたかったため。
バックエンド
選定技術: Java, Gradle(ビルドツール)
選定理由: 普段使っているMavenではなく、使用したことがないGradleでJavaアプリを作成してみたかったため。
DB
選定技術: PostgreSQL
選定理由: 普段はOracle Databaseを使用しているが、PostgreSQLを使用している環境を幾つか見かけたため使用してみたかったから。また、完全無料のオープンソースなため。
CI / CD
選定技術: GitHub Actions
選定理由:
GitHubで開発を行っているため使い勝手が良いと感じたから。また、使用したことがあり設定方法を把握しているため。
認証
選定技術: Spring Security 5
選定理由: Spring Bootを使用しているため、親和性が高いため。
便利系ツール
Wikiに情報をまとめる際に使用したツールを記載します。
ER図生成
dbdiagram.io
一番使いやすそうだったためこちらを使用しました。
Export機能でPostgreSQLのcreate文を貼り付けることで自動生成できるため、便利でした。
サービス構成図の作成
Miro
アイコンが探しやすく、以前使用したときに使いやすいと感じたため今回もこちらを使用しました。
画面遷移図の作成
Figma
使い慣れており、共有もしやすいため今回もこちらを使用しました。
つまずいた点
zennのScrapsに記載したのでリンクを貼っておきます。
- 【Java】spring securityを導入したらcssやjsが読み込めない
- 【Java】jarファイル起動時に認識されないページがある
- 【Gradle】生成したJavadocファイルの日本語が文字化けする
- 【Gradle】jacocoのカバレッジからlombokで生成されたコードを除外する
- 【git】異なるOSで作業する場合でも改行コードを統一する
- 【Makefile】macとwindowsでコマンドの中身を変える
今後追加したい機能
- ソート機能の実装
- ページング機能の実装
- 検索機能の実装
- タイトルや期限も編集可能に修正
実務ではどれも実装したことがあるので、自分でも一から実装して理解を深めたいです。
おわりに
2年半前に自分が書いたコードを、あれから一度も見ていなかったのでショックでした。。。
(完成度の低さに)
当時は、ほとんどまともな開発経験がなく、
実務で触っているコードを必死に読み解こうとしていた段階だったので、
自分で一から作ることの難しさを感じてました。結果、最低限の実装だけになりました。
今回は、新しいことを学ぶことはやっぱり難しいなと思いつつ、
自力で実装できたので成長を感じられて嬉しかったです。
Discussion