Perlがくしゅう帳(Rubyも)

プログラミングの勉強会の参加記録や学んだことなど。 twitter ID : @tomcha_で活動しています。 最近は主にPerl関連の勉強会やコミュニティに参加しています。移転前のブログはこちら->http://ruby.doorblog.jp/

コードレビューをする勉強会を開催しました。

なにわPerl#13で、コードレビューをテーマにした勉強会を主催しました。

naniwaperl.connpass.com

結果から言うと、進め方はまだ手探り状態ではあるものの、想定していた以上の良い勉強会になりました。
今回やりたかった事は、プログラミングを0から初めてある程度文法をマスターした段階のプログラマーにとって、「基本文法は理解した」から到達目標である「実用性のあるコードを書く」の間にとても大きな差があると感じていて、その間を埋める勉強会を開催したかったという思いです。

基本文法をマスターすれば、即実践で使えるかというと覚えなくてはいけない知識(DBの事、webの仕組みの事、サーバーに関する知識、アルゴリズム etc)は多岐に渡って更に深く身につける必要があり、Perl入学式の次の一歩の勉強会、脱初学者な勉強会が欲しい!と思い、無ければやるしかの精神で開催しました。

今回はレビューしてもらうコードの題材として、競技プログラミングのサイト AtCoder さんの問題を使わせて頂きました。快く使用許可を頂いた twitter.com さん、本当にありがとうございます。

また、レビュアーはPerl入学式の創設者であり、第一線で活躍するエンジニア id:papix さんにコードレビュー役をお願いしました。快く引き受けて頂き、また東京より駆けつけて頂きありがとうございました。

お硬い文章はこれくらいにして、何が良かったかというと、

  • 普段我流でコードを書いている自分にとって、プロの目線から指摘をもらって目から鱗の知見がたくさんあった
  • 仕事でプログラムを書いている人にとっても、自社の文化を超えた目線でのアドバイスは視野が広がった

点でした。

講義形式や発表形式の勉強会とはまた違った雰囲気で、何より

"それぞれが発表の場を持つ全員が主役である"

こと、同じ題材でコードを書いているからこその

"他人のコードを読む機会(とその違いが明確に分かる)"

部分がとても勉強になりました。
色々と改善の余地はありますが、とても有意義な勉強会だったのでこれからも続けていこうと思います。

Perl入学式は今年も色々な都市で開催されます。初心者向け勉強会”Perl入学式”、次のステップの"Perl中学校"、今年も頑張っていきたい(とはいっても自分にとっては趣味の一環)と思います。

perl-entrance-tokyo.connpass.com

perl-entrance-okinawa.connpass.com

perl-entrance-sapporo.connpass.com

perl-entrance-osaka.connpass.com

naniwaperl.connpass.com

最近Macで急にRailsコマンドが使えなくなった時にした解決方法

本町で開催されているDDD.rb主催のもくもく会に参加してきました。

dddrb.doorkeeper.jp

その中で、今まで使えていたRailsが急に使えなくなり、エラーメッセージが「ffi の vative extensions がどうしたこうした...」という現象を相談している方がおられ、

「ん?ffi ?それ、昨日自分も同じ現象でハマってたやつでは?」

同じハマり方をしているケースも多々ありそうだったのでブログ記事を書いてみました。
具体的には、「MacOS High Sierra」を利用中で、OSのバージョンアップをしているケースと想定されます。
そして、以前にインストールしていた時は問題なくRailsコマンドが使えていたのに、久しぶりにRails new するとエラーでコケてしまうという現象です。

Rails new や Rails server 等、Railsのコマンドを実行しようとすると....

Fetching ffi 1.9.21
Installing ffi 1.9.21 with native extensions
Gem::Ext::BuildError: ERROR: Failed to build gem native extension.

ffi のGemのエラーが出るやつでした。

自分がとった解決方法は、RubygemsffiのGemを見てみると、

