第2回 #perl入学式in東京 に参加した話

id:papixが主催するPerl入学式in東京#2に参加した。会場は弊社。

今回は標準入力とか配列、for文などカジュアルな内容だったけど、新たに知ったことが多くてびっくりした。
例えば、三項演算子は初めて書いたし、

$result = abs($ans - $input) <= 5 ? "near" : "NG";

あとfor文の課題を書いてる時に制御変数を使う使わないでサポーターの人たちが話しているのを聞いて勉強になった。
後者については、僕は最初に

for(1..100){
         push @array, $_;
}

って特殊変数を使って書いてて、隣の人と話す過程で

for my $tmp (1..100){
         push @array, $tmp;
}

に書き換えたのを見たゆーすけべーさんに「$tmp」は良くないと言われて、色々質問していたらサポーターの人たちが議論した流れ。
ポイントは、

  • 特殊変数は使わないほうがいい
  • 可読性が第一。他人や半年後の自分が一目で理解できるように書くべき
  • 今と半年後で、特殊変数を使うスタイルが同じとは限らない
  • 制御変数名は$number。$numではない。(それと僕は最初に$tmpを使っていたけど、スワップみたいなtemporaryな時でも$tempを使うべき)

それと、「Perlの多様な書き方はテストを書くことで個人差を軽減する」というのがテストの目的というかテスト文化の根底にあると思っていたいんだけど、あくまでテストは出力を見るただそれだけで、コードをどう書いても良いという事ではないと言われた。
実装を見た時に理解できないと意味が無いし、その通りだなと思う。
リーダブルコードを読まなければと痛感した。

あと、ゆーすけべーさんからCPANの歩き方を教えてもらった。

  1. search.cpan.orgで何かモジュールを検索。Plackとか
  2. モジュール一覧?のページに行ってBrowsをクリック
  3. Indexが表示されて、eg/に使い方の例、lib/に本体があるので読む

ソースコードを読むことに抵抗があるかもしれないけど、今分からなければ後で読めばいいので、とりあえず読むことが大切」と言われた。確かに今までコードを読むことを避けていたと思うので、まずは今読もうと思う。
あとid:papixによるとplenvのperl版がとても良いらしいのでこれも読む。

_人人人人人_
> 懇親会 <
 ̄Y^Y^Y^Y ̄

僕の研修がちょうど昨日終わってこれからどう目標を立てて勉強していこう的な事を相談した。

  1. Perlの学習法

基本的には何かを作るという事に尽きるようだ。
例としてクローラ。FurlやAnyEvent使うし正規表現書きまくるし、相手に迷惑をかけないためにネットワーク勉強するし。
図書館事件には注意。

  1. 今後のスキルの伸ばし方

YAPCMySQL Casualでエッジの効いた発表をするような本物のフルスタックエンジニアを目指すには、まずは一つに特化するべき。
深く探求したものを持つと、横(他の技術)に広げやすい。
とはいえ、3年くらいは様々な仕事を体験して、それから特化していくというのが大体らしいので、今は仕事を頑張る。
仕事で使っている技術をプライベートで使って何か作り、仕事にフィードバックする方法もある。

それと、LingerやIRCがカジュアルじゃないし、perl初心者が気軽に話せる場所がネットにあってもいいと思った。

_人人人人_
> 感想 <
 ̄Y^Y^Y ̄

ここ1ヶ月くらい研修でPerlを書いていたけど、それでも今回の入学式で新たに得た知識がたくさんあった。
単なるtipsだけではなく、Perlの思想や歩き方など、本には書いてない内容を集中的に学べるので、新人PGや学生はどんどん参加するべき。

それと、今回は島ごとにコードレビューが活発に行われていたが、それがとても良かった。
相手がどう書いているのか、自分の書き方がどう思われるのかを聞くことができる貴重な機会が沢山生まれる。

もちろん全然こわくなかった!
そしてゆーすけべーさんが来たのはびっくりした。
懇親会ではお話ができなかったので、次はボケての話とかを聞きたい。

最後になったけど、主催のid:papix、サポーターの方々、ゆーすけべーさん、本当にありがとうございました!
これからPerlの中核にどんどん入っていくみたいだし、今後も参加します!