この記事は mipass というパスワード管理アプリを私がどうやって作っていったかを連載記事にしたものです。連載記事の目次はこちら。
まず最初に申し上げておきますと、これは mi: pass というパスワード管理ツールを私がなぜ作ったのか、どのように右往左往して、どのように問題を解決していったかという日記のようなものだと思ってください。
アプリサイトはこちらです。
技術的な部分について詳細を語る内容ではありませんが、個人勢がどのようにアプリやサイトを完成させていくのか、その「生の部分」をお見せしようと思います。
なお、思い出しながら書いているため実際とは異なる部分も多々あります。
それでも、まだアプリを作ったことのない人、これから作ろうとしている人が「完成まで、こんなステージがあるんだ」と道標になるよう頑張りたいと思います。
どうぞよろしくお願いします。
Stage0: Evernote でパスワード管理
私事になりますが、昔、パスワードを Evernote で管理していました。
パスワード管理アプリなるものが色々とあるのは知っていたのですが「これはパスワードのデータですって管理会社にバレている状態で、その一切を預ける」というのがどうにも怖いと感じていたのです。
内部に漏洩する人間が一人いれば「知らない間に自分のデータ全部引っこ抜かれる」、これは絶対に消せないリスクです。
ぶっちゃけると、去年の Last Pass のような事態になるんじゃないの? と思っていたんですね。
Evernote はパスワード管理アプリではありませんが、2段階認証もあるし、テキストに鍵もかけられるので、盗む側が「これはパスワードデータだ」と認識しづらいメリットもあると思いました。
「よりハンサムで魅力的に見えるためのライフハックはありますか?」なんてノートタイトルで、
ぷw こいつ、こんな記事を大事に取ってあるんだ……可哀想なやつだな……
他人であれば一目見て、ソッ閉じしてくれそうなタイトル&冒頭記事にするという偽装工作付きです。
これで数年管理していました。
その間、あらゆるサイトやセキュリティは ID やパスワードを要求し続け、Evernote のパスワードは増え続け……管理しているパスワードが 100 を超えてしまいました。
さすがにこの数になると、Evernote から該当するパスワード探して、テキストを選択して、コピーして……この作業自体が苦痛になっていきます。
Evernote ってパスワード付きテキストを検索している途中で勝手に閉じちゃう事もあるんですよね(そうならない事もある。多分、色々な要望が絡み合った結果の機能不全っぽい動作)
Dropbox paper にどうでもいいパスワードを移し始める
ゲームとか、ニュースサイトとか、なくなっても自分の人生が終わるわけじゃないパスワードくらい簡単に取得したい……私はちょっとずつ、Evernote から Dropbox paper にパスワードを移していきました。
実は Dropbox paper ってページ生成したばかりの状態だと(リンクバレれば)誰でも閲覧可能な仕様って知らず、オーマイガ! と慌てて閲覧禁止にしたりしつつ、便利に使い始めました。
で、一旦快適になり始めると人間って弱い生き物でして……。
Dropbox paper にどうでもよくないパスワードまで置き始める
wordpress だのサーバーだの管理しはじめると、毎日のようにログイン作業を行うようになりました。
この頃、ついにパスワードは 200 を突破。
個人的な事情で某社のホームページ無料で作ったり、管理するパスワードがどんどん増え続け……どんどん Dropbox paper に入れるようになって……。
気が付くと、どっちにあるかわからなくなってきた
twitter は paper にあるけどメールは Evernote、でもメールサーバーの管理パスワードは paper ……どっちにあるかわからなくなって、2つの情報を行き来するようになりました。
そう、Evernote だけでも面倒だったのに、Dropbox paper と Evernote 両方見るようになっていたのです。
本末転倒とはこの事、楽をするために安全性を捨てた結果、面倒になるというワケのわからない状態になっていました。
実を言うと、本当はもう少し複雑でした。それを正しく書いたところで誰も読む気が起こらないので、敢えて単純化して書いています。これでも十分アホですが……。
Stage1: そうだ、パスワード管理アプリ作ろう
今の状況は間違いなくアホだ、でも第3者(社)が作ったパスワード管理アプリはどうしても信用できない……じゃあ作ればいいじゃないか。という冗談のような流れで製作を始めました。
この時点で完成形は一切見えていませんでしたが、ただただ自分の苦痛を終わらせたい、その一念だけで開発を開始したのです。
最低、何が欲しいのか
苦痛を過去のものにするために、最低限何が欲しいか考えてみました。
パスワード管理を1つにする
これは当たり前ですが、私にとっては超重要。もう Evernote と Dropbox paper の行き来は嫌だ。
ただ、これはアプリを作れば問題は解消されますよね。
一つ心配があるとすれば、様々なビジネスアプリが当たり前のようにやっている「データのクラウド共有」。
自分のサイト借りて、データベース使う……なんて面倒なことはしたくない。
無料でどうにかしたい。例えば Google Drive とか使えないのか?
Google Drive なら、データを預かるのはアプリ開発者の私ではなく、Google(Alphabet?)の管理となるので、信頼性も高いし他の人にも公開できるなぁ、と考え始めました。
One Drive や Dropbox、FTP なんかも今後用意したいと思いつつ、時間が取れておりません。
テキストのコピーはせめて自動的に
今まではこんな風にいちいち 全選択 > コピー(CTRL + C)
していたわけですが、面倒だからワンクリックで自動的にコピーするようにしたいと思いました。
これは専用アプリを作るのであれば、簡単に出来そうですね!
アプリからサイトも開きたい
wordpress にログインしなきゃ。ログイン URL なんだっけな……?
「お気に入り」を使うのが苦手な私はいつもググって探したり、パスワードとは別の URL リストみたいなものを引っ張り出していました。
そんな面倒なことダラダラやってるから、一度ログインするだけで2~3分かかっていたのです。非効率の極み。
調べたところ、Application.OpenURL というコマンドで unity からブラウザを開くことができそうです。
ブラウザ開きながら、ついでにチャチャッと ID とパスワード自動入力したい
欲が出てこんな事も考えましたが、標準機能の組み合わせでは無理っぽいので諦めました。
ブラウザの拡張機能なら出来そうなのかな? とも思いましたが、全ブラウザに気を遣う必要がありそうですし、unity(C#)から離れてしまうので今回は断念しました。
Windows 限定であれば、SendKey 使うのもアリかもしれない。
ブラウザの「お気に入り」と「パスワード自動保存」でよくない?
私もそれは頭をよぎりましたが、
パスワード抜かれるリスクはゼロじゃない
例えパスワードマネージャーを製作しているのが大手であろうと、大人数が使っていようと、その中の権限のあるスタッフ一人がダークサイドに墜ちてしまえば、終わってしまう事もあります。
(そうならないよう権限の分離など努力されていると思いますが、絶対安全を保証されるわけではない、という事です)
アプリのログインパスとかは管理外
もしかしたら可能かもしれませんが、私は知りませんでした。
複数端末でブラウザの統一が必要
私は開発上色々なブラウザを使うことが多いので、統一するのは現実的に困難でした。
「お気に入り」と「パスワード自動保存」に頼っている一般ユーザーは結構多いと思いますし、場合によってはクレカや銀行の情報まで登録している人もいるでしょう。
でもそれは、本当に安全と自分で納得できるのか、いま一度しっかりと考えておきましょう。
利用はするけどセキュリティ上どういうリスクがあるかまで考えてない人、多いと思う