アニメ『TO BE HERO』
娘と二人暮らしの女癖の悪いイケメンパパは、トイレに吸い込まれてスーパーヒーローに。しかし、その容姿はメタボなおっさんに。自分の父親と認識していない娘から、家を追い出されます。そして、地球にエイリアンが! ギャグが基本なのだけど、エンディングの歌でぱぱぱぱI love youと言ってるので、父娘の愛情の感動もあるアニメかなあ、と勝手に想像しています。
メタボはダイエットしなければなりませんね。やはりヒーローはかっこ良くないと。プログラムにもダイエットが必要な時がありますが、ただ減らすのではなくて、質(可読性)も大事なので、一気に痩せることは難しいです。人と一緒ですね。
今回はソースの変更量を行数で計ってみます。今時ステップ数算出なんて意味のないものかもしれませんが、どれだけ減ったか、を確認して自己満足するすると、結構モチベーションアップになります。
変更箇所の行数の算出は、diffを使いますが、元のソースは、bread.shを使うことにします。
~$ git clone http://github.com/takkete/bread.git ~$ cd bread
最新コミットと一つ前を比較したいので、@^を指定してソースを落とします。
~$ git show @^:bread.sh > a
適当な名前でaとしました。
diffを取ります。
-yオプションを使えば左右に並べてdiff表示することができますが、-Wで幅も指定できます。
~$ diff -y -W80 a bread.sh a=`perl -e ' a=`perl -e ' use Math::Trig; use Math::Trig; @colors=("black","brown","red","orang @colors=("black","brown","red","orang $xx_offset=300; | my ($bread_ww,$bread_hh) = get_board_ > $bread_hh +=30; > (省略) > my $h = 18; $xx = $x * $w + 15 + $xx = $x * $w + 15 + $y = 0 if($y >= 25); $y = 0 if($y >= 25); $yy = $y * 20 + 35 + | $yy = $y * $h + 35 + }elsif($x < 20){ }elsif($x < 20){ my $w = 19; my $w = 19; > my $h = 18; $xx = $x * $w + 10 + $xx = $x * $w + 10 + $yy = $y * 20 + 30 + | $yy = $y * $h + 30 + }else{ }else{ my $w = 20; my $w = 20; $xx = ($x-20) * $w + | $xx = ($x-20) * $w + $yy = $y * 20 + 60; | $yy = $y * 20 + 60 } } return ($xx,$yy); return ($xx,$yy); (省略)
-Wで幅を1で指定すると、変更種別のみが残ります。
~$ diff -y -W1 a bread.sh | leafpad (省略) | > > > | (省略)
これをカウントすることで各差分の行数がカウントできます。
~$ diff -y -W1 a bread.sh | sort | uniq -c 26 155 27 < 57 > 31 | ~$
<は、削除された行数 >は、追加された行数
|は、変更された行数です。
コメント