accagg開発日記: パスワード管理とFactoryの導入

ちょっと間が空いてしまいましたが、ほそぼそと開発中です。

今まではパスワードをコードに直書きだったのですが、外部ファイルから読み出すようにしました。そのために PasswordManager というクラスを追加しました。PasswordManager.get(“アカウント名”) でパスワードなどの情報を Dictionary で返します。

また、Aggregatorクラスを生成するFactoryパターンを見様見まねで導入してみました。Factory.aggregator(“BANKID”) で、IDに応じた Aggregator を生成します。BANKIDはそのまま python のモジュール名にして BANKID.Aggregator のインスタンスを生成するようにしたので、Aggregator を追加しても Factory クラスに手を入れる必要はなく、簡単に Aggregator を追加できるようにしてみました。

例によって練習中のクラス図です。

今までは PlantUML を使っていたのですが、配置が思うように行かないのと、関連端名(ロール)が書けないので、astah* community で書いてみました。astah* community は 9/26 で配布終了なので astah* community を使いたい人は早めにダウンロードしておいたほうがいいですよ。

ちょっと脱線しますが、練習のためUMLを書いてみているのですが、無料で使いやすいツールってないですね。astah* community も公開停止ですし。ブラウザ上で描く Web 版のドローツールはいくつかあるようなのですが、Wifiがない環境で書くこともあるので、できればスタンドアロンアプリがいいんですよね。有料でも買いきりで数千円なら出してもいいんですけど、astah* professional は \28,000 円なので、個人ではとても買う気になれません。

PlantUMLのソースを改造して自分好みにするしかないか・・・。テキストからUMLが生成できるので git で差分管理もしやすいので、コンセプトはすごくいいんですけどね。ちょっと複雑な図を書こうとすると、なかなか思い通りに書けなくて・・。。

 

さて、クラス図の中身ですが、今までは class method と instance method みたいに場合分けで書いていましたが、class method は static 関数だということに気づいて下線表記にしました。また、Python の dictionary (連想配列) は勝手に <<dictionary>> というステレオタイプをつけて表現することにしました。完全に我流ですが、なんとなく伝わるかなと思います。

また、今回 PassworkManager クラスを追加しました(図中の左下)。Pythonの標準ライブラリの ConfigParser を使って実装していて、いわゆる INI ファイル形式でパスワードなどのアカウント情報を記述します。

accagg.dat というファイル名で以下のような INI ファイル形式の口座情報を記載しておきます。

[SMBC]
BANKID=smbc
USRID1=01234
USRID2=56789
PASSWORD=1111

[ ]の中はアカウント名(任意)としていて、BANKID が Aggregator の ID、USRID1, 2, PASSWORD がログイン情報です。これでパスワードをソース中に埋め込まなくて済むようになりました。平文なのは変わっていないので、相変わらず扱いには注意が必要です。

今回は githubリポジトリを作って公開しました。今後はここにコミットしていこうと思います。

周りの環境は揃ってきたので、次は対応銀行を増やしていこうかなと思います。

コメントする

メールアドレスが公開されることはありません。 が付いている欄は必須項目です