プログラムをかくということ --高度に発達したプログラムは魔法と区別がつかなかった--

おれはプログラマーという職業に憧れてなんかどうこうしている。

プログラムは魔法ではない

高度に発達した技術は魔法と区別がつかないから魔法と呼んでもいいが、あくまでプログラマーとしてなにかプログラムをかくということはただ愚直に動作するようなコードを書くのみだ。具体的には

  • ある条件が発生したときに
  • ある行動をする

の組み合わせをひたすらに書き続けるとってもとっても地道な作業だ。逆に言えば、それさえできればプログラマーになれる。
なんだ、おれがやっていた音楽と同じじゃないたか。楽器の習得だって基礎練の組み合わせでしかないようなものだ。

もうちょっと具体的なはなし

WAF(ウェブアプリケーションフレームワーク、一般的なウェブアプリ)に関しては

  • あるURLにアクセスがあったときに
  • ある関数を実行する

ただそれだけだ。
リッチなUIも

  • あるボタンをクリックしたりあるフォームを送信したときに
  • ある関数を実行する

それだけだ。そのためにいっぱい関数を仕込んでいるだけだ。そして例外や条件分岐で複雑になっているだけだ。

問題を分解する

じゃあたとえばあなたがふぁぼったーみたいなサイトをつくるとしよう。その時に必要なことはなんだろうか。間違ってるかもしれないけどだいたいこんな感じ?

  • twitterからユーザーのfavをクロールする
    • twitterアカウントを作成してOAuthなりでAPIを叩く
    • GETしたデータをMySQLなりDBに保存する
      • GETするときは時刻や重複するfavあたりをみて差分だけを取ってくるか、重複を除外する
    • クロールはおそらくcronでスクリプトをまわす
  • URLを設定する
    • あるURLに飛んできたときには該当の関数を呼ぶ
    • とってきたデータをつかってHTMLに表示する
    • DBから条件に基づいたものを表示する
    • 条件=ユーザーごと、favの数、ユーザーの組み合わせ
  • 見た目をCSSで整える

わからないけど、こういう風にひたすら条件を分解していけば自ずと打ち込むべきコードはみえてくる。そしてこういったウェブアプリケーションをより簡単につくるためにいろんなWAFがある。自分が習ったのはDjangoだけだけど、他にも有名なものでRuby on Rails, Symfony, CakePHP, Catalystなどがある。

簡単そうで簡単じゃない。でもできなくはない?

まあちょっとしたWAFでそれっぽい課題をつくっただけのレベルだからあんまり言えないけど、すくなくてもプログラミングに憧れてたけれどなにもできなかった昔の自分に対しては慰めになるのかもしれない。ヒントになるのかもしれない。あとは、やるか、やらないか、かな。