社内での Perl トレーニングコースを実施するにあたり教材選びを(少しだけ)した結果、今回は「初めてのPerl 第3版」を選ぶことにした。
Perl だけでなくプログラミング自体も初学者である人も対象とする勉強会になる予定なので、難易度はこれで丁度いいんじゃないだろうかと。 いや、といっても実は自分は全く読んだことがなくて練習問題をぱらぱら見たのと Web 上での書評を見た範囲での評価であるが。
今週金曜日に最初の勉強会を開催予定。 どんな雰囲気になるのか、全く読めないのでそういう意味でも楽しみ。
[ コンピュータ書籍 ]
この間教材として選定した「初めてのPerl 第3版」を使って第1回目の社内 Perl 勉強会を実施した。
プログラミングのクラスなんて大学(および TA)以来なので、進め方は手探りである。 まずは以下の様にしてみた。
Perl プログラミング、および一般的なプログラミング・開発のスキルアップを目指す。
第1回は私を含めて6人による勉強会となった。
プログラミングを学ぶのはやはり実践が一番であるので、事前に練習問題に取り組むというスタイルにしてみた。勉強会では他人のコードを見たり意見交換したりすることで理解を深め新しい発見ができればと考えている。
皆それぞれの業務を抱えているので、忙がしい人については事前の課題取り組みについては厳しのではとの不安もあったが、初級者・中級者にかかわらず全員準備してきていた。 びっくりするとともに嬉しかった。 参加者は皆それぞれチャレンジ心を持ち、何かを得ようとという熱意があるようで素晴しい限りである。
今回は練習問題も簡単だということもあり、全員解答できたようである。 今回気がついた点:
1時間の予定であったが10分オーバーで70分。 時間的にはこれぐらいか。90分ぐらいあった方がいいのかもしれないけれど、業務とのかねあいもあるし。
そういえば今回は東京オフィスで希望者向けのものだったので特に本社には連絡しなかったんだけれど、1名ここ(nDiki)の記事を見て羨しがっていたらしい。
リモートでの参加までは考えていなかったので今回は準備できなかったけれど、希望があるならなんか方法を考えていきたい。
さて、本格的にプログラミングっぽくなってくる次回からが楽しみである。 目指せ総 Perl プログラマ化。
リャマ本を使用した社内 Perl 勉強会の2回目を開催。 今回は7人。直前に社長につかまって約20分遅れのスタート (スミマセン)。
進行方法はほぼ前回と同じで、事前に練習問題を解いておき、勉強会では互いにコードレビューをしながら進行役の私がポイントを説明していく形式。
今日は「初めてのPerl 第3版」第3章が範囲で、リストと配列がテーマ。
今のところ、全員ついてこれている様子。 スカラーコンテキストとリストコンテキストは、Perl 初心者にとってとっつきにくい部分の一つだと思うので、これが理解できれば結構いけそうな気もする。
今回はトータル80分ぐらい。7人だと1時間半ぐらい確保しておいた方がいいかもしれないな。
次回はゴールデンウィークを挟んで2週間後。
リャマ本を使用した社内 Perl 勉強会の3回目を開催。今回も前回と同じメンバで7人。
今日は「初めてのPerl 第3版」第4章が範囲で、サブルーチンがテーマ。 いや、実際にはグローバル変数とレキシカル変数の話の方がメインかもしれない。
課題ベースだとシンプルなプログラムなので「グローバル変数よりも、レキシカル変数を積極的に使った方が良い」という点についてうまく伝えられたという感蝕がなかった。 この辺りは自身でより大きなプログラムを書いた時に、各人が体感していくしかないのかな。
それから、今回は問題数が2問と少なめ。ある程度 Perl を使い慣れている参加者もいるので、perlfaq7 サンプルコードを抜粋するなどしてコラム的に、追加ネタを用意してみた。
グローバル変数/レキシカル変数/ダイナミック変数の話はいいレベルだったが、クロージャーとレキシカル変数のからみの話はちょっと難易度が高めだったかもと反省。
各自の宿題のレビューを終えたところで結局、1時間弱。 最後のコラムを含めて1時間15分。
リャマ本を使用した社内 Perl 勉強会の4回目を開催。今回も前回と同じメンバで7人。 定例金曜日開催だったのだが、先週の金曜日は打ち合わせが入ってしまったので今日に開催日を移動した。
今日は「初めてのPerl 第3版」第5章が範囲。 今回はハッシュがテーマ。 Perl において配列/リストと双璧をなす重要なデータ型だ。
Perl を活用していく上で使いこなす必要があるデータ型だが、参加者は特に問題なく使い始めている様子でちょっと拍子抜け。
応用としてハッシュと配列の違い(スピード・メモリ効率)や使い分けのポイント、またハッシュの実装(ハッシュ関数、開番地法、チェイン法)について概説したのだが、ちょっと準備不足だったかと反省。 やはり図などを用意しておかないと、ホワイトボードだけでは説明しづらい。
また4回と回を重ねてきて皆慣れてきたこともあり、刺激が足りなくなって感がある。 ダレないで継続していけるように、そろそろ一工夫が必要そうだ。
今回はトータル1時間強。
リャマ本を使用した社内 Perl 勉強会の5回目を開催。 今回は一人病欠で6人。 今回も先週の金曜日に都合がつかなかったので、月曜日の開催。
今日は「初めてのPerl 第3版」第6章「入出力の基本」が範囲。 この章で、ダイヤモンド演算子 <> を含む標準入出力の基本がほぼおさえられる。
@ 今回の反省点
標準入出力を使うようにしておけば、リダイレクトやパイプを駆使することで簡単なプログラムを組み合わせて超便利。 その辺りを伝えたいところであるが、Windows ユーザにはちょとうまく良さを伝えきれなかった感じで反省。
今回から one liner について触れていこうと思う。 Perl のコマンドラインオプション -ne や -pe などを使いこなせるようになるとこれまた便利なので、ぜひ馴染んでいただきたい。
しかしコマンド プロンプトだとコマンドライン引数のクォートの仕方が Bash 等と違うので、環境別にサンプルを用意しなければならにのがちょっとネックである。 今回は時間の関係で Bash 上での例しか示せなかった。 次回からはもう少しきちんとサンプルを用意したい。
今回はほぼ1時間丁度ぐらい。
リャマ本を使用した社内 Perl 勉強会の6回目を開催。 今日は7人。
今日は「初めてのPerl 第3版」第7章「正規表現の基本」が範囲。
今回は5問のうち最初の3問は正規表現によるパターンを考える形式。
正規表現というと、Perl 初心者がひっかかる一つの鬼門である(少なくとも私のまわりでは正規表現でビビる人が多かった)。 それを承知の上かリャマ本では章を分けて簡単なところから少しづつ取り組むようになっていて、アレルギー反応がおこりにくいようになっている感じだ。
実際、今回の勉強会でも特につまづいている人はいなかったようだ。
今回は追加ネタとして、正規表現と正則言語と有限オートマトンの話をちょっとだけしたのだけれど、反応はあまり良くなかった。
本当はこういう基礎的な部分に興味を持ってもらうと、深みのある(?)プログラムが書けるのだけれどなかなかそこまではいかないかな。
社内勉強会としては、追加ネタは実用的な方が良いのかもしれない。
今回は1時間5分。
リャマ本を使用した社内 Perl 勉強会の7回目を開催。今日は6人。
今日は「初めてのPerl 第3版」第8章「正規表現の詳細」が範囲。
今回はプログラムを書く問題は無くて、パターンを考えたり逆に与えられたたパターンが何にマッチするのかを考える問題。 「本書の中で最も難易度が高くなっています」と書かれている。
さすがに今回は正答率が低かった。 問題の意図が読み取りにくいというのもあって、迷う問題も多かったようだ。 プログラミング言語のトークン関連のネタなどはプログラミング経験がある程度ないとぱっとわからないかもしれない。
時間の関係で自分もあまり準備ができなくて、不完全な解答だったのが悔まれる。
今日は追加ネタなしで、トータル50分。
リャマ本を使用した社内 Perl 勉強会の8回目を開催。今日は5人。
今日は「初めてのPerl 第3版」第9章「正規表現の利用方法」が範囲。
展示会などがあった関係で、6月19日以来しばらく間が空いての開催。
ぱっと見、面白そうな練習問題に見えたがやってみると意外とあっさり風味であった。
最後の問題は、文字列の出現回数を数えるという Perl ではイディオム的なコードを欠く問題。
ハッシュを使うのが定番だが、配列に入れてソートし前から反復する(sort | uniq -c 的な)コードを書いている人が2人いて興味深かった。 たしかに C などだったらそういうコードを書いてたかもしれないな。
今回で8回目を終了。
練習問題にもう少しチャレンジングな問題があった方がいいなと思う今日この頃。
リャマ本を使用した社内 Perl 勉強会の9回目を開催。
今日は「初めてのPerl 第3版」第10章「さまざまな制御構造」が範囲。
問題自体はシンプル。 Perl 特有の制御文を駆使するのも手だが、逆にこういう時は素直に書いた方がわかりやすい。
Naney (なにい) です。株式会社MIXIで SNS 事業の部長をしています。
※本サイトの内容は個人的見解であり所属組織とは関係ありません。