https://rubygems.org/gems/ffi/versions

どうらら2018/2/6にアップデートされており、1月に使えていた時とバージョンが違ったので、 Gemfileを編集してffiを一つ前のバージョン固定でインストールしてみました。

<Gemfile>

 gem 'ffi', '1.9.18'
bundle install

Fetching gem metadata from https://rubygems.org/..........
Fetching gem metadata from https://rubygems.org/.
Resolving dependencies...
Using rake 12.3.0
.
.
.
Bundle complete! 9 Gemfile dependencies, 48 gems now installed.
Use `bundle info [gemname]` to see where a bundled gem is installed.

無事にGem がインストール出来てRailsコマンドが使えるようになりました。
自分の環境はrbenvを使ってsystemのRubyを使ってなかったので、bundle installコマンドはユーザー権限でインストールできましたが、rbenvを使わずに直接railsをインストールしている場合、sudo bundle install する必要があるかもしれません。(自己の環境では未実施)

もくもく会

  • 書籍「プロを目指す人のためのRuby入門」の練習問題の復習
  • Railsを使ったAPIの作り方
  • Reactを使ってviewを描画するウェブアプリの事

で、Reactは名前を聞いた程度で、概念、方法など全く知識が無かった事だったのでとても勉強になりました。

Perl入学式卒業後の進路 YAPCでトークを採択された時こころがけた8つのポイント

Perl入学式アドベントカレンダー18日目の記事です。

Perl入学式を受講していた初心者がYAPCトークを応募し、採択された時の事についての記事です。

f:id:tomcha0079:20170707221531j:plain:w300

 まずは前提となる簡単な自己紹介です。

  • 2012年Perl入学式に受講生として参加。
  • Perl入学式卒業後、2013年からはサポーターとして参加。
  • YAPC::Kansai2017Osakaコアスタッフをしました。
  • 社会人ですが、エンジニアではありません。

 そして、YAPC::Fukuoka2017HakataでPerl入学式卒業生として始めてトークをしてきました。(その時の様子ブログ)

イデア出し

 YAPCトークに応募したい!と考えて最初にする事は、何を話すかを決めることですね。話すネタは沢山ある!という方は大丈夫だと思いますが、私はとにかくアイデアを色々出してみました。とにかく思いつく事をノートにたくさん書き出しました。

  • イデア出しのポイント
    • 自分が話せること、自分では話せない(無理なこと)を明確にする
    • 自分が話せることのうち、自分にしか話せない事があるのか
    • YAPCのテーマと自分が話せる事をリンクさせる
    • トークの起承転結(ストーリー)、伝えたいこと(まとめ)を考える

 大事な事ですが、やはりYAPCのテーマに沿ったトーク内容は採択される率が高いのかもしれません。そして、自分にしか話せないオリジナルな部分があれば、他の応募者とテーマがかぶったとしても有利になるのではないでしょうか。
 今回意識していた事は、私はエンジニアではないので難しい技術的なトークは無理(弱点)ですが、逆に非エンジニアの視点での話は自分にしか出来ない(強み)と考えてテーマを決めました。

トークに応募しよう

 テーマが決まれば公式サイトのトーク応募フォームから応募しましょう。
 この時に大事だと考えていた事は2つです。

  • 応募のポイント
    • 応募の時期は早めに
    • プロポーザルの内容(と文量)

 まず応募の時期ですが、締め切りギリギリよりも余裕をもって、できれば早めにと心がけました。
 その理由は2つあり、1つ目はトークへの応募を自分のゴールとしていた事です。まさにトークを応募する練習みたいな感じで考えていたので、アイデアもじっくり練り必然的に早めの応募となりました。2つ目は早い時期の応募だと運営側の人にも余裕をもってプロポーザルをじっくり読んでもらえると思ったからです。
 そしてプロポーザルの内容ですが、応募の動機や伝えたいこと、テーマとの関連性を丁寧に書くことを心がけました。特にテーマとの関連性を丁寧に説明するは重要かと思います。自分が思っている事を他人に伝えるのは本当にむずかしく、プロポーザルはほんの数行の文章で説明する訳ですから、文章も何度も書き直しました。
 YAPC打ち上げの時、自分のトークが採択された理由をとある運営スタッフさんに聞いてみると、きちんとプロポーザルの文章を読んでくれた上で必要だと判断してくれたと聞き、頑張って良かったなと思いました。

