内製ツールの製作日記
事務所で使う、開発中の内製ツールでやきもきな最近です。(と言っても2週間ぐらいです)
pythonで作っているもので、設計後の部品の情報を、取引先が用意した部品表に合わせたフォーマットにする物で、と言ってもぶっちゃけテキストな情報をExcelの列の並びに直す程度の話です。
程度の話だったのですが(試作当初の話)、確かに中身の処理はたいしたことのないといえばそ〜なりますが
- GUIベースでドラッグアンドドロップでやるとか
- 中身の分解が意外と厄介だったりとか
- 取引先別で列の並びを変える必要が有るのでパターンを幾つか用意とか
- 歯抜けの行に、使わない行とする文字を入れるとか
ソフトウェアってのはどんどん欲張りなものになっていきますね。アップデートは大変だけど正しい行い。
とりあえず要件は達成してきているので、あとは正しく動くのかのテストの日々でしょうけど。(結局ここが一番大事)
悩んでる、悩んでいた事をメモ
- エラー処理で、バラバラにしたモジュールからエラーの情報をどの様にひとつにまとめるか
- モジュールは実行中ならimportするだけで共有できそう。
-
- loggingモジュールを参考にして、モジュール内でクラスをインスタンス化して、モジュールから呼び出す方法で試してる。
16.6. logging — Python 用ロギング機能 — Python v2.6.2 documentation
- 取引先別に処理をやや変えるための仕組み
- 共通する処理はスーパークラスとして、サブクラスに個別の方法や必要なデータを入れておく。
- *:もしかしたら必要な情報だけになりそうなので、そのうちに設定ファイルから読んだりしたい。
- とあるモジュールに取引先別に定義したクラスのリストを、別の場所で取得する
- inspectモジュールから、とあるモジュールの中身を取得して、クラスだけにする。あとは必要なクラスだけを取り出す条件とか、取得した情報を整形してとか。
#インポートしてあるモジュールから、そのモジュールないのクラスだけ取り出してリストにする def get_scenarioclass(module_name): return [data for name, data \ in inspect.getmembers(module_name , inspect.isclass)]
- クラスの内部からクラス属性にアクセスする方法
最悪来週までには完成していないとマズそうなので、今週も部屋にこもる日々です。楽しいからいいけど。