Hatena::ブログ(Diary)

Islands in the byte stream

2011-03-27

OSDC.TW 2011でLTしました

OSDC.TWXslate の布教をしてきました。

三行で纏めると

  • Xslate最強
  • インストールは簡単
  • コマンドラインで試すのも簡単

です!

2011-03-23

WindowsでL5を使ってみる

Web+DB PressClojureベースのプレゼンテーションツールであるL5: Yet Another Presentation Tool for Lispersを知ったのでちょっと使ってみた。コードとデータが同一フォーマットであるLispはプレゼンテーションツールに適しているかもしれないと思ったからである。

まずWindowsでClojureをインストールする。これはClojure Boxを使えば一発でインストールできる*1

次に、L5をインストールする。以下から最新版*2をダウンロードし、適当なパスに置く。

あとはコンソールでjava -jar L5-*.jarとして起動するか、L5-*.jarをダブルクリックすればL5が起動する。

「Create」ボタンで新しくプレゼンテーションを作れ、最小限のテンプレートは最初から用意されている。ただしClojure Box付属のEmacsでは日本語の表示に難があるので、日本語のプレゼンを作りたいなら編集は他のエディタで行ったほうがいいかもれない。

なお、プレゼンテーションはカーソルキーの左右でページの移動ができる。また、rキーでページを固定したままリロードとなるので画面を見ながら編集することができる。また、eでPDFとして保存することもできる。

*1:もちろんJavaも必要だが、きょうびのWindowsにはだいたいJREが入っているので特に問題はないと思う。

*2:この記事を書いている時点ではL5-1.2.1.jar

2011-03-22

OSDC.TW 2011 に行ってきます

去年も行きましたが、今年もShibuya.pmPerl hacker達といっしょにOSDC.TWに行って発表してきます*1。ネタは去年と同じXslateなので代わり映えしません。しかしながら、当時は本当に書き始めたばかり*2でまだ海のものとも山のものともつかなかったものが、この一年でだいぶ開発が進みどこに出しても恥ずかしくない仕上がりになったのでいいでしょう。

ただOSDC.TWはPerlに特化しているわけではないので、余裕があれば他の言語のテンプレートエンジンにも少し触れたいですね!

*1:といっても私はLTですが。

*2:gitのログによれば、最初のコミットは4/16日でした。OSDC.TWが4/24-25なので10日くらいしか経っていなかったのですね!

2011-03-21

忙しい人のための「新卒準備カレンダー 2011春」

新卒準備カレンダー 2011春のまとめです。

メッセージや哲学、熱い想いなどのまとめにくいものはのぞき、具体的な行動に絞ってまとめてみました*1。これは、未来を変えるための具体的な行動をとれるようにするためです。

いまのところ16日目(@kuenishiさん)までです。エントリを読み返して追加することもあるかもしれません。

失敗を恐れずやってみる

  • "遊びは「失敗しても怒られない」活動です。また、遊びといっても、子供は時間を忘れるほど、真剣に遊びます。結果として多くのことをトライ&エラーして身につけます" (@shibukawa)
  • "「あとで」「そのうち」「何かネタが出来たら」といって後回しにしていては何もできない。動けない。見当違いなブログ記事書いてDISられたり、LTでスベったりしてもいいから とにかく何かやってみる" (@sugyan)
  • "会社の会議で発言しろ - とにかく発言をしないと、チャンスの機会すら与えられません。発言が減ることは、特に新社会人にとっては百害あって一利なし、と思って良いでしょう。トライもエラーもないなら、成長する機会そのものが失われます" (@gothedistance)

多くの分野を学ぶ / 最新情報を吸収する

  • "知識のある人ほど、新しい知識の吸収が早くなります。差が付くとどんどん広がっていきます" (@shibukawa)
  • "新しい技術やトレンド、自分の興味のあることなどについて、最新の情報を広く集めて自分に入れ続けることは、新しいアイデアのヒントになったり、自分の仕事を助けてくれたり、会話のきっかけになったりと、いろいろな意味でいいことが多いです" (@kei51)
  • "プログラマは常に新しい事を覚えなければならない職業です。この職業についてる限りそれがずっと続きます" / "いきなりエベレストに登ろうとしても無理なようにチマチマ経験を重ねることが大事です" (@mopemope)
  • "古い技術を学びましょう - IT業界は新しい技術がどんどん出てくるものですが、実は歴史がちゃんとあって、その文脈で新しい技術をとらえると案外簡単だったりします" (@kuenishi)

