目次
はじめに
こんにちは。今回、個人開発で作成したルーム型To-Doアプリ"Rodo"について紹介していきます。
RodoのURL: https://rodo.yashiro.org
開発経緯
一般的なTo-doアプリは、個人を識別するためにアカウントの作成・認証が必要になります。
サクッと複数人でタスク管理したい場合は、アカウントの作成・認証に時間がかかり不便と感じることが多くありました。
そこで、ルーム名を入力するだけで「早く」「簡単に」「誰でも」作って共有できるTo-Doアプリを開発しようと考えました。
チームメンバーや他の人にルーム名を共有し、チームでのプロジェクト管理や、複数人でのタスク管理にも有用です。
具体的な使い方
本アプリは、シンプルかつ迷わず使えるUIを意識して設計しています。
トップページとルーム作成

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

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

単にタスク一覧を表示するだけでなく、それぞれのタスクに「タグ」と「メモ」を追加できるようにしています。 これにより、タスクのジャンル分け(例:「日課」「家事」など)や、メモにちょっとした備忘録を残すことができます。
その他の活用事例
以下のように学校のグループワークをする際に作業分担を管理する時にも有用です。

実装とアプリケーション基盤
バックエンドからフロントエンドまで、できるだけシンプルな構成を目指しました。
アプリケーション基盤は、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