と言うお話。
今日、なんか久々に、
プログラミングを面と向かって取り組むかー
という気持ちが復活してて、とりあえず以前から作ろうと思ってたモノを書き始めました。
それで、最初は plenv とか perl-build とか使って、最新の Perl をサクっと入れて……、 と考えていたんですが、NixOS という若干特殊なパス環境を使っている影響か、
という状態になっていて、実際には外部のヘッダファイルが云々なエラーが出ていたので、
これどう考えても NixOS のパス環境が特殊な影響ですよねー
って感じでした。
そのため、とりあえず Perl と cpanm はシステムが提供しているモノを使って、 carton のパッケージ定義を足す、という様な事を行って、Perl の開発環境を整えました。 そして、それ故に、開発時間よりも、開発環境を整える時間の方が食ってしまったと言う。
なお、実際に NixOS で carton をシステムにインストールするのに使ったパッケージ定義は下記の様な感じです:
perlPackages = let self = _self // perlPackages; _self = with self; { Carton = buildPerlPackage rec { version = "v1.0.28"; name = "carton-${version}"; src = fetchurl { url = "mirror://cpan/authors/id/M/MI/MIYAGAWA/Carton-${version}.tar.gz"; sha256 = "0gjswy424z22c8cw93x6wlpmvb6niqkajs91b76a20scc05pjndw"; }; propagatedBuildInputs = with perlPackages; [ JSON ModuleMetadata ModuleCPANfile TryTiny Parent GetoptLong ClassTiny PathTiny Appcpanminus CPANMeta CPANMetaRequirements ModuleCoreList ModuleReader ]; }; ClassTiny = buildPerlPackage rec { version = "1.006"; name = "Class-Tiny-${version}"; src = fetchurl { url = mirror://cpan/authors/id/D/DA/DAGOLDEN/Class-Tiny-1.006.tar.gz; sha256 = "0knbi1agcfc9d7fca0szvxr6335pb22pc5n648q1vrcba8qvvz1f"; }; propagatedBuildInputs = [ Carp ]; }; ModuleCPANfile = buildPerlPackage rec { version = "1.1002"; name = "Module-CPANfile-${version}"; src = fetchurl { url = mirror://cpan/authors/id/M/MI/MIYAGAWA/Module-CPANfile-1.1002.tar.gz; sha256 = "1z9wsps70h7ypaxmwq8l8wp0dg4kqrxmaqgzbh2fq8jw9idw55dz"; }; propagatedBuildInputs = [ CPANMeta JSON Parent ]; }; ModuleReader = buildPerlPackage rec { version = "0.003002"; name = "Module-Reader-${version}"; src = fetchurl { url = mirror://cpan/authors/id/H/HA/HAARG/Module-Reader-0.003002.tar.gz; sha256 = "1pn0q5qh9jy5jy2bbvjpyv3m5j11qvsf8q8arzaga009g6a9szd6"; }; propagatedBuildInputs = [ ScalarListUtils ]; }; }; in self ;
ちなみに、このコードは実際には手書きで作ってたりしたんですが、後で調べると cpan から nix の定義を作る、 という様なツールが NixOS の公式に存在していたので、あんまり手作業でする必要はなかったかなー、 と今としては考えています。が、手作業でも目的は達せたので、とりあえずは問題なかったけれども。
それで、そんなこんなで Perl の開発環境を整えるのに手間取ったりはしたものの、 久しぶりに Perl を書いた感想としては、
あー、プログラミングってこういう感じで楽しいんだよなー
と、思い出した、と言うか、思い返せたので、まあ今日取り組んで正解だったなーと。 なんか、こう、色々と面倒に考えずに、サクっと作り始める、と言うのは、 こういう楽しさが有ったんだっけ、みたいな感じ。
ただ、実際には今日の作成を始めるより以前に、モノのアイディアだけはまとめてあったりしたんで、 その辺りの過程はすっ飛ばしていたりはするんですけどね。まあ、その辺りだけはぬかり無く、って感じです。はい。
とりあえず、今日はそんな感じで、
プログラミングを楽しむ
と言う感覚が取り戻せたんで、まだボチボチと色々作って行こうかなーとか考えています。はい。