シェルスクリプトの本を執筆するにあたって参考にした本の紹介

何度かこのブログでも紹介していますが、このたび「新しいシェルプログラミングの教科書」という本を執筆しました。

新しいシェルプログラミングの教科書

新しいシェルプログラミングの教科書

本を執筆するにあたって、偉大なる先人たちの本を参考にしています。 私自身がそれらの本を読んで勉強し、その結果として今回の本ができあがりました。 どれもすぐれた本なので、ここでみなさんにも紹介します。

入門UNIXシェルプログラミング

入門UNIXシェルプログラミング―シェルの基礎から学ぶUNIXの世界

入門UNIXシェルプログラミング―シェルの基礎から学ぶUNIXの世界

シェルスクリプトの定番として有名な本です。 この本では、具体的なシェルの関数やシェルスクリプトの例がたくさん紹介されています。

単なる文法であれば、プログラミングの素養があれば一通り身につくでしょう。 この本は入門者が文法を理解した後の次の段階として、実際に役に立つシェルスクリプトを作るにはどのように書けばよいのかを教えてくれます。 この本一冊だけでシェルスクリプトの実践的な力がつくでしょう。

入門bash

入門bash 第3版

入門bash 第3版

シェルの中でもbashに特化した本です。 対話的な使い方とシェルスクリプトとしての使い方の両方を解説しています。

この本で特に重要なのは、コマンドラインに含まれるシェルの記号をどのような規則、順番で解釈してコマンドを実行しているのかが解説されているところです。 これを読めばパラメータ置換、クォーティングなどについて正確な知識が得られます。 bashユーザに特におすすめする本です。

シェルスクリプト基本リファレンス

シェルスクリプトの構文には記号や特殊な書き方が多く、すべてを覚えておくことは困難です。 実際に作成するときにはmanなどのマニュアルを参照しながら書くわけですが、それよりも読みやすいリファレンスマニュアルとして役に立つのがこの本です。

シェルスクリプトで通常必要になる項目について一通り解説されています。 また、シェルスクリプトの移植性について意識していることも特徴です。 紹介しているシェルスクリプトの機能について、Linux/bashFreeBSD/sh、Solaris/sh、BusyBox/shの4通りの環境で使用できるかどうかが記載されています。 シェルスクリプトを作成するときに辞書のように利用できる本です。

UNIXシェルスクリプトスターピース132

UNIXシェルスクリプト マスターピース132

UNIXシェルスクリプト マスターピース132

シェルスクリプトの力を身につける良い方法は、実際のシェルスクリプトをたくさん読むことです。 Unix系OSにはいくつもシェルスクリプトが含まれているので、それらを読むのも1つの方法です。 ただし、なぜそのように書いているのかコード自身から読み取れないこともあります。 コードそのものに加えてそのコードの解説があれば、より理解が深まります。 そのような使い方ができるのがこの本です。

この本は、シェルスクリプトの実用的なサンプルとその解説を集めています。 この本を読めば、シェルスクリプトで行いたい典型的な処理の書き方について理解できます。 そのものずばりでなかったとしても、この本にある近いサンプルを土台として使えば一から書くよりずっと楽になるはずです。 サーバー管理、ネットワーク運用に関するサンプルも多いので、特にインフラ関連の人におすすめの本です。

UNIXという考え方

UNIXという考え方―その設計思想と哲学

UNIXという考え方―その設計思想と哲学

UNIXの重要な点は、その思想にあります。 この本はそのUNIXらしい考え方について解説した本です。 「小さいものは美しい」などUNIXについての思想が定理として解説されています。 どれもUNIXに限らずコンピュータ全般にあてはまる定理です。 ソフトウェア開発者だけでなく、コンピュータの利用者全般におすすめできる本です。

The Art of UNIX Programming

The Art of UNIX Programming

The Art of UNIX Programming

上の「UNIXという考え方」をより詳細に解説したような内容です。 ケーススタディとして実際のアプリケーション、ファイルフォーマットなどを例にあげ、UNIXらしいかどうか議論しています。 自分でアプリケーションの仕様を決めたり実装したりするときの指針として非常に参考になる本です。

詳説 正規表現

詳説 正規表現 第3版

詳説 正規表現 第3版

正規表現の重要性は改めて言うまでもありません。 正規表現にはさまざまな特有の記号があり、それらの意味を知ればひとまず正規表現は使用できます。