スライドを作ろう

まずはテーマに沿って話す順番を箇条書きにして整理しました。
一番伝えたいことをメインに考え、トークのあらすじ、起承転結をノートに色々書き出して考えました。
f:id:tomcha0079:20171216213519j:plain:w200f:id:tomcha0079:20171216213544j:plain:w200f:id:tomcha0079:20171216213557j:plain:w300f:id:tomcha0079:20171217163602j:plain:w300

スライドの作り方ですが、印象的なお題をポンポンポンと書かれる方、ソースコードを書かれる方、色んなスタイルがあると思います。
色々なスタイルがあると思うので、私は過去の発表者の方のスライドを色々見て考えました。スライドを作る時に心がけた事は、1枚に情報量が多くなりすぎて見づらくなるのを避ける事を心がけました。

トークの練習をしよう

 トーク採択のメールを受け取ってからは、相当のプレッシャーでした。というのも、ツイッターで著名な方やトーク常連の方が「トーク採択されなかった」というツイートを見て、本当に自分のトークで良いのだろうか?必要とされているのだろうか?と思ってしまう葛藤もありました。ですが、運営スタッフの方もプロポーザルを読んで真剣に悩んでトークを選ばれている姿はKansaiのコアスタッフをしていた時に知っていたので、とにかくトークを採択されなかった方々に失礼にならないよう、全力で頑張ろうと思いました。
 そして、会社帰りや休みの日にカラオケボックスに1人で行き、作ったスライドをノートパソコンで再生しながら実際に喋ってトークの練習をしました。これ、かなり重要です。

 自分の場合は、時間を測って実際に喋ってみると、スライド作成時に気負いすぎたのか、作ったスライドが持ち時間の約5倍分あったことが発覚しました。

 スケジュール的には、本番の3週間前からスライド作成し、1週間前には完成させてトーク練習を開始するスケジュールでしたが、実際に練習を開始できたのは本番3日前くらいでした。ここからトークの主旨を崩さないでスライドを間引いてトークを短くする、そしてまた練習して時間を測って収まる様にするのがかなり大変でした。
 普段は行かないカラオケボックスに4〜5回は行ったでしょうか。自分の喉の限界もあり、1時間かりても20分のトークなので練習は2〜3回しかできません。
 実は福岡上陸後、前夜祭が始まるまでに現地のカラオケボックスでも最後の調整と練習をしていました。

 実際に本番で喋ってみて、20分のトークでしたが体感では5分くらいでした。それぐらいあっという間に時間は過ぎてしまいました。

トーク後の感想

 懇親会で色々な方からトークの感想が聞けて、とても感慨深いものがありました。中でも、ベストトークに票を入れたよと言って下さった方もおられ、心底本当に良かったなと思いました。自分の中ではベストトークで1位を取る喜びに匹敵する、いやそれ以上に嬉しかったですね。なかなか普段の仕事の中では出来ない貴重な体験が出来たことに感謝です。

 さて、2018年3月3日にYAPC::Okinawa2018 ONNASONが開催されます。そしてトークの応募はもう始まっています。

