「作りたいもの」の作り方

インスパイア元:プログラミングが上達しない or 勉強が続かない人へ:とあるIT系社長のブロマガ - ブロマガ

なんだよ作りたいものとか

よくプログラミング学習についてのエントリが盛り上がる時期がある。そのなかの幾つかのブログエントリで叫ばれるのが「作りたいものの有無」についてだ。彼らの主張としては、「作りたいも」があるからこそ、そこに試行錯誤のループがあり結果的にプログラマとして成長できるのだ、という感じの主張だ。これについては、まったく同意であるのだけど、じゃあ作りたいものが無い奴はどうすりゃいいの?という疑問が当然あると思うのだけど、議論としてそんなに盛り上がってない気がする。
なので、個人的な考えとして「作りたいもの」について考えを書いていこうと思う。

作りたいものは自己表現でも自己実現でもない

「作りたいもの」という言葉にはある種の純粋さ、ひたむきさ、ものづくり、的な雰囲気や響きを感じる。でも、そういう高貴な、仰々しいものでは決して無いと思ってる。だれでも作りたいものは持てると思ってる。作るものはなんでもよくて、モノマネでもなんか作ってみれば「試行錯誤のループ」は作り出せる。

クローンを作る

個人的には、特にWebアプリは、「掲示板が作れればなんでも作れる」と思ってる。
だから、多くの人は、よくある技術書のチュートリアルで「ブログ」や「掲示板」を作ると思うが、それを作った瞬間「あれ?これでたいていのWebアプリ作れるんじゃね?」ということに気づくはずだ。FacebookTwitterなんかのWebアプリは個人でも作れる。いわゆる「CRUD」の仕組みはそこまで複雑ではない。だからまず前提として、「作りたいもの」の有無は置いておいて、「作るのは難しくない」というものがあるとおもう。
そもそもの企画を除けばエンジニアリングとして問題になるのは、あとでも述べるが、「セキュリティ」と「高トラフィックへの対応」ぐらいだと思う。もちろん個人ではなく集団での制作になればチームとしての開発手法への理解は重要になるが、ここでは割愛する。

何がしかの独創性あるサービスの企画を思いつけば、そこからは大変ではない。大変だけど。CakePHPSymfonyRailsなんかのフレームワークの使い方を覚えれば個人でサービスをリリースすることのハードルはさらに下がる。

つまり、ただ作るだけならそこまで難しくないんで、なんか「既存のWebサービスの真似しちゃおうぜ」と。そこで作り切れれば結構可能性が見えてくる。そこで自分の理想を実現する手段を手にする。そうすれば「試行錯誤のループ」は見えてくると思う。

あとは「セキュリティ」と「高トラフィックへの対応力」

結局、ここですよね。何がしかの、とりあえず良識ある技術書は自分が指南したサービス開発の成果物を、今すぐデプロイしろとはなかなか言わない。最大の理由は責任を取れないからだ。

自分が指南したフレームワークはたとえ執筆当時は最新版でも、その後何がしかのアップデートが行われるのが通常だ。多くの場合、そのアップデートの理由は、広範な意味でのパフォーマンス改善か、あるいはセキュリティアップデートだ。ある瞬間での最高水準の技術指南は未来の悪癖かもしれないから、執筆者は読者が技術者として健全な態度であることを期待する。

結論

何が言いたいかといえば、作るものなんて何でもいいんですよ。ものまねでいいんですよ。ブログでもTwitterでもFacebookでも、結局は「あるコンセプト」を制限とUIによる演出で実現してるだけで、テキストデータのやりとりです。例えばInstagramのクローンを作って犬画像しか投稿できない制限を実装できれば、それはもう独自のサービスと呼べます。掲示板作れればなんでも作れますよ。ただ、その時点で公開してはいけないことを自覚できていれば、あなたは善良なエンジニアですね、っていう、ホントそれだけです。
よし、ものまねでもいいから、なんかつくろう!そこが試行錯誤のループの入り口です。


関連エントリ