SSブログ

マルチスレッドプログラミングにおける重要な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) 

第7期Go言語研修を開講します [プログラミング言語Go研修]

7月13日(金)から私にとっては通算第7期になるGo言語研修を、現在開講中の第6期と同じ企業様向けに開講します(「Go言語研修実績」)。第6期は少しゆっくりと行うコースなのですが、第7期は普通の6か月コースです。第7期は、2018年度入社の新卒新人を中心に15名の受講生で開講します。

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

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

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

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


コメント(0) 

株式会社メルペイで働きます [転職]

一か月前に「ソラミツ株式会社を退職します」を書きました。その時点では6月からの勤務先は未定でしたが、6月1日から株式会社メルペイで「ソフトウェアエンジニア(Backend)」として働くことになりました。

通勤

勤務場所は六本木ヒルズです。今までよりも乗り換えが1回増えるために、通勤時間はおそらく片道で15分ぐらい長くなるのではないかと思います(往復で3時間を超える?)。朝は今まで通り、自宅の最寄り駅の始発(初電)に乗車して、各駅停車で行く予定です(「通勤電車の書斎化」)。フレックス勤務でコアタイムは12:00〜16:00なので、今までのように出社前にスターバックスに寄って翻訳などの作業をせずに、そのまま出社して早めに帰宅するつもりです。

7社目

1984年4月に富士ゼロックスに就職した頃には全く想像もしていませんでしたが、これで7社目となります。
  • 富士ゼロックス
  • 日本オラクル
  • ジャストシステム
  • 富士ゼロックス情報システム
  • リコー
  • ソラミツ
  • メルペイ

定年まで 18か月 6年半

日本企業なので就業規則には定年があり60歳です。私は1959年11月生まれなので、18か月勤務すれば定年となります。
定年は65歳に改訂されていたので、6年半で定年です。

個人としての活動

リコーを退職したのを機に、ソラミツ社勤務時代に始めた個人として活動(金曜日に行う、企業への技術教育、講演、コンサルティング等)は、今後も引き続き行っていきます。

コメント(0)