第63回シェル芸勉強会 大阪サテライト レポート

2/25(土) に開催された、第63回シェル芸勉強会 大阪サテライト会場の様子をレポートします。

案内

大阪サテライトの様子

今回大阪サテライトは、4名の方に参加していただきました。 東京会場が久々の現地開催だったのですが、上田先生が参加者の反応や様子を確認しながら進められていたようで、いつもの様子が戻ってきたなという、ちょっとした安心感がありました。 大阪では、YouTubeの配信にTwitterでツッコミを入れつつ、参加者同士で解き方を共有しながら問題に取り組んでいました。

今回個人的に勉強になったのは問題3の解き方で、uniqコマンド-s-fオプションで、先頭の文字やフィールドを読み飛ばして比較できるというものでした。 これは覚えて使いこなせるようになりたいです。

おやつタイム

便器型のもなかをバリボリと食すシェル芸人たち。

LT

1件の発表をしていただきました。

www.youtube.com

音声合成してみよう」 - たいちょーさん

speakerdeck.com

たいちょーさんの音声データを自由に組み合わせられるエンドポイントを不用意に公開してしまうと、やっぱりシェル芸人のオモチャになってしまいますね。 発表ありがとうございました。

おわび

シェル芸を実行する環境として、募集ページには

UNIX 環境のあるノート PC(MacWindowsでも可) ※Windows で参加している人もたくさんいますのでご安心ください。 (WSL・Docker・Cygwin・MSYS2・Git bashBash on WindowsChromebook など)

と記載したままずっと変更していなかったのですが、Git Bashでは問題リポジトリの取得ができないと報告がありました。

第33回の問題ファイルに、改行入りのパスが含まれており、それが Git for Windows(Git Bash)でうまく扱えないようでした。すみません。 次回の募集ページではこの表記を修正しておくようにします。

ちょっと試してみた

勉強会後に、Gitのスパースチェックアウトを使って、必要なファイルだけチェックアウトできないか試してみましたが、これはうまくいきませんでした。

git sparse-checkoutを使ってみる

別の方法として、curlGitHubAPIにアクセスして、必要なファイルだけ取ってくる方法を考えてみました。 別途Windows版のjqコマンドをインストールする必要がありますが、この方法であれば必要なファイルだけ取得することができると思います。Git LFSには対応しないと思いますが。

GitHubapi経由で必要なファイルを取得

$ curl -s https://api.github.com/repos/ryuichiueda/ShellgeiData/contents/vol.63 | jq -r '.[] | "curl "+.download_url+" -o "+.name' | sh

あるいは、GitHubにはリポジトリのZipアーカイブを生成してダウンロードする機能があるので、こちらを利用する方が楽で良いかもしれません。

Zipアーカイブでダウンロードする

$ curl -sL https://github.com/ryuichiueda/ShellGeiData/archive/refs/heads/master.zip -o ShellGeiData.zip

いくつかの方法を考えてみましたが、Git Bashにはパッケージマネージャーがなく、勉強会中に紹介されるコマンド類をインストールするのが難しいため、自身で環境を整備するのに慣れている玄人向きかなと思います。 Windows環境でシェル芸を試される場合は、WSL2上にUbuntu環境を用意していただくと、出題者の環境とほぼ同様になるため、トラブルが少なくて良いかなと思います。 GitでのShellGeiDataリポジトリのチェックアウトも、特に問題ありませんでした。

Ubuntu on WSL2を使う

2/27 追記

CygwinのGitでは問題ないようでした。

くんすとさんによると、Gitのスパースチェックアウトに加えて、protectNTFS 機能を無効化することでチェックアウトできるようでした。

blog.kunst1080.net

おわり

今回もご参加いただき、ありがとうございました。 また次回もよろしくお願いします。