プログラムの作り方を教えます。
こんにちは、ノムノムです。
今回は、僕がプログラムを作るときどんな風に作るかを紹介します。
あくまで業務で使うものではなく、自分用に作るアプリのことを指します。
仕事とプライベートで違うのか?と言われると大枠では違いがありませんが仕事だと要件定義書、基本設計書、画面設計書、詳細設計書など作って承認もらってからの開発になります。
手間です。プライベートなら自由に好きに作れるそれだけの違いです。
作りたいものを決める(要件定義)
まずこれが決まらないと何も始まらないですね。
身の回りで困ったことがないか確認します。今回、僕が考えたのはファイルやフォルダのファイル名の変更をする時に一つずつ変えていくのは面倒くさい。
写真とかのファイルを一つずつ撮影日を調べてファイル名を変える作業をしていました。めんどくさい・・・。

そこで決められたルールのもと一括でファイル名を変更するアプリを作ろう!ついでにフォルダ名も変えられるようにしよう!
って思いました。需要があるとかは考えてません。自分の使うアプリなので・・・。
どんなものを作るか考える(基本設計)
まずどんなものを作りたいか決めます。といってもあくまでプライベートで作るものですので厳密にする必要はありません。
足りなければ後で足せばいいし、いらなければ削除すればいいのです。
今回の機能で私が作りたかったものは以下です。
- 一括で複数のファイルの名前を変更できるもの
- 変更ルールを保存しておき、同じ操作を簡単に再現できるもの
- 画像データの撮影日を取得できること
- バッチ実行できるもの
- ファイル以外にもフォルダ名も変更できること
- 正規表現が使えること
パッと思い付きで上げてみました。
バッチとは画面を表示せず決められた動作を実行するためのコマンド実行できるものを指します。
正規表現とは、文字列に色んな意味を持たせることで検索の幅を広げることができます。
説明が難しいですね。またおいおい記事にしていこうかと思いますが、簡単な例を出します。
例えば先頭にimgのついた画像ファイル(jpg)のみを検索したいとします。
img001.jpg,img002.jpg,img003.jpgなどですね。
そういった場合は、検索文字列に「img*jpg
」といれれば検索できるようにしたいということです。
どんな画面にするか(画面設計)
これは、フォームにコントロールだけベタベタ貼っていけばいいと思います。
貼っていくコントロールは、こんな感じにしたらかっこいいなぁ、使いやすいかなぁって適当にやってます。
コントロールを置いたからもうそこから動かさないなんてことはないです。
使いにくかったら配置を後で変えればいいんですよ。
こんな感じにしました。

名前も「Rename File And Directory」からとってReFaD。うん安直。
この時点では、コントロールを置いてプロパティを設定しただけで中身空っぽの張りぼてです。
ソースコードを埋めていく(詳細設計&開発)
ここまでできたらあとはゴリゴリ機能をプログラミングしていくだけ、詳細設計はしないんですか?という声が聞こえてきそうですが、僕は詳細設計はソースコードで足りると思っている人間です。
仕事だとプログラマーに指示を出すのに詳細設計書が必要になってくる場面が多々ありますが、プライベートで自分しか使わないものに詳細設計書なんて書きません。
あとで修正したいときに詳細設計書を探すなんてナンセンス。
ソースコードが詳細設計書の代わりになるように意識していればいいです。
そのために必要なのはコメントです。
その処理は何をやっているのか、なぜやっているのかをソースコード中にコメントとして書いていきます。最初は可読性の高いコードなど絶対に書けませんのでコメントでカバーします。
というか僕は、自分が可読性の高いソースコードが書けているか自信がないのであとで見ても思い出せるようにコメントは多めです。これは仕事でもプライベートでも変わりません。

コメントといってもそんな大した事は書いていません。
1年後に自分のソースコードを見ても理解できるかどうかというのを意識して書いています。
実際動かしてみる(テスト)
開発してる途中でも動きを確認できるなら都度動かしながら確認していきます。
例えば、参照ボタンを押したらフォルダ参照ダイアログを表示する処理を入れたら実行してみて

よしよし、でてるな。って確認しながら進んでいきます。
こんな感じでどんどん開発 → 部分テスト → 開発 → 部分テストを繰り返しながら作っていきます。
できあがったら、全体通してのテストを行って問題なければ完了です。
まとめ
まだ完成していないですが、完成したらこのブログでこのアプリをダウンロードできるようにしようかなと思っています。
プログラミングは、DIYと似ていると思います。自分の想像しだいでいろんなものを作れてしまいます。
DIYで本棚を作ると作った人それぞれでいろんな本棚ができるのと同じで、作り手次第でさまざまなアプリが作られていくのが面白いですよね。
ここまで読んでいただいてありがとうございます。