Perlを使う上でツラいところ
-
目論見
Perl のツラいところを列挙して、そこを解消するモジュールなりを作れないか?という取り組み
パッケージマネージャ
bun や pnpm といったパッケージマネージャのような手軽さがない
手軽さとは?
bun i -D textlint のようにコマンド一発で依存の追加 + lockfile の追加が出来ない
高速な並列インストールの実行が出来ない
App::cpm なら可能だけど、ロックファイル生成はない
実行 / ランタイム
デプロイ先に手軽さがない
ビジネスが絡むので割とどうしようもない
JavaScript / TypeScript だと Cloudflare Workers のようなお手軽 edge runtime がある
Perl application をデプロイしようと思うと Google Cloud Run とかさくらのAppRunとかになる
Dockerfile を用意することになるので面倒
結局コンテナを作るところからになる
型がない
厳密には後付けで型は付けられるけど、実行時チェックになる
Production では実行されない型チェックが必要
つまるところ開発時にだけ型チェックする機構が要る
もしかして: Syntax::Keyword::Assert
利用モジュールが多いと use Foo::Bar; が大量に発生する問題
これはどこの言語でも一緒?
かもしれない
クラスベースでやるとモジュール名を大量に書かないとダメになってツラい
関数型でやるしかないが、しかし今度は この関数はどこから?になる
これはコーディング規約を作ってなんとかするしかないか
非同期実行がツラい
async/await を外付けで実現しているのでモジュールのインストールがどっちにしろ必要
CI/CD
ライブラリの bump が手軽ではない
少なくとも dependabot ではサポートされてない
なので自分で処理を書くことになる
ライブラリのインストールが毎回走ってツラい
キャッシュを上手く使えば回避できそう?
とは言えその「キャッシュを上手く使う」設定が必要になるのが難点
モジュール / アプリケーションの作成
組み込みのワンコマンドでテンプレートを作ってくれる君がない
例えば bun だと bun create cloudflare@latest みたいなやつ
これ結局パッケージマネージャを作るしかなくない?