nekoTheShadow’s diary

技術ブログとして始めたはずが、読書&愚痴ブログになりました(´・ω・`)

松浦智之『すべてのUNIXで20年動くプログラムはどう書くべきか:デプロイ・保守に苦しむエンジニア達へ贈る[シェルスクリプトレシピ集]』(シーアンドアール研究所)

すべてのUNIXで20年動くプログラムはどう書くべきか デプロイ・保守に苦しむエンジニア達へ贈る[シェルスクリプトレシピ集]

すべてのUNIXで20年動くプログラムはどう書くべきか デプロイ・保守に苦しむエンジニア達へ贈る[シェルスクリプトレシピ集]

POSIX原理主義者のお通りだー(適当)

移植性を軽んじていると思わぬ場面でやられがち――とわたしが勝手に思っているだけですが、しかし実際にシェルコマンドの環境差異に苦しめられる機会があり、手に取った1冊です。本書の構成は前半1/3でPOSIXに準拠したbashの書き方を解説し、残る2/3は用例集になっています。

個人的に参考になったのは後半部。「POSIXという制約(?)の中でもこれだけ多様なことができる」ということもそうですが、POSIXの範疇ではできないことも多くあり、それが正直に書かれていることに好感をもちました。はっきりいうと、本書におけるPOSIXの限界とされるのは、かなり限られた用途の中で現れるものであり、プログラマが日常直面する問題の90%、いや99%はPOSIX準拠で解決できると思います。それに「POSIXの範囲外だが、事実上のデファクトスタンダード」といえるものは多数あり、それを組み合わせれば、残りの1%も問題なく解決できる気がします(´・ω・`)

こういう境界線に触れることも大事なこと――そして筆者が一番伝えたかったことかもしれませんが、bashのレシピ集としても楽しく読めました。また前半部はbashの文法講座としてよくできていると感じました。bash/shellscriptを「なんとなく」で書いてきた人がステップアップするにはちょうどよい1冊だと思います。

最近読んだ小説: 『悦ちゃん』『最高殊勲夫人』

ここ最近は仕事が忙しい(´・ω・`) 単に忙しいだけならまだよいのですが、その仕事内容が理不尽というか非合理的というか馬鹿馬鹿しいというか、とにかくストレスフルな仕事が多く、精神的に疲弊気味。わたしだけかもしれませんが、そういう状態だとフィクション作品を読む気力がなくなりがちで、読むものといえばノンフィクションや技術書のようなものが多くなります。

要するに小説を読むには精神的余裕が必要で、それがいま失われているために小説読みをさぼりがちというわけです。とはいえまったく小説を読んでいないわけでもなく、またその数少ない読書量のなかにも面白いものがいくつかあったので、ブログで紹介したいと思います。

獅子文六悦ちゃん』(ちくま文庫)

悦ちゃん (ちくま文庫)

悦ちゃん (ちくま文庫)

いわゆる「忘れられた作家」のひとりでありながら、ここ数年再発掘されつつある獅子文六。本書はその代表作のひとつであり、タイトルの通り悦ちゃんという女の子を主人公とする家庭小説になります。

はっきりいって、プロットは無茶苦茶です。主人公を含め、キャラクターの造形は極端。話は緩急がつきすぎているし、御都合主義の連続で、リアリズムなどとは程遠い世界にいるのですが、しかしエンターテイメントや大衆小説として読めば十分許容範囲内というか、むしろ「面白い」という感想すら抱きます。また悦ちゃんの純粋さや無垢さ、そして破壊的な行動力はどこか胸を打つところもあり、気軽に読めるわりにはなかなか楽しい作品ではないかと思います。

源氏鶏太『最高殊勲夫人』(ちくま文庫)

最高殊勲夫人 (ちくま文庫)

最高殊勲夫人 (ちくま文庫)

素直になれず、お互いに反目し合う男女が徐々に引かれていくーーという「通俗小説の極み」の内容で、なおかつ話の流れは御都合主義そのもの。前述の『悦ちゃん』と同じく、リアリズムとはかけ離れた昭和の大衆小説を体現したような作品ですが、しかし平成も終わりつつある現代人でも面白く読めてしまうのはすごい。このあたりはさすが昭和の人気作家であることを感じさせますし、また「素直になれない恋愛」という比較的普遍的なテーマを扱っていることも勝因かもしれません。

本書の魅力は単に話の面白さだけには止まりません。その時代背景と風俗描写です。大正ロマンならぬ昭和ロマンを感じるといえばいいのかしら。考えてみれば100年も経っていない、歴史というほどでもないような時代を描いているのですが、これが奇妙な異国情緒のようなものを感じさせ、実に「よい」のです。作品の主な舞台が東京、それも銀座や新宿のような大都会が中心であり、余計にロマンを感じるのかもしれませんね。

ここ1ヶ月ぐらいで読んだ宗教関連書3冊: 『イエスという男』『聖書考古学』『イスラーム神学』

盆休みがもらえたため、日本的慣習に従い実家のある大阪へと帰省したのですが、やることといえば墓参りと多少の行政手続きぐらいで、意外と暇を持て余しがち(´・ω・`) そういうわけで(?)、ここ1ヶ月ぐらいで読んだ宗教関連書のうち、興味深いと感じられた3冊について書評を残しておきます。

