Google二段階認証をサポートするアプリ「認証システムExtra」を作ったよ

近況

最近は研究に追われるようになってきた。すでにAndroidアプリ開発だけを考えていられるような時期じゃなくなってきた(8月には院試もある)んだけど,私に珍しく1年間続いた趣味だからかなかなか止められない。研究は進まない。困った。

それはさておき,最近は5月末くらいから取り組んできたアプリが1つあってもうすぐ公開しようと思って細かいバグ修正とUIの改善を行っている。UIって難しいなあっと放り投げたくなるけど,まあこれは経験しなきゃ成長できないことだろうからと思って割と苦しみ楽しんでいる。

本題

UIといえば,Google謹製のアプリ「Google認証システム」のアプリUIが不満だ。同じGoogle製のGmail・アナリティクス・Keepなんかは皆軒並みカードUIに揃えられて満足な動作をしているのにこれだけ一時代前のようなUIなのがとても気に障る。ThemeもHolo.LightじゃなくてHoloだしね。

使わなければ済むというようなアプリではないし,またサードパーティ製の同様のものもあまり見かけない。

じゃあどこがそんな不満なのか,と言えばたった1つ。アプリを起動し直したくないのだ。

  1. ワンタイムパスワードを要求している現在のアプリを閉じて,
  2. 「Google認証システム」を開き,
  3. 欲しいパスワードをLongClickしてコピーし,
  4. もとのアプリに戻ってEditTextをLongClickして貼り付ける

というとてつもなく長い手順が面倒だと感じてしまう。

ワンタイムパスワードは30秒ごとに切り替わるから,全工程を見据えて間に合わなさそうなら馬鹿みたいに数秒待たなければいけない場合もある……と思うともうウンザリ。

これを解決する一番手っ取り早い方法は,ATOKなどのマッシュルーム機能でこのワンタイムパスワードを呼出してそのまま貼り付けることなのだが,如何せんGoogle様は海の向こうの相手だからマッシュルームに対応なんかしてくれないのだ(そのくせGoogle日本語入力は対応していた気がするけれど)。

しかし無いからといって泣き寝入りをしていてはデベロッパたり得ないので,作ってみた。(あまり割ける時間も無いので)目標は単純に,「マッシュルーム対応」だけに絞った(と思ったら実は他のところで詰まったりしたのだけれど)。

認証システムExtra

extra-playstore-icon

最近何かと多いセキュリティ問題。
あなたはちゃんと対策してますか?
ちゃんとサービス毎にパスワードを変えていますか?
ちゃんと,二段階認証使ってますか?
既に様々なサービス(Google,Apple,Dropbox,Box,Evernote,etc…)で二段階認証が導入されています。
二段階認証について詳しくは以下のサイトが参考になります。
・http://www.google.co.jp/intl/ja/landing/2step/
この二段階認証で必要になる「ワンタイムパスワード」を生成するアプリとして一般的に最も広く使われているのは恐らくGoogle謹製の「認証システム」ですが,イマイチ使い勝手が悪いので改良版を作ってみました。

[foogallery id=”1595″]

結果的に……というか最初の目的からそうなんだけど,Googleに喧嘩を売るような形になってしまったので,いっそとことんまでぶつけてやろうとアプリ名・アイコンとも「認証システム」をパロってみた(アイコンは力及ばず……)。

今お使いのGoogle製「認証システム」に対して私と同じような反感(?)を抱いている人は使ってくれると嬉しいな!

セキュリティアプリに相応しく,権限ナシですのでお気軽にどうぞー。

いつもの備忘録

それでは恒例,このアプリで学んだことを列挙。

  • セキュリティコード生成の手順について,ほんわかと理解できた。
    • しかしソースの大部分はオンラインを参考にしているし(Googleもワンタイムパスワード生成方法はオープンソースにしている),1から自分で書くというのは到底無理そう。まあ,経験としてなら十分ではないかな,と自己弁護。
  • マッシュルームから呼び出す部分で用いるDialogFragmentの処理。「DialogFragment 画面回転」とかでggrと大量に出てくるんだけど,DialogFragmentのライフサイクル管理に(今更ながら)躓いた。
    • 最初はただのAlertDialogを使ってたんだけど,AlertDialogからActivityをfinish()させるとメモリリークの警告が大量に噴出してきて,ビビってDialogFragmentに方針を変更した。
    • そうしたら(知ってはいたけど)画面回転時に落ちてしまうようになったので,それの微調整(ここは後々記事にしたい)。

以上かな。

完成までかかった時間は実装で10時間もかかってないだろうので,そこだけは自分を褒めたい。だけどアイコンはどうにかしてくれと叱咤したい(こんなのでも1時間かかってる)。