Kitコマンドを作っています。けんぼーは留年生スマートフォン用の表示で見るけんぼーは留年生Twitterに書ききれないこととか2015-05-14Kitコマンドを作っています。最近僕は思っています。「恥知らず」になりたいわけではないが、何が恥なのかすら分かっていない場合は(他人の迷惑にならない範囲で)恐れることなくどんどん恥を晒していくべきだと。恥を晒して初めて恥を知るのだと。いうわけで僕は今GitHubで恥を晒しています。github.comさて、早速タイトル通りこの恥の内容を紹介していきたいと思います。今までのGitの使い方まぁ割りと僕のブログを読んでいただいてる層だと「Gitを全く知らない」ということは多分無いと思うので無いということにして何となくくらいは分かってる前提で話をします(僕もgitに自信があるわけじゃないけど)。Gitと言えばコミット、コミットと言えばGitですよね。何か作業して、それを追加してメッセージ付けてコミットする。それがGitの基本的な使い方だと思います。この方法は基本的に事後報告型。何かをした後に「こんなことしたよ!」と報告する形です。Kitの提案kitとは英語のそれではありません。日本語の「きっと」を表します。gitでは何かをしてから「こんなことしたよ!」とメッセージを送りますが、kitではまず「こんなことをするよ!」と宣言してからそれが終わった後に終わったコマンドを打つことでコミットされます。事前に何をするかを報告することで他人に「今何をしているのか」を伝えるだけでなく自分も「今何のために何をしている途中なのか」を確認出来ます。「何をするのか」という事は課題が新しく発生した事も意味します。kitでは「何々するよ!」という宣言もgitに記録するので「いつ課題が発生したのか」も明確になります。具体的にKitを使うとどういう風になるのかまず最初に作業ディレクトリでこう打つ。initこれで.kitstackというファイルが作られる。Gitリポジトリが無ければGitリポジトリも作ってくれる。initを実行してくれるのだ。作業を始める前にこう打つ。"したいこと"これで.kitstackというファイルにこのコミットメッセージが保存されそれがgitにコミットされる。しておけば途中で他人なり自分なりがそのリポジトリを見れば、この作業が今何のために何をしている段階なのかはっきり分かる。予定通りに作業を進めて行き予定が終わったらこう打つ。"したいこと"が実行される。発展的な使い方さて、あるリポジトリでちょっと作業した後、別のプロジェクトへ行ってしまい久しぶりに戻ってきたという場合。前回まで自分が何をどうしていたのか思い出せない。logでそれまでどうしてたかは思い出せてもこれから何をするつもりだったのか思い出せない。listnowは現在進行中の予定を示し、listは全ての予定をリストアップしてくれる。世の中そうなんでも予定通りに行くわけじゃない。"したいこと"の途中で新しい課題が発覚したとしよう。ブランチを掘っても良いが、そういうのともちょっと違う。"課題を解決する"こうするとこの"課題を解決する"が.kitstackに積まれる。.kitstackは文字通りスタックなので新しくdoしたものが上に積まれるので次doneした時に実行されるのはこのコミットだ。課題の解決は"したいこと"の後にしたい時もあるだろう。"課題を後で解決する"これでスタックの一番下に挿入される。afterの後に数字のオプションを付ければ任意の場所に挿入することも出来る。他にも予定を編集するeditコマンドとか削除するremoveコマンドとかある。doneの時に指定ファイルだけを追加するようにする仕様も検討中だ。使い方Githubからkit.cを自分でコンパイルして自分で適切な位置にぶち込んでくれ、何か合っても責任は取らん。これからまだ完成しているわけじゃないが、一応最低限の動作はするようになってきている。今後はmakeとかrpmとかyumとか勉強してもっと簡単にインストール出来るようにしていきたい。久しぶりのC言語は苦痛です。別にCじゃなくても良かったんじゃね?とか思わなくもないけど今更引き返せません。後文字列のサイズめっちゃ適当なんだけどどうすれば良かったんですかね。