docs.google.com

 Perl入学式の卒業生のみなさんも、少しでも発表に興味があったり、伝えたい事があるなら、トークに応募してみませんか?

 自分のトークYAPCに相応しくないかも?自分のトークYAPCのレベルに達していないかも?

 そんな不安はきっとあると思います。ですが、本当にそうであれば、きちんと運営スタッフの方が判断をしてくれます。
 自分の中で出来ることのベストを尽くす事にのみ専念すれば良いと思います。大丈夫です!

 臆することなくチャレンジしてみましょう!

 そんな感じでYAPC::Okinawaへ架け橋をかけたところで、2017年Perl入学式アドベントカレンダーの記事を締めくくりたいと思います。

京都の旅館で1泊2日のもくもく開発合宿に行ってきました

9月16日〜17日にPerl入学式となわにわPerlからの派生イベント、京都の菊香荘という旅館で1泊2日の開発合宿”キッカソン”を開催しました。前回のキッカソン第1回は2016年3月開催で、約1年半ぶりの京都太秦。今回も別名Perl修学旅行の名の通り、今回もわいわい楽しいイベントでした。菊香荘+ハッカソン=キッカソンです。

f:id:tomcha0079:20170916123109j:plain:w200 f:id:tomcha0079:20170916125218j:plain:w200

今回はPerl入学式サポーターメンバーに参加を募り、総勢9名の参加でした。

初日の13時に菊香荘に現地集合。開発する場所は旅館の大広間スペースを借り、夕食タイムの19時30分まで全員がっつりと集中し、それぞれ持ってきた課題にチャレンジしました。

今回の開発タイムには、お酒のデプロイは無くかなり集中したので、かなりの進捗と成果が得られました。開発合宿にアルコールは割りとキケンですね。

開発の様子です。

f:id:tomcha0079:20170917184526p:plain

夕食は菊香荘の夕食を。写真のお料理の他、舞茸の炊き込みご飯、牛肉の豆乳鍋、そして松茸と鱧の土瓶蒸しまであり、豪華なお食事でした。

f:id:tomcha0079:20170916192225j:plain:w500

そしてなんと偶然にも、キッカソンを一緒に主催している @xtetsuji さんの誕生日で @hiramatsu さんがバースデーケーキをサプライズで準備され、みんなで食後に美味しくいただきました。 @xtetsuji さん、おめでとうございます!

f:id:tomcha0079:20170917184114p:plain:w200

夕食の後は深夜0時頃まで技術のことやら色々語り合い、その後就寝。

そして朝ごはんはこちらです。菊香荘では朝食の後にコーヒーとビスケットが出ます。

f:id:tomcha0079:20170917082538j:plain:w300

朝食後も大広間で午前の部の開発やディスカッションを11時30分まで実施し、解散となりました。
心配していたお天気、台風も大丈夫でした。

キッカソンの成果は

普段はなかなか長時間プログラミングをする機会もなく、長時間集中して開発できてとても良かったです。
今回自分で設けたお題は、オブジェクト指向の練習の為にどうぶつしょうぎプログラムを簡易クラス図、簡易シーケンス図を先に作って整理しながら設計してコードを書く事でした。普段の細切れの時間ではなく、長い時間試行錯誤できたので時間あたり普段の何倍もの進捗が出ました。

一人で作業をすると、難しくて詰まる事や、なかなか集中できなかったりしますが、集まってもくもくすると集中出来て効果的です。
また、お互い色々教えあったり、情報交換出来たりと良いことがいっぱい。しかも、普段は遠方に住んでいるの仲間たちとも楽しく出来るのが最高です。

とても有意義な2日間でした。また行きたいですね。

Perl入学式卒業生としてYAPCで初トークしました ~YAPC::Fukuoka2017感想ブログ~

6月30日、7月1日とYAPC::Fukuoka2017 HAKATAに前夜祭から乗り込参加してきました。

今回いつものYAPCと違うのは、なんと、応募したトークがまさかの採択となり、人生初YAPC登壇となりました。
あこがれの赤Tシャツ&白ネックストラップです!名誉と伝統がある場なので、とても感慨深い。

f:id:tomcha0079:20170707221531j:plain:w400

