So-net無料ブログ作成

書籍『UNIX: A History and a Memoir』 [本]

UNIX: A History and a Memoir

UNIX: A History and a Memoir

  • 作者: Kernighan, Brian W
  • 出版社/メーカー: Independently published
  • 発売日: 2019/10/18
  • メディア: ペーパーバック

Unixと言うものがあるらしいと聞いたのは大学院の修士課程を終える頃で、東芝のUnixマシンをどこかの研究室が購入したのがきっかけでした。しかし、直接触ることはほとんどなくありませんでした。就職してから、塚原研修所(富士ゼロックス)での新人研修で同じ東芝のUnixマシンを少し触った程度でした。

Unixを本格的に使うようになったのは、新人研修を終えて配属されてからです。確か、DECのVAX上でUnix(4.2BSDだったかな?)を使っていました。独自のワークステーション(後に発売されたFuji Xerox 6060 Workstation)を開発するプロジェクトで、OS以外はほぼすべてを開発しました。ワークテーション用のOSはAT&TのUnixではなく、Idrisと呼ばれるUnixクローンでした。

それ以来、Linuxも含めて、4.3BSD、System V、SunOS 4.x、Solaris 2.3、Linux,macOSとさまざまなUnixを使ってきたのですが、初期のUnix開発についてはあまり読んだことがなく、あえて言えば1989年に読んだ「Life with Unix」ぐらいでした。

Life With Unix: A Guide for Everyone

Life With Unix: A Guide for Everyone

  • 出版社/メーカー: Pearson P T R
  • 発売日: 1989/04/01
  • メディア: ペーパーバック

『UNIX: A History and a Memoir』では、著者であるBrian Kernighan自身の長年のAT&ATベル研究所での活動も含めて、一緒に働いた人達(著名人の集団という感じです)とUnixの歴史が書かれています。また、今日でも使われているUnixの様々なコマンドがどのように誕生したのかも説明があったりして、楽しく読める内容となっています。

目次は次の通りです。
Chapter 1: Bell Labs
Chapter 2: Proto-Unix (1969)
Chapter 3: First Edition (1971)
Chapter 4: Sixth Edition (1975)
Chapter 5: Seventh Edition (1976 - 1979)
Chapter 6: Beyond Research
Chapter 7: Commercialization
Chapter 8: Descendats
Chapter 9: Legacy

Unixの歴史以外に面白いと思ったのは、Brian Kernighanの書籍は、共著も含めてすべてtroffをベースとしたソフトウェアで組版されているということです。
One of the main motivations that Bill and I had for doing our own typesetting was to avoid the errors that the conventional publishing process frequently introduced into printed computer programs. Because we had total control over our content, from input to final pages ready to be printed, we could test the programs directly from the text, which would never be touched by copy-editor or compositor hands. The result was an essentially error-free programming book, which was most unusual at the time. I’ve used that same process ever since; the books listed at the front of this one have all been produced with Troff or its modern incarnation, Groff. Fortunately, one no longer needs typesetters and their expensive and unpleasant media. Today it’s sufficient to get everything right in a PDF file and send that to a publisher or printer.

Kernighan, Brian. UNIX: A History and a Memoir (p.116). Kindle 版.

この本は紙の本とKindle版があり、紙の本は日本で印刷(プリント・オン・デマンド)されるのですが、写真の画質が良くないので、その点ではKindle版がお勧めです。
コメント(0) 

翻訳本:『新世代Javaプログラミングガイド』 [本]

新世代Javaプログラミングガイド[Java SE 10/11/12/13と言語拡張プロジェクト] (impress top gear)

新世代Javaプログラミングガイド[Java SE 10/11/12/13と言語拡張プロジェクト] (impress top gear)

  • 作者: Mala Gupta
  • 出版社/メーカー: インプレス
  • 発売日: 2020/03/13
  • メディア: 単行本(ソフトカバー)

私にとって、18冊目となる技術書の翻訳本です。再出版も入れると通算で21冊目となります。初めての翻訳本が2000年12月に出版された『Javaリアルタイム仕様』ですので、Java関連の書籍としては10冊目となります。

この本の原著はJava 12までカバーしていたのですが、プレビュー言語機能やAmberプロジェクトに対して解説されていた内容はこれから出るJava 14までに変更されているものがあります。
言語仕様の変更部分については、この本の原著が執筆された時点と、日本語への翻訳時点では異なっている部分が多くなっており、日本語版では、必要な修正、削除、追加を訳者の判断で行っています。また、日本語版では必要に応じてJava 13および14へ言及したり、訳注を付けたりしています。
「訳者まえがき」より

