目次

はじめに

こんにちは。今回、個人開発で作成したルーム型To-Doアプリ"Rodo"について紹介していきます。

RodoのURL: https://rodo.yashiro.org

開発経緯

一般的なTo-doアプリは、個人を識別するためにアカウントの作成・認証が必要になります。

サクッと複数人でタスク管理したい場合は、アカウントの作成・認証に時間がかかり不便と感じることが多くありました。

そこで、ルーム名を入力するだけで「早く」「簡単に」「誰でも」作って共有できるTo-Doアプリを開発しようと考えました。

チームメンバーや他の人にルーム名を共有し、チームでのプロジェクト管理や、複数人でのタスク管理にも有用です。


具体的な使い方

本アプリは、シンプルかつ迷わず使えるUIを意識して設計しています。

トップページとルーム作成

toppage

トップページにはルーム名を設けています。 ここで入力した文字列がそのまま「ルーム名」となり、新しいルームが作成されます。次回以降も同じ文字列を入力するだけで、すぐに同じルームにアクセスできる手軽な仕組みにしました。これにより面倒なユーザー登録なしで、すぐに使い始められます。

ルームページとタスクの追加

roompage

ルームに入ると、共有されているタスク一覧が表示されます。 「読書」や「運動」など毎日の作業を、直感的な操作でどんどん追加していくことができます。

タグとメモ入力

tags-memo

単にタスク一覧を表示するだけでなく、それぞれのタスクに「タグ」と「メモ」を追加できるようにしています。 これにより、タスクのジャンル分け(例:「日課」「家事」など)や、メモにちょっとした備忘録を残すことができます。

その他の活用事例

以下のように学校のグループワークをする際に作業分担を管理する時にも有用です。

活用事例


実装とアプリケーション基盤

バックエンドからフロントエンドまで、できるだけシンプルな構成を目指しました。

アプリケーション基盤は、dockerやkubernetesを活用して構築しています。

Dockerによるイメージ化

開発に使っているPC上で docker build を行い、アプリケーションのコンテナイメージを作成しています。イメージは、そのまま Docker Hub 上に push して保管しました。

Kubernetesでのデプロイ

用意したマニフェストファイル(DeploymentやServiceなど)をkubectl apply -f コマンドでデプロイしています。

詳しい実装とアプリケーション基盤に関しては別の記事で紹介する予定です。


開発で苦労した点と学び

今回の開発を通して苦労した点は「Goにおけるルーティング(URL)の設計」です。

開発の初期段階では、トップページを /topPage、ルーム画面を /roomPage といった具合に、画面の種別に依存したURL設計をしていました。しかし、実装を進めるうちに「もっと自然で直感的なURL構造にすべきだ」と考え、トップページを / に、ルーム画面を /room/(設定したルーム名) となるように設計を変更しました。これにより、URLを見ただけでどのルームにいるのかが分かる直感的なURL設計に改善できました。

さらにデータの扱い方も見直しました。。Go側で .Query().Get(“room_id”) を使用してリクエストからルーム名を取得し、それをキーにしてMySQLからタスクや情報を取得するように実装しています。URL設計からデータベースとの連携まで、初期段階から大きくコードを改善できたのは個人的にも良い経験になりました。


おわりに

気軽にルームを作成しタスクをみんなで管理できるTo-Doアプリ『rodo』について紹介しました。 シンプルな作りになっているので、ぜひ友人やご家族とルームを作って試してみてください!

RodoのURL: https://rodo.yashiro.org