So-net無料ブログ作成
  • ブログをはじめる
  • ログイン
プログラマー現役続行 ブログトップ
前の10件 | -

マルチスレッドプログラミングにおける重要な4要件 [プログラマー現役続行]

JaSST Tokyo 2018の招待講演で話した資料(こちら)に書いてあることですが、今までの人生で私自身は、デジタル複合機コントローラソフトウェア開発を4回もアーキテクチャを変えて行いました。デジタル複合機の難しさは、ハードウェアからの非同期なさまざまなイベントとユーザからの様々なイベントを両方を上手く処理しなければならず、かなり複雑なソフトウェアとなります。

ソフトウェアエンジニアとして合計すると10年以上をデジタル複合機コントローラソフトウェアの開発に従事し、マルチスレッドプログラミングを行ったことになります。公開資料に詳細情報は含まれていませんが、資料にある「Take 3」と「Take 4」は、デジタル複合機コントローラソフトウェアを完全にテスト駆動開発で行うというものでした。

4回ともマルチスレッドプログラミング(厳密には、Take 4はマルチゴルーチン(goroutine)プログラミング)を行った経験から言えるのは、次の4要件です(JaSSTの公開資料に含まれています)(書かれていませんが、テスト設計も非常に重要です)。

20180308 JaSST2018Tokyo(V4).001.jpeg

この4項目がきちんと行われいるソフトウェア開発はかなり少ないと思います。最初の項目のハードルが非常に高いからです(二つ目も、かなりハードルが高いですが)。つまり、以下のことができません。
マルチコアおよびマルチスレッドプログラミングのきちんとした経験および知識を持つ人が設計やコードをレビューしていること
ある程度(手作業であっても)動作が確認されたプログラムでも、ソースコードを見ると間違っていることがあります。マルチスレッドプログラミングが厄介なのは、その間違いが原因で不具合が現象として現れる可能性が非常に低い場合があることです。

上記の項目3に書かれているように膨大な長時間ランニングテストを数十台のPCで行っていたにもかかわらず、微妙な間違いが入ってから、3か月後に1台のPCだけでその間違いが原因で止まることを経験したことがあります。朝出社したら私のPCでテストが止まっていたので、数時間かけて若手と二人でデバッグしてその間違いに気付きました。しかし、その間違いはソースコードレビューだけではおそらく気付かないようなものでした。そして、その間違いの修正が入ったのがいつかを調べたら3か月前だったのです。



スポンサーリンク





コメント(0) 

技術書の間違いに気付いたら [プログラマー現役続行]

「ぐるなび」社内の勉強会で『ベタープログラマ』を読んでおられて、今までに多くの間違いを指摘していただきました。


出版までに間違いをできるだけ少なくするように出版社も含めて努力をしていますが、どうしても誤字脱字だけでなく、技術的間違いを見落とすことがあります。

「ソフトウェアエンジニアの心得」と題した講演や教育では、「技術書には間違いがあると思って読んでください」と話しています。そして、技術的間違いだと思ったら、出版社や著者に問い合わせてくださいとも話しています。技術的間違いに関しては、大きく分けて次の二つに分類されます。
  • 確かに技術的に間違っている
  • 読者の知識不足あるいは勘違いにより間違いではない
どちらであっても、問い合わせて損することはありません。技術的に間違っていたら、著者や出版社から感謝されますし、著者によっては正誤表に名前を掲載して、感謝してくれます。正誤表に名前を掲載してくれる例としては、『The Go Programming Language』の正誤表(こちら)があります。まれですが、増刷ごとに本の中の謝辞に追加してくれる場合もあります。『Elements of Programming』は増刷ごとに謝辞が追加されています(正誤表はこちらです)。一方、指摘事項が実は間違いではなく、読者の知識不足や勘違いの場合、なぜ間違いではないかという回答をもらえば、自分自身の知識を修正することができます。

ただ、残念ながら間違いに気付いても連絡する人はそれほど多くはないようです。問い合わせ先を調べないといけないし、特に誤字脱字だと「まあ、いいか」となりがちです。結果、私の翻訳本に関しては、間違いの指摘をしてくれる人達の多くが、私の知り合いです。知り合いではない読者からの問い合わせや連絡は、非常に少ないです。

