nDiki : 初めてのPerl 第3版

2006年4月18日 (火)

リャマ本を Perl トレーニングコース用ブックに選定

初めてのPerl 第3版

社内での Perl トレーニングコースを実施するにあたり教材選びを(少しだけ)した結果、今回は「初めてのPerl 第3版」を選ぶことにした。

Perl だけでなくプログラミング自体も初学者である人も対象とする勉強会になる予定なので、難易度はこれで丁度いいんじゃないだろうかと。 いや、といっても実は自分は全く読んだことがなくて練習問題をぱらぱら見たのと Web 上での書評を見た範囲での評価であるが。

今週金曜日に最初の勉強会を開催予定。 どんな雰囲気になるのか、全く読めないのでそういう意味でも楽しみ。

[ コンピュータ書籍 ]

[ 4月18日全て ]

2006年4月21日 (金)

第1回 社内 Perl 勉強会

この間教材として選定した「初めてのPerl 第3版」を使って第1回目の社内 Perl 勉強会を実施した。

プログラミングのクラスなんて大学(および TA)以来なので、進め方は手探りである。 まずは以下の様にしてみた。

目的

Perl プログラミング、および一般的なプログラミング・開発のスキルアップを目指す。

進め方

  • 私が進行役。
  • 自由参加 (私の指定プロジェクトメンバは必須)。プログラマでも、コンテンツデザイナーでも。
  • 書籍「初めての Perl 第3版」を教材とする。
    • 本は社内に1冊ある。ケンカしないでうまく回して読むように。
  • 1週間に1章ずつ進める (最初の回は1・2章)。
  • 各自事前に独習すること。業務の支障にならない範囲でうまく進めること。
  • 章末の練習問題を課題とし、勉強会の前に解答を作成してみること (書籍末に回答があるが見ないようにすること)。
  • 独習の上でわからない点は適宜、誰かに質問してできるだけ解決をはかること。

勉強会

  • 毎週金曜日に勉強会を 16:00 - 17:00 で開催。
  • 練習問題の解答ピアレビューを中心に行う。その場で本読みはしない。
  • 課題がプログラムの場合は、プリントアウトして持参すること (あまりに長い場合はのぞく)。
  • 参加希望者は事前に 社内 WikiPage に、参加意思を表明すること。
  • 練習問題別に、チェック項目や補足情報を追加した資料を開始時に配付。

実施

第1回は私を含めて6人による勉強会となった。

プログラミングを学ぶのはやはり実践が一番であるので、事前に練習問題に取り組むというスタイルにしてみた。勉強会では他人のコードを見たり意見交換したりすることで理解を深め新しい発見ができればと考えている。

皆それぞれの業務を抱えているので、忙がしい人については事前の課題取り組みについては厳しのではとの不安もあったが、初級者・中級者にかかわらず全員準備してきていた。 びっくりするとともに嬉しかった。 参加者は皆それぞれチャレンジ心を持ち、何かを得ようとという熱意があるようで素晴しい限りである。

今回は練習問題も簡単だということもあり、全員解答できたようである。 今回気がついた点:

  • プログラムのプリントアウトについては以下のようにするのが望ましい。
    • プログラム毎にプリントアウトを分ける (1枚に複数のプログラムを掲載しているとレビューしにくい)。
    • フォントは適度な大きさで (小さいと見づらい)。
    • 今後プログラムが長くなってきた時のために、行番号を入れるのが望ましい。
    • 可能ならばプリティプリンティグを (皆にツールを紹介する必要あり)。
    • 今回は皆1セットづつしかプリントアウトしてこなかったが、これだと皆でレビューしにくい。人数分プリントアウトしてしまった方が効果的ではないだろうか。他人のプログラムで興味深いものは持ち帰りたいし。その場合はプログラムの先頭にコメントで問題番号と作成者を書いてもらうのが良いだろう。
  • そういえば書籍末の正解の確認をしなかった。今後問題が難しくなってきたら確認した方がいいかもしれない。
  • 教材の本は予算で買った1冊とスタッフ私物の1冊で現在2冊。ちょっと足りないかな。もう1冊ぐらいあった方が良いかもしれない。

1時間の予定であったが10分オーバーで70分。 時間的にはこれぐらいか。90分ぐらいあった方がいいのかもしれないけれど、業務とのかねあいもあるし。

本社

そういえば今回は東京オフィスで希望者向けのものだったので特に本社には連絡しなかったんだけれど、1名ここ(nDiki)の記事を見て羨しがっていたらしい。

リモートでの参加までは考えていなかったので今回は準備できなかったけれど、希望があるならなんか方法を考えていきたい。

また来週

