Rustでメモ補助ツール「rusmo」を作った話(1/2)

1 min read読了の目安(約1600字

みなさんこんにちは Hasuです。私は普段主にWeb系統のプログラミングをしていますが今回はRustを使ってメモ補助ツールを作ったのでその後日談的なものと、感じたことを2本に分けて書いていこうと思います。

1記事にまとめようと思ったのですが、

  • 一つの記事に2つ以上のトピックを入れると全体的に内容が薄くなる
  • 記事が長くなる

の理由から分けて書くことに決めました。感じたことはまた後日投稿しようと思います。

開発について

開発期間

約4日

動機

Rustを勉強していたが実際に自分でプロダクトを作成したことがなく、なにか作ってみたいと思ったから。

rusmoの概要

gif

rusmoはデジタルでのメモテイキングをサポートし効率化するコマンドです。

メモの作成機能、編集機能、削除機能、一覧表示機能などの一般的な操作をコマンドで実行可能です。

rusmo configで設定を変更すればあなたの好きなエディタで作業することができます。

rusmoのこだわった点と学んだこと

rusmoのこだわった点は主に3つあります。

  • 設定を外部ファイルから読み込めるようにしたこと
  • メッセージの色付け
  • 機能単位のファイル分割
    以上の3点です。
設定を外部ファイルから読み込めるようにしたこと

今回、コマンドに関係するファイルを$HOME/rlsmemo/というパスで初回実行時に自動生成させています。

設定ファイルは$HOME/rlsmemo/Setting.toml、メモを保存するディレクトリは$HOME/rlsmemo/_posts/として生成しています。

今回始めて自作プロダクトに設定ファイル等の外部化を実装ました。感想としてはカスタマイズ性が向上したかなと感じました。

この機能の実装では、

  • tomlファイルの読み込みと書き込み等の基本的な処理をプログラムで実装する方法
  • RustのPathBufとディレクトリパスの取得、作成

を学びました。

メッセージの色付け

今回リスト表示のファイル名、削除前の確認ダイアログ、削除完了後のパスに色をつけて出力しています。
色付けするために使ったのはogham/rust-ansi-termになります。

メッセージに色付けをすることでメッセージの差別化ができ、より見やすくなったと感じました。

機能単位のファイル分割

今回はファイル操作系の関数をまとめたファイルと、main.rsを作ることで機能単位のファイル分割をおこないました。

今回、ファイル一覧表示関数はmain.rsに含めています。理由としては、ファイルを作成、削除するなどファイルに対して直接的な操作を行わないからです。

最後に

rusmoは基本的な機能は実装できていますが、改善点や実装したいことはまだまだたくさんあります。

  • 編集機能、削除機能でのファイル名補完の実装

現時点ではこれが最優先で実装すべきことだと思っています。この記事を見て興味を持っていただけたらぜひ使っていただいてフィードバックをいただけると嬉しいです。できる範囲で実装していきたいと思っています。

githubのリポジトリはこちらになります。