少し面倒かもしれませんが、技術書を読まれて間違いや誤字脱字に気付かれたときは、出版社、著者、翻訳者へ連絡していただければと思います。


スポンサーリンク





コメント(0) 

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

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

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

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

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

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

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

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

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

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

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

コメント(0) 

レビューした(している)これからの新刊 [プログラマー現役続行]

これから出版される本で、今年その本の英語の草稿をレビューした本です。

Core Java SE 9 for the Impatient (2nd Edition)

Core Java SE 9 for the Impatient (2nd Edition)

  • 作者: Cay S. Horstmann
  • 出版社/メーカー: Addison-Wesley Professional
  • 発売日: 2017/09/25
  • メディア: ペーパーバック

結構なページ数があるので、全部をレビューできませんでしたが、Java 9に合わせて更新されています。Horstmann氏のJava関連の最近の書籍は、レビュー依頼が米国の出版社からあるのですが、『Core Java Volume I--Fundamentals (10th Edition)』 『Core Java, Volume II--Advanced Features (10th Edition)』 も、ページ数が膨大で全部をレビューできませんでした。

Go in 24 Hours, Sams Teach Yourself: Next Generation Systems Programming with Golang

Go in 24 Hours, Sams Teach Yourself: Next Generation Systems Programming with Golang

  • 作者: George Ornbo
  • 出版社/メーカー: Sams Publishing
  • 発売日: 2018/01/01
  • メディア: ペーパーバック

米国の出版社からの依頼でレビューしたものです。Go言語の入門書で、これからGo言語を学ぶ初心者向きです。各章が1時間で消化できるないようになっています。初心者本でしたが、私自身も新たに学ぶことができた事柄もありました。

草稿が執筆中なので、レビューそのものがまだ終わっていませんが、現在レビュー中なのが次の本です。

Effective Java (3rd Edition)

Effective Java (3rd Edition)

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

こちらは、第2版と同様に、著者のJoshua Blochが、レビューして欲しい人達(20名以上)に直接草稿を送っています。9年振りの改訂です。

コメント(0) 

練習問題の解答からみるエンジニアのレベル(3) [プログラマー現役続行]

私が今まで開催してきた社内のJava研修やGo研修では多くの練習問題を解かなければなりません。その練習問題の解き方から、どのようにソフトウェアエンジニアのレベルが分かるかについて書いたのが、次の記事です。
この記事での分類とは別に、最近驚いた解答がありました。それは、Go言語研修でのことです。Go言語研修では『プログラミング言語Go』をテキストとして使用しています。

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

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

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

驚いた解答は、次の練習問題に対する解答でした。
練習問題7.5 ioパッケージのLimitReader関数はio.Readerであるrとバイト数nを受け取り、 rから読み出す別のReaderを返しますが、nバイトを読み出した後にファイルの終わりの状態を報告します。その関数を実装しなさい。

func LimitReader(r io.Reader, n int64) io.Reader
この練習問題の意図は、ioパッケージのLimitReader関数と同じ機能を実装しなさいというのは明白です。そして、これは、プログラミングの練習問題ですので、自分で考えて実装することが求められます。

しかし、驚くことに、数人の受講生がioパッケージのLimitReader関数の実装コードを丸々コピーしていたことです。元の英語のコメントもそのままコピーしている人や、コメントだけ削除してコピーした人がいました。

これは、自分で何も考えないという点において、「全く解けていない」レベルよりも低いレベルかもしれません。

コメント(0) 

リコーでの8年間に出版した本の一覧 [プログラマー現役続行]

2000年から技術書の翻訳や自著の出版をしていますが、2009年9月1日にリコーへ入社してから出版した書籍です。出版順に、次の通りです。

ソフトウェア開発の名著を読む 【第二版】 (技評SE選書)

