みなさんさようなら,またひとつサービス作ったよ.
俺のためのタスク管理サービス.
めずらしく痛くないというのが一番の特徴じゃないですかね.
動機
ToDoリストをどこかで管理したい
これに尽きる.
だいたい普段生活していると,メモできなかったり,PCが近くにない状況に限って「あ,あれやらなきゃじゃん」というのを思い出したり,思いついたりする. これをいかにして管理していこうかと悩んで,いろいろ使ってはみたものの,どれも定着しなかった.
iPhoneにアプリを入れて,出先でも登録できるようにしても,なぜか定着してない.
なんで定着しないんだろう?
github管理下のToDoとそれ以外のものが並列に出てくるから
俺の脳内では,「あ,Whalebirdにあの機能積んでおこう」という思いつきも,「あ,仕事であれやっといたほうがいい」という思いつきも,「キッチンペーパー買ってこないと」という思いつきも,すべてが並列に出てくる. とくに何かについて考えていない時に,こういうものが順不同に適当に出てくる.
これらのToDoリストを,例えばtrelloで管理するとどうなるか.
Whalebirdのタスク
trelloにメモ -> githubにissue立てる -> PRが出てくる -> PRとissueがcloseされる -> trelloのタスクを自分でdoneにする
仕事のタスク
trelloにメモ -> redmineにissue立てる -> PRが出てくる -> PRとissueがcloseされる -> trelloのタスクを自分でdoneにする
キッチンペーパー
trelloにメモ -> 買い物に行く -> trelloのタスクを自分でdoneにする
フロー違いすぎ,手順多すぎ,めんどくさすぎ,無理.
一度,全部github管理にしようかとも思ったんですよ. でもキッチンペーパーの買い物とかが入る,家用のリポジトリ作るの?
コード0行だよ?
というわけで自作することにした.
使い方
いや,特に説明するようなことはないです.
githubログインにしておくと,project作るときに,githubのリポジトリ関連にするかどうかの選択ができるんですが,そのくらいじゃないですかね.
あとはtrelloと同じ感じで使えます.
リポジトリ関連にしておくと,ちょっと複雑なことができます.
コンセプト
俺のためにって書いたとおり,自分で使いたいものを作ったので,俺が便利だと思うように動くようにしてあります.
そして,個人のToDoを管理したかったので,チームで使うような用途は想定していません. なので,プロジェクトを他人と共有したり,チームを作成したり,何かをパブリックにしたりする機能はないです.
そのため,githubのissue管理として運営される類似のサービス(waffle.ioやzenhub)のように,チーム開発やスクラム向けの機能は提供しません.
ただ,githubのissue管理機能については,もっと便利にしていきたいので,
- issueやPull Requestのコメント関連機能
あたりは近いうちに実装するかもしれません.
開発
リポジトリはこちら.
サーバサイド
サーバは全部goで書きました. あまり機能的には多くないアプリですが,それなりに行数増えてしまった.
golangを書いていると,設計をいろいろ悩んだりするので,とてもよかった. 特にpackageという分離は,classみたいに手軽に使えないよねっていうのが,今の感想.
それと,エラーハンドリングについてはかなり悩まされました.
できれば,本当に不要なパターンを除いて,ほとんどのメソッドに error
型の戻り値をつけておいた方が良い.
フロントエンド
ほとんどReact Reduxです. ログインとか,そのへんだけはjs使わなかったので,サーバサイドでhtmlレンダリングしている.
SPAと決めて,覚悟しちゃうとこれはかなり使いやすいなー. Reactのサンプルでは,よくToDoリストのサンプルが載せられていて,「これ簡単にいけるかなー」って思ったけど,全然その後が大変だった. サンプルはみんな載せてくれるけど,本当に大変なのはあの先である.
あと,こういう形でjsレンダリングしたかったのは,のちのちアプリを作ることを考えて,サーバを全部APIにしておきたかったというのもある.
俺のために
あとはiOSアプリにすれば,俺の欲望は満たされることになる. しかし先は長そうだなこれ…….