Back

VaultNote

DenoとTypeScriptで作成した、暗号化メモを管理するためのCLIツールです。マスターパスワードを使ってローカルのメモを暗号化し、コマンドラインから追加・表示・一覧・削除できるようにしています。


VaultNote は、個人的なメモを暗号化してローカルに保存するためのCLIツールです。

vnote コマンドからメモの追加、表示、一覧、削除を行えるようにし、マスターパスワードを使ってメモ本文を暗号化する構成にしています。外部サービスにメモを預けるのではなく、ローカル環境で完結する小さなメモ管理ツールとして作成しました。

主な機能

  • vnote init による初期化とマスターパスワード設定
  • vnote add <key> <value> による暗号化メモの追加・更新
  • vnote view によるメモ内容の復号・表示
  • vnote list によるメモ一覧表示
  • vnote list --simple によるキーのみの簡易表示
  • vnote delete <key> によるメモ削除
  • ローカルファイルへの設定・メモ保存

技術スタック

  • Deno
  • TypeScript
  • Cliffy
  • Web Crypto API
  • AES-GCM
  • PBKDF2

作成背景

ローカルで扱うメモの中には、平文で保存したくない情報があります。

このツールでは、メモを単なるテキストファイルとして保存するのではなく、マスターパスワードをもとに暗号化して保存する形にしました。CLIとして実装することで、普段のターミナル作業の中から簡単に使えることを意識しています。

実装で意識したこと

Denoを使い、CLIコマンド、ファイル操作、環境変数の参照、暗号化処理を小さく分けて実装しました。

暗号化処理では、パスワードから鍵を導出し、メモ本文をAES-GCMで暗号化する構成にしています。また、Denoの権限モデルを意識し、ファイルの読み書きや環境変数の参照に必要な権限を明示する形にしています。

学んだこと

CLIツールでは、機能そのものだけでなく、初期化、エラーハンドリング、ファイル保存場所、コマンド体系、利用時の分かりやすさまで含めて設計する必要があります。

また、暗号化を扱う場合は、単に文字列を変換するだけではなく、鍵導出、salt、iv、tag、復号時の整合性など、考えるべき要素が多いことを学びました。