ぎょーぼのぶろぐ

IT系の話を書いていくブログです。今はRubyの勉強中。

【ツール作成】最終構成

前置き

読者が誰もいないので、マイペースで書いてます。ついでに【その?】もなくしました。何番まで行くか分からないので。。。

ファイルバックアップツールですが、一応、ちゃんと動作するところまではできました。 ただ、プログラムの構成に自分で納得がいかず、修正を繰り返した末、なんとなくこれでいいかなーというところまで来たので、こちらでも色々アップしてみようと思います。

プログラムの構成

最初に「動くもの」としてできたものは、処理の流れにしたがってプログラミングして、一部を関数化してるだけじゃん、くらいのものでした。これだったら ruby 使った意味ないじゃん・・・ということで。

なので、クラス/オブジェクト化できるものはまとめ、外付けで使うモジュール(I18n, logger など)もこちらで使いやすいようにラッパーもどきなモジュールにまとめたりしました。

最終的な構成は、下記のような感じになりました。

  • 実行ファイル(メイン)
    実行開始するファイルで、処理の流れに沿ってメソッドを呼び出すのみ。

  • コピー実行モジュール コピーを実際に実行する際の機能をまとめたモジュール。

  • Inifile モジュール
    iniファイルから設定を読み込むためのモジュール。元々、inifile gem を使う予定だったのですが、「¥」記号の扱いがいまいちだったので、自作しました。

  • Setting クラス iniファイルから読み込んだ設定は、Settingクラスのオブジェクトとして保持して、必要に応じて各メソッドに引き渡すようにしました。今回、iniファイルはシステム関連(system.ini)と、ディレクトリ指定用(setting.ini)に分けていて、それぞれオブジェクト化します。

  • Message モジュール 今回、I18n で文言をできるだけ集約化したい、メッセージの出力はコンソールのみ、logのみ、コンソールとlogの両方に出す、等々細かくしたい、などのことをしたかったので、I18n, logger の両方を取り込んで、Message モジュールで出力系を任せられるようにしました。(一部、結合度を上げすぎないために Messageモジュールを使わなかったところもあります。)

  • ProgressBarクラス バックアップの進捗表示を行うプログレスバーを表示するためのクラスです。バックアップ元ディレクトリ毎にオブジェクトを生成し、進捗管理と表示を行います。

続きはまた。