Masteries

技術的なことや仕事に関することを書いていきます.

最近読んだ本

最近読んだ本達の話題です. 最近, サブ機としてAndroid端末を購入したところ読書が(過去の自分比で)捗りまくっています.

正しいものを正しくつくる

昔, チームでスクラムを取り入れてみよう! となった時, あるチームメンバーにプロダクトオーナーになってください, とお願いしたことがある. ただその時は, その中でプロダクトオーナーはどう振る舞えばいいのか...? といった所について, うまく伝えられなくて, 大変苦労させてしまったという思い出がある. その時にこの本があれば, この本をお手本にして, 「こういう感じでやっていきましょう!」と言えたのではないかなー... と思った.

「正しいものを正しくつくる」ために, 本の序盤ではアジャイルな開発の必要性とその方法, 終盤はその中で求められるプロダクトオーナーの役割や活動が書かれている. この本を読んで, 改めてプロダクトオーナーって明らかに大変で, 超人であることが求められるな... ということを強く思ったので, 次にまたスクラムマスターとして振る舞う機会があったら, 改めてこの本を読んで, スクラムマスターとしてプロダクトオーナーをしっかり支える, という行動が出来たらいいのかな, と思いました.

Clean Agile

割と最近の本で, これまでのアジャイル開発の流れを振り返って基本に立ち返ろう! みたいなことが書かれている. 「アジャイルソフトウェア開発宣言」に至るまでの出来事を振り返る話題があって, 当時の様子を見ているようで面白かった. 「アジャイルにやっていきたいので参考にしたいッス!」という人よりも, いろいろ試してみた上で改めて基本を思い出そう, という時に読めると有用そうと思いました.

Fearless Change

Fearless Change

Fearless Change

まだ半分ちょっとくらいまでしか読んでいないけれど, とても興味深かったので今紹介します(?). 組織の中で変化を起こしたい場合, どうしても自分1人の力では難しい事が多くて, 人々を巻き込んでいく動きが求められることがあります. この本には, そういう時に使えるパターン(アクションの例)が, 変化のフェイズごとにまとめられています.

なので, チームや会社の中で, 新しい施策や取り組みをしたい! という時にこの本で紹介されているパターン達は非常に役立ちそうです. 実際 id:daiksy さんも, 社内でスクラムに興味があるエンジニアの会を立ち上げる時は, この本にあるパターンを意識して動いた, という事を仰っていて, 逆に自分も「あ, これは見たことある!」「やったことなるな〜」という気持ちで読み進めています.

これまでの人生で無意識に使っていたやり方について, それをパターンとして名前を付けることで説明しやすさ(再利用性?)が上がったような気持ちになってよかったです. 人生, どうしても1人では解決できなくて, 仲間を増やしてやっていくしかない...! という場面は案外あるはずで, そういう意味では万人にオススメできる本と思いました.

「中学英語で読める はじめての英語ライトノベル」を読んだ

読みました. 一昨年, いろいろと海外に足を運んでもう少し英語力高めたい...! と思っていたものの, 昨年はコロナ禍ということもあって国外に出ることも叶わず, 若干意欲が下がり気味だったところ, ふとインターネット上でこの本の存在を知り, 買って読んでいました.

「中学英語で読める」というのは本当にそうで, 英語力に一切自信がなく, 英語の文章を見かけると思考停止してGoogle翻訳などで翻訳しがちな自分でも, 8割〜9割くらいは「読める, 読めるぞ...!」という勢いでサクサクと読み進めることができて, 何というか不思議な気持ちになりました. 時折「わからんぞ...?」という単語が出てきたりした時も, Kindleで読んでいたので即座に英和辞典を引けるのが大変便利でした.

「英文読解は苦手」という気持ちが強いので, これくらいのレベルの本を幾つか読めると, 若干苦手意識が薄れていきそうかも...? と思いました. なのでうまいこと習慣にしていきたいところです. ただ, 次に何を読んでみるかが悩ましいところですね... とにかく, うまいこと「英文を読む」ということに慣れていきたいですね, ドキュメント読む時とかも有用ですし.

小ネタ: 久々にMinillaでCPANモジュールをリリースする

papix.hatenablog.com

