So-net無料ブログ作成
前の10件 | -

『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) 

訳者あとがき『ベタープログラマ』 [訳者まえがき・あとがき]

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

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

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

今週末には書店に並ぶと思います。昨日、訳者への献本が出版社から届きました。

ベタープログラマ.jpg

原著『Becoming a Better Programmer』を読んだのは2年前(「技術的負債(6)」)で、『プログラミング言語Go』の翻訳作業が終わってから翻訳に着手したのですが、長い時間がかかってしまいました。

「訳者あとがき」は、次の通りです。
 私が30代であった1990年代まで、ソフトウェアエンジニアとしてどのような心がけが重要であるかに関する書籍は少なかったです。その後、『達人プログラマー(The Pragmatic Programmer』や『ソフトウ ェア職人気質(Software Craftsmanship』が出版されて、私自身も大きく影響を受けました。私自身の経験に基づいたソフトウェアエンジニアの心得に関する拙著『プログラマー現役続行』を出版したのが2007 年でした。その後も、『情熱プログラマー(The Passionate Programmer』や私が翻訳した『アプレン ティスシップ・パターン(Apprenticeship Patterns』などが出版されています。

 私が1978年4月に九州工業大学情報工学科に入学した頃と比べると、今日のソフトウェア開発は複雑なものとなっています。本書では、その複雑なソフトウェア開発をさまざまな側面に沿って議論し、各側面において優れたプログラマを目指してどのように活動するのがよいかが述べられています。

 読者のみなさんは、本書に述べられていることを実践できるようになるだけではなく、指導できるようになってください。日本のソフトウェア業界では、本書で述べられていることをきちんと実践したり、指導したりする人達が少ないのが現状だと思います。

 この日本語版が、若手を含む日本のソフトウェアエンジニアにとって、優れたプログラマを目指す上でガイドとなれば幸いです。そして、私自身もさらに歩み続けて向上していきたいと思っています。

訳者あとがき(『ベタープログラマ』)



スポンサーリンク





コメント(0) 

第1回グローバリング・イノベーション・セミナー [プログラマー現役続行]

ジョイ・インク 役職も部署もない全員主役のマネジメント

ジョイ・インク 役職も部署もない全員主役のマネジメント

  • 出版社/メーカー: 翔泳社
  • 発売日: 2016/12/19
  • メディア: Kindle版

『Joy Inc.』の著者であるリチャード・シェリダンによる基調講演を含む「第1回グロバーリング・イノベーション・セミナー」が2018年1月10日(水)に開催されます。

セミナーの詳しい内容は、こちらです。

リチャード・シェリダンは、メンローイノベーションズ社の社長であり、メンローイノベーションズ社はソフトウェア開発において、デスマーチとは全く正反対でかつ、高品質なソフトウェアを作り出すためのソフトウェア開発組織を作り上げています。そこには、「Joy(喜び)」に満ちた組織が作られています。そのため、書籍のタイトルが『Joy Inc.』なのです。

書籍には、日本のソフトウェア開発組織がいまだに到達していないレベルのソフトウェア開発が述べられています。多くの日本企業の場合、単に「到達していない」のではなく、残念ながら「目指したことがない」事柄が多くの述べられています。ソフトウェア開発者や組織にとっては、この本の内容は、目指すべき姿の一つが描かれていますし、夢物語ではなく、現実にメンローイノベーションズ社では実践されているのです。

私自身もさまざまなソフトウェア開発で色々な改善を試みてきましたが、メンローイノベーションズ社のレベルを達成するには、マネジメント層の理解やサポートが非常に重要だと考えています。その意味でもソフトウェア開発のマネジメント層に読んでもらいたい書籍だと思います。

セミナーでは、私自身も技術講演として30分だけですが、私自身の取り組んできた実施例を紹介させてもらいます。

みなさんの参加をお待ちしています。


スポンサーリンク





コメント(0) 

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

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

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

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

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

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

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

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

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

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

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

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

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

コメント(0) 

『Java Puzzlers』とGo言語(2) [golang]

Java Puzzlers 罠、落とし穴、コーナーケース

Java Puzzlers 罠、落とし穴、コーナーケース

  • 作者: ジョシュア・ブロック
  • 出版社/メーカー: ピアソン・エデュケーション
  • 発売日: 2005/11/14
  • メディア: 大型本
パズル3: 長除法(Long Division)

このパズルは、2 つのlong 値を割るプログラムに関することなので、LongDivision と呼ばれます。被除数は一日が何マイクロ秒であるかを表し、除数は一日が何ミリ秒であるかを表しています。このプログラムは、何を表示しますか?
public class LongDivision {
    public static void main(String[] args) {
        final long MICROS_PER_DAY = 24 * 60 * 60 * 1000 * 1000;
        final long MILLIS_PER_DAY = 24 * 60 * 60 * 1000;
        System.out.println(MICROS_PER_DAY / MILLIS_PER_DAY);
    }
}
このプログラムの実行結果は、5です。その理由は、Javaではint型(上記の数値リテラルはすべてint)から構成される式の演算結果の型はintなので、上記のMICROS_PER_DAYへの代入の右辺の式の計算結果はintに収まらずにオーバーフローが発生しているからです。その結果、小さな値となっており、実行結果が5なのです。

単純にGo言語で書いたコードは次のようになります(対比しやすいように、Go言語の命名規則には従っていません)。
package main

import "fmt"

func main() {
    var MICROS_PER_DAY int64 = 24 * 60 * 60 * 1000 * 1000
    var MILLIS_PER_DAY int64 = 24 * 60 * 60 * 1000
    fmt.Println(MICROS_PER_DAY / MILLIS_PER_DAY)
}
このコードの実行結果は、1000です。その理由は、右辺の式に書かれているものはすべて定数つまり「型付けなし整数」であるため、式の演算はコンパイル時に計算されます。そして、その計算結果の値も「型付けなし整数」なのです。

「型付けなし整数」の値は、型がある変数(上記の場合、int64MICROS_PER_DAY)への代入において、変数の型(int64)の取り得る値の範囲に収まれば、コンパイルされます。収まらなければ、コンパイルエラーです。

コメント(0) 

総閲覧数が累計で600万を超えました [総閲覧数]

スクリーンショット 2017-11-29 6.28.22.png
総閲覧数が600万を超えました。500万から600万は15か月でした。

コメント(0) 

『Java Puzzlers』とGo言語(1) [golang]

先週の金曜日のGo言語研修が終わって、懇親会(会社の食堂)まで時間があったので、『Java Puzzlers』をやってみました。

Java Puzzlers 罠、落とし穴、コーナーケース

Java Puzzlers 罠、落とし穴、コーナーケース

  • 作者: ジョシュア・ブロック
  • 出版社/メーカー: ピアソン・エデュケーション
  • 発売日: 2005/11/14
  • メディア: 大型本

もう12年前の本で、現在は絶版となっています。発売された時に、日本でJavaOneが開催されていて、印刷されたばかりのこの本が販売された頃が懐かしいです。

ところで、Javaではパズルになるものが、Go言語ではそもそもコンパイルエラーになるものが多いです。その理由の一つは、異なる整数型の混合計算をGo言語が許さないことです。初めてGo言語に触れると、その点がちょっと煩わしく感じます。でも、パズルをGo言語で書くとどうなるかを知ると、言語の違いが分かってきて面白いです。
パズル2: 変革の時(Time for a Change)

次の文章問題を考えてみてください。
トムは、$1.10 するスパークプラグを購入するために自動車部品店に行きますが、財布の中にあるのは2 ドル紙幣ばかりです。2 ドル紙幣でスパークプラグの代金を支払ったとしたら、彼は、お釣りをいくら貰うでしょうか。

この文章問題を解こうとしているのが、次のプログラムです。このプログラムは、何を表示しますか?
public class Change {
    public static void main(String args[]) {
        System.out.println(2.00 - 1.10);
    }   
}
これを実行すると結果は、0.8999999999999999となります。その理由は、1.10を浮動小数点数では正確に表現できないからです。

Go言語で同じコードを書くと次のようになります。
package main

import "fmt"

func main() {
    fmt.Println(2.00 - 1.10)
}
そして、実行結果は、0.9です。なぜ、Go言語でこうなってしまうのでしょうか?

それは、2.001.10の扱いの違いです。Go言語では、それらは「型付けなし(untyped)浮動小数点数」です。そして、Printlnの引数の式は定数リテラルの演算なので、コンパイル時に定数として計算されます。この定数計算に関しては、Go言語では言語仕様ですべのGo言語の実装に対して、次のように高い精度を要求しています。

Represent floating-point constants, including the parts of a complex constant, with a mantissa of at least 256 bits and a signed binary exponent of at least 16 bits.
しかし、いくら高い精度でもっても、正確には表現できないはずです。そこで、言語仕様では次の条件が付加されています。
Round to the nearest representable constant if unable to represent a floating-point or complex constant due to limits on precision.
つまり、定数計算の結果は、表現可能な最も近い値の定数となるのです。

もちろん、定数ではないfloat64の変数に代入してから計算すると、0.9にはなりません。
package main

import "fmt"

func main() {
    var x, y float64 = 2.00, 1.10
    fmt.Println(x - y)
}
このコードの実行結果は、0.8999999999999999です。

型付けなし定数については、『プログラミング言語Go』の「3.6.2 型付けなし定数」(p.87)でも説明されていますが、上記の丸めについては書かれていません。

プログラミング言語Go (ADDISON-WESLEY PROFESSIONAL COMPUTING SERIES)

プログラミング言語Go (ADDISON-WESLEY PROFESSIONAL COMPUTING SERIES)

  • 作者: Alan A.A. Donovan
  • 出版社/メーカー: 丸善出版
  • 発売日: 2016/06/20
  • メディア: 単行本(ソフトカバー)


コメント(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) 

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

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

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

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

昨年の6月から翻訳を行ってきた本です。優れたプログラマになるために、どのようなことを心がけるべきかについて、ソフトウェア開発の様々な側面について説明されいます。

目次は、以下の通りです。
1章 コードを気にかける
  コードへの正しい取り組み方と態度を身に付ける

第Ⅰ部 you.write(code)
2章 見かけのよい状態を維持する
  コードの表現:レイアウトと名前付け
3章 少ないコードを書く
  不必要なコードを書かない
4章 取り除くことでコードを改善する
  死んでいるコードを見つけて取り除く
5章 コードベースの過去の幽霊
  過去に書いたコードから学ぶ
6章 航路を航行する
  なじみのないコードへの取り組み方
7章 汚物の中で転げ回る
  不快でひどいコードを取り扱う
8章 そのエラーを無視するな!
  エラー処理に対する健全な態度
9章 予期せぬことを予期する
  あらゆる可能性を考慮して、頑強なコードを書く
10章 バグ狩り
  バグを見つけて修正する
11章 テストの時代
  開発者テスト:単体テスト、インテグレーションテスト、システムテスト
12章 複雑さに対処する
  不必要な複雑さを避けるために、コードをうまく設計する
13章 二つのシステムの物語
  優れた設計とひどい設計の顛末

第Ⅱ部 練習することで完璧になる
14章 ソフトウェア開発とは
  ソフトウェア開発とは何か
15章 規則に従って競技する
  開発チームの役割を明確にする規則を作る
16章 単純に保つ
  ソフトウェアの簡潔性を追い求める
17章 頭を使いなさい
  プログラマは頭を使うことができるし、そうするべきである
18章 変わらないものはない
  コードは不可侵ではなく変化する
19章 コードを再利用するケース
  コードを再利用するための健全な方法
20章 効果的なバージョンコントロール
  バージョンコントロールをうまく使う
21章 ゴールポストを抜ける
  QAチームと協業する
22章 凍結されたコードの数奇な人生
  コード凍結とは何か。そもそも必要か
23章 プリーズ・リリース・ミー
  ソフトウェアリリースを作成する

第Ⅲ部 個人的なこと
24章 学びを愛して生きる
  効果的な学び方
25章 試験に基づく開発者
  プログラミングと自動車運転の類似:どのように学び、どのように試験に合格するか
26章 チャレンジを楽しむ
  モチベーションを維持し、スキルを高く維持するための課題の見つけ方
27章 停滞を避ける
  プログラミングスキルの陳腐化を防ぐ
28章 倫理的なプログラマ
  開発者人生における倫理的な問題
29章 言語への愛
  多くのプログラミング言語を学び、使っている言語を愛する
30章 プログラマの姿勢
  プログラマの健康の改善:姿勢、目の疲労、元気の維持

第Ⅳ部 成し遂げる
31章 一生懸命ではなく、賢く
  効果的に働く:不要な作業を回避して、問題を解決する
32章 完了したときが完了
  プログラミングのタスクを明確にし、終わったときを正確に把握する
33章 今度こそ分かった……
  視野を狭くしない:問題を解決する最善な方法を見つける

第V部 人々の営み
34章 人々の力
  優れたプログラマと一緒に働く。チームでうまく働く方法
35章 原因は思考
  説明責任:自分自身と自らの働きを向上させる
36章 遠慮なく話す
  ソフトウェア開発者にとってのコミュニケーションスキル
37章 多くのマニフェスト
  ソフトウェアのマニフェストとは何か。なぜ必要か
38章 コードへの叙情歌
  間違ったソフトウェア管理の教訓

結び
訳者あとがき


コメント(0) 

第5期Go言語研修を開講しました [golang]

11月24日(金)に、私にとっては通算第5期となるGo言語研修を某企業様向けに開講しました。受講生は、入社3年目までの若いソフトウェアエンジニアの11名で開講しました。

テキストは、従来通りに『プログラミング言語Go』です。

プログラミング言語Go (ADDISON-WESLEY PROFESSIONAL COMPUTING SERIES)

プログラミング言語Go (ADDISON-WESLEY PROFESSIONAL COMPUTING SERIES)

  • 作者: Alan A.A. Donovan
  • 出版社/メーカー: 丸善出版
  • 発売日: 2016/06/20
  • メディア: 単行本(ソフトカバー)

月に1日で、6か月で終了する研修コースです。事前にあらかじめ決まっているテキストの予習範囲に対して以下の予習を行ってもらいます。
  • テキストの内容に関して、疑問に思ったことや分からないことを、受講生で共有しているGoogle Drive上のGoogle Sheetに記入してもらいます。
  • 練習問題のプログラミングを行ってもらい、解答を各人のGithub上のリポジトリに入れる
予習は業務ではなく、プライベートの時間を使って行ってもらいますので、希望者だけが受講する研修です。

月に1日の業務扱いの研修は、9時30分から17時までです。研修では、質問表の質問に回答したり、質問に関連した基礎知識を説明したりします。そして、練習問題のプログラミングの解答の確認も行っていきます。研修終了後は、懇親会を行い、研修の内容も含めて、色々な話をします。

コメント(0) 
前の10件 | -