田川建三『イエスという男 第二版 増補改訂版』(作品社)

イエスという男 第二版 増補改訂

イエスという男 第二版 増補改訂

本書は史的イエス、すなわち歴史学という観点からナザレのイエスの生涯と思想を読み解いていくのですが、その論理展開が超スリリング。ナザレのイエスは先駆的な宗教観社会観を持った宗教家だが、時代的な文脈を逃れられていないし、ましてや神の子などではありえないーー一般の信徒であれば到底受け入れられない議論が豊かな論拠と説得力ある言葉によって綴られ、また教会や聖職者あるいは神学者たちが(筆者が思うところの)イエス像をいかに歪めてきたのかということを舌鋒鋭く批判します。

本書に述べられた議論がどれほど正確なのか、あるいは主流的な聖書学からどれだけ受け入れられているのか、わたし自身は判断するすべを持ちませんが、それはさておいても脳天を揺さぶられる、目から鱗の1冊でした(どうでもいいですが、「目から鱗」も聖書の1節ですね)。

長谷川修一『聖書考古学: 遺跡が語る史実』(中公新書)

聖書考古学 - 遺跡が語る史実 (中公新書)

聖書考古学 - 遺跡が語る史実 (中公新書)

聖書に書かれていることがどれだけ歴史的事実に即しているのか。もちろんまったくの神話であったとしても、ユダヤ教キリスト教がまちがっているというわけではないのですが、しかし気になってしまうところ。本書はおもに旧約聖書の内容について、考古学の観点から検証を加えていきます。

「考古学」という点に個人的には関心を持ちました。聖書歴史学というと古い文書や写本を読み漁るイメージがあり、現地まで行って地層を掘り返すような方法論があるとは全く考えていませんでした。考えてみれば当たり前のことですが(´・ω・`) もたらされる結論は知らないことばかりでしたが、しかし合理的なものばかり。知らなかった学問ジャンルについて知見を得られるだけでなく、聖書の知識も得ることができるという点で大満足の1冊でした。

松山洋平『イスラーム神学』(作品社)

イスラーム神学

イスラーム神学

世界で2番目に信者が多い宗教でありながら、日本だとまだまだ接点が薄いイスラム教。日本でのイスラム教のイメージというと、厳しい戒律や昨今のテロリズムなど、トリッキーなものばかりが先行しやすく、また日本の思想史を振り返ってみると、大川周明井筒俊彦など、必ずしも主流派とはいえない「やや異端」的なひとびとが俎上に上がりがちで、「イスラムとは何か」という本質的なところは見えないままでいます。

本書はそのタイトルの通り、イスラム神学について、イスラム社会において主流派を占めるスンニ派の観点から解説したものになります。ひとくちにスンニ派といってもいくつかの学派に分かれるのですがーーそのこと自体も本書を通じて知ったのですがーーそのすべてに対して、学問的に公平な記述がなされており、きわめて誠実な印象を持ちます。

正直なところイスラム神学に関して全く知識がない状態で読んだため、知らないことばかりで、今でもその全てを消化しきったとは言い難いのですが、知的好奇心をくすぐられたことは間違いありません。また本書を通して、長い期間と多大な叡智を積み重ねて検証されてきたイスラム神学の合理性を知り、日本的イスラム理解を一歩抜け出すことができたように重ます。

結城浩『Java言語で学ぶリファクタリング入門』(ソフトバンク クリエイティブ)

Java言語で学ぶリファクタリング入門

Java言語で学ぶリファクタリング入門

免許更新の待ち時間に読みました。待ち時間が長すぎる(´・ω・`)