昨日Pull Requestを送ったRouter::Simple::Reversibleですが, サクッとcomaintをもらったのでMinillaでリリースすることにしました(id:motemenさんありがとうございます!). が, あまりに久々すぎて何もかも忘れてしまっていたので備忘録がてらやったことをメモしておきます.

.pauseの確認

まずは ~/.pause があるか確認します. ここには, PAUSEのユーザー名とパスワードを置いておきます.

user PAPIX
password XXXXXXXX

PAUSEはCPANモジュールをアップロードするときに使うアップロードサーバーです. Request PAUSE accountというメニューから, PAUSEのアカウントをリクエストすることができます(人力で認証しているので, リクエストしてから発行されるまで数日かかることがあります).

pause.perl.org

Minillaのインストール

Minillaで管理されているモジュールであれば, リリースにあたってMinillaそのものと, Version::Next, CPAN::Uploaderが要求されるのでインストールしておきます.

$ cpanm Minilla Version::Next CPAN::Uploader

必要に応じて以下のモジュールもインストールしておくとリリース前のテスト項目が増えて安心度が上がります.

$ cpanm Test::CPAN::Meta Test::MinimumVersion::Fast Test::PAUSE::Permissions Test::Pod Test::Spellunker

リリース

あとは,

$ minil release

をすれば, Minillaがいい感じにガイドしてくれます. 簡単ですね!!!


...ということで, 先のPull Requestを盛り込んだRouter::Simple::Reversibleの0.02を無事にリリースすることができました. もうちょっとすればmetacpanなどにも反映され, 利用できるようになるのではないかと思います.

metacpan.org

Router::Simple::ReversibleにPull Requestを送りました

metacpan.org

Router::Simple::Reversibleは, Router::Simpleを拡張して, controllerとaction(とパラメータ)からpathを生成できるpath_forメソッドを追加したものです. pathからcontrollerやactionを決めるRouter::Simpleの逆ができるのでReversible, という訳ですね.

SYNOPSISのコードを見ていただければ, どういった機能が提供されるのかがよくわかると思います.

# Same as Router::Simple
$router->connect('/blog/{year}/{month}', {controller => 'Blog', action => 'monthly'});
 
$router->path_for({ controller => 'Blog', action => 'monthly' }, { year => 2015, month => 10 });
# => '/blog/2015/10'

...で, Router::Simple::Reversibleですが, 一部のパターンでwarningのメッセージが出る場合があったので, それを抑制するPull Requestを投げました.

github.com

mergeしてもらったので, 近々リリースされるのではないかと思います.

小ネタ: Big SurでXML::Parserのインストールに失敗する件

MacのBig SurかつPerl 5.32.0の環境でXML::Parserをインストールしようとしたところ, 次のように失敗しました:

--> Working on XML::Parser
Fetching http://www.cpan.org/authors/id/T/TO/TODDR/XML-Parser-2.46.tar.gz ... OK
Configuring XML-Parser-2.46 ... OK
Building and testing XML-Parser-2.46 ... FAIL
! Installing XML::Parser failed. See /path/to/.cpanm/work/1612254113.90705/build.log for details. Retry with --force to force install it.
! Installing the dependencies failed: Module 'XML::Parser' is not installed

~/.cpanm/build.log にログがあるので読んでみると, 次のようなメッセージがありました.

Can't load '/path/to/.cpanm/work/1612254113.90705/XML-Parser-2.46/blib/arch/auto/XML/Parser/Expat/Expat.bundle' for module XML::Parser::Expat: dlopen(/Users/papix/.cpanm/work/1612254113.90705/XML-Parser-2.46/blib/arch/auto/XML/Parser/Expat/Expat.bundle, 2): Symbol not found: _XML_DefaultCurrent

「perl Symbol not found: _XML_DefaultCurrent」でググってみると, 次のStack Overflowがヒット.

stackoverflow.com

これはM1 Macでの話ですが, コメントを見ると,

Installing the latest beta release of ExtUtils::MakeMaker (7.57_02) should solve your problem. It will probably be released as a stable release soon.

とありました. 調べてみると, 2021年2月2日現在のExtUtils::MakeMakerの最新版は7.58だったので, 先に cpanm ExtUtils::MakeMake してから改めて cpanm XML::Parser すると, うまくインストールできました.