言語仕様に関しては、以下の説明が行われています。
  • var(第1章「ローカル変数での型推論」と第5章「ラムダパラメータのローカル変数の構文」)
  • switch式(プレビュー言語機能)(第11章「switch式」)
  • テキストブロック(プレビュー言語機能)(第15章「テキストブロック」)
  • record(Amberプロジェクト)(第14章「データクラスとその利用方法」)
  • enumの拡張(Amberプロジェクト)(第13章「Amberプロジェクトの拡張enum型」)
  • パターンマッチング(Amberプロジェクト)(第17章「パターンマッチング」)

プレビュー言語機能は、コンパイルオプションを指定しないと使えない機能です。Java 14ではswitch式は正式な機能となる予定です。Amberプロジェクトは、Amberプロジェクト用のJDKをビルドしないと試すことができません。

目次は、以下の通りです。
第1部 Java 10
第1章 ローカル変数での型推論
第2章 AppCDS — アプリケーション・クラスデータ共有

第3章 ガベージコレクタの最適化
第4章 JDK 10 のその他の改良点

第2部 Java 11
第5章 ラムダパラメータのローカル変数構文
第6章 Epsilon GC — ガベージコレクタの改良
第7章 HTTP クライアント API
第8章 ZGC — 低遅延化とスケーラビリティの改善
第9章 フライトレコーダとミッションコントロール
第10章 JDK 11のその他の改良点

第3部 Java 12
第11章 switch 式
第12章 JDK 12 のその他の改良点

第4部 Java言語拡張プロジェクト「Amber」
第13章 Amber プロジェクトの拡張 enum 型
第14章 データクラスとその利用方法
第15章 テキストブロック
第16章 ラムダの改善ポイント
第17章 パターンマッチング

付録A Amber プロジェクト用の JDK のビルド手順

コメント(0) 

Introduction to Computing Systems: From Bits & Gates to C & Beyond 3rd Edition [本]

Loose Leaf for Introduction to Computing Systems: From Bits & Gates to C & Beyond

Loose Leaf for Introduction to Computing Systems: From Bits & Gates to C & Beyond

  • 作者: Yale N. Patt
  • 出版社/メーカー: McGraw-Hill Education
  • 発売日: 2019/08/27
  • メディア: Loose Leaf

「Loose Leaf for」となっているのでどのように製本されているかちょっと不明ですが、第3版が出版されます。

この本の第2版に関しては、いくつか記事を書いていますが、その一つがこちらです。

コメント(2) 

『A Philosophy of Software Design』 [本]

A Philosophy of Software Design (English Edition)

A Philosophy of Software Design (English Edition)

  • 出版社/メーカー: Yaknyam Press, Palo Alto, CA
  • 発売日: 2019/01/22
  • メディア: Kindle版

この本は、ソフトウェアの複雑さ(complexity)を減らすために、ソフトウェアエンジニアが日々の開発で注意を払うべきことが述べられています。その多くのは、さまざまな書籍で述べられている基本的な事柄です。しかし、それらの基本的な事柄は、習得するのが容易ではないものが多いです。

たとえば、『リーダブルコード』を読むだけで読みやすいコードが書けるようになるのではなかったり、『Effective Java』を読むだけできちんとしたAPI設計ができるようにならなかったりするのと同じです。読んで学んだことを意識して実践し、当たり前となるまで繰り返していく必要があります。

この本を読んで、その内容を実践してみようと思うのか、もう当たり前に行っていることだと思うかは、読み手の経験によって変わってくると思います。この本の中で、私自身は意識して実践しているが、多くのソフトウェアエンジニアができていないと思うことが「Chapter 15 Write The Comments First」です。副題として、「Use Comments As Part Of The Design Process」と書かれています。その導入部分には、次のように書かれています。
Many developers put off writing documentation until the end of the development process, after coding and unit testing are complete. This is one of the surest ways to produce poor quality documentation. The best time to write comments is at the beginning of the process, as you write the code. Writing the comments first makes documentation part of the design process. Not only does this produce better documentation, but it also produces better designs and it makes the process of writing document more enjoyable.
Chapter 15, “Write the Comments First”
John Ousterhout, “A Philosophy of Software Design

API仕様を書く」でも書いていますが、最初に仕様を書くことは、それが当たり前になるまで意識して自分で自分自身を訓練するか、指導してもらうかのどちらかでない限り、身に付かない習慣だと思います。

私が知る限り、残念ながら、この本は日本語へは翻訳されないようです。

