花粉症に悩む春の一日

花粉症が日に日にひどくなってしまったために、日曜日に6時間耐久を走って以来まったく走っていません。
目が重くてかゆくてまともに開けてることすら大変な状況でして、仕事してる場合じゃねー!と言いたくなるほど悲惨な状態ですのでとてもランニングどころではありません。せっかく長い距離を走って脚がいい感じになってきたところだったのに...。

とは言え、60km以上走ったあとですので回復のために休むのも悪くないと思いなおして週末のマラソン大会まではゆっくり休むことにします。60kmって普段は一週間かけて走る距離ですからね...。ちゃんと休まないと故障しちゃいそうです。


さて。

そんなわけで花粉症で体調が悪くて外に出られず、走ることもままならないとなると自宅で読書をする時間が増えます。


最貧困女子 (幻冬舎新書)

最貧困女子 (幻冬舎新書)

ASP.NET MVC5実践プログラミング

ASP.NET MVC5実践プログラミング

リーダブルコード ―より良いコードを書くためのシンプルで実践的なテクニック (Theory in practice)

リーダブルコード ―より良いコードを書くためのシンプルで実践的なテクニック (Theory in practice)


このあたりをつまみぐいして読んでいます。

わたしはプログラムを書いて動くものを作るのが仕事なので技術書を読むのは半分仕事ですが、残りの半分は好きでやってる趣味みたいなものです。好きなことを仕事にすると楽しめなくなるんじゃない?とよく言われますが、好きなことを毎日やれるのって純粋に楽しいと思いますし嫌になったことはあまりありません*1。こんなふうに好きなことを仕事にしても好きでい続けることができるのが自分の強みかも知れないなといまふと思いました。

大学で研究室に入ってからプログラムをおぼえたのでそれから17年くらいが経ちます。
これだけ長いことプログラムを書くことを生業としていると、「いつもいいプログラムを書く人」と「そうでもない人」がいることをわたしは知っています。ここでいう「いいプログラム」と言うのは、技術的に優れているとかソースがきれいで読みやすいとかそういうことではなくて、「見た人が使いたくなるプログラム」のことを指します。

どんなに技術的におもしろいことや新しいことをやっていても使いたいとは微塵も思わないソフトウェアを作る人がいるかと思えば、技術的に普通だし特段気になる部分はないんだけれどちょっと使ってみたくなるソフトウェアを作る人もいます。わたしが思う「いいプログラム」というのは後者の「使って見たくなるプログラム」のことであり、そういうプログラムを作る人は何を作っても使ってみたくなる魅力をいつもプログラムに与えてくれます。


そういう使いたいプログラムって別にアイディアがすごくいいとかじゃないんです。


以前から、使いたいと思う/思わないを分ける境界線がまったく分からなくて「なぜあの人が作るモノは使ってみたいと思うんだろう」とずっと疑問だったのですが、ふと「コンセプトの有無」じゃないかと気付きました。


仮にそのプログラムにコンセプトがあれば、機能の追加/削除をしようとしたときにそれをすべきかどうかというのはコンセプトに照らし合わせることで判断できます。具体的には、いまやろうとしていることがコンセプトに沿っているかどうか考えれば、これからやろうとしていることが正しいことなのかどうか確認できます。

逆にコンセプトがなければ、場当たり的にできることややれそうなことを追加したり、必要だけど実装が面倒なことを削除したりというちぐはぐなことをしてしまい、いいモノには決してならないことを意味します。

いつもいいプログラムを書く人は、まずやりたいことのコアな部分をコンセプトとして自分の中にもっていてそれに肉付けするようにプログラムを作って行きます。

逆にそういうプロセスを経ずにプログラムを作っている人は、プログラムでやりたいことリストみたいなものを作ってそれをもとにプログラムの機能を実装していくというイメージです。


どっちがいいとか悪いとはなかなか言いにくいのですが、結果だけ見るとちゃんとコンセプトをもっているプログラムの方が使いやすいし使いたいと思うように感じています。


これからプログラムを作ろう!というときって、いきなり作るんじゃなくてコンセプトを練るというプロセスがすごく大事なんじゃないかといまは思っています。

*1:全くないとはさすがに言いません