060-20160517 仕事のプログラミング、暮らしのプログラミング
https://scrapbox.io/files/60652f2b695c08001df1dc53.jpg
先日から仕事の関係で、初めてexcel VBAに取り組んでいます。会社のお金でこの本を買って。
https://scrapbox.io/files/60652edf86fb25001c597014.jpg
定期的に、多数のexcelによるデータ入力フォームを作成し、他部署で入力されたデータを後日集計する、という作業があります。今まではこれを手作業でやっていました。これをなんとかしてサボりたい、いや、効率化したい、というのがきっかけでした。
VBAに限らず、プログラムを自分で1本作る時、まずその目的をはっきりさせる必要があります。そしてその目的を細分化して一つ一つのアクションに落とし込んでいく。まず、無条件に作業Aを実行。次に、条件Bに当てはまれば作業Bを実行、その次は作業Cを、特定の条件が満たされるまで繰り返す..といったふうに、明確に定義する。主語と述語が明確でない定義、条件なしで「何回か」繰り返すといった適当な定義は通用しません。たちまちプログラムが止まってしまいます。
いにしえの超有名ブログより、拝借。
20代でプロプログラマーになれるかどうかが9割決まるのは確かだと思う。
しかしそれはあくまでも「プログラムそのものを仕事にする場合」であって、「仕事をコンピューターにやらせる」のはプロプログラマーの専売特許ではない。
VBAをやってみてわかったのは、これは単純にすごい頭の体操になる、ということ。大げさに言えば、自分の仕事の再定義。いかに自分がよく言えば臨機応変に、悪く言えば乱雑に、やってきたががわかる。実際、集計のためのVBAを作る過程で元々のデータ入力フォームがかなりいい加減であったことが判明し、今回フォームを再設計しました。
もう一つ気付いたのは、これは暮らしにも役立つのではないか?ということ。例えば、毎日我が家で多種多様の書類が発生します。これらを処理する時に最も最初にすべきことは何か?と改めて考えてみました。
書類はどのようなプロセスを経るにせよ、最終形としては「残す」と「捨てる」の二つしかない。そこで、絶対にいきなり捨ててはいけない条件は何か?と考えた時、最初に思いついたのは、意外にも「税金が関係するか?」という条件でした。この条件が「正」であれば、しかるべき場所に残す。次は「子供の学校に関係するか?」でした。これまた「正」であれば、しかるべき場所に残す・・とやって考えていくと、自分がこれまでなんとなく処理していた内容が明確化されていくような気がします。まだ完全に「プログラム」が完成したわけではありませんが。
もちろん、すべての人間の行動を「プログラム」せよ、と言いたいわけではありません。ただ、たまには「プログラム」的な見方で自分の行動を考えた時、今までになかった気づきを得られるかもしれません。