前夜祭当日

6月30日は早めに博多に乗り込み、お昼ごはんに九州グルメを堪能。その後は前夜祭開催までカラオケボックスに篭ってトークの練習とスライドの調整を。
前週に予定外の風邪を引いてしまい、スライド作成->トーク練習->スライド調整->トーク練習…のルーチンが1週間ずれ込んでしまい、まさかの現地入りでの練習となってしまいました。全然野菜とか美味しいものめぐりしたかった…

博多の街の印象は、物価が安くて食べ物が美味しい街でした。
胃袋の限界もあり、食べたかった物全部食べきる事はできませんでしたが、また旅行で行くぞ!って思いました。

前夜祭は早めに会場入りし、同窓会のようにYAPCで会う色んな地域のPerlMongerと挨拶したり、いつもはTwitterやSlackのアイコンでしか会話した事のなかった人とお話できたりワイワイと楽しい前夜祭でした。

前夜祭では、ネタ感溢れるsago35さんのLTが、技術の話にネタも仕込んであって、これぞLTって感じで盛り上がって面白かったです。 sago35.hatenablog.com

また、若さの勢いあふれるAnaTofuZさんのLTも印象に残りました。若いのにガンガンAcmeモジュールを作っててすごいなーと。

前夜祭のあとは、今回のYAPC::Fukuokaのスタッフでもある、日下部さんと信者会の方々と会場近くの居酒屋で二次会へ。
「はじめまして」「あー、あのアイコンの◯◯さん!、どうもどうも!」の流れは毎回面白いですね。
TwitterやSlackでコミュニケーションを取っていてもはじめましての方々と、今回の福岡でもたくさん顔が繋がり、ワイワイ盛り上がったり。

YAPC::Fukuoka 当日

f:id:tomcha0079:20170701094328j:plain:w500

そして7月1日本番当日。
普段会社に行くよりも遅いので楽々起床成功。
現地入りしてYAPC::Kansaiで一緒にスタッフをしたコアメンバーの方々とも挨拶をしたり、声をかけて頂いたり。5年前の初めてYAPCに行った時から比べて、とても知り合いも増えました。
この日は現地に到着してからもスライドを少し微修正したり。発表が午後一番だったのですが、こんなにオープニングやら午前中のトークやら頭に入らないYAPCは初めてでした。

そして昼食をパスして午後一番、いよいよトークの時が。予想以上に会場が広く、そして時間が迫るにつれお客さんの席も埋まりだして緊張はピークに。
トークは練習をしていたとはいえ、始まってしまえばあっという間に予定時間。ギリギリ少し時間足らずでしたが、これは伝えようと思っていた重点ポイントは伝えることができました。
正直、自分のトークが採択された時からYAPCの場での発表に相応しいのか不安しかなく、それでも選ばれたからには精一杯失礼の無いようにと頑張りましたが、トーク中もトークが終わっても良かったのか悪かったのか、不安はありました。
懇親会の時に、 @xtetsuji さん、 @karupanerura さんに、トーク良かったよと感想を頂いたとき、あー発表して良かったなとホッとしました。
エンジニアの方達は、決してお世辞を言う方ではなく、良いもの良い悪いもの悪いと正直に述べられる事は分かっていたのでとても嬉しかったです。

当日のスライドはこちらです。

t.co

さて、自分のトークが終わってからやっとトークも耳に入るようになりました。

その後の懇親会も、懇親会後の二次会も色んな人とお話ができました。

懇親会

f:id:tomcha0079:20170701221221j:plain:w400

懇親会ではPerl入学式の @papix 校長と、今回の自分のトークは若い人たちにバトンが繋がるトークを心がけた事と、自分は @papix さんから5年前にPerl入学式に参加してバトンを受け取ったからこそ、今この場に居るといった事を話しました。 @papix さん自身も、ファームノートさんからYAPC参加の旅費支援というバトンを受けたから今があると言ってられたので、Perlのコミュニティは次から次へとバトンを繋げていく素晴らしいコミュニティだなぁと、参加する機会があって良かったと改めて感じました。

