読者です 読者をやめる 読者になる 読者になる

オモンパカリスト

深層学習、計算論的神経科学に興味あります

Gitのオブジェクト管理を参考に、メモ帳CLIつくってる

gitが好き。とてもよくできてるなぁと思う。
チーム開発はもちろん、普段の作業でも欠かせないツール

どういう仕組みだろう?git add README.mdというコマンドはどういう働きを?

ここが参考になる。

blog.spacemarket.com

へー、.gitの中身はこうなってるのか!
こりゃgitオブジェクトのデータベースだな!

dadan

というわけで、このGitの中身から着想を得たツールを製作(中)。

kazukousen/dadan

gemに丸めて、thorでCLIツール化している。

いきさつ

普段、いつでもどこでもvim(エディタ)を起動して、
保存先とかはシステムが管理してくれてこっちは気にすることない
付箋やメモ帳ライクのCLIツールがあればいいなーと思った。

Usage

$ dadan と入力すると、viが起動する。 保存先は気にせず:wqで終了する。

内部で勝手に名前をつけて(ファイル名が時刻)保存されてる。 ユーザ(自分)は保存・管理に意識を持つ必要がない。

$ dadan today で今日書き込んだものすべてを連結し表示させる。

他にもyesterday(昨日の書き込みすべて)やday 0523(5月23日の書き込みすべて)コマンド。

ファイルはホームディレクトリ下の.dadan/objectsに、 gitの.git/objectsディレクトリ同様にデータベース管理している。

これからも製作中。

展望

ほんとはKVSの勉強がてらに既存のデータベースシステムを検討したけど、
gitの仕組みの模倣ってのがちょっとイケてる気がした。

とはいっても、
ファイル読み書きメチャクチャ遅い気がするし、
とりあえず感丸出しのZlib圧縮もそんなに効果ないからデータがでかい。

将来的には、どこでもアクセスできて同じデータ管理を実現したい。
例えば、PCではターミナルから叩いてメモをとるだけだが
やはり携帯からも書きたいし読みたい。
機能の実装がある程度できあがったら、簡易的なWebAPIを作ってみよう。