Go の勉強で作っている Togoo の基礎機能が最低限揃ったので v0.1.0 としてリリースしてみた!(GitHub で Release を打っただけだけど)
期間的には約2週間ぐらいで,平日夜や休日などに時間を捻出しながらで進めていた.Go を勉強し始めて約1ヶ月ってこともあって,基本的なお作法は知らないし,回りに詳しい人もいないしで,ネットの情報を辿りながら試行錯誤していたように思う.そんな僕には gofmt
と golint
という強力なアドバイザーがいたので,何度も助けてもらった.
今もまだ「Go を書ける」と言えるレベルには全然達していないと思うので,引き続き勉強を続けていきたいし,OSS を読んだりしてベストプラクティスを取り込んで行きたいと思っている.
Togoo とは
Togoo は TODO を管理する CLI なんだけど,ほとんど機能はなくて,シンプルにタスクを add
して done
して list
するだけにしている.「Trello 使えば良いじゃん!」って言われたら何も返せないけど,個人的なシチュエーションとしては「ウェブサービスに登録するのが面倒なほど小さくて,付箋にメモって机に貼るのが妥当な粒度のタスク」を管理したいなと思って作ってみた.だからこそローカルで完結させたくて,ホームディレクトリに SQLite を置いてデータを登録している.
ネーミングとしては「TODO」と「Go」から「Togo」にしたかったんだけど,既に同名のライブラリがあったために「Togoo」にした.「トゥーゴー」って呼んでもらえると嬉しいかもw
詳細は GitHub の README.md に書いてある(今後も追記していく)けど,ザッとこんな感じで使う.
➜ ~ togoo add sample_task1 ➜ ~ togoo add sample_task2 ➜ ~ togoo add sample_task3 ➜ ~ togoo list +----+--------------+--------+ | NO | TITLE | STATUS | +----+--------------+--------+ | 1 | sample_task1 | - | | 2 | sample_task2 | - | | 3 | sample_task3 | - | +----+--------------+--------+ ➜ ~ togoo done 2 ➜ ~ togoo list -a +----+--------------+--------+ | NO | TITLE | STATUS | +----+--------------+--------+ | 1 | sample_task1 | - | | 2 | sample_task2 | Done | | 3 | sample_task3 | - | +----+--------------+--------+
学んだこと
Togoo を試行錯誤しながら作ったことで,いろいろと学ぶことができて良かった.一部は既に過去の記事にまとめてあったりもする.
- GitHub - tcnksm/gcli: The easy way to build Golang command-line application. と GitHub - urfave/cli: A simple, fast, and fun package for building command line apps in Go を使って CLI の雛形を作った
- GitHub - mattn/go-sqlite3: sqlite3 driver for go that using database/sql を使って SQLite にアクセスした
- GitHub - mitchellh/go-homedir: Go library for detecting and expanding the user's home directory without cgo. を使ってホームディレクトリを取得した
- Go でテストを書いた
- Travis CI と連携した
- GitHub - golang/lint: This is a linter for Go source code. でコードをリファクタリングした
- GitHub - olekukonko/tablewriter: ASCII table in golang を使ってリストを表示するようにした
- Flags 機能で
-a/--all
や-f/--force
を使えるようにした(以下,commands.go
から抜粋)
var allListFlags = []cli.Flag{ cli.BoolFlag{ Name: "all, a", Usage: "List all tasks.", }, }
ドッグフーディング中
Togoo v0.1.0 を自宅と会社でドッグフーディングしていて,気になる点はあるものの,普通に使うことはできていて満足している.
また既に PR を頂いたりもしていて,1人でも使ってくれる人がいるというだけでこんなに嬉しいんだなと OSS の素晴らしさを感じたりもした.まだまだ至らない点ばかりだと思いますので,PR をお待ちしています!
What is “Good” CLI tool?
まだまだ全然 “Good” とは言えないけど,@tcnksm さんの資料が素晴らしくて何度も何度も繰り返し見た.CLI のバイブルだ!
まとめ
大事なことなのでもう1度書くと,Togoo は「ウェブサービスに登録するのが面倒なほど小さくて,付箋にメモって机に貼るのが妥当な粒度のタスク」をお手軽に管理する CLI ツールです!
Go 楽しくなってきてもっと深く攻めたいと思ってる.頑張るゴ!w