Go
Todoアプリ
Go3Day 10

ひとりかんばん的な ToDo 管理アプリ「hashira」を Go で作っているぞ

この記事は、Go3 Advent Calendar 2018 の 10 日目の記事です。
どうもいつも元気な @pankona です。

長い話を短くすると

  • 現在製作中な ToDo 管理アプリの紹介です。名前は「hashira」。Go で作ってます。

    • 見た目はこんな感じです。
    • 柱が 4 本立ってるっぽく見える気がするので hashira という名前にしました。 Screenshot from 2018-12-10 00-16-53.png
    • ターミナル上で動作する (TUI) ひとりかんばんライクなやつです。いまのところスタンドアロン (つまりインターネットなしで) 動作します。
    • リポジトリは https://github.com/pankona/hashira
      • (2018/12/25 追記) 最新リリースは v1.7.0 です。
      • バイナリリリースは Linux と Mac 向けのみ同梱。Windows 版は動作未確認なので含んでいません、ごめんなさい!
    • もし興味があったら試してみてね!動かし方は README.md を参照してください!
    • 2018/12 現在、鋭意製作中のため、粗が目立つかもしれませんがどうかひとつ生暖かい目で見守っていただければと…。

以下、hashira の紹介

hashira とは何か

ターミナル上で動作する (いわゆる TUI を持つ) ToDo 管理アプリです。
ひとりかんばんライクな UI (Backlog、ToDo、Doing、Done がある) で構成しています。

工夫している点

ToDo アプリ作った!ってそれだけだと単なる習作のようにも聞こえてしまうかもしれないのですが、
hashira に関してはいくらか工夫しているところがあります。

新しく追加した ToDo は一番上に追加される

個人的にこれが一番やりたかったみたいなところあるんですが、世の中の ToDo 管理アプリの多くは、"新しく追加した ToDo をリストの末尾に追加する" 動作をするような気がします。

ですが、それだとリストが長くなってくるに従って "新しく追加した ToDo がスクロールしないと見えなくなってしまう" 状況になりがちです。いや、私のようにそんなリストが長くなるような使い方をしている時点でちょっとあれなのかもしれないですけど、私のいままでの個人的な ToDo 管理アプリの使い方として、「靴を買う」とか「シャンプー買う」とか「子の上履きを洗う」などの細かーい ToDo まで入れていきたいという気持ちがあり、この手のまで入れていこうとすると、どうしても ToDo のリストが長くなりがちになっちゃうというのは何となく想像いただけるのではないかと思います。

ちなみに私がいままで使っていた ToDo 管理アプリのてっぺんには「英語を勉強する」という一生終わらなそうな ToDo が鎮座ましましており、消すに消せず、「いや英語勉強するし」と毎日ひとりごちてはそのまま放置してしまい、結果 ToDo リストのてっぺんという特等席を占拠し続けて数年経過する、みたいなことになってしまうこともあるわけです。

私の例はちょっと極端な例かもしれませんが、新しく追加した ToDo を一番上に追加していくことで、この「英語を勉強する」のような生存期間が長い腐った ToDo が勝手に押し出されて見えなくなっていくと共に、最近追加した活きの良い ToDo がよく見えるところに置かれるので嬉しい、のような効能があるように感じています。

TUI

我々ソフトウェアエンジニアの多くは、おそらくターミナルを操作することに多くの時間を割いていることだろうと想像します。なので、ToDo 管理もターミナルで完結できるとコンテキストスイッチの面で効率いいと思うわけです。ターミナルから離れたくないぞ。

想定する使い方

こんな使い方を想定しています。

  • 思いついた ToDo はすべて Backlog にいれる。
  • 今日や明日、明後日くらいまでにやるべき何となく優先度が高いものを ToDo に移す。終わったら順次 Done に送る。
  • 作業していて発生した割り込み作業や、ふと思いついた何かとかも適当に Backlog か ToDo に放り込んでいく。
    • 優先度の高い割り込み作業なんかも、新規に追加した ToDo は一番上に出てくるという動作のおかげで、ToDo として追加したけど見えなくなっちゃって忘れてしまった、なんてこともなりにくいはずだぞ!

これから先の hashira

  • いまは TUI のみですが、今後はとりあえず Android アプリ (ウィジェット) を作る予定。
    • 細かい ToDo を日常的に登録したいならばターミナルだけだとキビシイよね、PC 開けてないときもあるし…。
    • クラウド側での認証、ToDo のデバイス間での同期機能ををぼちぼち実装中。
  • Done に送った ToDo は消えないので、ひたすら長くなってしまう。Done に積まれた ToDo は一定期間がすぎたら自動的に見えなくするようにする予定。
  • ToDo が多くなりすぎたときに所望の ToDo を探せるよう、フィルターして表示する機能も入れる予定。

その後ウェブアプリ版も、等と思っていて青写真はまあまあ壮大なのですが、いかんせんひとりで業務の隙間時間に作っているようなやつなので、このままだと出来上がるまで 100 年かかりそうな開発ペースです…。

制限

正確には使っている TUI フレームワークライブラリである gocui の制限ですが、日本語を始めとしたマルチバイトキャラクターを正しく入力/表示できません。キビシイ。直し方は分かっているので、近いうちに直します…!
(2018/12/25 追記)
hashira v1.7.0 にて、日本語入力をサポートしました!

終わりに

完全に自分のために作っている ToDo 管理アプリの紹介でしたが、いかがでしたでしょうか。
まだまだ作りかけの状態ですが、おっ、なんか面白いな、みたく思っていただければ本望です。
もしも興味をもっていただけたならば、ちょいと使ってみていただけると嬉しいです。フィードバックいただけるならなお嬉しい...!

明日は @kumakuma さんの登板予定です!お見逃しなく!