ちょっと間が空いてしまいましたが、ほそぼそと開発中です。
今まではパスワードをコードに直書きだったのですが、外部ファイルから読み出すようにしました。そのために 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 にリポジトリを作って公開しました。今後はここにコミットしていこうと思います。
周りの環境は揃ってきたので、次は対応銀行を増やしていこうかなと思います。