コメント(0) 

書籍『入門 監視』 [本]

入門 監視 ―モダンなモニタリングのためのデザインパターン

入門 監視 ―モダンなモニタリングのためのデザインパターン

  • 作者: Mike Julian
  • 出版社/メーカー: オライリージャパン
  • 発売日: 2019/01/17
  • メディア: 単行本(ソフトカバー)

私自身は、backendのサービスを開発し、それが実際にデプロイされるのを経験するのはメルペイでの開発が初めてです。監視というのは以前には経験していないため、本書を読みました。

原著は、『Practical Monitoring』ですが、日本語版ではタイトルが『入門 監視』となっています。残念ながら、監視の経験不足からくるのだと思うのですが、本書の後半は、内容がピンとこない項目が多かったです。

細かな詳細は省きますが、以下の章から構成されています。
  • 1 章 監視のアンチパターン
  • 2 章 監視のデザインパターン
  • 3 章 アラート、オンコール、インシデント管理
  • 4 章 統計入門
  • 5 章 ビジネスを監視する
  • 6 章 フロントエンド監視
  • 7 章 アプリケーション監視
  • 8 章 サーバ監視
  • 9 章 ネットワーク監視
  • 10 章 セキュリティ監視
  • 11 章 監視アセスメントの実行
  • 付録A 手順書の例:Demo App
  • 付録B 可用性表
  • 付録C 実践 監視SaaS

「1 章 監視のアンチパターン」と「2 章 監視のデザインパターン」は、監視をする上で基本的に認識しておくべきことが書かれています。

残りの章は、全体的に個々の項目を深掘りしているというよりも浅く広く必要なことを述べているのですが、私自身は経験がないためかピンとこないものが多かったです。私のような全くの初心者は、監視の経験と知識がある人と一緒に読みながら、補足や解説をしてもらいながら読むと理解が深まるのではないかと思います。

コメント(0) 

『Effective Java 第3版』の翻訳作業が終わりました [本]

昨年の2月から原著『Effective Java Third Edition』の草稿のレビューが始まり、レビューが終わったのが11月で、昨年末には原著が発売されています。翻訳作業は、昨年の12月から始めて、すべての作業が今月初めに終了しました。今回も、翻訳および(索引作りも含めた)組版までLaTeXで行いました。

原著のレビューのときには気付かなかった多くの間違いは、翻訳作業を通してJoshua Bloch氏へ知らせており、原著の4th printing(第4刷)では修正されています(原著の正誤表は、こちらです)。

今回はもっと早く終わるかと思ったのですが、結局、約430時間を翻訳作業に費やしました。翻訳に先立っての原著のレビューは約42時間でした。

Amazon.co.jpでは、以下のように紹介されています。
Javaプログラマーにとって必読の定番書『Effective Java』の改訂第3版。

この第3版では、Java 8で新たに導入されたラムダとストリームに関する章が新規に追加されたほか、 オプショナル、インタフェースでのデフォルトメソッド、try-with-resources文、@SafeVarargsアノテーション、モジュールなどの機能を扱った項目を含み、第2版の78項目から90項目に増加しています。

今日ではJavaは大きく複雑になり、並列実行から、繰り返し、各種データの表現まで、多くの事柄に対して多様な抽象化を持ち合わせています。この大きさと複雑さを考えると、最新のベストプラクティスの指導書はなおさら重要です。

本書は多くのデザインパターンとイデオムを示すコード例を含んでおり、プログラミング言語Javaの正しい理解と、簡潔で明瞭で正確なソフトウェアの設計に役立つでしょう。
発売予定は10月31日です。予約注文は、Amazon.co.jpのこちらのページからできます。
コメント(0) 

『Effective Java Third Edition』が届きました [本]

ej3e.jpg
米国の出版社(Pearson)から届きました。電子版も昨年末に出版社から頂いていたのですが、紙の本もいいものです。

2001年に初版が出版されて、17年が過ぎました。2001年に初版を読んだときには、正直なところ私にとっては書かれている内容が衝撃的でした。当時、技術評論社の雑誌「Java PRESS」や「XML PRESS」にJava関連の記事を書き、『プログラミング言語Java第3版』の翻訳も行い、Javaについてはかなり分かっているつもりでした。しかし、初版の英語版を読んだときは、自分が何も分かっていなかったと自覚したのを覚えています。

幸い初版を翻訳する機会を得て、翻訳しながら様々なフィードバックを著者のJoshua Blochへ行いました。翻訳者で著者へ問い合わせをする人は少ないようです。『Effective Java』は多くの言語に翻訳されていますが、それに関してJoshua Blochは次のようにツィートしています。

