2008/12/22


scaffoldで客寄せするのも悪くない...私はそうは思うんです。
scaffoldがあるから何秒でwebアプリケーションができました風の自慢はやめた方がいいと思う - val it : α → α = fun

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

http://www.jmuk.org/diary/2008/12/20/1
確かに釣りな記事を書いた事には間違いないです。が、私が思うscaffoldの認識と少し違うかなと思ったので...

scaffoldはそもそも足場という意味の単語で、アプリケーションフレームワーク上では何かのベースとなる部品を提供する機能を一般的に指しているのだと思う。確かに「××分で出来る」ってのはbuzzword的に広まっており、「rails 分で出来る」なんてググると、わんさか出てきたりします。それだけインパクトがあり、需要があってこそなんだと思います。
mukaiさんの仰っておられるのは、「scaffoldで出来上がったデモがその後のユーザにとって本当に意味のある物になるのか...無駄じゃないのか」という事だと私は読み取ったのですが、巷のIDEの様に幾らか雛を作ってくれる物は初級者にとって敷居を下げてくれ、マニュアルやフレームワーク自身のコード解析からフレームワークの使い方を学ぶ手間と比べると、改造ベースからコーディングを始められる良さってのはあると信じています。
これは使い手側の意識と、先人が思う考察の違いの問題であって、例えばブログを書くのにWYSIWYGなツールを使う事は、HTMLを学べないから良くないとか、HTMLを知らなくてもHTMLを書けるWYSIWYGエディタの自慢をする事は良くないとか、そんな事はユーザにとってどうでもいい事の様な気がするんです。HTMLなんて知りたくないけどWYSIWYGは便利だよって人もいるだろうし、Google App Engineのマスタになりたいなんて思わないけどGoogle App Engineを使ってみたいって人はいると思う。
ユーザが開発者で、Google App Engineを学びたい人であって、Google App Engine Oilを知らなくて、何から手っ取り早くGoogle App Engine Oilで何が出来るかを知るには、多少特化したエッセンスを用いて表すのもアリなんじゃないかと。

例えば「10分で出来る、かんたん餃子レシピ」なんて物があって「その後本当に餃子の皮から作りたい人が、果たしてこのレシピを有用と見るだろうか」なんて考えるのはナンセンスな気がするんです。
調べる人は自分で調べるだろうし、「かんたん餃子レシピ」の役目は「餃子を自分で作ってみたいけど、皮から作るなんて難しい」と思ってる人への道しるべになれたのならそれで十分だと思う。そして本当に10分で美味しい餃子が出来たのなら、私はそのレシピを評価してあげて良いと思う。
Google App Engine Oilは、素のGoogle App Engineでは痒い所に手が届かない部分に色々と機能を追加していってくれていますし、良い意味でも悪い意味でもキャッチーです。
WSGIってどう書けば良いの?モデルを作ってそのモデルを編集する画面ってどう作ればいいの?って人は、まずサンプル触るのが良いと思うんですよね。
「そのフレームワークを学ぶ」が目的じゃなくて、「○○みたいなの作るにはどうしたら良いの?」が目的な人多いと思うんですよね。

これはあくまで私の持論であって、「自慢がいけない」のか「scaffoldがいけない」のかの違いも本筋でもない気がしています。

私は餃子を作りたいと思った時に「餃子のプロが見せる超絶技巧100」よりは「10分で出来る、かんたん餃子レシピ」を見たい人もいると思うんですよね。

ちなみに、お店で出すメニューに「10分で出来る、かんたん餃子レシピ」で作った餃子を出して自慢する...なんて事はもちろん、私も(その店にとって)良くない事だと思っていますよ。:-)
Posted at by



2008/12/18


Perlerと呼ばれる程のスキルは無いのですが...
Perlプログラマーの皆さん - Perl入門~サンプルコードによるPerl入門~

Perlをやっている人のブログをRSSリーダーに登録しておくと最新の事情がわかったりします。

http://d.hatena.ne.jp/perlcodesample/20081217/1229522517
Plaggerで上記リンクからOPML作るYAML書きました。
perler-in-japan.yaml
plugins:
  - module: Subscription::XPath
    config:
      url: http://d.hatena.ne.jp/perlcodesample/20081217/1229522517
      xpath: //div[@class="body"]/div[@class="section"]/blockquote/p/a

  - module: Publish::OPML
    config:
      filename: perler-in-japan.opml
出来上がったOPMLも置いておきます。2008/12/17 14:30:00時点のOPMLです。
Plagger Subscriptions - Perler in Japan
よろしければどうぞ。
Posted at by



2008/12/17


いつも面倒臭いなぁと思いながらブラウザでログインしてバージョン書いたりしてたんですが、勢い余ってスクリプトを書いてしまいました。
使い方は # vim-release.pl -sv=<スクリプトのバージョン> -vv=<vimのバージョン> -msg=<メッセージ> <ファイル>
です。-vvを省略すると7.0が、-msgを省略すると入力プロンプトが表示されます。ユーザおよびパスワードはConfig::Pitで管理します。
実際には、このスクリプトの-svを省略する為の補助が欲しい所ですが、前のバージョンから+1では不味いし、スクリプトから調べるのは無理があるし...で引数にしました。
おそらく私くらいしか使わないかと思いますが、よろしければどうぞ。
gist: 36989 — GitHub
#!perl
use strict;
use warnings;
use Config::Pit;
use Getopt::Long;
use WWW::Mechanize;
use Perl6::Say;

my $conf = pit_get("vim.com", require => {
  "username" => "your username on vim.org", # NOTE: do not edit this line
  "password" => "your password on vim.org", # NOTE: do not edit this line
});

my %args = ( id => '', sv => '', vv => '7.0', msg => '' );
die "invalid args"
  unless GetOptions(\%args, 'id=i', 'sv=s', 'vv=f', 'msg=s');
unless ($args{msg}) {
  print "message: ";
  $args{msg} = <STDIN>;
}

my $file = shift;
die "script version not specified" unless $args{id};
die "message not specified" unless $args{msg};
die "file not specified" unless $file;

my $mech = WWW::Mechanize->new;
$mech->get('http://www.vim.org/login.php');
$mech->submit_form(
    form_name => 'login',
    fields    => {
        userName => $conf->{username},
        password => $conf->{password},
    },
);

$mech->get("http://www.vim.org/scripts/add_script_version.php?script_id=$args{id}");
$mech->form_name('script');
$mech->field(script_file => $file);
$mech->select('vim_version', $args{vv});
$mech->field(script_version => $args{sv});
$mech->field(version_comment => $args{msg});
my $res = $mech->click('add_script');
say $res->is_success ? "uploaded" : $res->status_line;
Gist.vim version 1.1 への更新で上手く動いてそげです。
Posted at by