SIerシステムエンジニアが跳梁跋扈するような現場、要するロートルシステム開発現場だと、その重要性が受け入れられているとはまだまだ言い難いリファクタリング。現実に動いているコードに対して手を入れるということに対して強い抵抗感があるーーという比較的ポジティブな理由ならまだしも、「もとになるコードが古すぎてユニットテストが残っていない、実施していない」というようなネガティブなものだと、(´・ω・`)な気持ちが抑えきれなくなります。

リファクタリングという単語、そしてリファクタリングとは何をすることなのかということぐらいは知っていたのですが、その技法、すなわち「リファクタリングでは具体的にどのようなことをするのか」ということについては不勉強だったため、この1冊を手に取りました。本書の筆者は結城浩氏。日本のプログラマでその名を知らないものはいない、いないとしたらもぐりーーとわたしが勝手に思っている筆者の本だけに内容は期待通りでした。

どのようなコードがリファクタリングの対象であるか、そのコードがどのような問題を抱えているのか、そしてそのコードをどのようにしてリファクタリングしていくのか。そうしたリファクタリングのいろはが事細かに解説されています。またおまけとして、リファクタリングの手法一覧が掲載されており、これも役立ちそうです。問題のあるコードに出くわした時、それをリファクタリングすることが許される時に読み返したい。そんな1冊だと思います。

渡辺修司『JUnit実践入門 ~体系的に学ぶユニットテストの技法 』(技術評論社)

JUnit実践入門 ~体系的に学ぶユニットテストの技法 (WEB+DB PRESS plus)

JUnit実践入門 ~体系的に学ぶユニットテストの技法 (WEB+DB PRESS plus)

JavaのテスティングツールのデファクトスタンダードといえばJUniteclipseNetBeansなど、主要なIDEにはビルトインで入っているほど、影響力の強いライブラリですが、ふと自分自身を振り返ってみると、かなり漫然と使っていたことに気づき、これはいけないと慌てて購入した次第になります。

本書ではJUnitやその周辺ツールの機能が一通り解説されており、assertEqualsばかりを書いているような脳死プログラマにとってはそれだけで勉強になるのですがーーそれだけではないのが本書の良いところ。本書を読むと、JUnitというツールに関する知識はもちろんのこと、JUnitを利用するユニットテストそれ自体に関する知識を得ることができます。ユニットテストをどのように遂行すべきか、その方法論はどのようなものか、あるいはどのようにしてシステム開発ユニットテストを導入するのか、ユニットテストを用いる場合はシステム開発全体をどのようにデザインすべきかーーなどなど、ツールをうまく使うという以上のことを学ぶことができると言っては過言ではありません。

内容としてはJUnitの機能解説が多くを占めますし、ユニットテスト自体に関する知識もJavaプロジェクトの特性が暗黙の了解としてあるように感じられます。つまりユニットテストについて学びたいからといってJava以外を主言語とするプログラマが本書を取るのはちょっと違うような気がしますが、しかしJavaプログラマであれば問答無用で読むべし。そんな1冊だと思います。

青木峰郎『10年戦えるデータ分析入門: SQLを武器にデータ活用時代を生き抜く』(SBクリエイティブ)

本書のスタンスは「分析のためのSQL」。つまり主なターゲットはマーケターやアナリストであり、アプリケーション構築という観点で書かれているわけではありません。そのためプログラマやエンジニアの観点から読むと、やや退屈というか初心者向けの内容に思えるかもしれません(とりわけ前半部分)。しかしselect文すらもわからないような人たちがいるという、当たり前だが傲慢なプログラマが忘れがちなことに気づかせてくれました。

前半部分は基本的なSQLやOLAP関数の解説ですが、後半部分はデータ分析のためのシステム、つまりBIシステムに関する話に移っていきます。こちらはプログラマにも読む価値がある内容であり、とりわけデータマートをめぐる思想やSQLのみを利用したバッチ処理を解説した部分などは大変勉強になりました。

最近はデータ分析の重要性が経営層などにも浸透しつつあり、専業の分析屋さんでなくとも、データ分析に関わることがあります。プログラマであれば、BIに関わるシステムの構築が多いと思いますが、その際にデータ分析の視点を持っているか持っていないかで大きく違いが出ることはいうまでもありません。一歩先を走るプログラマになるためのとっかかりにはちょうどよい1冊だったと思います。

増田亨『現場で役立つシステム設計の原則: 変更を楽で安全にするオブジェクト指向の実践技法』(技術評論社)

勉強不足で申し訳ないのだが、本書の筆者はDDD、すなわちドメイン駆動開発の日本における第一人者であり、その観点から好意的な書評をWeb上で見かけることが多く、ついつい手に取ってしまったという次第になります。

業務のシステム化に当たって、システムエンジニアがもっとも苦労するのは、現実の業務の複雑さであり、その複雑さをシステムに落とし込む部分だとわたしは考えています。「システムに合わせて業務をデザインすべき」という意見もたまに耳にしますが、現実の業務には法律や業界慣習など、複雑さを増大させる要素が多く、業務を単純化するのは現実的に不可能であることもしばしば。

本書はその業務の複雑さをシステムに反映させるという場面において「関心」という観点を重視しています。詳しくは読んで欲しいのですが、「システム利用者の「関心」がどこにあるかを考え、それをソースコードへ写し取っていくと、そのシステムは自ずと変更可能で使いやすいものになっていく」という哲学はぜひ実践していきたいと思います。現実の業務の複雑性と日々戦っているシステムエンジニアにはおすすめ。またプログラミングレベルのTIPSも多数提示されているので、その点でも大変勉強になる1冊でした。