次は若手がとても勢いのある沖縄、YAPC::Okinawaですね。
家庭内稟議は通ったので絶対に参加するぞ!という意気込みでとても楽しみです。

トークを応募した時の話は、何か機会があればまたどこかで、感想ブログはこのあたりで締めたいと思います。
行ってよかった、楽しかった!スタッフの皆様、ありがとうございました && お疲れ様でした!

YAPC::Fukuoka で「未来のプログラマー達へ ~Perl入学式卒業生から~」というタイトルでトークします

Perl入学式in大阪でサポーターをしているTomchaです。

実は私、仕事はITとは全く無関係な一社会人です。
2012年2月、Perl入学式の生徒としてプログラミングを学び、趣味でプログラミングをしています。
use strict;の書き方を一から教わる初心者からのスタートしましたが、

なんと、今回YAPC::Fukuokaでトークをする機会を頂きました。

これからプログラミングを初めてみたい方や、プログラミングに興味がありつつ、どう学んで行けばよいか分からない方など、初心者の方にPerl入学式OBとしての経験を、そして非エンジニアの視点でお話ができれば、そして何かヒントを掴んで頂ければと思っています。

おそらく、YAPCの中で最も初心者をターゲットとしたトークだと思いますので、初心者の方やPerl入学式受講中の方、もちろんそれ以外の方にも聴いていただければ幸いです。

yapcjapan.org

Acme大全への道

こんにちは、Perl入学式in大阪でサポーターをしている @tomcha_ です。

www.perl-entrance.org

趣味でPerlのプログラミングを始めて早6年。
なんとなく、ちょっとしたコードを書いている毎日ですが、PerlMongerになったからには大きな憧れってありますよね。

そう、これです

f:id:tomcha0079:20170602223101j:plain:w500

Acme大全!

いつの日か、自分の書いたモジュールがAcme大全に載ってたらカッコイイな〜と、

今までは見る側でしたが、入学式の講師予習をしている時に、ふとモジュールを思いついたので、勢いに乗っかって作ってみようと思いました。

まずはモジュールの紹介よりも先に作った手順などを紹介します。

やったこと 手順

1. Minillaのインストー

Acme大全に載るには、CPANAcme::で始まる名前空間に自作モジュールをアップする必要があります。
CPANにアップするモジュールには、色々とお作法がありますが、その雛形を簡単に作ってくれるモジュールが、Minilla です。

metacpan.org

まずはMinillaをcpanからダウンロードしましょう。

cpanm minnilla

2. minil new

Minillaのインストール 自作モジュールを作成するために、ローカルのパソコンの任意のディレクトリで、以下の新規作成コマンドを叩きます。

minil new Acme::モジュール名

ここでミソなのは、今回作るのは憧れのAcmeモジュールなので、モジュール名の前にAcme::をつけます。
その他、色々な名前空間でモジュールを作るときは、適宜応じた名前と :: で区切って指定します。
すると、 :: で区切った通りにディレクトリ、子ディレクトリも自動的に作ってくれます。超便利。
Hoge.pmというモジュールを作るなら、

minil new Acme::Hoge

とします。

3. コードを書く

さあ、オリジナルモジュールを作りましょう!
あ、その前に編集前の状態で git commt しておきましょう。
そして、ディレクトリの中に lib というディレクトリがあり、その中の モジュール名.pm を編集していきます。
通常はサブルーチンを書いていく感じになりますね。そうすると、作ったモジュールを読み込めば自作サブルーチンが呼び出せるようになります。
また、__END__以降の行の部分のコメントを編集して、READMEの内容を作っていきます。ここに書いておくと、この後のコマンド操作でREADMEファイルをよしなに作ってくれます。コピペで使い方がわかる、SYNOPSYSも丁寧に書いてみましょう。