ソフトウェア開発の名著を読む 【第二版】 (技評SE選書)

  • 作者: 柴田 芳樹
  • 出版社/メーカー: 技術評論社
  • 発売日: 2009/10/21
  • メディア: 単行本(ソフトカバー)

アプレンティスシップ・パターン ―徒弟制度に学ぶ熟練技術者の技と心得 (THEORY/IN/PRACTICE)

アプレンティスシップ・パターン ―徒弟制度に学ぶ熟練技術者の技と心得 (THEORY/IN/PRACTICE)

  • 作者: Dave H. Hoover
  • 出版社/メーカー: オライリージャパン
  • 発売日: 2010/07/08
  • メディア: 単行本(ソフトカバー)

プログラマー”まだまだ”現役続行 (技評SE選書)

プログラマー”まだまだ”現役続行 (技評SE選書)

  • 作者: 柴田 芳樹
  • 出版社/メーカー: 技術評論社
  • 発売日: 2010/09/04
  • メディア: 単行本(ソフトカバー)

プログラミング原論

プログラミング原論

  • 作者: アレクサンダー ステパノフ
  • 出版社/メーカー: ピアソン桐原
  • 発売日: 2010/12/24
  • メディア: 単行本(ソフトカバー)

Android SDK 開発クックブック

Android SDK 開発クックブック

  • 作者: ジェームズ・スティール
  • 出版社/メーカー: ピアソン桐原
  • 発売日: 2011/07/26
  • メディア: 単行本(ソフトカバー)

プログラミング言語Goフレーズブック

プログラミング言語Goフレーズブック

  • 作者: David Chisnall
  • 出版社/メーカー: ピアソン桐原
  • 発売日: 2012/10/04
  • メディア: 単行本(ソフトカバー)

Objective‐C明解プログラミング―基礎から応用までステップ・バイ・ステップ方式でわかりやすく解説 (Developer’s Library)

Objective‐C明解プログラミング―基礎から応用までステップ・バイ・ステップ方式でわかりやすく解説 (Developer’s Library)

  • 作者: スティーブン・G. コーチャン
  • 出版社/メーカー: ピアソン桐原
  • 発売日: 2013/05
  • メディア: 単行本

APIデザインの極意 Java/NetBeansアーキテクト探究ノート

APIデザインの極意 Java/NetBeansアーキテクト探究ノート

  • 出版社/メーカー: インプレス
  • 発売日: 2014/05/23
  • メディア: Kindle版

Javaプログラマーなら習得しておきたい Java SE 8 実践プログラミング

Javaプログラマーなら習得しておきたい Java SE 8 実践プログラミング

  • 出版社/メーカー: インプレス
  • 発売日: 2014/09/22
  • メディア: Kindle版

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

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

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

8年間の在籍期間に、私的な活動として全部で10冊(自著2冊、翻訳本8冊)を出版したことになります。2013年にはピアソンの翻訳書籍からの撤退に伴い、ピアソン桐原社から出版されていた書籍がすべて絶版となりました。しかし、『プログラミング言語Java 第4版』『Effective Java 第2版』『プログラミング原論』は、後に他の出版社から再出版されています。

最後の2冊『Javaプログラマーなら習得しておきたい Java SE 8 実践プログラミング』と『プログラミング言語Go』は、社内教育であるJava8研修とGo言語研修のテキストとしても使ってきました。

技術書の翻訳の場合、一般的な勉強会で技術書を読むことと大きく異なるのは、英語から日本語、それに校正作業の過程で何度も読み返すということです。さらに、社内教育でテキストとして使う本に関しては、教えることにより、内容がかなり頭に残っていきます。

コメント(0) 

AITCセミナー [プログラマー現役続行]

2017年6月16日(金)に、AITCセミナーで、「ソフトウェアエンジニアの心得 / Go言語の紹介」と題して2時間の話をしました。案内は、こちらです。

「ソフトウェアエンジニアの心得」はQ&Aを入れて2時間30分でいつも話すのですが、約1時間で話をしたため、省略した部分も多かったです。

「Go言語の紹介」は、Go言語の特徴をデモを含めて行ったのですが、45分だったので、用意した資料をすべて話すことはできませんでした。資料は、こちらです。

