良いあそなすちゃん

良い方のあそなすちゃんです!

プログラミングの複雑性と成果物のおもしろさ

眠い。大いに眠いが今ふと脳内でひらめいたことをここに書き記す。

総じて我々ものづくりをする者たちは様々な道具を使ってものづくりをする。例えば僕ならプログラマなのでRubyを使ってソフトウェアをつくりあげたりもする。もしかしたら同じRubyでハードウェアを動かす人もいるかもしれないし、電子工作が好きな人ならはんだこてやったりもするだろうし、まぁ、ものづくりってのはなにか道具をつかってものをつくることだ。

さて、僕はたまに開発合宿や開発コンテストのようなものに参加することがある。クックパッドの解発コンテスト24などがそれだ。で、毎年参加してるんだけど、その度に「何をつくるか?」というのを考える。あー、もう少し正確に書くなら「今回のテーマでどうやって自分を幸せにするか?」みたいなことを考える。考えた結果でつくるものが決まればそれをつくるんだけど、つくるものが決まった上で「どのようにつくるか?」というのを考える。これはすごく難しくて大変なことなんだよね。

ぶっちゃけ道具の選定はすぐだ。RubyRailsSQLiteとRedisとかなんやかんや。道具の選定は一瞬だ。じゃあ、具体的に実現したい機能はどうやってつくるかを考えるわけだけど、これがすごい難しい。ものづくりってのは流動的で実現したい機能ってのはいつも同じってわけじゃない。例えばWebサービスのユーザの登録とかログインみたいなのはいつでもどこでも同じだし、頭の良い人たちが同じプログラムで済ませられるようになっている。便利。だけども、そう、例えば「Twitterのタイムラインのようなものを実装しよう」とか「この人の感情の係数とあの人の感情の係数を比べて感情が似ている人をマッチングさせよう」みたいなのは多分あんまり実装したことある人いないと思う。

こういう複雑な機能を実現するプログラムは(リーダブルコード的な意味ではなく)大抵複雑なつくりになる。そういうプログラムからなる成果物は面白いものだと思う。

いや、たとえであげた「Twitterのタイムラインのようなもの」とか「勘定系数を計測して人をマッチング」が面白いかどうかはさておき、逆に言えば「テキストを投稿して、それが読めるようになります」みたいなのがおもしろいか?って言われたら多分微妙だ。掲示板じゃんね。

ふぅ、こっから下だけ読めばいいよ。

ものづくりのおもしろさは、いかに人間の快感をくすぐるおもちゃを忍ばせるかと思う。複雑なプログラミングをしろってわけじゃないし誰も複雑なプログラミングを望んではいない。自分を含めたユーザを気持よくするために複雑になっていくのだ。