この程度のプログラム規模であれば、 プログラミングに慣れてくると 設計図が頭の中に浮かんできますが、最初のうちは難しいと思います。
今回は、設計編ということで、どういうパーツをどう組み合わせれば実現できるかについて解説したいと思います。
ちなみに、ここで解説する考え方は、あくまでも1例に過ぎません。
答えは1つではなく、いろいろな方法が存在します。
ただ、DIYプログラミングとしては、初心者の方を対象に、出来るだけ分かりやすく、且つ今後の応用が利く事を念頭にした構成を採用しましたので、その点はご留意ください。
仕様を整理しよう
今回はIDとパスワードを管理するプログラム(=ツール)です。
登録したIDとパスワードは、アプリ又はサイト名と一緒に一覧表示されたら見やすいですね。
ということは、一覧表形式が基本になります。
それから、 アプリ又はサイト名 が増えてきたときのことを考えて、カテゴリによる絞り込み表示も必要になります。
一覧上で選択したアプリ又はサイト名に対するIDやパスワードをクリップボードにコピーできる機能があれば、さらに便利です。
では、一覧に表示する情報をどうやって入力しましょうか。
入力の方法については大きく分けて単票形式の入力(単票入力)と一覧形式の入力(一覧入力)2種類があります。
今回の場合は一覧形式の表示なので、そのレイアウトをそのまま使って入力する方が、プログラムコード量は少なく済みます。
従って、今回は一覧入力で済ませたいと思います。
ただ、常に編集が可能な状態だと、誤操作により入力情報が消えるリスクがあるので、表示モードと入力モードを用意して、切り替えられるようにしたほうが安心です。
最後に、入力した内容をファイルに保存する機能は必須ですね。
以上のことから、今回作成するツールの仕様は次の通りとなります。
- 画面は一覧表示形式の1画面だけとする
- カテゴリ選択による絞り込み表示が行える
- 一覧表示において、表示と入力(表示モードと編集モード)を切り替えられる
- 編集モード時のみ、入力済み項目の編集、行追加、行削除が行える
- 一覧をクリックすることで、アプリ/サイト名が選択できる
- ID取得ボタン、パスワード取得ボタンをクリックすることで、選択中のアプリ/サイト名のID又はパスワードがクリップボードにコピーできる
- 画面から入力した情報をファイルに保存できる
- カテゴリによる絞り込み、ID/パスワードのクリップボードコピー、ファイル保存については、モードに関係なく利用できる。
上記8については、例えば編集モードのみファイル保存が行えるようにするとか、表示モードの時だけ ID/パスワードのクリップボードコピー が行えるとかの機能制御が必要かもしれません。
ただ、今回は簡略化のために、その制御はプログラミングしません。
業務アプリだと、様々な想定(例外的な処理も含めて)のもとに、その対処をするためのプログラムコードを埋め込んでいくのですが、DIYプログラミングでは出来るだけ簡単に済ませたいので、特に実害がない限り、機能制御は行わない事にします。
プログラミングに慣れてきたら、一度挑戦してみて下さい。
使うコントロールを決めよう
では、使用を実現するためのコントロールを選んでいきましょう。
Windows Form はコントロールを画面に張り付けてレイアウトを作っていきます。
コントロールには様々な種類がありますが、今回は下記の4つのコントロールを使います。
- 画面に任意の文字を表示⇒ Label コントロール
- カテゴリ選択⇒ComboBoxコントロール
- ID/パスワード取得、編集、保存の処理を実行⇒ Button コントロール
- 一覧表示と一覧入力⇒DataGridView コントロール

コントロールについて知ろう
では、簡単にコントロールについて解説しておきます。
基本的に、すべてのコントロールは名前を付けて管理できるようになっており、文字列の表示、文字色、背景色、フォントの指定という共通プロパティを持っています。
そして、その上でコントロール毎に特長のある振る舞い(動作)が決まっており、その振る舞いを制御するための専用プロパティを持っています。
Labelコントロール
画面に任意の文字列を表示するためのコントロールです。
Labelには Textプロパティがあり、ここに文字列をセットすることで、画面に表示できます。
無論、フォントの指定、背景色、文字色の指定も可能ですが、今回は初期値のまま使います。
ComboBoxコントロール
これはウェブサイトで年齢や都道府県を入力する際に登場する、ドロップダウンリストのことです。
マウスをクリックするとドロップダウンリストが表示され、任意の項目を選択することが可能になります。
ComboBoxにはTextプロパティがあり、選択された値がここに入ります。
また、ドロップダウンリストに表示したい値を登録するには Itemsプロパティを使用します。
Buttonコントロール
クリック可能なボタンのコントロールです。
コントロールは原則としてマウスクリックやダブルクリックのイベントハンドラが使える様になっています。
ただ、他のコントロールは文字列の表示とか値の選択が中心なので、あまりマウスクリックなどを使う事は有りませんが、Buttonコントロールはマウスクリックをするためだけに存在しています。
DataGridViewコントロール
一覧表形式の表示と入力を行うためのコントロールです。
様々なプロパティを持っており、入力の許可や禁止、並べ替え、列の入れ替えなど細かく設定できます。
DataTableクラス
これはコントロールではないのですが、DataGridViewコントロールと一緒に使う事が多い便利なクラスです。
DataTableは一覧形式の情報(行と列で構成されたデータ)を保持し、列や行の挿入や削除、絞り込み等を行うメソッドやプロパティを持っています。
そして、DataGridViewにDataTableクラスを紐づけ(バインド)してあげることで、DataTableが保持する内容を画面に表示し、逆にDataGridViewで編集した変更内容を、リアルタイムにDataTableに反映してくれます。

DataTableにはファイル保存、ファイル読込のメソッドがあるので、今回はこれを利用します。
フローで処理イメージをつかもう
IDパスワード管理ツールの処理フローを書いてみました。
フローチャートはWindowsアプリなど、キーボードやマウスの操作を起点とする処理との相性が良く無いので、ちょっと無理やり感はあるとは思いますが、全体の処理イメージは掴めてもらえるかと思います。

こうして見ると、1つ1つの処理はそんなに難しくはなさそうですね。
実際にコード量もそんなに多くはありませんので、ご安心下さい。
ただ、最初のうちはややこしいかもしれませんが、次第に慣れてくると思います。
まとめ
いかがでしたでしょうか。
今回は、仕様を整理して、使うコントロールを決めて、それぞれのコントロールに関する簡単な説明をしました。
また、フローチャートっぽい図で処理全体の流れをまとめました。
次回は、Visual Studioを使った画面レイアウトの作成を行いたいと思います。