シェル・ワンライナー160本ノックのあとがきの代わり1: プログラミングを日常のものにという願い
Wed Sep 29 15:00:00 JST 2021 (modified: Wed Sep 29 16:23:38 JST 2021)
views: 4764, keywords:シェル芸本, 日記 この記事は最終更新日が3年以上前のものです。
シェル・ワンライナー160本ノックが9/27に正式に出版日を迎えました。私の本はいつもクドすぎるあとがきがくっついているのですが、この本は
- 共著である
- 内容ぎっしりすぎてページ的にあとがきが入らなかった
という2点の理由から、あとがきがありません。 ですので、思い入れの強いこの本について、 あとがきの代わりにちょっとずつ何か書いていこうと思います。 たぶん、書籍を手に取る人向けというより、 経験者から見て、この本をどう勧めるべきなのかという内容になると思います。
この本の意図1段目
クドクド書く前に、この本がどんな本か知らないと意味不明だと思いますので説明しておきます。 この本は、普段からLinux(以後、LinuxはUnixに置き換え可)を使う人の場合、 端末の上でいろいろできると便利なので、 ちょっと難しい問題を解いて、自由自在に使えるようになろうという本です。 例えば、たくさんファイルやディレクトリのあるディレクトリでls
を打って (あるいはGUIでフォルダを開いて)、
ueda@uedap1:~/ARCHIVE/PAPER_and_PRESENTATION$ ls
20000425発表資料4.doc IROS2005cam_ready jspe2003
20000922研究会..doc IROS2006 masterthesis
20001130ミーティング資料 IROS2007JITSUKAWA mini2000.doc
20001214ミーティング資料 ISCIE_PROBROBO mini2001
20010508ミーティング資料.doc JRSJ_SamplingQMDP mini2002
20011023研究会資料 JSAI2015 mini2003
20011207ミーティング資料 NikkeiLinux.tar.gz mini2004
20011211研究会資料 'Playing Soccer with Legged Robots.ppt' mini2005
20020225勉強会資料 ROBOMEC2001 mini2006
20020423研究会資料 ROBOMEC2005 mini2007
20020529勉強会資料 ROBOMEC2006 mini2008
20020702研究会資料 RSJ2003 not_submitted
20021022研究会資料 RSJ2004RESET ob2007
20021023勉強会 RSJ2004VQ rejected
20021203研究会資料 RSJ2004ppt robosym2003
20030218作業報告書 RSJ2005 rsj2003ppt
20030409meeting RSJ2006 rsj2007ppt
20030422研究会資料 RSJ2007 smc2003abst
20030611勉強会資料 RSJ2008 spie_ie_2004
20030617研究会資料 RSJ2015 ssi2007_ppt
・・・
みたいにズラーッとファイルやディレクトリの名前が出てきたときに、 「ICRA
」か「IROS
」で始まるディレクトリが見たいとします。このときに、
$ ls -d IROS* ICRA*
ICRA2002 ICRA2004 ICRA2005cam_ready ICRA2008DP IROS2003 IROS2004ppt IROS2006
ICRA2003 ICRA2004ppt ICRA2007DP ICRA2015 IROS2004 IROS2005cam_ready IROS2007JITSUKAWA
$ ls | grep -e ^ICRA -e ^IROS
ICRA2002
ICRA2003
ICRA2004
ICRA2004ppt
ICRA2005cam_ready
ICRA2007DP
ICRA2008DP
ICRA2015
IROS2003
IROS2004
IROS2004ppt
IROS2005cam_ready
IROS2006
IROS2007JITSUKAWA
みたいなコマンドがサッと出てこないと、面倒くさいでしょうからできるようになりましょう、 という単純な呼びかけのためにこの本を書いています。すごく単純な話です。 本書ではこれよりも強烈に難しい問題が出ますが、 それは、ls -d IROS* ICRA*
やls | grep -e ^ICRA -e ^IROS
の便利さの先にさらなる便利さがあるからで、 基本的にはまずls
からちょっと気の利いたことができれば十分という認識でいます。
もちろん、GUIを使ってファイルやディレクトリを探しても全く問題はないと思います。 ただ、慣れれば圧倒的にコマンドを使うのが早いわけで、どんな職種であっても、 これから何十年もパソコンを触るなら、コマンドが使える環境を整え、 使いこなせるようになり、 ファイルを整理整頓できるようになると人生に無駄がないのではないかと考えています。 しかし、主に高齢の方の一部がスマートフォンやインターネットを他人事と思っているのと同様、 CLIを他人事として考えている人はたくさんいると思います。 で、それに文句を言ってもしょうがないので、私個人としては、 なるべく面白くCLIに入れるようにという気持ちで、本を書き、 シェル芸勉強会などを開催しています。
この本の意図2段目
さらに、この本には、プログラミングの自然な入り口になってほしいという願いもあります。 「ls | grep -e ^ICRA -e ^IROS
」は手続きの記述なので、 高尚でもなんでもないですがプログラミングです。 これくらいができる程度だと「プログラマー」とは呼べないかもしれませんが、 これくらいできれば、ls
の先にawk
やsed
の簡単なコードを置くまでの心理的、 技術的な距離はそんなにありません。 あとはそこそこ長いワンライナーが書けるようになって、 ワンライナーだとややこしいのでシェルスクリプトを書いて、 それもややこしいのでスクリプト言語を覚えて、 それも遅いのでまた別の言語を覚えて・・・ とステップアップしていく人が出るといいなと考えています。 つまり、日常のファイル操作や、簡単なテキストファイルの中身を操作することから、 プログラミングに入っていくのがよいのではないかという立場です。 コマンドを知っていれば、システムのファイルをちょっと覗くということもできるので、 インフラ方面の勉強も加速します。
最近はTwitterで怪しいプログラミングスクールの話をよく耳にしますが、 この手の人たちは、「とにかくプログラミングが魅力的で特別な技術である」 という立場で話をしています。「プログラミングやってる俺ってスゲー」みたいな陶酔感は、 プログラミングを勉強し始めた大学1年生の自分にもあったのを覚えています。 また日を改めて書きますが、私はWindowsでプログラミングを覚えたので、 仕送りが月6万円なのに15,000円払ってVisual C++を買い、インストールして、 「MFCのウィザード」というものでプロジェクトを作り、なにもないウィンドウを出した時に、 確かにすげえと思い、特別感がありました。 今でも、Visual Studio(VScode)やMacのアレ(名前忘れた)を立ち上げると、 ワクワクする人はたくさんいると思いますし、そこからすぐに上達していく人も多いと思います。
でもたぶん、プログラミングって、 料理するときにふらっと台所に立つのと同じ感覚でやるもので、 そんなに大袈裟なものではないはずです。 作るものだって、 重複するファイルを消したり移動したりというちょっとしたものでいいはずです。 私は大袈裟な仕組みや 「ナントカテクノロジー」という宣伝文句に目を奪われてしまい、 かなり遠回りをしてしまいました。 OSに関してはそれぞれ一長一短がありますが、 ユーザに端末を使わせないほうに企業努力をして、 台所を何か特別なものにしてしまったOSがシェアを握っている (そして今慌ててそれを元に戻そうとしている)のは、 少しもったいないかなと思います。 「Linuxを普段から使う」ということ自体、 少し敷居が高くなっているわけですが、 少なくともこれからそういう仕事をしたい人には、 まずそこから入ってもらいたいなと考えています。 「今日の積み上げ」を箇条書きするよりも、 普段からLinuxを触っていると、自然に何かが積み上がってくると思います。 もちろん、もう年季の入った人は何を使っていてもいいと思いますが、 入り口としては、そっちがいいのかなと今は考えています。
シェル・ワンライナー160本ノックは、 端末の使い方とファイル操作から話が始まっています。 問題自体は結構いきなり難しいのですが、 「慣れるまではファイル操作にGUIを使ってよい」とも書いてあるように、 とにかく最初はLinuxに慣れてもらおうという意図で構成されています。 また、執筆陣というかシェル芸界隈の人々は「凄腕の人しか相手にしない」 という感じではないので、助けてと言われれば (そして失礼でなければ)喜んで助けに入るはずです。
ということで、本とLinuxを手にとってみていただければ幸いです。
- 1日1問、半年以内に習得 シェル・ワンライナー160本ノック Software Design plus
- 上田 隆一, 山田 泰宏, 田代 勝也, 中村 壮一, 今泉 光之, 上杉 尚史
- 技術評論社 2021-09-22T00:00:00.000Z