興味のある分野を深める / 自分のブランドを確立する

  • "自分のブランドを作ろう - 自分で誇れるものがあれば、仕事も楽しくなりますし、自信も出てきます。執筆や、勉強会・セミナーの講演の依頼も来て「人の役に立っている」「自分が貢献している」という感覚を覚えられるようになってくるでしょう" (@shibukawa)
  • "思いついたことを ... 様々なツールを使って自分が興味を持っていることを集めてみる。すると、自分の興味がある分野というのが見えてきたり、何をすべきかわかったりしますよね" (@ymotongpoo)
  • "『自分はコーディングは全然大したことないけど、MySQLに関係する事柄だったら「出過ぎた杭」になれるかも知れない。』半年くらいMySQLを触ってみてそう感じました" / "ひとつ「出過ぎる」と、他にも「出過ぎてくる」" (@riywo)
  • "分野を限定しさえすれば「このコミュニティ内でこの分野では自分が一番」という卓越性を作ることは難しくありません" (@nishio)

コミュニティに参加する / 学んだことを外に出す

  • "強い魔法を使えるようになるには - 強い魔法を使える人とたくさん交流することです。ですが失敗しがちなのは、勉強会に参加して、話を聞くだけで終わってしまうことです" / "社外の同職種の知り合いを作ると、自分の周りの環境が客観的に見えてきます" (@shibukawa)
  • "ある程度興味ある分野が見えてきたとします。そうしたら、そのコミュニティに突入してしまいましょう。Twitterでフォローしまくったり、勉強会に参加してみたり" / "入社2年目くらいから積極的に様々なイベントの会場提供に関わりました" (@ymotongpoo)
  • "そしてこうした経験を外にアウトプットし始めたら、もっといろんな経験ができる様になりました。MySQL Casualで喋らせて頂いたり、Perl界隈ではスーパーハッカーな方々に幸運にも名前を覚えて頂いてお話させて頂けたり、qpstudyのようなインフラエンジニアのコミュニティでも名前を覚えて頂いて色んな変な方とお話させて頂けたり" (@riywo)
  • "社内外を問わず、自分の職場以外の人たちと交流を持つことをおすすめします。Pythonハッカソンやカーネル読書会のような勉強会にいくもよし、趣味の集まりに参加するもよし、人に直接会うのがしんどいなら、オンラインのコミュニティに参加してみるもよし。職場以外の人との関わりを持つということは、自分のネットワークを広げるだけでなく、意外といろいろな発見やチャンスがあったりするものです。" (@kei51)
  • "普段から外の世界にでて刺激を受けよう - 「勉強会に勉強しに来るヤツは素人」という言葉があります。そこで人々とコミュニケーションを取り、場の空気を全身で感じ取りましょう。その体験が今後の糧になるはずです。" (@takabow)
  • "とりあえずTwitterを始め気になるGeekをフォローし、今のブログを書き始めて日々の勉強記録をつけて、勉強会や技術者コミュニティに足を運んだり、LightningTalksで喋ってみたりしました。" (@sugyan)
  • "世の中では、毎週山のように勉強会やHackathonが開催されています。よく「勉強会って何も知らずに参加したらダメなんでしょ?」と聞かれますが、それは間違いです。多くの場合は、講師となる人がいて詳しくプレゼンしてくれるので、体一つ行けばOKです。" (@dddaisuke)
  • "他の資源と違って、知識は複製可能です。他の資源は人にあげると自分の手持ちが減りますが、知識だけは減りません。つまり与えれば与えるほど価値の総和が増えるのです" / "つまり知識の交換です。お互いに自分の持っている知識をコピーして与え合うことで、みんなで自分の価値を高め合う場、それが勉強会です" (@nishio)
  • "ブログ、twitterfacebook、コミュニティ。そういったものを駆使して欲しいと思います" / "僕はこんなコトに興味があるんだぜーっていうのを、もう1つの社会=ソーシャルメディアの中で発信してください。絶対、人生変わります" (@gothedistance)