スクリーンショット 2018-01-26 6.29.06.png

つまり、著者の知らないところで翻訳が行われていることがほとんどだということです。同じことを『APIデザインの極意』の著者Jaroslav Tulachも述べています(こちら)。

幸い、その後は、Joshua Blochの新たな本の草稿をレビューする機会を得られて、『Java Puzzlers』、『Effective Java Second Edition』、そして、今回の第3版もレビューしました。残念ながら草稿をレビューしているときの注意力と翻訳をしているときの注意力は異なっているようで、草稿のレビューでは気付かなかった間違いを翻訳中に気付くことがあります(たとえば、こちらの8番目の「A」)。また、草稿にはなかった内容が最終版には入っていることもあり、翻訳していて間違いに気付くこともあります(『Effective Java Third Editon』は、レビューアからのフィードバックを反映した細かな修正が多いような気がします)。

日本語版『Effective Java 第3版』については、もうしばらくお待ちください。

コメント(0) 

『Effective Java Third Edition』 [本]

Effective Java (3rd Edition)

Effective Java (3rd Edition)

  • 作者: Joshua Bloch
  • 出版社/メーカー: Addison-Wesley Professional
  • メディア: Kindle

電子版は、すでに購入可能となっています。PDF版であれば https://www.informit.com/ から購入可能となっています。紙の本は、年明けのようです。

第2版に続いて、この第3版もレビューさせてもらいました。第2章から第12章までの原稿をレビューしました。レビュー用の第2章が送られてきたのが2月7日で、最終章である第12章が送られてきたのが11月25日でした。

日本語版は、私にとって17冊目の翻訳本になりますが、しばらくお待ちください。

英語版の正誤表は、こちらです。

コメント(0) 

予約受付中『ベタープログラマ』(2) [本]

ベタープログラマ ―優れたプログラマになるための38の考え方とテクニック

ベタープログラマ ―優れたプログラマになるための38の考え方とテクニック

  • 作者: Pete Goodliffe
  • 出版社/メーカー: オライリージャパン
  • 発売日: 2017/12/15
  • メディア: 単行本(ソフトカバー)

間もなく発売されますが、先日紹介した目次に加えて、アマゾンでは以下のように紹介されています。

プログラマとしてのキャリアをスタートすると、構文や設計を理解するだけでなく、その他の様々な事柄を理解し習得する必要があると気づきます。

本書は、優れたコードを作りだし、人々と効率的に働く生産性の高いプログラマになるための考え方とテクニックを38のテーマで紹介します。

はじめに、コード1行1行の書き方、デバッグやエラー処理、コードの改善方法など開発現場でのコーディングを取り上げます。

次にコードを単純に保つこと、コード変更やテスト、リリースなどソフトウェアを開発する際の考え方や心構えを扱います。

個人的な活動として、継続的な学習方法と停滞を避けるための課題の見つけ方など、自らを成長させる方法も紹介。

さらに組織の中で他の人とコミュニケーションを取りながら、効果的に働くための習慣を解説します。

『Code Craft』の著者Pete Goodliffeが、自らの経験を元に「優れたプログラマ」になるための考え方と習慣をまとめた本書は、プログラミングを愛し、長く続けながら、優れたプログラマになりたいと思うすべての人に必携の一冊です。

各章の終わりでは、読者が考えるべき複数の「質問」が用意されています。自分の経験を振り返りながら答えを考えてみてください。そして、「やってみる」として、みなさんに挑戦してもらいたいことが一つ提示されています。最後に、章の内容に関連したちょっとした漫画が描かれており、面白く読むことができます。

コメント(0) 

レビュー終了:『Effective Java 3rd edition』 [本]

Effective Java (3rd Edition)

Effective Java (3rd Edition)

  • 作者: Joshua Bloch
  • 出版社/メーカー: Addison-Wesley Professional
  • 発売日: 2017/12/29
  • メディア: ペーパーバック

記事「レビューした(している)これからの新刊」で、今年レビューしている本の一冊として紹介した『Effective Java 3rd Edition』のレビューが先週終了しました。

第2章から第7章までは、「Rough Cut」としてすでに「Safari」で読めるようになっています。こちらです。第3版では章が一つ追加されており、その追加された第7章「Lambdas and Streams」もSafariで読めます。

第2版では78項目でしたが、新たな第7章の7項目も含めて第3版は89項目になっています。

コメント(0)