さて、本格的にプログラミングっぽくなってくる次回からが楽しみである。 目指せ総 Perl プログラマ化。

[ 4月21日全て ]

2006年4月28日 (金)

第2回 社内 Perl 勉強会

リャマ本を使用した社内 Perl 勉強会の2回目を開催。 今回は7人。直前に社長につかまって約20分遅れのスタート (スミマセン)。

進行方法はほぼ前回と同じで、事前に練習問題を解いておき、勉強会では互いにコードレビューをしながら進行役の私がポイントを説明していく形式。

今日は「初めてのPerl 第3版」第3章が範囲で、リストと配列がテーマ。

今回の変更点と反省点

  • 解答のソースコードは全員 perltidy で色付き HTML に変換してプリントアウトして持ってくるようにしてもらった。前回より見易さアップ。
  • 前回は1人1解答につき1枚プリントして持参してもらったが、今回は各自出席者分プリントアウトし持ち寄ってもらうことにした。これによって、それぞれ配られたプログラムをゆっくりレビューできる。書き込みもできるし、持ち帰ることもできるので効果あり。
    • 反省点はプリントの枚数が多くなって混乱したこと(「第2問の○○さんの解答プリントはどれだっけ?」)。次回は、冒頭で全員のものを集めて問題番号ごとに整理してステープラーでまとめるという形にしよう。
  • ソースコードの先頭にコメントとして問題番号と作成者名を入れてもらうようにしたのだが、それだけだと誰のものか区別しにくいとの意見。
    • perltidy のオプションで HTML 化した時にタイトルをいじれればいいのだが、そのような機能はなさそうだ。
    • それこそ誰か、練習として H1 要素を書き換えるスクリプトとか書いてくれないかなぁ。

今のところ、全員ついてこれている様子。 スカラーコンテキストとリストコンテキストは、Perl 初心者にとってとっつきにくい部分の一つだと思うので、これが理解できれば結構いけそうな気もする。

今回はトータル80分ぐらい。7人だと1時間半ぐらい確保しておいた方がいいかもしれないな。

次回はゴールデンウィークを挟んで2週間後。

[ 4月28日全て ]

2006年5月12日 (金)

第3回 社内 Perl 勉強会

リャマ本を使用した社内 Perl 勉強会の3回目を開催。今回も前回と同じメンバで7人。

今日は「初めてのPerl 第3版」第4章が範囲で、サブルーチンがテーマ。 いや、実際にはグローバル変数とレキシカル変数の話の方がメインかもしれない。

今回の反省点

課題ベースだとシンプルなプログラムなので「グローバル変数よりも、レキシカル変数を積極的に使った方が良い」という点についてうまく伝えられたという感蝕がなかった。 この辺りは自身でより大きなプログラムを書いた時に、各人が体感していくしかないのかな。

それから、今回は問題数が2問と少なめ。ある程度 Perl を使い慣れている参加者もいるので、perlfaq7 サンプルコードを抜粋するなどしてコラム的に、追加ネタを用意してみた。

グローバル変数/レキシカル変数/ダイナミック変数の話はいいレベルだったが、クロージャーとレキシカル変数のからみの話はちょっと難易度が高めだったかもと反省。

各自の宿題のレビューを終えたところで結局、1時間弱。 最後のコラムを含めて1時間15分。

[ 5月12日全て ]

2006年5月22日 (月)

第4回 社内 Perl 勉強会

リャマ本を使用した社内 Perl 勉強会の4回目を開催。今回も前回と同じメンバで7人。 定例金曜日開催だったのだが、先週の金曜日は打ち合わせが入ってしまったので今日に開催日を移動した。

今日は「初めてのPerl 第3版」第5章が範囲。 今回はハッシュがテーマ。 Perl において配列/リストと双璧をなす重要なデータ型だ。

Perl を活用していく上で使いこなす必要があるデータ型だが、参加者は特に問題なく使い始めている様子でちょっと拍子抜け。

今回の反省点

応用としてハッシュと配列の違い(スピード・メモリ効率)や使い分けのポイント、またハッシュの実装(ハッシュ関数、開番地法、チェイン法)について概説したのだが、ちょっと準備不足だったかと反省。 やはり図などを用意しておかないと、ホワイトボードだけでは説明しづらい。

また4回と回を重ねてきて皆慣れてきたこともあり、刺激が足りなくなって感がある。 ダレないで継続していけるように、そろそろ一工夫が必要そうだ。

今回はトータル1時間強。

[ 5月22日全て ]

2006年5月29日 (月)

第5回 社内 Perl 勉強会

リャマ本を使用した社内 Perl 勉強会の5回目を開催。 今回は一人病欠で6人。 今回も先週の金曜日に都合がつかなかったので、月曜日の開催。

