アイキャッチ

頭を使いすぎる「シェル芸勉強会」開催レポとその裏側【連載:法林浩之のUNIX温故知新】

ITニュース

法林浩之@jusがお届け!

UNIXエンジニア温故知新

UNIXが生まれてから半世紀。脈々とソフトウエアの進化を支えてきた技術は、どのようにして今に至るのか? そこから学べるものとは? 日本UNIXユーザ会「jus」の法林浩之さんが、イベントレポートを中心に「UNIXの今」をお届けします!

日本UNIXユーザ会(jus)の法林です。この連載では、jusの活動報告を通して、IT関連のさまざまな話題をお届けしていきます。お楽しみください。

今回は、2021年8月に開催した「シェル芸勉強会・jus共催 第55回シェル芸勉強会」の模様をお届けします。イベントレポートは、シェル芸勉強会の主宰者でもある、千葉工業大学の上田隆一さんにお願いしました。

イベント概要

・タイトル:シェル芸勉強会・jus共催 第55回シェル芸勉強会
・講師:上田隆一(千葉工業大学)
・日時:2021年8月21日(土) 13:00-16:00
・会場:オンライン

シェル芸勉強会とは

シェル芸勉強会は、テキスト処理などの問題を私が3時間で7~10問出題し、参加者にシェル上のコマンド操作だけで解いてもらう形式で2012年から開催されています。なかなかハードな勉強会で、各問15分ほどしか解く時間がない上に難易度が高く、解ける人は少数という状況が3時間続きます。

私も含めて全員が頭を使いすぎて、翌日に極度の疲労や体調不良を訴えるという有様なのですが、解けた人の解答や考え方をTwitterで共有してもらうことで、主催者・参加者共に、毎回、新たな発見が得られています。

今回は端末に模様を描いてもらう問題やテキスト検索の問題を7問出題しました。

当日の参加者は、YouTubeの最大同時接続数を見ると42人となっていましたので、45~50人くらいではないかと推測しています。各問題や会の様子(YouTube動画やTwitterまとめ)は以下のURLからたどって見ることができます。

https://b.ueda.tech/?post=shellgei_55_link

今回の問題から出題

今回出題した問題の中から、1問目だけ紹介します。次のような問題でした。

Q1: 次の図形を描いてください。for文やwhile文は禁止とします。


* * * * * * * 
* *         * *
*   *     *   *
*     * *     *
*     * *     *
*   *     *   *
* *         * *
* * * * * * * 

解答に関しては、「全部echoで出力してよいですよ」とお断りしていましたが、短く楽に解くために全力を注いだ解答がTwitter上に上がりました。

私が特に面白いと感じたものは、@mk_stonebrainさんや@xztaityozx_001さんが発案、解答していた、スペースや`*`の代わりに01を入力してあとから置き換えるという方法でした。これを利用した解答例を示します。


$ echo 1111110010101001 | fold -b4 |
 perl -ple '$_.=reverse($_)' |
 pee cat tac | sed 's/1/* /g;s/0/  /g'

この解答は、echoで図形の左上1/4だけ01を並べ、foldで4列4行に折り返し、perlで各行に右上1/4分の01を追加して、最後にcatとtacで、それぞれ上半分、下半分を出力しています。`pee cat tac`のpeeは、読み込んだ入力を後ろに書いたコマンド全てに入力するコマンドで、moreutilsというコマンド群に属します。

https://joeyh.name/code/moreutils/

ただし、この解答は、後から振り返って冷静な状態で「こうやっておけばよかった」というものなので、本番では、私も含めて参加者からはもう少し凝った解答を作っています。ぜひ上記のリンクから、TwitterのまとめやYouTubeをご覧ください。

LT(long talk大会)

シェル芸勉強会の本編が終わった後は、いつもLT(といっても5分打ち切りのライトニングトーク大会ではなく、時間無制限のロングトーク大会)を行っています。今回は2件の発表がありました。

