🔑

パスワード管理アプリを作成しました

2024/06/09に公開

はじめに

今回、electron を使って初めてデスクトップアプリを開発してみました。
keypick といいます。
パスワード等秘密情報(key)をすぐに選び取る(pick)ことができます。
この記事や開発したサービスがお役に立ちましたら幸いです。

サービス紹介

いわゆるパスワード管理アプリです。
パスワード等秘密情報をローカル環境で管理します。
ユーザ ID/パスワードといった基本情報はもちろんですが、他のどんな文字列でも管理できます。
従業員番号や会社の住所等、たまに使う情報も管理できますし、ToDo リストや今日の晩御飯のメニューを書き出す場所としても利用できます。
メモ一覧画面

管理方法

キー情報をグループごとに管理します。

  • グループ:{グループ名}

    • {ラベル}:{キー値}
    • {ラベル}:{キー値}
      ...
      (以下省略)

例えば、以下のようにキー情報を管理できます。

  • グループ 1:google アカウント

    • ユーザ名:xxxxx@google.com
    • パスワード:xxxyyyzzz
  • グループ 2:PJxxx 開発環境クレデンシャル

  • グループ 3:たまに使う情報(会社関連)

    • 従業員番号:25740035
    • 本社住所:東京都千代田区丸の内 x-xx-x 〇〇ビル 4F

機能デモ

https://www.youtube.com/watch?v=Z2okRO3B1aE

作ろうと思ったきっかけ

Web ブラウザ標準のパスワード管理と比較して、このアプリを作成した理由は以下の通りです。

URL ベースの管理方法が気になる

Web ブラウザ標準のパスワード管理は、基本的に ログイン先の URL をベースとして、その対となるユーザ ID/パスワード(ログイン情報)を保持しています。
しかし、ログイン先の URL とログイン情報は必ずしも 1:1 とは限らず、実際は n:n です。
同サービスをアカウントを使い分けて利用する場合は 1:n になり、同アカウントでもログイン先の URL が複数ある場合は n:1 になります。
そのため、ログイン画面で多くのログイン情報が候補として表示されたり、知らずにログイン情報を二重に管理したりすることがあります。
気にしない方はいいと思いますが、私はそこが気になってしまいました。
そこで、URL ベースではなく、アカウントベースで管理したいと思い、このアプリで実現しようとしました。

メモ帳との使い分けがしたい

ログイン情報以外にも、メモ帳やその他テキストエディタでメモ書きをすることは何かとあります。
さらにその中で、頻繁にコピペする断片的な箇所があると思います。
私は、そのような箇所を都度選択してコピーするのが少し面倒くさいと思っていました。
そのため、頻繁に使う情報をまとめて管理し、ワンクリックでコピーできるようにすればほんの少し生産性が上がると思いました。

使いたいのは Web サービスに限らない

これが一番の目的かもしれません。
Web サービスだけでなく、デスクトップで動くサービスにもログインを求められることはあります。
先に書いた通り、Web ブラウザでログイン情報を管理すると URL ベースになってしまうため、適当な URL を指定しなければなりません。
これは少し面倒くさいです。
あとはパスワード管理のために Web ブラウザを立ち上げるというのが納得いきません。
デスクトップアプリでの管理が実現すれば、Web もデスクトップも関係ありません。

使用技術

デスクトップで動くアプリを作成したかったので、慣れている JS で書けるかつ windows/mac 両方に対応している electron を選びました。
また、学習の一環として、フロントエンドのメジャーなフレームワーク(React、Vue 等)を使用せずにアプリを作成しました。
CSS は少し楽をして、クラスの命名に時間を割かなくて済む tailwindcss を利用しました。

参考

公式ドキュメントはもちろんですが、開発者の皆様が書いてくださったドキュメントに大変助けられました。
特に sprout2000 さんと saki-engineering の以下ドキュメントには大変お世話になりました。
ありがとうございました。
https://zenn.dev/sprout2000/books/6f6a0bf2fd301c
https://zenn.dev/sprout2000/books/3691a679478de2
https://qiita.com/saki-engineering/items/203892838e15b3dbd300

終わりに

最後まで読んでいただきありがとうございました。
もし使ってみたい場合は、 keypick からインストールしていただけると嬉しいです。
また次回何かしら開発したら共有できればと思います。

Discussion