4. Minil test

モジュールの中身が実装できたら、モジュール名のディレクトリ直下で、テストを実行して確認します。コマンドは、

minil test

です。デフォルトでは、自分の書いたモジュールが読み込めるかどうかのテストがデフォルトで書かれています。
まずはこのテストが通る事を確認して、その他テストも書いてみましょう。

5. Minil releaseの前に、pauseの登録

実装できた!テストも通った!さあ、リリースだ….のちょっと前にしておく事があります。
CPANにモジュールを上げる事になるので、先にCPANに自分のアカウントを作っておく必要があります。

https://pause.perl.org/pause/query

PAUSEというサイトで登録するのですが、こちらのブログ記事で詳しく書かれています。

blog.livedoor.jp

今回、大変参考にさせていただきました。感謝。

6. cpanアカウントの設定

PAUSEでアカウントを作ったら、アイコン画像などもう少し詳しいプロフィールを設定します。
プロフィールはmetacpanというサイトで設定します。

Search the CPAN - metacpan.org

まずはTwitterGithubのアカウントなどでサインインし、Accountメニューからidentitiesを選び、先程作ったPAUSEのアカウントと紐付けます。 f:id:tomcha0079:20170602224550p:plain:w500

そして、profileページでアイコンや自分のブログなど、プロフィールを書きましょう。

7. リリース準備ファイル

ホームディレクトリに.pauseファイルを作り、そこへPAUSEアカウントの情報を書き込みます。

touch ~/.pause chmod 600 ~/.pause

.pauseの中身は、

user username
password userpassword

(もちろん、自分の)を書きます。

8. Acme名前空間の再確認

CPAN名前空間での整理やテスト文化など、素晴らしいエコシステムが整った公共の場です。
まずはCPANの流儀にしたがい、自分の作ったモジュールがのディレクトリ名がAcme-Hogeとなっているか、llibディレクトリの中のAcmeディレクトリの中にファイルが置かれているか再確認しましょう。

さあ、ここまで来ればあと少しです!

9. リリース

モジュールをCPANにリリースです!

minil release

最初は何度かファイルをアップするためのCPANモジュールが足りない!と怒られました。
その都度、cpanm でインストールして、すべてのアップロード用モジュールが揃えば自動的にCPANにモジュールがアップされます!

作ったAcmeモジュールと今回はまったこと

さて、今回私が作ったモジュールはこちらです。

metacpan.org

どういうモジュールかというと、Perl入学式では一番最初に"Hello, world\n"と画面に出力するプログラムを作ります。
なので、Perlという言語のスローガン、TMTOWTDI “There’s More Than One Way To Do It.” “「やり方はひとつじゃない」”
に習って、教科書とは違うやり方の"Hello, world"のモジュールを作ってみました。

こんな単純なモジュールですが、実はテストでちょっとはまりました。
モジュール内のprint文、最初はシングルクォートで囲っており、改行しない文字列を出力させてました。
すると何故か、デフォルトのモジュール読み込みテストがコケる!
丁度Perl鍋という勉強会で作っていたので、周りの参加者に見てもらい、テスト単体とかでも試した結果、どうやらテスト時に"ok"で始まるテキストが帰らないとテストがコケる用で、テストの返り値文字'ok'の前に'Hello,world'の文字が改行せずにひっついていた為、'ok'を認識してくれずテストがコケていました。
Perl鍋と参加されていたPerlMongersにも感謝。
Perl鍋は不定期で平日木曜日のよる、大阪は梅田で絶賛開催しています。

perlnabe.connpass.com

出力文字列をダブルクォートで囲い、きちんと改行して、なんとかテストが通りました。

めでたい!念願のAcme大全に載れるはず?!
今年も出版されるのを願ってます!

ちなみに、こういうもくもく会を主催してます。(宣伝)

naniwaperl.connpass.com