COBOL技術者の憂鬱

COBOLプログラマは不在にしています

すごいアプリの周辺で

クックパッド人気エントリー」は、終盤で予想外にてこずっていて、ちょっとまだ公開できる状態になっていません。
代わりに今週は、開発中に感じたことや考えたことについて書き残しておこうと思います。



(1)既存のコードの改善
今回作ろうとしている「クックパッド人気エントリー」は、以前に作った「2chまとめホットエントリー」のコードをほぼそのまま流用する形で作っています。
なのですが、前回は書き殴りの一本道コードだったのを、今回は機能単位にいくつかの関数に分割して、後から再利用しやすいようにしてみました。
ただ単に以前と同じことをやっていてもつまらないですし、このあたりで機能整理しておいて、次回以降の開発に備えておいた方が賢いですからね。
ただ、そうやって一旦設計にこだわりだすと、思っていたよりも多くの時間がかかってしまうし、私の場合は考え疲れて嫌になってしまって途中で投げ出してしまう可能性もでてきたりします。
そうなってしまうと元も子もないので、時には勇気を持って、書き殴りモードに戻すことも重要です。
私の場合、そういう時には、「とりあえず今回は書き殴り状態にしておいて、次回以降でまた同じようなコードを書く必要がでてきた時にキレイにすればよいだ。」と考えるようにしています。
全く同じ人間が、自分の趣味で自分の作りたい物の製作にあたるわけですから、できあがってくるものは多かれ少なかれ毎回共通する部分が多いはずです。「また同じものができあがってしまいそうだな」と思ったタイミングで、機能整理して汎用ライブラリ化しておけばよいのです。


(2)新たな試み
今回の開発では、そういった既存のコードの改善以外に、全く新たな試みもやっていて、それは画像処理の箇所なのです。
結果表示されるレシピ一覧が、文字情報だけではやはり寂しいので、画像が出るようにしたかったのですが、クックパッドの画像に直リンクを貼るのはちょっとよろしくないなと思いました。
ただでさえ、定期的にデータをぶっこ抜いているのに、そのうえ画像直リンクでユーザーサイドからさらに負荷をかけてしまうと、偽計なんちゃらとか、アレな感じになってしまいますよね。
そこで、画像についても、クローリング時に一度だけ取得するようにして、適当にリサイズして、データストアに格納するようにしようと今頑張っているところなのです。



今回の開発では、ここまで書いてきたようなことを何度か繰り返してきたのですが、そこでひとつ気づいたことがありました。
それはなにかというと、このような行動が、全ての「できるエンジニア」が通ってきた道なのではないかということです。
つまり、「(1)既存のコードの改善」の中で、自分のできることの深さを広げていって、「(2)新たな試み」では、できることの幅を広げてゆくんだということです。誰もが、その繰り返しを通じて、自分の開発スキルを向上させていっているのだなと感じました。



今から5年くらい前に、Web2.0とか盛んに言われていた時期がありました。Web上のAPIを利用することで、これからは個人で手軽にWebサービスを作っていくようになるだろうと言われ始めていた頃です。
その頃に、頭の中で思いつたことを一瞬でWebサービス化して公開してしまう人達がいて、ホスト技術者だった私は不思議に思いながらも、彼らのそんなスタイルに憧れたものです。
当時の彼らは、優れた開発ツールやフレームワークなどを、まるで自分の手足のように自由自在に使いこなしていたので、私も同じツールを使ってみれば、彼らと同じことができるんじゃないかと思って、試してみた時期がありました。でも決してうまくはいきませんでした。
結局、私に残ったのは、PHPを使って一本道の薄汚いコードを書き続けることだけでした。結局、そこへ戻るしかなかったのです。
そこから時を経て上記の(1)と(2)の作業の繰り返しで、ようやく自分の開発環境が整備されてきて、結局、昔憧れていた彼らも、そんな地道な作業を繰り返してやってきたんだなということにようやく気づくことができました。
私の尊敬するDHHだって、同じだと思うんです。自分にとって必要なものを身のまわりに揃えていって、それをみんなに公開しているだけで、それがたまたまRoRとして世に現れてきただけなのではないでしょうか。



私がここで言いたいのは、すごいツールを使ったからといって、すぐにすごいプロダクトができるわけではないということです。(ツール自体が、何かを人に作りたいと思わせるだけの魅力を秘めていることは、とても素敵なことだとは思うのですが)
そうではなくて、逆なんですよね。すごいプロダクトを作っているうちに、自分の周りにすごいツールができあがっていくものなんです。
今まで大きな勘違いをしていたことに気づくと共に、これはアプリ開発初心者が非常に陥りやすい罠だなとも思いました。


世の中では、すごいアプリの周辺で、今日も色んなツールが整備され続けています。それらを安易に利用してしまう前に、まずは自分自身がツールを整備する側に回ってみるという視点をもつことも重要なのではないでしょうか。