記録をとる

  • "自分はやったことをとにかくコツコツとブログに書き続けています。最初はブログに書くのが大変かもしれませんが、自分に向けたメモのつもりで適当に書いていたら今の量になりました" (@ymotongpoo)
  • "どんなに素晴らしい体験をしても、それって時間と共に風化するんですよね" / "僕は些細なことであっても「記録」を取ります。" / "写真の記録、イベントのメモ、感情を綴った日記、twitterのつぶやき、僕はこれらを見返すことで、自分の気持ちを風化させないようにしています" (@takabow)
  • "ブログには自分の足跡を書きましょう。特にITならば環境構築したメモやライブラリと格闘したメモ等を書いておくと、未来の自分がそれらに助けられます" (@gothedistance)

*1:したがって、とりあげていないエントリについて価値がないと考えているわけではありません。異なる切り口でまとめを作ればまったく違うものになることでしょう。

2011-03-18

lib::xi - installs missing libraries on demand

gistなどで公開されているPerlスクリプトを実行する際、モジュールが足りないことがよくあります。そういう場合はCan't locate Foo.pm ...というエラーメッセージを見ながらモジュールをインストールするわけですが、決まりきった作業にうんざりしたので自動的にそれをするモジュールを書きました*1

`perl -Mlib::xi script.pl`とするだけで、足りないモジュールをcpanmで適当にインストールしてくれます。

-Mlib::xi=extlibとすれば既存の環境を壊すことなくlocal::lib的にextlib/にインストールして実行できますし、-Mlib::xi=-L,extlib,-qなどとしてcpanmにオプションを渡すこともできます。

これで退屈なインストール作業をしなくてすむはずです。

