Perl Hackers Hub

第72回 初学者に伝えたい Perl学習の勘所 ―勉強会を10年運営して培ったノウハウ(2)

この記事を読むのに必要な時間:およそ 3 分

エラーが発生したときはどうすればよいか

自分が書いたプログラムが思ったとおり動かないときはどうしたらよいのでしょうか。エラーが発生したときは,まず最初にエラーメッセージを読みましょう。

エラーメッセージに書かれたことすべてを理解するのは難しいですが,その一部をヒントに間違った箇所の見当を付けましょう。

エラーメッセージを読んでみよう

次のコードでは,1円の所持金を毎日倍にしていくと1ヵ月後にいくらになるかを計算しています。

double_money.pl
use strict;
use warnings;

my $money = 1;
for my $day (1 .. 31) {
    $money *= 2 …(1)
    print "$day 日後は $money 円\n"; …(2)
}
print "最終的に $money 円になりました\n";

ただし,間違いが1ヵ所含まれているので,コードの実行時にエラーメッセージが出力されます。

syntax error at double_money.pl line 7, near "print"
Execution of double_money.pl aborted due to
compilation errors.

エラーメッセージを読んでみましょう。

エラーメッセージの先頭に,syntax errorと書かれています。syntaxは日本語で構文を意味し,文法的な誤りがあることがわかります。

続いて,at double_money.pl line 7と書かれています。これは,double_money.plに書かれたコードの7行目という意味です。Perlがコードを先頭から順に実行していった結果,7行目でエラーとなったことを意味し,7行目あたりに間違いがあるのだろうと推察できます。

エラーの原因を見つけよう

7行目の(2)にはprint処理が書かれていますが,特に文法的な間違いは見当たりません。

そういうときは,前後,特に前の処理を追いかけると問題箇所にたどり着けることが多いです。6行目の(1)をよく見ると,$money *= 2の後ろに文末に必要な;が抜けていることがわかります。このため,6行目と7行目が1つの文としてPerlに解釈され,syntax errorが出力されています。

英語を苦手とする人も多いですが,エラーメッセージの一部だけでも読んで,問題箇所の見当を付けましょう。また,文末の;の書き漏れはよくあるミスなので注意してください。

コミュニティに参加しよう

プログラミングをゼロから学んでいくうえで,疑問点を独学で解消し,モチベーションを維持することは大変です。

各プログラミング言語にはユーザーによるコミュニティがあり,PerlにはPerl Mongersというコミュニティが世界各地にあります。また,日本国内では年に1~2回のペースでYAPC::Japanというカンファレンスが開催されています。YAPCでは,Perl Mongerたちの熱い発表やPerlに関する情報交換が行われています。

コミュニティに参加することで,Perlの熟練者に直接教わることができます。コミュニティに参加して得た知識や仲間は,普段の職場のつながりとは異なる次のような相乗効果をもたらします。

  • 大規模なカンファレンスに参加する楽しみが増える
  • 運営スタッフとしてカンファレンスの裏側を知ることができる
  • 技術系の執筆や,登壇の機会が得られる
  • 転職についての情報が得られる

これらを体験・経験することで,学習を持続するモチベーションが上がります。自分に合うコミュニティを見つけて参加しましょう。

もし自分が必要とする勉強会やコミュニティが見つからなければ,自ら作るのも一つの手です。Perl入学式も,そのようにして始まりました。

Perl入学式に参加しよう

Perl入学式は,プログラミング初学者のためにできるだけハードルを低くしたコミュニティです。小学生から還暦すぎまでさまざまな年代の人が参加します。

Perl入学式のカリキュラムは,プログラミング初学者が最低限知っておくべき項目を厳選しています。主な講義内容は,環境構築,基本的な変数,制御構造,サブルーチン,正規表現,リファレンスです。

また,Perl入学式では,講義に参加できなかった人や講義後に疑問がわいた人のために,チャットツールのDiscordを使用して,環境構築時のトラブルや質問に対応するサポートを行っています。

自分なりに頑張って勉強しても解決できないことはたくさんあります。筆者がPerl入学式の受講生としてプログラミングを学び始めたときは,講師の人に書いたコードとエラーメッセージをメールで送り,直接アドバイスをもらったこともありました。

初学者でも安心して参加できるコミュニティで,さまざまな気付きを得ながら楽しく成長しましょう。

まとめ

Perlは現在でもサーバの保守運用業務の領域で役立つなど,Perlをゼロから学ぶ価値は十分にあります。本稿を参考にPerlの環境を構築して,プログラミング学習の最初の一歩を踏み出してください。そして,Perlのコミュニティに参加して世界を広げましょう。

さて,次回の執筆者はmangano-itoさんと中岡大樹さんで,テーマは「PerlでつくるGraphQL API」です。お楽しみに。

WEB+DB PRESS

本誌最新号をチェック!
WEB+DB PRESS Vol.129

2022年6月24日発売
B5判/168ページ
定価1,628円
(本体1,480円+税10%)
ISBN978-4-297-12890-6

  • 特集1
    Reactの深層
    最新バージョンから読み解く! 変わる常識と変わらない思想
  • 特集2
    できるところから無理なく導入!
    小さく始めるデザインシステム
  • 特集3
    最新レコメンドエンジン総実装
    協調フィルタリングから深層学習まで

著者プロフィール

尾形鉄次(おがたてつじ)

大学院卒業後の2003年,Webメール開発会社に入社。以後10年以上,Perlを使ったWeb開発に携わる。

教育に関しては大学でのTAの経験などから課題感を持っていたが,2013年以降にPerl入学式などのコミュニティで教える側に立つことにつながり,そこで得られた知見を社内外で活かしている。

2019年よりJapan Perl Association理事,およびPerl入学式2代目代表を務める。

GitHub:xtetsuji
Twitter:@xtetsuji


和田智(わださとし)

Perl入学式 in YAPC::Asia 2013で受講生としてPerlに触れる。現在は経理業務を中心にバックオフィス業務を行っている。

シーサー㈱
GitHub:sironekotoro


三島智一(みしまともかず)

本職はITとは関連のない仕事に就いているが,2012年にPerl入学式に受講生とした事をきっかけに,趣味でプログラミング,オープンソースコミュニティ活動に参加している。現在はPerl入学式サポーター,Kansai.pm代表を務める。

GitHub:tomcha
Twitter:@tomcha_