参加者は約40名程度で、セミナーの後は懇親会で、90分ほど参加者と色々と話をすることができました。

再訪:News Improvement [プログラマー現役続行]

アドレナリンジャンキー プロジェクトの現在と未来を映す86パターン

アドレナリンジャンキー プロジェクトの現在と未来を映す86パターン

  • 出版社/メーカー: 日経BP社
  • 発売日: 2009/10/26
  • メディア: Kindle版

この書籍の「News Improvment」(日本語訳では「ニュースの改良」)に関連して、過去いくつかのブログを書いています。
「News Improvment」が蔓延しているソフトウェア開発組織は、それが一種の「組織文化」になっているため、何度でもデスマーチプロジェクトを繰り返していくのかもしれません。

新装版『達人プログラマー』(2) [プログラマー現役続行]

先日書いた記事がきっかけで、出版社から献本していただきました。

IMG_0495.JPG

右が1999年12月28日に読了した原著、真ん中は「Software People, Vol.6」(2005年4月)に書評を書くために読んだ日本語版、左が今回出版社から献本してもらった新装版。

原著が1999年10月20日に出版された直後に購入し、読んで気付いた点を著者にフィードバックしたので、英語の原著の2nd printing(第2刷)以降には、次のように謝辞が変更されています。

IMG_0498_3.jpg

追加されたのは、「The second printing of this book ... 」で始まる第2段落です。実は、この段落が追加されて自分の名前が掲載されているのを知ったのはかなり後で、たまたま何かを検索しているときに見つけました。それで、もう一冊原著を購入したので書斎には二冊あります。

私が40歳の時に読んだ本です。そして、こらからも若い人達にぜひ読んでもらいたい本です。

新装版 達人プログラマー 職人から名匠への道

新装版 達人プログラマー 職人から名匠への道

  • 作者: Andrew Hunt
  • 出版社/メーカー: オーム社
  • 発売日: 2016/10/20
  • メディア: 単行本(ソフトカバー)


新装版『達人プログラマー』 [プログラマー現役続行]

新装版 達人プログラマー 職人から名匠への道

新装版 達人プログラマー 職人から名匠への道

  • 作者: Andrew Hunt
  • 出版社/メーカー: オーム社
  • 発売日: 2016/10/20
  • メディア: 単行本(ソフトカバー)

ピアソンが日本での翻訳出版から撤退した時に絶版になった『達人プログラマー』が、再出版されます。再び、日本のソフトウェアエンジニアが読むことができるようになったのは、とてもよいことだと思います。「ソフトウェアエンジニアの心得」と題した講演や教育でも紹介しているのですが、絶版の本を紹介するのはちょっと心苦しいものがありました。

拙著『ソフトウェア開発の名著を読む 【第二版】』でも紹介しており、紹介の最後に次のように書いています。

より優れたプログラマーへ

本書には、実践的なプログラマーとなるために常に心得ておくべき事柄と、日々のソフトウェア開発で実践すべき事柄が、具体例と共にまとめられています。すべてを一度に行うことは困難ですが、すぐに試すことができる事柄については、実際に実践して一つ一つ身につけていけば、より優れたプログラマーになることができると思います。

原著は、こちらです。

The Pragmatic Programmer: From Journeyman to Master

The Pragmatic Programmer: From Journeyman to Master

  • 作者: Andrew Hunt
  • 出版社/メーカー: Addison-Wesley Professional
  • 発売日: 1999/10/20
  • メディア: ペーパーバック

原著の1st printing(第1刷)を読んだのは出版直後の1999年12月でした。私が40歳になった頃です。私自身に影響を与えた名著の中の一冊です。是非、若い人達にも読んだもらいたい本です。

余談ですが、原著の2nd printig(第2刷)以降には、謝辞が追加されており私の名前も掲載されています。謝辞の欄であっても名前が初めて掲載された本です。残念ながら日本語版にはその追加された謝辞は追記されていなかったので、今回の再出版でも追記されていないと思います。

前の10件 | - プログラマー現役続行 ブログトップ