Perl入学式 2018 in東京 秋開講 第5回 お疲れ様でした
受講された方、サポーターの方、お疲れ様でした。 講師をやったジャージの人です。
スライド中の練習問題と復習問題ですが、昨年夏に書いた解答例をblogに掲載しています。 参考にしてください。 sironekotoro.hateblo.jp
あと、時々つかったスライドも置いておきます。 docs.google.com
以下、うちが用意していた資料です。
Perl入学式では、HTMLの簡単な知識は所与のものという体でやってきたのですが、そうでない方もいる・・・ということで準備していたMarkdownです。
mojoliciousで寿司を回転させるソースです。
昨年夏に作った「最終問題」例です。
mojoliciousで作られている商用サイト
忘れていて講義中に言及できなかったのですが、今回学習したmojoliciousは以下の商用サイトで利用されています。
MVCのモデルを考えつつ、Webにどのような情報が送られ、処理されて表示されているか?を考えてみると良いと思います。
mojoliciousでfizzbuzz
今回の講義中、うちが詰まってしまったmojoliciousでfizzbuzzのコード、リベンジ編です。
3パターン用意してみました。
クリックすると展開されます
gist.github.com
Perl入学式を卒業したら?
Perl入学式の卒業後、読んで自習してみると良いかも?という本については以下のエントリにリストアップしています。 sironekotoro.hateblo.jp
何度か言及しましたが、Perl入学式を修了すれば「初めてのPerl」で挫折することはありません。挑んでいきましょう。
#Perl入学式 、はじめてのPerlで挫折した人にもおすすめ(私です pic.twitter.com/4CWFdhhCkx
— sironekotoro (@sironekotoro) 2019年3月29日
2019年度のPerl入学式
カリキュラム・テキスト改版中
現在、カリキュラムの順番入れ替えをと講義テキストの改版を進めています。
新カリキュラムの構成は以下となっています。
Perl入学式 in東京 2019 第1回は4月13日開講!
perl-entrance-tokyo.connpass.com
Perl入学式は2周目, 3周目の参加も歓迎します。また、少し時間が空いての再参加ももちろん歓迎です。
すでにPerlが実行できる環境にある場合、15時からの参加をお勧めします。
そして、大阪でも2019年度 第1回の開催が告知されています。Perl入学式くんに襲われてる通天閣のイラスト、いいですね
perl-entrance-osaka.connpass.com
また、サポーターとしてPerl入学式を一緒に運営・盛り上げていってくれる方も募集中です。 教えたり、一緒に考えることで学びはとても深くなります。
参加はこちらから!
それでは、2019年度もよろしくお願いします!
Perl入学式 2018 in東京 秋開講 第4回 お疲れ様でした
受講された方、サポーターの方、お疲れ様でした。 講師をやったジャージの人です。
スライド中の練習問題と復習問題ですが、昨年夏に書いた解答例をblogに掲載しています。 参考にしてください。
あと、時々つかったスライドも置いておきます。
ピザ会のお題
Perl入学式 in東京 にて恒例となったピザ会のお題です。今回のお題は・・・
「サラリーマン川柳」のサイトから川柳を集め、それを元に「上の句」「中の句」「下の句」で分割し、ランダムに組み合わせ、新たな俳句を生成せよ!
というもの
__DATA__
セクションにそのまま俳句コピっておっけーというレギュレーションだったので、サクッと出来たのがこちら。
下はWebから持ってきて10句を表示する版。
(httpsのサイトへのアクセスが必要なので、IO::Socket::SSL
とNet::SSLeay
が必要。)
ルビ部分の削除をサブルーチンに分離し、ルビの削除と俳句部分の抜き出しに正規表現を利用しています。
川柳をランダムに生成する(Webから撮ってきて10首ほど表示版) — Bitbucket
次回予告
Perl入学式 in東京 第5回ですが、3月30日(土曜日)を予定しています。
今回、時間が余れば以下の第5回予告編スライドを投入したかったのですが、存外時間が押して紹介できなかったので、ここで紹介して供養しまする。
Perlの会社に入社して1週間経ちました
重要開示
支給Mac
- MacBook Pro 13インチ
- 使っていて動作が重いと感じることはない
- 個人で使っているMacBook Air 2013年モデルと比べて、モジュールのインストールとかは明らかに速い(当たり前
- TouchBarには不安があったので、物理ファンクションキーでよかった
- 追加のディスプレイは現在調達中でありがたい
- アプリのインストールは必要であれば入れてokという、利用者を信頼してくれるスタイル
業務ツール
- 出退勤管理
- メール・カレンダー
- チャット
- プロジェクト管理
- ソースコード管理
- Dockerイメージ管理
勤務
- コアタイムありのフレックス制
- コアタイムは11時〜17時
- 金曜日のみ11時〜16時
- 自分で働く時間を決められるってことで、自制しないといつまでも会社にいてしまうの危険
- 勤務自体は8時から可能
- ただし、ビルに入館できるビルカードを受領していないので、誰かが来た後でないと入ることはできない状態
- 1回くらいは8時出勤17時退社を体験してみたい
渋谷
- 新宿と比べて、明らかに飯屋の系統が違う感
- 系統自体もだが、店自体も多い
- 太る
- 通勤経路は色々試し中
- 探検が必要
- しかし渋谷は地上も地下もダンジョン・・・時間の余裕がないと死ぬ
開発スタイル
- 個人に本番環境に近いVPSサーバを用意
- 「まかないサーバ」と呼ばれている
- 飲食店の「まかない飯」みたいな感じ?
- CentOS7
- まかないサーバ内に手順書に従って環境を構築
- root権限ありなので、必要に応じてfairewallの設定を自分でしたりする
- 検証環境の構築はDocker
- GitHubでの流れ
- ブランチを切って、そこで編集し、Pull Requestして取り込んでもらう
- この辺りの共同開発は初めてなのであたふたしながらやってる
- 手順書のtypoや更新されていないところをプルリクの練習がてら修正してる
- そしていろいろ間違う
- 今まで
git push origin master
しか知らなかったんや・・・
入社前の自分に伝えたいこと
- さくらのVPSでCentOS 7 のサーバを立てて練習して壊せ
- 開発ソースをローカルで編集して、いちいちサーバに上げて実行、なんてのは迂遠と思うようになり、viとかemacsすごいんでは?ってなるから慣れておけ
- gitに関しては、わかばちゃん本で基礎を固めた後、コマンドベースで解説してある「魔王教授と学ぶGitコマンド入門 ダウンロード版 【オマケつき】 」を手元に置くのが良い
- Plack HandbookでPlackを触っておけ
- miyagawa/plack-handbook
- 一部省略とかあるから気をつけたり、分からなかったら聞いていけ
- 前職や、今まで取得した情報処理試験で学んでたことが現場で見ることができて楽しいので、まぁ心配するな
- チャットで本物のワンライナーが流れてくるという福利厚生がある。楽しみにしておけ
Perl入学式に初参加から5年ちょっとでPerlやってる企業に転職した
YAPC::Tokyo 2019でid:xtetsujiさんよりから紹介いただいたものです。
@sironekotoro さんのめでたい話は御本人からお知らせがあるはず。
きゃー うちのアカウント名がめっちゃスライドに出てるうー #yapcjapan
— sironekotoro (@sironekotoro) January 26, 2019
ということで、16年ちょっと勤めた富士通コミュニケーションサービス株式会社を退職し、シーサー株式会社に転職しました。
use strict; use warnings; use Time::Piece; # 富士通コミュニケーションサービスに入社 my $join_fjcsl = Time::Piece->strptime( '2002-10-01', '%Y-%m-%d' ); # シーサー株式会社に入社 my $join_seesaa = Time::Piece->strptime( '2019-02-01', '%Y-%m-%d' ); # 経過秒数を求める my $past_epoch = $join_seesaa - $join_fjcsl; # 秒、分、時、日を定義する my ( $second, $minute, $hour, $day ) = ( 60, 60, 24, 365 ); # 経過秒数を年数で表示する print $past_epoch / $second / $minute / $hour / $day; # 16.3479452054795
思えば遠くへ
このブログはYAPC::Asia Tokyo 2013に触発されたところから始まっています。それから5年ちょっと。
いまスポンサーのページを確認したのですが、ちゃんとシーサー株式会社がいますね。YAPCのスポンサー、無駄ではないよ!
use strict; use warnings; use LWP::Simple qw/get/; # 要LWP::Simple モジュール my $html = get('http://yapcasia.org/2013/sponsors/'); if ( $html =~ m|http://www\.seesaa\.co\.jp| ) { print 'Seesaa was a sponsor of YAPC::Asia 2013', "\n"; } # Seesaa was a sponsor of YAPC::Asia 2013
正直、参加までは「リファレンスもよく理解していない自分が参加してもいいんだろうか・・・」って思ってましたが、何ができて、何が目標になれそうなのか、を測ることができました。 参加して本当によかったです。
当時、自分がPerl入学式でサポーターや講師をするとは思っていませんでした。
まして技術職としてYAPCのスポンサー企業に転職するとも思っていなかったので、人生ってわからんって感じです。
ありがとうございます!
Perl入学式を開講し、精力的に活動してきたid:papix師
そういうのでPerl教えるの自分も学べて面白いしやるか〜ってPerl入学式始めたら気づいたらもう7年もやっていて, @note103 さんとか @sironekotoro さんとか, それをきっかけにステップアップする人も現れて, それを通して意図せず評価というか褒めてもらったりしたし,
— 迸る光螺旋を描いてゆき空に貫くほどにスパークしたpapix (@__papix__) 2019年1月27日
YAPC::Asia 2013でのPerl入学式の出張版参加時、ぼっちとなったうちのテーブルについてくれたid:Azumakuniyukiさん
Acme::Nyaaを使った実習やってるとこ https://t.co/ETAdVnQSss #Perl入学式 #yapcasia
— ネコ物質₅₈ (@azumakuniyuki) 2013年9月21日
Perl入学式2013 第6回 Webアプリの回において、ライブコーディングで寿司を回してくれたid:mackee_wさん
— トーカナイザの守護霊 (@mackee_w) 2014年4月3日
use strict
忘れを指摘してくれたid:uzullaさん。uzullaさんのオブジェクト指向についての記事が好きで年に何回か見返してます。
use strict; を忘れてエラーを出し、Perl入学式にサポーターできていたuzullaさんに直してもらった想い出がある #gotandapm
— sironekotoro (@sironekotoro) 2018年4月16日
入学式でのLTやPerlBeginnersで実運用の世界を見せてくれたytnobodyさん
#Perl入学式 本日はmojolicious::liteを使ったwebapp開発
— わいとん (@ytnobody) 2014年3月1日
そしてYAPC::Kansai 2017 OSAKA の懇親会で「そろそろサポーターどう?」と誘ってくれたid:xtetsujiさん
「卒業後にどう勉強していいか分からない」という人はサポーターに回るのがオススメですね。 #Perl入学式 #yapcjapan #yapcjapanC
— OGATA Tetsuji (@xtetsuji) 2017年3月4日
ほか、当時講師やサポーターを務めてくれた方々、本当にありがとうございます。
Perl入学式を終えてから
2013年度のPerl入学式を終えた後ですが、AmazonでPerl本を新しい順に買い、それを写経したりしていました。
当然、写経だけでは飽きてくるので、自分の作りたいものを作ります。
そして、作れない!とか、もっとスマートな書き方があるはず!うちが知らないだけ!となったタイミングで本の学習に戻っていくということを繰り返しました。
時には脇道にそれてJavascriptを勉強したり、興味のあるものを好きに勉強して、自分の作りたいものを作っていきました。
また、YAPCは欠かさず参加しておりました。
トークがその時わからなくても、そのうち「わかった!」ってなる時が来るかもしれない・・・し、何よりもエンジニアたちがワイワイ楽しそうにやってるあの雰囲気、とても良いんですよね。
スタッフの方々のおかげです。ありがとうございます。
Perl入学式のサポーターとなってからは、このブログに残すようにしてます。
初出社
2月1日が初出社だったのですが、入社の手続きと社給Macの環境構築で1日が終わりました。
とはいえ、入社の手続きの半分くらいは入社日以前にSmartHRで終わっており、楽ができました。
煩雑な人事労務管理を楽にするサービス、それ自体が福利厚生と感じました。
来週からは個人に用意されている仮想サーバの本格的な環境構築に進みます。それに合わせて、週末の自習もサーバー側を意識したものになりそうです。
前職の退職時にいただいた図書カードやAmazonギフト券を早速利用します。ありがとうございます。
転職にあたり、うちに声をかけてくれたid:tecklさんは「恒温動物を変温動物にする」ような作業で大変そうな中、要所要所でサポートしてもらい助かりました。
勤怠運用、難しい…
— teckl (@teckl) 2019年2月1日
Perl入学式にも現場で利用されているPerlの知見をお伝えしていきたいと思います。
今後ともよろしくおねがいします。
YAPC::Tokyo 2019 に参加してきた
前回のYAPC::Okinawa 2019 Onnnasonからずっと楽しみにしてた東京での開催。
うちが見たセッションの裏番組も気になるセッションで、毎回自分が分裂するかYoutube録画が欲しいと思います。
エンジニアリング組織論への招待
先程のゲスト講演の資料です~。#yapcjapan https://t.co/nSTGDwSOKe
— 広木 大地/ エンジニアリング組織論への招待 (@hiroki_daichi) 2019年1月26日
超よかった。ゲストトークとのことでベストトーク対象には無かったけど、あったら1票入れてたなぁ。
例として上がる「取引コストの高い組織」がまさに今いる自分のところであり、前のめりで聞いておりました。
うち、ホールドアップさせてる側だなぁ・・・ #yapcjapan #yapcjapanHall
— sironekotoro (@sironekotoro) 2019年1月26日
これはスライド中の
システムは時間を経ると次第に交換できなくなり、コントロールを喪失する
を見てのツイート。
うちのクライアント、うちのいるグループについてのコントロールを喪失しており、うちらの言われるがままにするしかなく・・・しかも、うちらが知見も経験も技術も独占してるよなぁ・・・ってことを思いながらのツイートでした。
広木さんの本もオススメです。 gihyo.jp
YAPC座談会
2016年、札幌でのリブートから大阪、博多、沖縄と開催されてきたYAPC::Japanの実行委員長さんたちの座談会。
北海道は大雪、大阪は花粉、博多は猛暑、沖縄は豪雨とそれぞれに思い出がある #yapcjapan #yapcjapanRoom1
— sironekotoro (@sironekotoro) 2019年1月26日
同じYAPCでありつつも、各地域ごとに課題や特色や狙いがあり、そんで楽しんでもらおう!的なホスピタリティ精神溢れる話ばっかで、すごいよかったです。
会場押さえるのも、メンバー揃えるんも、スポンサー探しも、大変なんだなぁ。参加者としては毎回楽しませてもらっております有難い #yapcjapan
— sironekotoro (@sironekotoro) 2019年1月26日
ランチセッション
SBX Technologies 深澤さん
「すぐわかるオブジェクト指向Perl」の深澤さんが準備中のランチセッション https://t.co/Tv5GA7PY1J #yapcjapan
— sironekotoro (@sironekotoro) 2019年1月26日
深澤さんが勤める「SBX Tech」のプロダクト、Garuda(ガルーダ)の紹介。
入力された情報に応じて最適なsolverを提案し、その解をさらに別のsolverに渡して望む解を求めて行く、というようなシステム(うちの理解力ではこの辺りが限界
あとのそのsolverはPerlはじめ、様々な言語で記述が可能(Garudaで利用する形式のラッパーで包む必要はある)。
デモでは細胞の情報をインプットし、細胞内の酵素の構成図(オブジェクト図みたいだった)、その酵素に薬物を投与した時の反応をグラフで表示、というのをポンポンポンと進めていく様を実演。
大学・企業での導入もされており、あぁ、こうやって研究が進められていってるんだなぁってのを垣間見ることができました。
mixi 萩原さん
お若いのに堂々とした話ぶりと落ち着きぶり。相当練習したんか、学生時代通してそういう経験積んできたのか、立派でした。
萩原さんが関わっているminimoはmojoliciousで動いているってことで、Perl入学式でもそのことは伝えていきます。
自分たちが学んでいるフレームワークが実世界で稼働してるよ!ってのはモチベーション高くなると思うんですよね。
LTで紹介される
id:xtetsujiさんの「2018年のPerl入学式報告」で紹介していただきました。
きゃー うちのアカウント名がめっちゃスライドに出てるうー #yapcjapan
— sironekotoro (@sironekotoro) 2019年1月26日
xtetsujiさんのLTで何度か名前が挙がった、 #Perl入学式 をキッカケに企業への転職したものです。
— sironekotoro (@sironekotoro) 2019年1月26日
なにか聞きたいことがあれば、上下アディダスの紺スポーツウェアのおっさんがうちです。話しかけてください〜 #yapcjapan
というわけで、2月から新しい会社に勤めます。
懇親会・二次会
深澤さんに改めて「すぐわかるオブジェクト指向Perl」についてのお礼(出版してくれてありがとうございます!的な)を伝えました。
この本は「自分が欲しかったけど無かったから書いた」というようなことを話していて、あ、さっきtokuhiromさんのキーノートでも同じことを言っていたなぁ、と思うなどしました。
他、ここしばらく姿を見せてない、精神的なPerl恩師の方の消息を聞いて回るなどしておりました。
報恩謝徳・恩送りしていく
Perlという言語からもPerlコミュニティからもたくさん色々なもの(環境や知識とか)をいただいているという実感はあるので、次の世代や他の人にもそういうものを伝えていきます。
次回
次回は未定とのことですが、懇親会中にどっからから「京都!」って声が聞こえてきた気もするんですが気のせいかもしれない。
2次会で「京都でYAPCはする…するが、具体的な場所の指定まではしていない。そのことをどうか諸君らも思い出していただきたい。つまり…我々がその気になれば京都の日本海側ということも可能だろう…ということ」みたいな話をした #yapcjapan
— K.Shirakata (@argrath) 2019年1月26日
次のYAPCに「島根!」「Perl kaigi !」の声が客席から上がる #yapcjapan
— sironekotoro (@sironekotoro) 2019年1月26日
Perl入学式 2018 in東京 秋開講 第3回 ピザ会の課題
Perl入学式 in 東京では各回の講義終了後にピザ会(ピザ&ジュース代は参加者負担)を開催しており、そこで受講者さんと雑談などをしております。
その中で、id:xtetsuji さんから課題が出てそれをコードで解決する、という試みを行っています。
今回のお題:Googleトレンドを非公式APIから取得し、各日のランキングをとり、前日と順位の変動があればそれが分かるようにする
- Googleトレンドの非公式APIを利用し(参考:Googleトレンドの急上昇キーワードをAPIで取得してみる)
- 1月1日〜1月18日の検索語のランキングを取得
- 各日の上位5つの検索語を表示し
- 前日と順位に変動があれば、それを示す印をつける
というもの・・・だった気がします(曖昧
しかし、うちの実力不足で当日できたのは
まででした。
最後の「関連する記事のタイトルを表示する(!?)」なんですが、当時は完全に勘違いしており、検索語を取ることができませんでした。
結果、無念のタイムアップとなったのでした。
作ってみたが・・・
2019年01月01日〜18日までで、連続した日に現れる検索ワードは「純烈」が2019年01月10日と翌2019年01月11日・・・のみ!
これは、完全に同じ単語が連続した日に現れた場合、という条件でしか抽出できなかったのが原因。 例えば、正月なので箱根駅伝についての話題は当然出てきていますが、
と、検索ワードとしては同一ではないので、別の検索語と判断してしまったわけです。
これらの語を「同じ意味をもつ語」として、「箱根駅伝」が3日連続して検索語に登場した、と判断するには文字列を分解して他の検索語とのマッチ率を見て同一の話題の単語か?を判断する
・・・って工程が必要になるんかなぁ?
ちょっと今の自分にはハードル高そうです・・・
Googleトレンドを非公式APIから取得し、各日のランキングをとり、以前に出現してたらその日と順位も表示する
このままでは悔しいので、同じ検索ワードが過去にランキング入りした場合、前回登場した日付と順位を表示する、ということにしてみます。
例えば同じ検索ワードが連続していない日に出てくることがあります。
- 錦織圭
- 2019年01月05日 5位
- 2019年01月15日 5位
- 2019年01月17日 5位
- 地震
- 2019年01月03日 1位
- 2019年01月08日 4位
- 2019年01月14日 4位
- 2019年01月18日 3位
こういったデータの場合、例えば 01月08日に
04 地震 [前回出現:2019年01月03日 1位]
といったような表示が出るようにしてみました。
一応、プログラム本文にコメントをいっぱい書いてみたんですが、これ、うち自身も3ヶ月後に見て「何言ってるんだこの人・・・」ってなるパターンな気がします。
うわ、わたしのコメント力低すぎ・・・?
ちょっとだけ解説
時系列順に表示するだけであれば、日付をkeyとして、valueには順位順に検索ワードを格納した配列リファレンスを入れるデータ構造でいけます。
my %date_query; # date をkeyとするデータ構造
です。
20181231 => [ '紅白歌合戦 2018' , 'メイウェザー' , '米津玄師' , '紅白' ... ]; 20190101 => [ '箱根駅伝' , 'MHPS' , 'マリウス' , '2019年運勢' ... ];
しかし、このデータ構造だけでは、検索ワードが過去のいつ出現したかを調べるときに大変です。
これを繰り返すのは厳しいです。100日とか計算するとして、100日目の検索ワードが1日目に出現していた場合、過去99日遡って探すことになります。
すぐ見つかれば良いですが、見つからなかったら・・・?
計算量も多そう。
ということで、検索語そのものをkeyとするデータ構造を作ります。
valueには2つのリファレンスを入れます。
- 日付をkey、その日付の順位(ranking)と何回目の出現か(count)を格納したハッシュリファレンス
- 文字列 history をkey、検索ワードが登場した日時を格納した配列リファレンス
さらに、history という文字列をkeyとしてvalueに配列リファレンスを格納。
この配列リファレンスに1つ以上の要素がある場合には、過去複数回出現している判断。
末尾から2番目にある要素を直前の出現日付として last_time
に記録します。
my %query_date; # query をkeyとするデータ構造
"純烈" => { 'history' => [ 20190110, 20190111 ], '20190110' => { 'ranking' => 0, 'count' => 1 }, '20190111' => { 'count' => 2, 'last_time' => 20190110, 'ranking' => 1 },
これにより、検索ワードと日付をkeyとして last_time があればそれが前回の出現日という処理をしています。
1つのデータ構造では難しいなぁ、と思ったら同じデータが入っていてもkeyを変えた構造のデータを作ってみるという感じです。
うちが最近勉強しているSQLだと同じレコードに別名をつけて副問い合わせをする、みたいな感じですかね。
もっと実装力やデータ構造力が高ければ、もっと簡単になりそうな気がするんですが、気がするだけでその具体的な道筋が見えない・・・ってのが今のうちの現在地です。
頑張ろう。
※第4回でやる「サブルーチン」を導入すると、コードの見栄えがもう少しスッキリするはず。
おまけ
昨日のチーム内プログラミング勉強会で出した課題より1問。各種金額は作問時の思いつきが多いですが、連続ボーナス狙いで長く続けたとして、このギャンブルは果たして得でしょうか? pic.twitter.com/DVEhxP3h7U
— OGATA Tetsuji (@xtetsuji) 2019年1月24日
このゲーム、1回遊ぶのに500円かかり、もらえる額はサイコロの目の数 × 100 なので、5 か 6 を出さないとペイしない。
サイコロを振って 5 か 6 が出る確率は 1/3なので、ボーナス抜きでは普通に負ける。
で、ボーナスが出る確率は
- 1が3回連続で出る: 1/6 × 1/6 × 1/6 = 1/216
- 4,5,6のいずれかが3回連続で出る: 3/6 × 3/6 × 3/6 = 27/216 = 1/8
うーん、具体的な計算してないけど、負け(2/3)を覆せるだけの確率ではなさそうだなぁ
試行回数: 10000
ボーナス回数: 440
最終損益: -700700
追記
サイコロの6の目がでないよー、との指摘をいただき、修正したら勝率が変わった!
(bitbucketにあげたコードは修正済みです)
Perl入学式 2018 in東京 秋開講 第3回 お疲れ様でした
受講された方、サポーターの方、お疲れ様でした。 講師をやったジャージの人です。
スライド中の練習問題と復習問題ですが、昨年夏に書いた解答例をblogに掲載しています。
参考にしてください。
sironekotoro.hateblo.jp
あと、時々つかったスライドも置いておきます。
リファレンスは難しい
リファレンス、自分も苦労した覚えがあります。というか、リファレンスがあると何が便利になるのか?何が良くなるのか?が、まずわからなかった。
自分が複雑なデータ構造を扱うことはないと思ってました。
「すっぱいブドウ」の話ではないですが、リファレンス使わなくてもいいもんね!と思っていたものです。
その時は斜に構えたままでしたが、Perlに慣れ、自分がしたいことを実現するためにはリファレンス使えばいけそう!となってから一気に理解が進みました。
リファレンスは教えるのも難しい
リファレンス、Perl入学式の現在のテキストでは、「リファレンスじゃないとできないことがある」「便利だから使う」ってな感じで進めています。
そんな中、毎回試行錯誤、苦労しながら捻り出しているのがリファレンスの「たとえ」です。
「変数が格納されているメモリのアドレス」という説明でわかる人はそれで良いのですが、「メモリのアドレス」でわかる初心者さんがどれほどいるのか。
「C言語のポインタのようなもの」といっても、C言語もポインタも知らなければ伝えられません。
※ そもそも、うち自身がC言語は名前だけ、ポインタも「Perlのリファレンスみたいなやつ?」って程度の理解です。
ということで、今回は「雑多な人間の属性と値(ハッシュ)が GPS を通すことで1つの座標(緯度経度)に定まるように、配列やハッシュをリファレンスにすることで一つのスカラーとして扱うことができる」という言い方とスライドを用意しました。
もし、リファレンスについて良い言い回しや、こういう例えはどうだろう?ってのがあれば是非教えてください。
オススメ参考書
以前のエントリでも書きましたが、深澤千尋さんの「すぐわかるオブジェクト指向Perl」これがいいです。
タイトルにはないですが、この本の半分程度がPerlのリファレンスについての説明に当てられています。
これは、Perlのオブジェクト指向はハッシュリファレンスを利用するためなのですが、微に入り細に入り、噛み砕いて説明してくれている良い本です。
そして、なんとその著者の深澤さんがくるPerlのイベント「YAPC::Tokyo 2019」が今週末に開催です。
様々なPerlやシステムについてのセッションが多数行われるイベントです。是非参加ください!
yukicoder
講義の後のピザ会で紹介したyukicoderです。うちもサポーターのmotiさんから教えてもらいました。
とのことですが、★1つのレベルの問題であれば、Perl入学式第1回〜第3回の内容で解けるものもあります。
例えば
この問題は
- 標準入力
- スカラー変数
- 改行の削除
- 文字列の分割
- 配列(リスト)
- 四則演算
- 標準出力
で解くことが可能です。
まずは下記の初心者向けチュートリアルから始めてみてください。
Perl入学式の課題で物足りない、とか、プログラムで問題を解くことを習慣にしたい、という方にもオススメです。
Googleトレンドの非公式APIから情報を取ってきていい感じにする
恒例、ピザ回のお題です。別エントリであげます。