#個人開発でタスク管理ツールを作ってみた話 -VRChatエンジニア作業集会LTレポート-
詳細情報
集会名 | 個人開発集会 |
---|---|
日時 | 2024年01月18日 22:00 - 22:30 |
テーマ | 個人開発でタスク管理ツールを作った話 |
発表者 | 慕狼ゆに |
発表資料 |
発表のハイライト
- VRChatのエンジニア作業集会でのLTの内容
- タスク管理ツール「Yac」を個人開発した体験談
- 新技術への挑戦、設計やテストの難しさ、個人開発の楽しさを語る
VRChatエンジニアが個人開発したタスク管理ツールとは?
VRChatで開催されているエンジニア作業集会にて、フロントエンドエンジニアの「慕狼ゆに」さんによるLTが行われました。今回のテーマは「個人開発でタスク管理ツールを作った話」。日々の業務の中で生まれた課題感から開発に至ったという、シンプルなタスク管理ツール「Yac」について、開発の裏側や苦労した点などを詳しくお話いただきました。
タスク開始時間を正確に計測したい!という想いから生まれた「Yac」
慕狼ゆにさんは、普段からタスク管理ツール「Toggl」を使って作業時間の記録を取っていましたが、タスクの途中で別の作業を挟む場合に正確な時間が計測できないことに不便さを感じていました。例えば、コードレビューの指摘対応など、本来のタスクの一環として行う作業でも、Toggl上では別のタスクとして記録されてしまうため、後から見返した際に「このタスクには実際にはどれくらい時間がかかったのか」が分からなくなってしまうことがあったそうです。
そこで、タスクごとに開始時間を正確に計測できるツールを作ろうと思い立った慕狼ゆにさんは、個人開発でオリジナルのタスク管理ツール「Yac」の開発に着手しました。
新技術に果敢に挑戦!「Yac」で使われている技術スタック
「Yac」はWebアプリケーションとして開発されており、慕狼ゆにさんにとっては初挑戦となる技術も積極的に導入されています。
- フレームワーク:Next.js
- デザインシステム:Chakra UI
- ユニットテスト:Jest, Storybook
- データベース:IndexDB
- ホスティング:Vercel
普段の業務ではReactやMaterial UIを使用している慕狼ゆにさんですが、「Yac」の開発ではNext.jsやChakra UI、IndexDBなど、新たな技術に触れることで自身のスキルアップを目指しました。ドキュメントを読み込みながら手探りで開発を進める中で、それぞれの技術への理解を深めていったそうです。
アプリ名にもこだわりが!モチベーションアップに繋がる個人開発のススメ
「Yac」というアプリ名は、「Yak Shaving」という言葉に由来しています。Yak Shavingとは、本来の目的とは別に、そのために必要な作業が連鎖的に発生してしまうことを指します。タスク管理ツールで正確な作業時間を計測することで、このYak Shavingの状態に陥っていないかを可視化できるのではないかと考えた慕狼ゆにさんは、「Yak」から名前をとって「Yac」と名付けました。
慕狼ゆにさんは、アプリに名前を付けることで愛着が湧き、開発のモチベーション維持に繋がったと語っています。個人開発においても、アプリ名にこだわることの重要性を改めて実感したそうです。
設計やテストの難しさに直面…個人開発のリアルな課題
「Yac」の開発でつまづいた点として、慕狼ゆにさんは以下の2点を挙げました。
-
ページビジビリティAPIの存在
- ブラウザをバックグラウンドにすると経過時間がずれてしまう問題が発生
- ページビジビリティAPIの存在を知り、タスク開始時間を元に経過時間を計算する仕様に変更
-
コンポーネント設計とテスト
- ビューとロジックが密結合になってしまい、切り分け方に悩む
- 設計の不備により、テストコードの実装も難航
これらの課題に対して、慕狼ゆにさんは試行錯誤を重ねながら解決策を探っています。特に、コンポーネント設計については、ドメイン駆動設計(DDD)を学ぶことで、より良い設計を目指したいと考えているそうです。
まとめ:個人開発を通して得られた学びと今後の展望
慕狼ゆにさんは、今回の個人開発を通して、新しい技術への挑戦や設計・テストの難しさ、そして個人開発の楽しさを改めて実感したと語っています。
「Yac」は現在も開発中で、今後はコンポーネント設計の見直しやドメイン駆動設計の導入など、さらなる機能改善を予定しているとのことです。個人開発を通して得られた学びを活かし、より使いやすく、より高機能なタスク管理ツールを目指して開発を続けていくとのことです。
慕狼ゆにさんのLTから学ぶ、個人開発のススメ
今回のLTを通して、個人開発の面白さや難しさ、そしてそこから得られる学びの大きさを感じることができました。個人開発は、新しい技術を試したり、自身のスキルアップに繋げたりするための絶好の機会です。
もし、あなたが「こんなツールがあったらいいな」と考えているなら、ぜひ個人開発に挑戦してみてはいかがでしょうか?