しかし実際に正規表現の処理系は、どのようにしてそれらの記号を解釈しているのでしょうか。 そのような疑問に答えてくれるのがこの本です。 この本の特徴は、正規表現の単なる使い方だけではなく、処理系がどのような手順でマッチングを行っているのかを解説しているところです。 この本を読めば正規表現エンジンの気持ちが分かるようになります。 本質を理解して効率の良い正規表現を書くために一番おすすめできる本です。

リーダブルコード

リーダブルコード ―より良いコードを書くためのシンプルで実践的なテクニック (Theory in practice)

リーダブルコード ―より良いコードを書くためのシンプルで実践的なテクニック (Theory in practice)

プログラムのコードを読んでいて、「何か読みにくいな」と感じたことはありませんか。 しかし、実際にそれをよりよく直すのは簡単ではありません。

この本はプログラムのコードの読みやすさ、分かりやすさについて解説した本です。 具体的にどのような書き方が読みにくいのか、それをどう直せば読みやすくなるのかが分かりやすく解説されています。 コードを書く機会のある人は一読することをおすすめします。

初めてのRuby

初めてのRuby

初めてのRuby

この本はRubyの入門書です。 シェルスクリプトに直接関係しているわけではありません。

この本の特徴は、その説明の簡潔さにあります。 本を執筆する上では、何を書くのか以上に何を書かないのかが大切になります。 著者としてはあれもこれもと、思っていることをどんどん書きたくなるものです。 しかし、そのように追記していくとどうしても焦点がぼやけた本になってしまいます。 無駄をそぎ落とすことによって、伝えたいことがはっきりと読者に伝わるようになります。

この本は入門書を書くにあたって、対象となる読者をプログラム言語全般の入門者ではなくRubyの入門者に絞っています。 また、その解説自体も無駄がありません。 サンプルコードも、読者が知りたかったり説明が必要になるところを的確に解説しています。 私もこのような洗練された本を書きたいと常々目標にしているので、ここで紹介します。

おわりに

ここで紹介した以外にも、世の中には参考になる本がたくさんあります。 みなさんも、ぜひすてきな本を探して読んでみてください。

シェルスクリプトはどのシェルで書くとよいのか

昨日紹介した通り、「新しいシェルプログラミングの教科書」という本を執筆しました。

新しいシェルプログラミングの教科書

新しいシェルプログラミングの教科書

名前のとおり、シェルスクリプトの書き方を解説した本です。 その本を書き始めるのにあたって、どのシェルでシェルスクリプトを書くのかを決める必要がありました。 シェルの種類はいくつもありますが、その中でも有力な候補がBourne Shellbashです。 Bourne Shell/bin/shとしてインストールされている、伝統的なシェルです。 bashはたいていのLinuxで標準のシェルとして設定されていて、よく使われているシェルです。

どちらもシェルスクリプトを実装するシェルとしてよく使われます。 両方を解説するという手もありましたが、執筆の負担が高くなりすぎたり解説が煩雑になって読みにくくなる恐れがあったので、どちらか一つに絞ることにしました。 いろいろ検討した結果、今回の本ではbashを採用しました。

Bourne Shellは仕様がPOSIXに含まれていて、移植性が高いシェルです。 Bourne Shellシェルスクリプトを書けば、さまざまな環境で安定して動作することが期待できます。 一方、bashはインストールされていない環境もあります。 bashシェルスクリプトを作成したとして、環境を移行したらbashがないので動かなかった、という可能性があります。

それでは実際にUnix系OSを使うときに、bashはないがBourne Shellならあるという状況がどのくらいあるのでしょうか。 個人的には、私は今までそういう場面に出くわしたことは一度もありません。 他の人も多くはそうだろうと思います。 むしろ、/bin/shの実体がbashである環境もあります。 たとえば、CentOSでは/bin/shbashシンボリックリンクになっています。 それはつまり、Bourne Shellはないがbashならあるということになります。 つまり、bashを使う(使える)頻度は非常に高いのです。

そして、bashにはBourne Shellと比べて便利な機能が追加されています。 そんな便利な機能を使ってみたいと思いませんか。 私は思います。 その割には、bashの機能をきちんと解説した本は少ないように思っています。 それがこの本を書いた動機の一つです。

それでもBourne Shellのほうが望ましいと考える人もいるでしょう。 その考えも分かります。 Bourne Shellbash、またはそれ以外のシェル、どれがふさわしいのかは一概に言えるものではありません。 実行環境、製作者のスキル、利用する期間などを考慮して、みなさんが自分自身で決めることです。 そして、結果としてBourne Shell(またはその他bash以外のシェル)を選択した方は、この本の対象とする読者ではありません。 別の本を読んで勉強してください。