(追記#1)

cho45さんが同様のモジュールを書いていたようです。

自動CPAN祭 AutoInstall.pm

(追記#2)

xiはクロシィまたはクロッシィと呼んでください。

*1:たしか類似モジュールがあったはずですが、名前が思い出せないのとcpanm/local::libには対応していないだろうということですスクラッチから書き起しました。

2011-03-17

Xslate 1.1000 released!

リリースしました。中間コードのバージョンが上がっているため、このバージョンを実行すると今まで使用していたテンプレートのキャッシュが破棄されます。

主な変更点は以下の2つです。

  • ループ制御文(lastとnext)が追加された
  • for-else構文がサポートされた

ループ制御文はPerlのものと同じですが、ラベルはサポートしていません。

例:

#!perl -w
use strict;
use Text::Xslate;

my $tx = Text::Xslate->new();
print $tx->render_string(<<'TX');
: for ['foo', 'bar', 'baz'] -> $item {
  : next if $item == 'bar';
  * <: $item :>
: }
TX
__END__

実行結果:

  * foo
  * baz

for-else構文は、forループの対象となる配列が空だったときにかぎり実行されるelseブロックを受け取るものです。

例:

#!perl -w
use strict;
use Text::Xslate;

my $tx = Text::Xslate->new();
print $tx->render_string(<<'TX');
: for [] -> $item {
  * <: $item :>
: }
: else {
  (empty)
: }
TX
__END__

実行結果:

  (empty)

この他、pure Perlエンジンの変更などの修正やバグフィクスがいくつか入っています。

いずれも非互換な修正ではありませんが、問題があればご報告ください。

Enjoy Xslate!

2011-03-14

IT業界を目指す大学生へ

新卒準備カレンダー 2011春という企画のエントリです。本来であれば3/11日の投稿でしたが、東日本大震災があったため本日の投稿となりました。

東日本大震災を目の当たりにして衝撃を受けつつも、身の回りでは困難があるわけでもないので何もしないのがもどかしく、しかし実のところ何もできることはなく、Twitterを眺める、NHKを眺める、コーディングするなどして過ごしています。しかし、電力不足等の懸念はあるものの、春からは社会人になることは依然として明らかです。であれば、今は粛々と日常生活を送るしかありません。そういう訳で、平常モードでポストします。

お前誰よ?

@と申します。この春からDeNAで働くPerlプログラマです。Perl好きが高じてPerl仮想マシンをpure Perlで実装したりしたことがあります*1Shibuya.pmやYAPC::Asiaでスピーカーとして参加したり、自作ライブラリについてWeb+DB Press誌(vol.59)に寄稿したりもしてます。

その他、私的な経歴は自己紹介と過去の話に書きました。

新卒準備カレンダーを読んで

新卒準備カレンダーにはひと通り目を通しました。特に一日目の渋川さんのエントリは、すばらしいものなので一読をお勧めします。それ意外の方々も皆さんほんとうに凄い方ばかりで、励みになります。ですが、逆に凄すぎて自分とは縁のない雲の上の世界のことだと思ってしまいませんか。とりあえずやってみようとか自分に限界を作らないとかいわれても、それじゃあ具体的には何をすればいいのかと。かくしてなんとなくその気になるが行動には至らず未来は何も変わらない…ということになりかねません。しかしそれではもったいない!そこで、このエントリでは私が大学在学中の話を書きます。

ヘタレ学生がYAPC::Asiaのスピーカーになるまで

学生なのにスピーカーなんてすごい!と思われるかも知れませんが、これ自体はそれほどすごいことだとは思いません。実際、私は特に発表が上手いわけでもなく、いろいろな機会を頂いたのも学生補正がついていたことは否めないでしょう。なにせ私はプログラミングこそできますが、それ以外の点では -- 私に会った方はわかると思いますが -- ひどく内気で口下手で、基本的にはヘタレなのです。

実際、大学に入ったばかりの時は人前で話そうとすると手足は震えるわ頭は真っ白になるわで、これでは社会に出たときに大変なことになるぞ!と危機感を覚えたのでした。そこで、人前で話す・プレゼンする機会を積極的につくるようにしました。具体的にはまず大学の講義です。演習形式の講義はだいたい発表の機会があるのですが、複数人のグループで作業をするケースなどで敢えて発表役を買って出るなど、なるべく積極的に関わりました。

もちろん、大学の外にも機会はあります。他の方が勧めるように、IT系の(いわゆる)勉強会に発表者として参加することはその一つです。特にLTであれば参加の敷居も低いでしょう。LT考案者であるmjdの言葉のとおりです:

What are Lightning Talks?

失敗するんじゃないかと心配するかもしれません。5分のトークなら、準備も 簡単。もし失敗したとしても、すぐに終わるんだから気にすることはないんです。

私はShibuya.pmによく参加しました。最初にShibuya.pmメンバーの目を止まったのはちょっとした奇抜なアイデアを形にしたものがあった*2からなのですが、その後はtech talkのたびにLTをやらせてくれ!と言ってたいしてネタもないのに発表したものです。もっとも、このブログでPerlに関するエントリを書き続けていたのでまったくネタが無いということはなかったのですが。

さて、練習を重ねた甲斐あって、最近は人前に出ても震えたりはしません。緊張は相変わらずしますが、いろいろ考えながら話すことができるようになりました。ほとんどの人はここまで苦労しないとは思いますが、「普通にできる」ところまでは意外となんとかなるものです。

どうしても一歩踏み出す自信がないのなら、「自分を信じない」というライフハックを知っておくといいかもしれません。私はあまり自分に自信がないのですが、「自分に自信がない」ということを知っているので、その気になれば自分の自信の有無とは関係なく行動できますし、またそうしてきました。ユリウス・カエサルも以下のように言っています。

ユリウス・カエサル:

人間は、自分が信じたいと望むことを喜んで信じるものである*3

目の前にあるのに気付かない、あるいは自分のものではないと思ってしまう選択肢があったとき、本当はそれが最善のものかもしれません。そんなときは、敢えて自分が信じるものを捨てて突き進んでみるのも一つの手ではないかと思っています。

そんなこんなでいろいろあって2009年・2010年とYAPC::Asiaでも発表に至ったという感じです。

最後に、本カレンダーの三日目を書いた@riywo氏の言葉でこのエントリを終えたいと思います。

@riywo:

下を見て優越感を持つな。横を見て安心するな。上を見て絶望するな。

未来を変えるための勇気を持って行きましょう。

おわりに

東日本大震災で亡くなった方々のご冥福をお祈りします。

次は@さんの予定ですが、ポストできますでしょうか。

*1http://search.cpan.org/dist/Acme-Perl-VM/ - 言うまでもなく、実用性はありません!

*2Ruby.pmという、PerlからRubyを呼び出すモジュールです…が、残念ながらまともに動きません!

*3:libenter homines id quod volunt credunt / Men readily believe what they want to believe

2011-03-13

Parallel module testing in Perl

Twitterにて:

たしかあったはず*1と思って探してみると*2Test::Harness にHARNESS_OPTIONSというオプションがありました。以下のようにすると並列でテストで時間を大幅に短縮できます。

$ HARNESS_OPTIONS=j2 make test

実際、Xslateでこれを試してみるとテストの時間が2/3程度になりました*3。これはかなり効果があると考えていいでしょう。

ただし、モジュールが並列実行に対応してないケースがありえるので、すべてのケースで利用出来るわけではありません。すなわち、これはモジュールの作者が指定するのが望ましいオプションだと言えます。そして、Module::Install::TestTarget があればそれが簡単にできるのです。

# Makefile.PL
# ...

default_test_target
    env => { HARNESS_OPTIONS => 'j2' };
# module authorでのみ並列実行したい場合は
# if $Module::Install::AUTHOR などとする

# ...

これで余計なことを考えずにテスト時間が短縮されます。

*1:proveは-jオプションをサポートしていますが、今回のケースはそうではなくて、cpanmで入れるときに有効にしたいということでした。

*2:この種のコマンドラインアプリケーションはだいたい環境変数でオプションを渡せるようになっているため、かならずあるはずと思って探すと比較的簡単に見つけられます。

*3:Ubuntsu on VMWare Player の場合

2011-03-10

自己紹介と過去の話

新卒準備カレンダー 2011春に何か書くにあたって、まずは軽く自己紹介的な挨拶を書こう…と思ったら予想外に長い自分語りになってしまったので別途書き出しておきます。エンジニアとしてのスキルや活動については本編に書くので、ここではそれ以外のことを書きます。

現在の私

この3月で大学を卒業し、4月からはDeNAにエンジニアとして入社します。

プログラミングが大好きで、3年ほど前からShibuya.pmによく顔を出しています。最近の成果物としては、Perl用のテンプレートエンジンXslateです。これについてはWeb+DB Presss誌で解説の機会をいただき、「Xslate 次世代テンプレートエンジン」としてWebでも公開済みです。

ところで、私は今年29歳になります。しかし、大学院にいったわけでも二度目の大学というわけでもありません。これは大学入学が24歳のときと遅かったためです。私が大学を目指して動き始めたのは22歳のときです。それまではニートだったりフリーターだったりしていました。

22歳までのこと

22歳の私は、失意と絶望の果てに疲れきっていました。高校退学後にいくつかの進路を考えましたが、いずれも一生続けられるとは思えませんでした。一片の希望を求めて足掻きましたがそれも叶わず、世を恨み、家族を憎み、自分を呪う亡霊だったのです。

なぜそこまで落ちてしまったのか、その原因はひとつではありません。最初の躓きは7歳のときに起きた引っ越しと両親の離婚でした。ある日突然友達が一人もいなくなり、生活が何もかも変わるという現実を受けいれらませんでした。何年もの間いつかすべて元に戻る日が来ると信じ、それを心の支えにしていたのです。したがって新しい土地に馴染む必要はないと考えており、友人もあまり作りませんでした。私の心は故郷に留まっていたのです。

二度目の躓きは、幸せだったかつての状態に戻るという希望が潰え、これが現実なのだと諦めたときでしょう。ちょうど中学に入ったころです。小学校時代の現実拒否が影響したのか、単にもともと勉強嫌いなのか、成績はひどいものでしたし、学校行事は嫌なものばかりでした。そして私は学校に行かなくなります。このころの日常はまったく無為であり、外に出ることもめったにありませんでした。

その後も順調に躓き続けました。15歳くらいからは、なんとか軌道修正しようと足掻きはしたのです。中3の時は少し学校に行くようになりました。高校は底辺高校でしたが、一年間は頑張って通いました。高校をやめたあとは自営業をしていた実家の手伝い、SEを目指してプログラミングの勉強、定時制高校へ再入学、料理人を目指してレストランでバイトと、いくつかの試みはしました。

しかし、それらはすべて徒労に終わりました。挫折に次ぐ挫折で精神的にも疲弊してきました。先の見えない孤独、寂寥、辛苦。そういった苦しみを吐露できる友人もおらず、助けを差し伸べる人はいません。22歳の冬、もはや私に選択肢は何もないように思われました。

22歳から現在までのこと

そいういうわけで失意と絶望のどん底にいたのですが、22歳の冬に起きたある出来事をきっかけに希望を取り戻し、大学を目指すことにしたのです。このときの出来事はまだ書く気になれないので割愛しますが、その出来事を通じて知り合ったある友人が私に価値を感じ、それをはっきりとした言動で示してくれたことで、私は希望を得ました。たった一人でも自分を認めてくれる人がいるのいうのがどれほど嬉しかったか、言葉ではとても語れません。

そしてここに至って進学という選択肢があることに気付きました。君なら大学にだって行けるだろう、という言葉は最初は半信半疑でしたが、とりあえずやってみようと。そして高認を取って予備校に通い、受験し、合格しました。嬉しさよりもほっとしたことを覚えています。

こういう経緯なので大学に入ってからもいろいろ困難はあったのですが、今となってはいい思い出です。自分では解決できない問題がおきても、先に述べた友人の助言がありました。この友人には感謝の念が堪えません。学校の友人たちとの付き合いもそこそこうまくいきました。年齢差はありましたが、自分が気にしなければ意外と人も気にしないものです。

大学在学中には好きだったプログラミングを再開しました。以前SEを諦めたのは、IT業界はブラックであるという情報が多かったためです。その時の決断は、その時得られる情報を考えると間違ったものだったとは思いません。しかし、今はすべてがブラックではないということも知っています。そしてに何よりも、プログラミングが時間を忘れるほど楽しいことを再確認しました。そしてShibuya.pmとの出会いを経て、プログラマになるのが最適であると確信しました。

私は人に無限の可能性があるとは思いません。一人の人間が持っている選択肢はごく僅かしかないのです。しかし、存在する選択肢に気付かないことはありえます。22歳の中卒にとっての大学進学はまさに「存在していても気付かない」選択肢でした。これに気付いたおかげで、今、希望を持って明日を迎えることができます。

これからのこと

Shibuya.pm出会った頃から今までのこと、および未来への意気込みは「新卒準備カレンダー2011春」の記事として書く予定です。

俺達の戦いはまだ始まったばかりだ!

2011-03-01

「優れたPerlプログラマを見分ける27の質問」の日本語訳

(追記あり)

How to Identify a Good Perl Programmer (by chromatic) が面白かった*1ので、27の質問を訳してみました。chromatic氏によれば、いずれも単純明快な質問でPerlの哲学や特徴をよく現しており、優れたPerlプログラマであれば少なくとも80%は答えられるべきだそうです*2。あなたは全ての質問に答えられますか?

  1. Perl5において変数のシジル*3が示すものは何か
  2. 配列のアクセスする際の $items[$index]@items[$index] の違いは何か
  3. ==eq の違いは何か
  4. ハッシュをリストコンテキストで評価すると得られるものは何か
  5. Perlドキュメントからキーワードを検索するにはどのようにするのか
  6. Perl5における関数とメソッドの違いは何か
  7. Perl5が変数のメモリを再利用するのはいつか
  8. 変数のスコープがデフォルトでレキシカルであると保証するにはどのようにするのか
  9. モジュールからシンボルをインポートするにはどのようにするのか
  10. perlがモジュールのロードを敢行するディレクトリの操作はどのようにするのか
  11. Perl5のエラーメッセージの検索はどのようにするのか(発生するエラーメッセージに説明を加える方法を知っていればボーナスポイント)
  12. 配列を関数に渡したときに起きることは何か
  13. 複数の配列をそれぞれ区別して関数に渡すときにはどのようにするのか
  14. 呼び出された側呼び出した側*4から見た return;return undef; の違いは何か
  15. 標準的CPANディストリビューションではテストはどこに置かれるか
  16. 標準的CPANディストリビューションでテストを走らせるにはどのようにするのか
  17. CPANから新しいディストリビューションをインストールする際に使うコマンドはなにか
  18. 組み込み関数openを3引数形式で使うのは何故か
  19. openのようなシステムコールのエラーを検出(と報告)するにはどのようにするのか(エラーの検出と報告を自動的に有効にする方法を知っていればボーナスポイント)
  20. Perl5で例外を投げるにはどうするのか
  21. Perl5で例外を捕捉するにはどうするのか
  22. ファイルの読み込みにおけるforwhileの違いは何か
  23. メソッドと関数においてパラメータ*5を取り扱うにはどうしたらよいか
  24. my ($value) = @_; の変数を囲む括弧が意味するものは何か、またこの括弧を取り除くと何が起きるか
  25. new は組み込み関数ないしキーワードか
  26. コアライブラリやCPANモジュールのドキュメントを読むにはどのようにするのか
  27. ハッシュの値のみを取り出したい時はどのようにするのか

(追記)

誤解があってはいけないので、ここに元エントリの本文の訳を追記します。この質問リストは確かにPerl特有の知識を扱っています。しかし誤解しやすい文法やエラーハンドリングに関する実践、テストの作法、ライブラリの利用法やドキュメントの検索の仕方などがそれぞれの言語特有の知識なのは当然であり、どんな言語でも学ぶ必要のあることではないでしょうか。

それを「優れた Python プログラマを見分けるのに、「Pythonでは」という質問はあっても「Pythonならでは」の知識を問う質問は要らない。」と言い切ってしまうのは違和感があります。

How to Identify a Good Perl Programmer (by chromatic)

先日の記事Why You Can’t Hire Great Perl ProgrammersPerlコミュニティに対する呼びかけだった。我々はPerl初学者がそのスキルを伸ばしてコミュニティに参加してほしいと思っている。

何人かにコメントで指摘されたのは、先の記事は雇い主について触れていないということだ。確かに、大都会にある会社がたったの時給15ドルで凄腕のプログラマを得ようとするならば、それはとてつもなく大変なことだろう。

さらに、他にも暗に指摘された問題点がある。すなわち、よいプログラマを見分けるのは難しく、よいプログラマ自身だけがそれをできるということだ。それでもMicrosoftやGoogleの悪名高き面接選考ではこれが有効であり、自分が何を知っているか正確に把握できていない人々はその無知を晒すことになる。

あなたはおそらく時間や費用や無意味な採用のためだけのテクニックに頼りたくないのではないか。そして様々な理由から、有益で情報が多いと広く認められるPerlの資格試験はこの先も存在しないと思われる。そうであったとしても、よいPerl5プログラマを見分ける方法はある。それが、以下に示した質問のリストである。

(27 questions)

これらの中に奇抜な質問はひとつもない。すべて単純明快な回答があり、Perl5やその哲学、実践に対する理解を示すものだ。よいPerlプログラマなら答えられて然るべき質問はこれらだけではないが、もしこれらの中に簡単に答えられない質問があるならば、もっとPerlを学ぶ必要があるといっておこう。

むろん、あなたの仕事にとって必要な特殊スキルについては考慮すべきだが、あなたはその評価ができるはずだ。

あるいは、もしあなたがPerl5を学び始めるのだとすれば、このリストはそのスキルを測るのにも適している。もっとも、少し学んで実践すれば、上記の質問全てに答えられるようになるだろう。よいPerl5のテキストならば、すべての答えが得られると思う。私の書いた『Modern Perl』でもよい。

*1:via 優れたPerlプログラマを見分ける27の質問:濃縮還元オレンジニュース|gihyo.jp … 技術評論社

*2:日本でほとんど言及されることのない話題もいくつかありますが。

*3:冠詞、つまり$@%&*のこと

*4:on the caller side

*5:引数のこと