・たいちょー(@xztaityozx_001)さんの「Owari version 2.0 をつくりました」

・きゃろ(@Carol_815)さんの「スクラッチで作るnlコマンド」

https://qiita.com/Carol_815/items/032c18ebee369d3b278b

いずれもコマンドを作る話で、細かい話だけど無視せず解決しなければならない実装上の問題が主なテーマでした。「細かすぎるけど難しい」はこの勉強会の参加者には興味をそそる話で、音声チャット上で議論が盛り上がりました。

それぞれの実装は以下のURLにあります。

・owariの実装(Go言語): https://github.com/xztaityozx/owari
・nlコマンドの実装(V言語): https://github.com/vlang/coreutils/blob/main/src/nl/nl.v

開催の裏側と反省

シェル芸勉強会のリモート配信には、パソコンを2台使っています。一つはYouTubeに表示するためのLinuxマシンで、端末とTwitterのタイムライン、カメラで映した私の顔を表示します。

この画面をHDMIから出力して、もう1台のWindowsマシンにUSB製のキャプチャデバイス(2000円弱で安く買えるもの)で取り込みます。

Windowsマシンでは、参加者とのコミュニケーションのためにDiscord(@3sochaさんにシェル芸のサーバを作っていただきました)が立ち上がっています。

Discordの音声チャットとマイクからの私の声を混ぜて、さらにキャプチャしたLinuxマシンの画面を混ぜてYouTubeのライブとして配信しています。配信ソフトにはOBS(Open Broadcaster Software)を利用しています。

配信する部屋は光回線の終端装置のある部屋から遠く、無線LANしか届いてないのですが、配信の日は長いLANケーブルを伸ばして有線で配信しています(今回ではありませんが配信直前にうちの黒猫氏がLANケーブルを噛んで断線させてピンチに陥ったことがあります)。

YouTubeでは、端末やTwitterの文字が読みやすいようにフルHD、Twitterでの反応をよくするために超低遅延のモードで配信しています。

配信は、スペックに余裕がある機材や設備を揃えてしまえば特に難しくないのですが、音声関係でたびたびトラブルが起こります。今回は、Discordの音声をOBSで私がモニタリングできないトラブルが解決せずに勉強会の開始時間になってしまいました。

こうなると、私はYouTubeで配信されている音声をヘッドフォンで聞きながら参加者と会話しなければならず、

・会話が遅延する
・自分の音声を聴きながら喋らないといけない

というストレスのかかる状況になってしまいました。

声にストレスが乗ってしまうと休日の楽しい雰囲気が壊れてしまうので、それはなんとか避けなければなりませんが、生まれつき短気な人間なので大変でした。

次回の勉強会では、「1時間前に集まってDiscordで雑談する枠」を設けたので、雑談の音声をテストに使って万全な状態で配信する予定です。また、音声の分岐はハードウエアを使った方が確実なような気もするので、機材を追加購入するかもしれません。

最後に宣伝

シェル芸勉強会関係者で執筆した「シェル芸本」が9月に技術評論社さんから発売されました。正式名は「シェル・ワンライナー160本ノック」(技術評論社)です。

シェル芸勉強会の55回の歴史が詰まった本で、単にシェル、ワンライナーの話だけでなく、Linuxの知識や端末を通じた基本的な使い方も学習できる本ですので、ぜひ書店で内容を確認の上、お買い求めいただけると幸いです。

プロフィール画像

法林浩之さん(@hourin

大阪大学大学院修士課程修了後、1992年、ソニーに入社。社内ネットワークの管理などを担当。同時に、日本UNIX ユーザ会の中心メンバーとして勉強会・イベントの運営に携わった。ソニー退社後、インターネット総合研究所を経て、2008年に独立。現在は、フリーランスエンジニアとしての活動と並行して、多彩なITイベントの企画・運営も行っている

Xをフォローしよう

この記事をシェア

RELATED関連記事

RANKING人気記事ランキング

JOB BOARD編集部オススメ求人特集





サイトマップ