これは何もシェルスクリプトに限ったことではありません。 何らかのツールやアプリケーションを開発したいと思ったとき、実装する手段としてC、JavaRubyBourne Shellbashなどさまざまな選択肢があります。 この「新しいシェルプログラミングの教科書」はbashの本なので、bashの便利な使い方について解説しています。 しかし、この本は他の選択肢を否定したり排除したりしているわけではありません。 bashも、それ以外のシェルも、その他の一般的なプログラム言語も、どれにも役割があります。 どれか一つだけでは対応できないこともあります。 さまざまなシェル、さまざまな言語を学ぶことが大切です。 そして、その中でも特にbashを学びたいと思ったときは、この「新しいシェルプログラミングの教科書」をぜひ活用してください。

シェルスクリプトの入門書 「新しいシェルプログラミングの教科書」を執筆した

「新しいシェルプログラミングの教科書」というシェルスクリプトの入門書を執筆しました。 2017年11月21日発売です。

新しいシェルプログラミングの教科書

新しいシェルプログラミングの教科書

目次

  1. シェルってなんだろう
  2. シェルスクリプトとは何か
  3. シェルスクリプトの基本
  4. 変数
  5. クォーティング
  6. 制御構造
  7. リダイレクトとパイプ
  8. 関数
  9. 組み込みコマンド
  10. 正規表現と文字列
  11. シェルスクリプトの実行方法
  12. シェルスクリプトのサンプルで学ぼう
  13. シェルスクリプトの実用例
  14. テストとデバッグ
  15. 読みやすいシェルスクリプト

内容

bashシェルスクリプトを書く方法について解説した本です。 変数、制御構造(if文など)、関数などbashの基本的な文法から始まって、実際に役に立つシェルスクリプトを作成して、そのテストとデバッグまでできるようになることを目標としています。

LinuxUnix系OSの基本操作は分かっていて、シェルスクリプトでコンピュータをより便利に使おうという人向けです。 JavaRubyなど一般的なプログラム言語を習得していてプログラムの基本が分かっている人でも、シェルスクリプトには独特の癖があって些細なことでつまづきがちです。 たとえば変数の値にスペースが含まれているときに、適切に記述していないと意図していない動作になることがあります。

この本では、そのようなシェルスクリプトで間違いやすいポイントも例をあげて解説しています。 そのためこの本は、本当は書きたくないのにシェルスクリプトを書くことになってしまった、という消極的なシェルスクリプト利用者にも役に立ちます。 久しぶりにシェルスクリプトを書こうとしたら、簡単そうなことがうまくできずに何時間もかかってしまった、というのがありがちなパターンです。 シェルスクリプトの知識が曖昧な人は、ぜひこの本を読んでみてください。

この本を書くうえでは、「入門UNIXシェルプログラミング」と「入門bash」という本を参考にしました。

入門UNIXシェルプログラミング―シェルの基礎から学ぶUNIXの世界

入門UNIXシェルプログラミング―シェルの基礎から学ぶUNIXの世界

入門bash 第3版

入門bash 第3版

どちらもシェルスクリプトに関する立派な本ですが、発売時期の関係で内容が古くなっているところがあります。 特に、bashはバージョン4.0から連想配列が使えるようになったりと、いくつか機能が追加されています。 この本ではbashバージョン4.2を対象として、比較的新しい機能についても解説しています(といってもbashバージョン4.2がリリースされたのは2011年2月ですが)。 現代の環境に合わせた、今どきのbashスクリプトの書き方が分かります。 偉大なる先人たちの書籍を新しい内容で置き換える、というのがこの本の大いなる目的です。

シェルスクリプトはなんだかんだ言って多くの人が使うものなので、この本を読んで体系的に学んではどうでしょうか。 この本をきっかけにして、シェルスクリプトを上手に活用できるようになることを期待しています。

iPad Proを買った

最近iPad Proを買った。 今までiPad miniを使ってたんだけど、ストレージの空き容量がなくなってきたので新しいやつを買ってみた。 サイズは10.5インチ。12.9インチ(でかい方)はさすがにでかすぎなので、小さい方にした。

主な用途として、本(電子書籍)を読んだり映画を見たりしてる。特に本を読むとき、iPadを横向きにするとちょうどいい感じに見開きで表示できて読みやすい。

