Perl入学式2013年度第5回補講・参加レポート vol.3(いろいろ+map, grep)

おつかれさまです。前回の更新からちょうど2週間経ちました。当時の勢い的にはなんなら翌日更新、ぐらいのつもりだったんですが、手元の記録を見ますと(ログかなり細かく取ってる)、先月19日の午後4時ごろに前回の内容UPして以降、ああ・・なるほどね・・22日に超大事な打ち合わせがあって、その準備を中心に3本ぐらい別々のタスクが並走してたみたいですね・・

ぼくは元々マルチタスク大変苦手のようなのですが(経験的にわかった)、んでそれは可能な限り避けるようスケジュール入れるようにしているのですが、それを普通にやっていたようです。

ちなみにその更新休止期間の1/29にここ半年ぐらいずっと手がけていましたこちらが発売されまして・・(前にも宣伝したっけ)

commmons: schola vol.13 Ryuichi Sakamoto Selections: Electronic Music

commmons: schola vol.13 Ryuichi Sakamoto Selections: Electronic Music

まあ、その販売促進系の作業も上記マルチタスクのひとつだったわけですが。地味に時間&労力使いましたね・・というかそれに関するブログ、別のところにUPしなきゃ。この後やろうかな・・

ああ、それについて一個だけ、プログラミング入門に絡めて記しておくと、これって今まで毎年数冊ずつ坂本龍一さんを中心に作ってきたシリーズものの出版物(CDブック)ですが、その最新第13巻で、ぼくがプログラミング入門したのは昨年5月なんですが、その影響がほぼ初めて出た内容でもあります。

ぼくが担当しているのは主にCDブックのブックレット編集ですが、第一にそこに印字されている9割以上の文字要素は、ぼくがMacVimを使って書き通した初めての内容でありまして、あと座談会原稿の脚注を作成するときにはそれ用のPerlスクリプトを書いたりして。まあ結果的には、他の誰にもそれ(プログラミングというか)を経由した影響は一切ナイのですが、ぼく自身には結構エポックメイキングな成果物ではありました。

その注釈に関してはこの辺、
仕事で使った自作Perlプログラム:count.pl - the code to rock

Vim関連ではこの辺にちょこちょこ具体的なことを書いてます(ほんのサワリですが)。
Vimのあとさき - 103
Vimでの日本語編集時における正規表現の使用例(地味な) - 103
プログラミング初心者(の編集者)による『実践Vim』レビュー - 103

あと上記関連で先月から3月いっぱいまでEテレで連動テレビ番組もやっていますのでよろしければどうぞ・・ってこれ誰宛の宣伝なんだ。いやきっと楽しんでくださる方はいるはず。
schola 坂本龍一 音楽の学校

ま、ともあれそのような感じのここ半月でしたが、その間に次回、今年度Perl入学式の最終回、第6回の日程も発表されましたね。ぼくはついさっきそれに気づいたのですが。あとでどちらかに申し込んでおきます。いやまじで迷ってるのですが・・どっちの方がより忙しさがマシかっていう・・んー・・かなり見えない・・本講の方がまだ良い気もするけど補講の方が準備しやすいってのはあるし・・すでにだいぶ申し込みも増えているようですが、もう少しそこ考えてから参加希望します。(間に合うように・・)

ではあらためて、前回の続きです。前回はこちらでした。
Perl入学式2013年度第5回補講(2014/01/11)・参加レポート vol.2 - the code to rock

前回までが「前回の復習」だったので、Perl入学式第5回独自の内容についてはここから、ということになりますが。
まずはこれですね。

Mojoliciousのインストール
https://github.com/perl-entrance-org/workshop-2013-05/blob/master/slide.md#mojolicious%E3%81%AE%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB-1

ん〜、まあ、とくにこの辺は問題ないかなー。というか、Mojoliciousというのがそもそもどういうものなのか基本的にわかっていなくて、かつぼくは別途で、ドットインストール経由でVagrant一生懸命入れたりしたんですが、それとの違いや同じところってどういうところなんだろう、とかの課題は自分なりにあるのですが、その辺はまだ時期尚早かな、とかもあって。
あえて問題的にいうと、今、

