はじめに
業務システムの開発を行っていると、開発プロジェクトも終盤にかかり、システムがほぼ完成に近づいた時、お客様の役員クラスやステークホルダーの方に「ここの文字はもう少し大きくしてくれないか?」や「上下で数字の桁があってないけれど合わせてもらわないと困る」というようなご意見をいただくことがあります。このような要望に対応するには、レイアウト変更とまではいかなくとも、大量にプロパティを同じように変更しなくてはなりません。
発言した本人にしてみれば、1画面だけをみて「ちょっと1、2か所直すだけだろう」といった軽い気持ちでの発言かもしれません。しかし、その言葉通りに言われた場所だけ修正したとしても、最終的にはその変更の影響はそこだけにはとどまりません。同じようなビジュアルに定義していたコントロールについても「あっちはこうなのになぜこっちはこうなの?同じようにしないとなんか変だよね?」と言われ、残り時間が少ない中でなんとかしなければならない状況になる可能性は、非常に高いです。
また、単純な修正ヌケやミスなどにより、開発プロジェクト側の意図したとおりに修正しきれていないままリリースし、即バグ修正というループに突入してしまうこともあるかもしれません。
事前にユーザーコントロールを有効活用したり、フォーム継承などを取り入れたりすることで柔軟に対応できるケースも多いですが、同じくらい人海戦術で直しまくるしかないというケースも多いのではないでしょうか。
そんな状況でも後から修正が可能なツールが、PlusPak for Windows Forms 6.0Jに含まれているプロパティマネージャアドインなのです。
今回はこのプロパティマネージャアドインを実際に使ってみて、何ができて何ができないのかを明確にし、年度末の検収に向けて今ここにある危機を乗り越えるための1方法をお伝えしたいと思います。
プロパティマネージャアドインとは?
市販のコンポーネントで「機能拡張」と聞くと「ツールボックスでアイテムの追加を行い、それをフォームエディタにドラッグ&ドロップしてプロパティを設定すればできあがり」であるとか「専用デザイナを立ち上げ、Visual Studio IDEよりも便利に素早くデザインしてできあがり」といったように、作る前に導入し、プログラムに機能を追加したり、作成する過程を効率化をするものを想像すると思います。
プロパティマネージャアドインは事前に導入するのではなく、できあがっている状態のVisual Studioソリューションに対しても効果を発揮するVisual Studio用アドインとなります。そのため、システムがほぼ完成してしまった後に「これはまずい!」と気が付いた段階でも導入できます。
PlusPakのインストール
今回の記事では、執筆時点の最新版である「PlusPak for Windows Forms 6.0J Service Pack 2」をインストールしました。このサービスパックはすでにPlusPak 6.0Jがインストールされていればアップデート、インストールされていなければ新規インストールが必要と自動判断して、セッティングしてくれます。
プロパティマネージャアドインのインストール
PlusPakをインストールしただけでは、プロパティマネージャアドインはまだ利用できません。スタートメニューから[PowerTools PlusPak for Windows Forms 6.0J]-[アドイン]-[PropertyManager アドインのインストール]を起動してください。なお、Visual Studio 2005版とVisual Studo 2008/2010版があるので、使っているVisual Studioのバージョンにあったものを選択してください。
インストールを開始すると、通常のインストーラではなくVisual Studioコンテンツインストーラが立ち上がります。これはプロパティマネージャがVisual Studioのアドインとして動作するためです。
インストールが正常に完了すればVisual Studioの[ツール]-[アドインマネージャ]で表示できるアドインマネージャに「PropertyManager AddIn」が表示されます。
プロパティマネージャアドインによる拡張内容
コンテキストメニューの拡張
プロパティマネージャアドインをインストールすると、フォームデザイナでコントロールを右クリックして表示できるコンテキストメニューに「プロパティのコピー」と「コントロールの規定値に設定」が追加されています。
この追加されたメニューがどのような機能をもっているかは、後ほど紹介します。
タスクの拡張
プロパティマネージャアドインによりタスクの内容も追加されます。こちらもコンテキストメニューと同様に「プロパティのコピー」と「コントロールの規定値に設定」が追加されます。
プロパティのコピー
例として、デフォルトの「MS UI Gothic」で開発を進めてきたシステムを取り上げます。もう何十画面も作ってしまったし、そもそも1画面にラベルやテキストだって配置済…という状況を思い浮かべてみましょう。そんな状況で「フォントはメイリオがきれいだと聞いたのでメイリオにしてほしい」といきなり言われたらどうしますか?
コントロールのプロパティを変更しよう
そういったときこそ、PlusPakのプロパティマネージャアドインの出番です。まずは、動きを確認するために1フォームだけのプロジェクトを作成し、フォーム上に複数のテキストボックスとコマンドボタンを配置したもので確認してみます。
では、一番上のテキストボックスTextBox1のフォントを「メイリオ」に変更してみましょう。
もちろんフォント以外のプロパティも変更が必要ならば、同時に変更してください。
プロパティをコピーしよう
次に、プロパティを変更したコントロールのコンテキストメニューかタスクから[プロパティのコピー]を選択して[プロパティのコピー]ダイアログを表示します。
ダイアログの構成は、左側にコピー元となるコントロールのプロパティ一覧(今回の例でいえばフォントを「メイリオ」に変更したコントロール)が表示されていて、右側にはそのコントロール以外の同種のコントロールが一覧表示されています。
サンプルでは、テキストボックスTextBox1をコピー元としてそこからダイアログを表示したので、右側に表示されるのはテキストボックスTextBox1以外のテキストボックスです。
ここで注目したいのは左側のプロパティ一覧にも右側のコントロール一覧にもすべてチェックボックスがついている点です。なぜこのようなチェックボックスがついているのかと言うと、次のような操作を可能にするためです。
- コピー元のプロパティを選択できる
- コピー先のコントロールを選択できる
今回は「あとからプロパティを変更したい」というストーリーを想定していますが、複数人での開発時、間違えたプロパティ値が散在してしまった場合にプロパティを揃えるといった使い方もできます。
それでは、左側で[Font]チェックボックスにチェックを入れ、右側ですべてのコントロールのチェックを付けた状態でダイアログの[OK]ボタンまたは[適用]ボタンをクリックしてください。
テキストボックスのフォントプロパティを確認すると、すべて「メイリオ」に変更されています。
たったこれだけの操作でプロパティの変更が可能なので、間違える可能性も無く、特別なノウハウも必要ありません。
複数フォームや複数プロジェクトでは?
1プロジェクト1フォームでの動きが分かったので「複数フォームや複数プロジェクトのときは?」との興味が沸いてきました。もし、1プロジェクト1フォームのときと同じような手間で実現できれば、実際の開発プロジェクトで使用した時にも「真の便利ツールだ!」と叫べるというものです。
サンプルのソリューションは、プロジェクトCZ120101に2フォーム、プロジェクトCZ120102に1フォームがあるソリューションです。
このソリューションで先ほどと同じように[プロパティのコピー]ダイアログを表示すると、ダイアログの右側にソリューションに含まれているすべてのフォーム上のテキストボックス一覧がチェックボックス付で表示されます。
後は、先ほどと同じようにコピーしたいところだけチェックして[OK]ボタンか[適用]ボタンをクリックすれば一発でプロパティのコピー(必要であれば複数のプロパティ値ですら)が可能です。これはもう「すごい便利!すごい!」と叫ぶしかないですね。
コントロールの規定値に設定
「プロパティのコピー」は名前からも使い道が想像しやすいと思いますし、その想像通りの使い方ができたと思います。では、プロパティマネージャアドインで拡張されるもう1つのメニュー「コントロールの規定値に設定」は何をしてくれるのでしょうか。
設定方法
コンテキストメニューかタスクから「コントロールの規定値に設定」を選ぶと表示されるダイアログは、次のようなものです。
ダイアログの左側はダイアログを起動したコントロールのプロパティ一覧になっています。そして、右側はツールボックスからドラッグ&ドロップしたときのコントロールの規定値になっています。
左側の値に規定値を変えたいプロパティ名のチェックボックスにチェックを入れてみます。今回はFontプロパティだけですが、複数のプロパティにチェックを入れることもできます。チェックボックスのチェックが終わったら[>]ボタンをクリックすれば右側のプロパティ値が変わります。
新規にコントロールを配置
ダイアログでの設定が終わったら、本当に規定値が変わるのか確認してみましょう。既存のフォームにツールボックスからテキストボックスをドラッグ&ドロップした結果は、次のようになります。
プロパティマネージャアドインが導入されていない状態であればテキストボックスのFontプロパティは「MS UI Gothic」のはずですが、規定値として登録した「メイリオ」としてコントロールが配置されました。
別プロジェクトでの動作を確認
複数プロジェクト間での「プロパティのコピー」に続き、「新規プロジェクト」でコントロールを貼りつけたときに規定値が反映されるかを確認してみましょう。
Visual Studioをすべて終了し、PCを再起動したら、改めてVisual Studioを起動してWindowsフォームプロジェクトを新規作成します。今回は、ツールボックスからテキストボックスコントロールを配置してみました。
このケースでも、期待通りにプロパティマネージャアドインで規定値として登録した「メイリオ」としてコントロールが配置されました。
規定値を元に戻す
また、コントロールのプロパティの規定値を元に戻す場合は、[コントロールの規定値に設定]ダイアログで右側のチェックボックスのチェックをはずして[OK]ボタンをクリックすることで実現できます。
設定を共有する
プロパティマネージャアドインで設定した値は設定したユーザーでのみ適用されます。別のユーザーでも同じ設定値を使いたい場合は設定ファイルをコピーします。
設定ファイルの場所はWindows 7やWindows Server 2008であれば「\ユーザー\<ログインユーザー名>\AppData\Roaming\GrapeCity\PlusPak\DefaultSettings」フォルダとなるのでこのフォルダをまるごとコピーすると良いでしょう。
まとめ
プロパティマネージャアドインは画面内のコントロールのプロパティ一括変換ができるだけではなく、他の画面や他のプロジェクト、他のソリューションでも適用できる優れものでした。また、後から直す場合だけでなく、作成途中のアプリケーションもドラッグ&ドロップで規定値の初期設定が可能だという点も、かなり便利なものでした。
あえて注文をつけるとするなら、例えばFontプロパティのようにテキストボックス以外にも存在するプロパティの場合、同種コントロール以外にもプロパティのコピーができたら便利かとも思いました。しかし、それで現在の操作性が損なわれるのは嫌ですし、それほど多くの種類のコントロールを同時に使う事も少ないでしょうから、コントロールごとに作業しても十分効率的です。
実際に使用することで、プロパティマネージャアドインの便利さを実感しました。人の力で直して抜け漏れがないか細心の注意を払うよりも、プロパティマネージャアドインを使って安心して変更作業ができる環境を手に入れてみませんか。