あとは持ってる音楽を入れて、家で再生して聴いてる。 元のiPad miniでは容量的に全部は入らなかったけど、新しく買ったやつならいけるので、雑に全部入れてだらだら選んで再生できていい感じ。 スピーカーはBluetoothのやつにつなげてる。 一応本体についてるスピーカーでも音は鳴るけど、さすがに専用のスピーカーのほうがいい音が出る。

ただ、iPad miniと比べるとそれなりに大きくて重いので、外に持って出るのにはちょっと向いてない。 それでも、家の中で使いやすい大きさなので、いろいろ便利。買ってよかった。

【05/21(土)】「新しいLinuxの教科書」を読む会を開催します

2016/05/21に、大阪で「新しいLinuxの教科書」を読む会を開催します。著者(の一人)である三宅も参加します。以前東京で開催したやつと基本的には同じ内容です。一人で読んでもはかどらないとか、本を読んだけど分からないところがあって質問したいとか、そういう人向けの読書の場とします。これを機会に本を読み進めて、Linuxの勉強をしましょう!

詳細

日時
2016/05/21(土) 13:00 〜 18:00 (13:00開場、13:30開始)
場所
大阪府大阪市北区西天満2-6-8 (堂島ビルヂング 地下1階)
定員
20人
参加費
無料
申し込みページ
http://linuxbook.connpass.com/event/30536/

内容(予定)

はじめに簡単なLinuxチュートリアルを行います。その後みんなで「新しいLinuxの教科書」を読みます。当日はその本を持ってきてください。分からないところや気になったところは適宜著者や他の参加者に質問しながら読み進めましょう。途中で著者による基調講演もあります。

新しいLinuxの教科書

新しいLinuxの教科書

その他

  • 会場には無線インターネット回線があります
  • 懇親会は行いません

よろしくお願いします!

WEB+DB PRESS Vol.92で「Linuxコマンド入門」特集記事を書いた

WEB+DB PRESS Vol.92で「Linuxコマンド入門」という特集記事を書きました。初心者向けにLinuxの使い方について解説しています。

WEB+DB PRESS Vol.92

WEB+DB PRESS Vol.92

  • 作者: 近藤宇智朗,大和田純,谷口禎英,後藤利博,黒瀧悠太,山下和彦,河野匡貴,古橋貞之,瀬尾直利,菅原元気,吉川崇倫,鈴木康平,星北斗,三宅英明,長野雅広,のざきひろふみ,うらがみ,稲富駿,伊藤直也,うさみけんた,丸山晋平,中島聡,はまちや2,竹原,WEB+DB PRESS編集部
  • 出版社/メーカー: 技術評論社
  • 発売日: 2016/04/23
  • メディア: 大型本
  • この商品を含むブログを見る

内容

全5章で、次の項目について書きました。

  1. Linuxをはじめよう
  2. Linuxの基本コマンド
  3. コマンドを組み合わせて活用する
  4. シェルスクリプトを書く
  5. テキスト操作とファイルの検索

基本的なコマンドから始まって、パイプラインシェルスクリプトの書き方まで解説しています。また、読者にはWeb開発者が多いだろうということで、Webの開発や運用で役に立ちそうなLinuxの使い方をいくつか例として紹介しています。これを読めば、どういう場面でLinuxが役に立つのか、どういう使い方をすれば便利なのかが初心者の人でも実感できると思います。

2016年4月23日発売です。ぜひ読んでください!

【04/16(土)】「新しいLinuxの教科書」を読む会を開催します

2016/04/16に、「新しいLinuxの教科書」を読む会を開催します。著者である大角と三宅も参加します。一人で読んでもはかどらないとか、本を読んだけど分からないところがあって質問したいとか、そういう人向けの読書の場とします。これを機会に本を読み進めて、Linuxの勉強をしましょう!

詳細

日時
2016/04/16(土) 13:30 〜 18:00 (13:30開場、14:00開始)
場所
東京都中央区新川1-3-4 PAビル 4Fセミナースペース
定員
24人
参加費
無料
申し込みページ
http://linuxbook.connpass.com/event/29676/

内容(予定)

はじめに簡単なLinuxチュートリアルを行います。その後みんなで「新しいLinuxの教科書」を読みます。当日はその本を持ってきてください。分からないところや気になったところは適宜著者や他の参加者に質問しながら読み進めましょう。途中で著者による基調講演もあります。

新しいLinuxの教科書

新しいLinuxの教科書

その他

  • 会場には無線インターネット回線があります
  • 懇親会は行いません

よろしくお願いします!