Archive for December 20th, 2008

scaffoldがあるから何秒でwebアプリケーションができました風の自慢はやめた方がいいと思う

Posted by 向井 淳 on Saturday, 20 December, 2008

http://www.reddit.com/r/ja/comments/7k1×3/big_sky_google_app_engine_oil%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%A61%E5%88%86%E3%81%A7%E5%87%BA%E6%9D%A5%E3%82%8B%E6%8E%B2%E7%A4%BA%E6%9D%BF/c06vbyn

掲題のようなことを書いたら、

>

newerにはscaffoldって良いと思うんですよね。30分掛かっても結果の出せないフレームワークはユーザが飽きてしまうので…。苦笑

と返答されたのだが、redditに長文を書きたくないのでこちらで詳しく書くことにする。

まず、scaffoldで何秒でアプリができました、ということを誇ることで、興味をもってもらえるということは確かにある。ただ、30秒でwebアプリケーションを作るデモをいくら見ても、そこからあとで何をどうするとどうなるのか、ということはnewbieにはさっぱりわからないと思う。あのデモは、まさしくデモンストレーションでしかなく、その先が見えづらい。

この観点からいうと、scaffoldというのはつまりHQ9+である。

HQ9+を使えば、たいていの人間は何の迷いもなくquineを1秒で書ける。でもだからといってHQ9+が凄い言語だということにはならない。確かにデモと同じことを一字一句マネすれば、デモのなかで動いてるのと同じものが手元でもなんとなく動く。でもふつうこういうのに興味を持つっていうのは、もともと自分でやりたいことがあって、フレームワークというのはそのための道具でしかない。けど、やりたいこととフレームワークを使ってできる(あるいはやりやすい)ことのあいだの橋を渡すことになる。

そんで、その橋をわたすためには、フレームワークがどういう風に出来上がっているかとか、たとえばモデルはどう定義され、それをどうコントロールし、どのようにユーザに返すか、っていうところの考え方を知らないといけない。そこまで行くとけっきょく労力は大差ないというか、つまらないscaffoldデモは惑わされるだけ時間の無駄だ。

 

ただ、そういうのがわかっている状態では、scaffoldはboilerplateを書く手間を省いてくれるので楽になるという面はある。たいていのIDEでアプリケーションをスタートするときは、「起動すると空のウィンドウが開いて何にもしないアプリ」みたいなつまんないやつは最初から出来上がっていって、そこから拡充していくということになる。この観点からいうと、「scaffoldコマンド」というのはつまりIDEの代替だ。大元のGoogle AppEngine Oilというのは、そういうタイプのもののようにぼくは感じられた。

でも、そういう場合に何秒で出来るから素晴しい、とかいうのって自慢になってるのかなあ。


安福良直『世界最大の虫食い算』

Posted by 向井 淳 on Saturday, 20 December, 2008

ぱらぱらっと読了。細かいところを飛ばして読んでしまったのは申し訳ないかも。

筆者はニコリの現編集者で、大学生の時に20000ケタの完全虫食い算(表出数字がまったく存在しないタイプの虫食い算)を製作したという人。その人が、当時どのようにして(コンピュータもなしに!)広げるとタテ180メートル、ヨコ100メートルもの巨大な虫食い算を計算したか、という試行錯誤の過程が書かれた本。

虫食い算とは何か、どうやって解くか、その魅力とは……みたいな話を、かけ算の九九表のレベルから語り起こすあたり読者のレベルをどの辺に置いているのかわからないし(それとも、数式はぜったいに出さないようによっぽど言われたのだろうか)、ニコリでは馴染み深いおちゃらけた文体は正直読みづらいけれど、完全虫食い算の話のあたりからは面白かった。まあ、そのトピックにぼくが明るくないから、というだけかもしれないけれど。

さらに8章の「絞り込んだつもりが実は同じ除算だった」ということがわかるくだり、そこからさらに、同じ除算でも実は区別がつくことがあることに気付くくだりはスリリングといっていい世界だろう。

巻末に件の問題……は載せられないのでその解答のみが載っている(それでも30ページぐらい費されている)というデタラメなつくりもよい。

ところで、あのパズルに「虫食い算」という名称を与えたのが海野十三だというのは有名な話? 全然知らなくてびっくりした。