今日は「初めてのPerl 第3版」第6章「入出力の基本」が範囲。 この章で、ダイヤモンド演算子 <> を含む標準入出力の基本がほぼおさえられる。

@ 今回の反省点

標準入出力を使うようにしておけば、リダイレクトやパイプを駆使することで簡単なプログラムを組み合わせて超便利。 その辺りを伝えたいところであるが、Windows ユーザにはちょとうまく良さを伝えきれなかった感じで反省。

今回から one liner について触れていこうと思う。 Perl のコマンドラインオプション -ne や -pe などを使いこなせるようになるとこれまた便利なので、ぜひ馴染んでいただきたい。

しかしコマンド プロンプトだとコマンドライン引数のクォートの仕方が Bash 等と違うので、環境別にサンプルを用意しなければならにのがちょっとネックである。 今回は時間の関係で Bash 上での例しか示せなかった。 次回からはもう少しきちんとサンプルを用意したい。

今回はほぼ1時間丁度ぐらい。

[ 5月29日全て ]

2006年6月5日 (月)

第6回 社内 Perl 勉強会

リャマ本を使用した社内 Perl 勉強会の6回目を開催。 今日は7人。

今日は「初めてのPerl 第3版」第7章「正規表現の基本」が範囲。

今回は5問のうち最初の3問は正規表現によるパターンを考える形式。

今回の反省点

正規表現というと、Perl 初心者がひっかかる一つの鬼門である(少なくとも私のまわりでは正規表現でビビる人が多かった)。 それを承知の上かリャマ本では章を分けて簡単なところから少しづつ取り組むようになっていて、アレルギー反応がおこりにくいようになっている感じだ。

実際、今回の勉強会でも特につまづいている人はいなかったようだ。

今回は追加ネタとして、正規表現と正則言語と有限オートマトンの話をちょっとだけしたのだけれど、反応はあまり良くなかった。

本当はこういう基礎的な部分に興味を持ってもらうと、深みのある(?)プログラムが書けるのだけれどなかなかそこまではいかないかな。

社内勉強会としては、追加ネタは実用的な方が良いのかもしれない。

今回は1時間5分。

[ 6月5日全て ]

2006年6月12日 (月)

第7回 社内 Perl 勉強会

リャマ本を使用した社内 Perl 勉強会の7回目を開催。今日は6人。

今日は「初めてのPerl 第3版」第8章「正規表現の詳細」が範囲。

今回はプログラムを書く問題は無くて、パターンを考えたり逆に与えられたたパターンが何にマッチするのかを考える問題。 「本書の中で最も難易度が高くなっています」と書かれている。

今回の反省点

さすがに今回は正答率が低かった。 問題の意図が読み取りにくいというのもあって、迷う問題も多かったようだ。 プログラミング言語のトークン関連のネタなどはプログラミング経験がある程度ないとぱっとわからないかもしれない。

時間の関係で自分もあまり準備ができなくて、不完全な解答だったのが悔まれる。

今日は追加ネタなしで、トータル50分。

[ 6月12日全て ]

2006年6月30日 (金)

第8回 社内 Perl 勉強会

リャマ本を使用した社内 Perl 勉強会の8回目を開催。今日は5人。

今日は「初めてのPerl 第3版」第9章「正規表現の利用方法」が範囲。

展示会などがあった関係で、6月19日以来しばらく間が空いての開催。

今回の反省点

ぱっと見、面白そうな練習問題に見えたがやってみると意外とあっさり風味であった。

最後の問題は、文字列の出現回数を数えるという Perl ではイディオム的なコードを欠く問題。

ハッシュを使うのが定番だが、配列に入れてソートし前から反復する(sort | uniq -c 的な)コードを書いている人が2人いて興味深かった。 たしかに C などだったらそういうコードを書いてたかもしれないな。

今回で8回目を終了。

練習問題にもう少しチャレンジングな問題があった方がいいなと思う今日この頃。

[ 6月30日全て ]

2006年7月10日 (月)

第9回 社内 Perl 勉強会

リャマ本を使用した社内 Perl 勉強会の9回目を開催。

今日は「初めてのPerl 第3版」第10章「さまざまな制御構造」が範囲。

今回の反省点

問題自体はシンプル。 Perl 特有の制御文を駆使するのも手だが、逆にこういう時は素直に書いた方がわかりやすい。

[ 7月10日全て ]

About

Naney Naneymx

Naney (なにい) です。株式会社MIXIで SNS 事業の部長をしています。

※本サイトの内容は個人的見解であり所属組織とは関係ありません。

Process Time: 0.044671s / load averages: 0.34, 0.33, 0.33