$ mojo generate lite_app Sample

って書いてあるところが、
https://github.com/perl-entrance-org/workshop-2013-05/blob/master/slide.md#%E5%8B%95%E4%BD%9C%E7%A2%BA%E8%AA%8D
最初は、

$ mojo create lite_app Sample

って書いてあって、本講を家でリアルタイムに自習している時にだいぶハマったりしたんですけど(笑)、その時は参加者の方のTwitterで「createじゃなくてgenerate」と書いてくださっている方がいて、おかげでその段階からハマりすぎを回避することはできたのですが。
※ちなみにそのTwitterレポートしてくださったのはいつも参考にしていますこちらのブログの方です。ありがとうございます。
http://m-shige1979.hatenablog.com/entry/2013/12/08/223719

あとはまあ・・「morbo」はモルボかマーボか、という話も出ていましたが、その場の流れ的には「モルボ」が優勢でしたが、「モーボ」派も何気に多かったようですね。ある程度統一されてほしいですが・・

では次。mapとgrepの話。
https://github.com/perl-entrance-org/workshop-2013-05/blob/master/slide.md#map-%E3%81%A8-grep

練習問題があります。今日はここまでやりましょう。というか、このままこの場で自分で解いてみて、それに対する校長の回答が動画で残ってるはずなので、次回の更新でそれと自分の回答との違いを記す、という流れにしましょう。今決めました。

  • 練習問題
my @files = qw/papix.pl moznion.pm macopy.py boolfool.vim/;

上記の配列を引数にして, 拡張子の後ろに .bak を付け足す map_bak 関数と, 末尾(拡張子)が pl, pm であるものを抜き出す grep_pl_and_pm を作成してください

はい。ええと、じゃあ解きます。今!リハビリも兼ねて。
こんなでどうでしょうか。

#!/usr/bin/env perl
use strict;
use warnings;

my @files = qw/papix.pl moznion.pm macopy.py boolfool.vim/;

sub maps {
    my @array = @_;
    for my $array (@array) {
        return $array.".bak";
    }
}

sub greps {
    my @array2 = @_;
    for my $array2 (@array2) {
        if ($array2 =~ /p[ml]$/) {
            return $array2;
        }
    }

}

print maps (@files)."\n";
print greps (@files)."\n";

実行!!

papix.pl.bak
papix.pl

あれ・・papixさんしか出てきませんね・・かなりナマってるなこりゃ。ああ、というかmapもgrepも使ってなかった・・(ひどい。)ちょっと直します。というかどっちも忘れてる・・一旦資料見直して・・ああ、そうか、その書式で対処して、ナミ括弧使って・・なるほど。じゃあこれで・・!!

#!/usr/bin/env perl
use strict;
use warnings;

my @files = qw/papix.pl moznion.pm macopy.py boolfool.vim/;

sub maps {
    my @array1 = @_;
    my @result1 = map {$_ . ".bak"} @array1;
        return "@result1";
}

sub greps {
    my @array2 = @_;
    my @result2 = grep {$_ =~ /p[lm]$/} @array2;
        return "@result2";
}

print maps (@files)."\n";
print greps (@files)."\n";

実行!!

papix.pl.bak moznion.pm.bak macopy.py.bak boolfool.vim.bak
papix.pl moznion.pm

ん〜、よし! 何とかなってる!
まあ、いろいろ野暮ったい気はするので次回かなりリファクタリングされるものと思いますが、そして今、実際に自分でiPhoneで撮った動画チェックしたらだいぶ変わりそうなので、お楽しみになさってください・・

ああそういえば、今日仕事の合間にひさしぶりにyanchaを眺めたら、papixさんがぼくの以前の記事を読んでくださったらしく、動画のことを触れておられてちょっと嬉しかったですね・・どのような展開になるかわからないですが、ぼくに出来ることがあれば協力しますのでいつでもお知らせください!

以上です!!