シェル・ワンライナー160本ノックのあとがきの代わり1: プログラミングを日常のものにという願い

Wed Sep 29 15:00:00 JST 2021 (modified: Wed Sep 29 16:23:38 JST 2021)
views: 4379, keywords:シェル芸本, 日記 この記事は最終更新日が2年以上前のものです。

 シェル・ワンライナー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の先にawksedの簡単なコードを置くまでの心理的、 技術的な距離はそんなにありません。 あとはそこそこ長いワンライナーが書けるようになって、 ワンライナーだとややこしいのでシェルスクリプトを書いて、 それもややこしいのでスクリプト言語を覚えて、 それも遅いのでまた別の言語を覚えて・・・ とステップアップしていく人が出るといいなと考えています。 つまり、日常のファイル操作や、簡単なテキストファイルの中身を操作することから、 プログラミングに入っていくのがよいのではないかという立場です。 コマンドを知っていれば、システムのファイルをちょっと覗くということもできるので、 インフラ方面の勉強も加速します。

 最近はTwitterで怪しいプログラミングスクールの話をよく耳にしますが、 この手の人たちは、「とにかくプログラミングが魅力的で特別な技術である」 という立場で話をしています。「プログラミングやってる俺ってスゲー」みたいな陶酔感は、 プログラミングを勉強し始めた大学1年生の自分にもあったのを覚えています。 また日を改めて書きますが、私はWindowsでプログラミングを覚えたので、 仕送りが月6万円なのに15,000円払ってVisual C++を買い、インストールして、 「MFCのウィザード」というものでプロジェクトを作り、なにもないウィンドウを出した時に、 確かにすげえと思い、特別感がありました。 今でも、Visual Studio(VScode)やMacのアレ(名前忘れた)を立ち上げると、 ワクワクする人はたくさんいると思いますし、そこからすぐに上達していく人も多いと思います。

 でもたぶん、プログラミングって、 料理するときにふらっと台所に立つのと同じ感覚でやるもので、 そんなに大袈裟なものではないはずです。 作るものだって、 重複するファイルを消したり移動したりというちょっとしたものでいいはずです。 私は大袈裟な仕組みや 「ナントカテクノロジー」という宣伝文句に目を奪われてしまい、 かなり遠回りをしてしまいました。 OSに関してはそれぞれ一長一短がありますが、 ユーザに端末を使わせないほうに企業努力をして、 台所を何か特別なものにしてしまったOSがシェアを握っている (そして今慌ててそれを元に戻そうとしている)のは、 少しもったいないかなと思います。 「Linuxを普段から使う」ということ自体、 少し敷居が高くなっているわけですが、 少なくともこれからそういう仕事をしたい人には、 まずそこから入ってもらいたいなと考えています。 「今日の積み上げ」を箇条書きするよりも、 普段からLinuxを触っていると、自然に何かが積み上がってくると思います。 もちろん、もう年季の入った人は何を使っていてもいいと思いますが、 入り口としては、そっちがいいのかなと今は考えています。

 シェル・ワンライナー160本ノックは、 端末の使い方とファイル操作から話が始まっています。 問題自体は結構いきなり難しいのですが、 「慣れるまではファイル操作にGUIを使ってよい」とも書いてあるように、 とにかく最初はLinuxに慣れてもらおうという意図で構成されています。 また、執筆陣というかシェル芸界隈の人々は「凄腕の人しか相手にしない」 という感じではないので、助けてと言われれば (そして失礼でなければ)喜んで助けに入るはずです。

 ということで、本とLinuxを手にとってみていただければ幸いです。

photo
1日1問、半年以内に習得 シェル・ワンライナー160本ノック Software Design plus
上田 隆一, 山田 泰宏, 田代 勝也, 中村 壮一, 今泉 光之, 上杉 尚史
技術評論社 2021-09-22T00:00:00.000Z
ノート   このエントリーをはてなブックマークに追加 
 

prev:日記(2021年9月25〜26日) next:日記(2021年9月30日)

やり散らかし一覧

記事いろいろ