Help us understand the problem. What is going on with this article?

Go言語の練習でTODOコマンドを作ってみた

More than 3 years have passed since last update.

Go言語をいろいろ調べていてなんとなく分かってきたので、練習にコマンドライン上で動くTODOアプリ作ってみた。

とりあえずなんとなく動くところまで作ったので、一旦やったことをまとめてみる。

リポジトリ

https://github.com/chooyan/todo

概要

$ todo -m add -t "TODOアプリをQiitaに投稿する" -d "201509021200"

とかってやると、2015/09/02 12:00までの予定として、TODOが登録される。

$ todo
0    2015/09/02 12:00    TODOアプリをQiitaに投稿する

こんな感じでtodoの一覧を確認できる。
そんなコマンドです。

データはJSON形式でtodo.jsonファイルに保存します。

使ったパッケージ

  • flag
    • コマンドライン引数のパース
  • os
    • ファイル作成や削除など
  • path
    • OSに依存しないパスの指定など
  • encoding/json
    • JSONのシリアライズ/デシリアライズ
  • bufio
    • ファイル入出力
  • time
    • 時刻のフォーマット、パースなど
  • fmt
    • おなじみ標準出力
  • github.com/kardianos/osext
    • 実行ファイルが置かれているディレクトリを取得する
    • これによって保存ファイルの場所が実行時のディレクトリによって変わってしまわないようにする

開発環境

ターミナル & vim

TODO

  • コーディング
    • テストコード書く
    • コメントつける
    • エラー処理書く
    • なぜかreader.goにWrite関数を書いてしまったので分ける
    • 変数名等が統一されていないので整理する
    • その他リファクタリング
  • 機能
    • Deadlineでソートできるようにする
    • 時刻でフィルターできるようにする
    • 残り時間出せるようにする
    • TODOが完了したらdeleteじゃなくてdoneにして、後から見返せるようにする
  • その他
    • readme.md書く

所感

  • よかったこと
    • godocはなかなかターミナル上でも読みやすい。ググるのと併用すると理解が早い。
    • この程度の規模ならvimだけでも快適に開発できる。
    • やっぱり1つのものを作ってみるといろいろと理解が進む。
  • よくなかったこと
    • 何も考えずにファイル読み書きしようとすると、実行時のディレクトリによってプログラムが認識するカレントディレクトリが変わってしまってハマる。
    • リファクタリングで使わないパッケージが出ると99%の確率でgo buildするときにimport消し忘れで怒られてげんなりする
  • その他
    • そういえばcommandパッケージの説明に、package.goという説明専用の.goファイル作 ったけど、これはアリなんだろうか。
    • ファイル入出力のテストコードどう書くのが良いかな。。。
    • timeパッケージのフォーマットの指定方法が独特すぎて一瞬何を言っているのか分からなかった。

以上。
詳しくは別途話題を絞って投稿します。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away