So-net無料ブログ作成
  • ブログをはじめる
  • ログイン
前の10件 | -

テスト駆動開発の経験(6) [プログラマー現役続行]

4年ほど前に「テスト駆動開発の経験」と題して記事を書いています。
1978年に大学でプログラミングを始めてから、(「テスト駆動開発の経験(1)」に書いてあるように)2003年まで、私自身はテスト駆動開発を経験したことがありませんでした。

1990年代までのソフトウェア業界では、自動実行するテストを書いて資産として残していく習慣はありませんでした。手作業によるテストと目視確認というのが普通に行われていたのがソフトウェアのテストでした。テストコードが書かれたとしても、テストコードを手作業で実行し、目視確認が終わったら捨てるということが行われていました。実際、同じようなことを、Martin Fowler、Robert Martin、Joshua Blochが、それぞれ『リファクタリング』、『Clean Code』、『Coders at Work プログラミングの技をめぐる探求』の中で述べています。

テスト駆動開発は、それ以前のソフトウェア開発とはやり方が異なっていたために、地道に意識した努力を行っていく必要がありました。主なものを列挙すると以下の通りです。
  • 「テストファースト」で先にテストコードを書く習慣。そのためには、事前にAPIをきちんと設計する習慣
  • 不具合が発生した場合に、必ず再現テストを書いてから修正する習慣
  • CIが失敗していたら、その調査に最優先で取り組む習慣
2003年に始めたテスト駆動開発は、対象が(コピー、プリンター、FAXなどが搭載されている)デジタル複合機のコントローラソフトウェアであり、処理が非常に複雑なソフトウェアでした。私の経験から、デジタル複合機で最も複雑な実装は、コピーやプリントを行っているときの「割り込み」機能です。そして、「割り込み」は今日ではおそらく誰も使わない機能です。

メルペイ社でbackendエンジニアとして行っているソフトウェア開発は、もちろんテスト駆動開発で行っています。私自身、それ以外の手法は考えられません。今から考えると、1990年代まで、手作業でテストを行っていたことが信じられない感じです。


スポンサーリンク





コメント(0) 

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

スクリーンショット 2019-01-18 6.09.41.png
総閲覧数が700万を超えました。600万から700万は13か月でした。ブログを始めたのが2004年12月13日からですので、ほぼ14年が経過したことになります。


スポンサーリンク





コメント(1) 

『プログラマー現役続行』から11年 [プログラマー現役続行]

プログラマー現役続行 (技評SE新書)

プログラマー現役続行 (技評SE新書)

  • 作者: 柴田 芳樹
  • 出版社/メーカー: 技術評論社
  • 発売日: 2007/09
  • メディア: 新書

技術評論社の雑誌に書いた複数の記事をもとに、加筆・修正し、再構成して書籍にまとめて出版したのが2007年9月です。私がまだ47歳のときです。当時は富士ゼロックス情報システムで、開発部の部長をしながら同時に毎日C++でマルチスレッドプログラミングを行っていました。

「現役続行に必要な七つの力」として次の項目を挙げて解説しています。
  1. 論理思考力
  2. 読みやすいコードを書く力
  3. 継続学習力
  4. コンピュータサイエンスの基礎力
  5. 朝型力
  6. コミュニケーション力
  7. 英語力
現在は59歳で、今年の11月には60歳になります。1978年4月に九州工業大学情報工学科へ入学して、初めてコンピュータに触れ、Fortranでプログラミングを学んでから40年の歳月が流れました。

今日、上記の7つの力に追加するとしたら、「健康力」かもしれません。つまり、健康であることです。この歳になってくると、体の色々なところに問題が発生します。私自身も2018年は、体がガタガタという状態でした。痛風、両肩同時の五十肩、それに腰部脊柱管狭窄症と大変な一年でした。まだ、体はもとに戻っている訳ではありませんが、かなりよくなってはいます。

2017年8月にリコーを退職してからは、日々の仕事は自分でプログラミングを行うソフトウェア開発が中心となっています。メルペイでも、あるマイクロサービスの開発をGo言語で毎日行っています。ただ、『プログラマー現役続行』を書いた頃と比べると、かなり規則正しい生活を送っています。その頃は次のような生活を送っていました。
  • 残業や休日出勤してのプログラミング(開発部の部長でしたが、自分でもかなりプログラミングしていました)。
  • 週に数回の飲み会(とにかく部下とよく飲みに行っていました)
今は、全く違って
  • 残業せずに勤務時間内にできるだけ高い生産性を意識しながらプログラミングしています
  • 仕事の後の飲み会は不参加です
通勤時間が長いため7時30分頃に出社して、16時過ぎに退社しているのですが、それでも朝、家を出てから帰宅するまでに約13時間が経過しています。したがって、残業することはほとんどありません。仕事の後の飲み会は、だいたい19時か19時30分から開始なので、出席していたら、帰宅は翌日の時間になってしまうため、原則不参加です。金曜日に行っている技術教育(Go言語研修『Effective Java 第3版』研修)の後の懇親会や横浜Go読書会の後の懇親会は参加するので、全く飲んでいない訳ではありません。

今年はこの生活パターンを送りながら、仕事でプログラミングしながら健康で60歳を迎えられればと思っています。ちなみに、定年は65歳です。


スポンサーリンク





コメント(0) 

第6期、第7期のGo言語研修が終了しました [プログラミング言語Go研修]

今年の2月と7月から開講した、リクルートテクノロジーズ社向けのGo言語研修が終了しました。リクルートテクノロジーズ社内では第2期と第3期となりますが、私にとっては通算第6期と第7期です。

修了写真1.png修了写真3.png
修了生と私

Go研修では、半年間の6回で書籍『プログラミング言語Go』を学びます。毎回、予習範囲が決められており、事前に予習範囲のテキストを読んで質問をまとめ、練習問題のプログラミングは解いてGithubに入れてもらいます。研修当日は、質問に対する回答や解説をして、練習問題の解答の確認を行います。

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

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

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

Go言語は、他のオブジェクト指向言語と比較すると、言語仕様が易しいために書籍『プログラミング言語Go』を読まずにプログラミングしている人が多いと思います。さらに、練習問題をすべて解くことに挑戦する人はほとんどいないのではないかと思います。

Go言語研修修了生は、自分のプライベートの時間で、『プログラミング言語Go』を全部読んで、練習問題も解くことに挑戦しています。もちろん、テキストを全部理解できるとは限りませんし、練習問題もすべて解けないかもしれません。しかし、一人でもくもくと読むのとは異なり、研修を通して、予習での疑問点の解説を聞いたりディスカッションしたりして理解を深めてくれたと思います。また、他の人の練習問題の解答を見ることで、自分の解答と比較したりできたと思います。

特に第6期には、古川陽介さんと和田卓人さんがおられて、お二人の経験に基づくディスカッションもでき、私も多くのことを学びました。実は、古川陽介さんは10年前のJava研修・第8期の修了生です。

修了写真2.png
古川さん、私、和田さん

リクルートテクノロジーズ社では、1月より『Effective Java 第3版』研修を開講します。

コメント(0) 

書籍『Kubernetes in Action』 [プログラマー現役続行]

Kubernetes in Action

Kubernetes in Action

  • 作者: Marko Luksa
  • 出版社/メーカー: Manning Publications
  • 発売日: 2018/01/20
  • メディア: ペーパーバック

メルペイで5か月が過ぎました」でも書きましたが、今年の6月にメルペイ社に入社して読み始めたのが『Kubernetes in Action』です。メルペイ社では、Go言語を用いてマイクロサービスで開発していますが、各マイクロサービスはKubernetes上のPodとして動作します。

基盤としてKubernetesを使っているとはいえ、細かな設定などはSREチームが行っているので、細かな仕様を知っている必要はないのかもしれません。しかし、やはり使っている技術はきちんと学ぶのが基本ですので、どの本がよいかをAmazon.comで調べてこの本を選びました。ただし、出版元のManning PublicationsからPDF版を購入しました。

この本は大きく、3部から構成されています。
Part 1 Overview
Part 2 Core Concepts
Part 3 Beyond the Basics
Part 1は、導入部分であり概要が説明されています。Part 2では基本的な事柄が説明されています。Part 3は、どのような仕組みで動作しているかや、さまざまなリソースのチューニングなどが説明されています。

実際にテキストの指示に従って、Google Cloud Platform上にクラスタを構築しながら、手を動かして読み進めて理解を深めることができます。私自身は普段の開発に必要なさまざまなツールの設定はこの本の指示に従って行いましたし、日々の開発に必要とするKubernetesの知識もこの本で学びました。普段手に取って簡単に参照できるように、紙の本を会社で購入したのですが、紙の本は図が白黒なので、読むのにはPDFの方がよいかと思います。

前職のソラミツ社ではgRPCを用いた開発は多少しましたが、Backendのサービス開発は初めてと言ってもよいです。Fortranでプログラミングを初めて学んでから40年が過ぎましたが、ソフトウェアにはエンドレスに新たな技術が登場します。そのため、学び続けるのと、実際に作り続けることが必要な領域だと思います、

コメント(0) 

悪い癖、間違った思考・行動パターン [プログラマー現役続行]

私自身は、メンバーの業績評価を伴わないリーダーとしての立場から、メンバーの業績評価を伴うマネージャとしての立場、さらに開発部の部長という立場までさまざまな経験をしながら、ソフトウェア開発組織を作り上げることをどこかで意識してきました。働いてきたソフトウェア開発組織のほとんどは、毎年、新卒新人が入社して、彼ら彼女らを育成していくことが必要な組織でした。そのような経験をまとめたのが「ソフトウェア開発組織が持つべきカルチャー」です。そうは言っても、意識していたのは30代後半以降です。20代と30代前半は、そのような意識もなくソフトウェアを開発していました。

そして、私自身、ソフトウェアエンジニアとしてのさまざまな悪い癖は、自分自身で気付いて直してきました。当たり前だと思ってやっていたことが、後に、bad practiceと分かることがありますが、その場合には意識して直してきました。

しかし、私自身が長い年月を経て習得してきたことを、新卒新人に同じ年月をかけて習得させるのは非効率ですし、ひょっとしたら全く習得しないかもしれません。そのために、新卒新人の頃から変な癖や間違った思考・行動パターンにならないように指導してきました。

ソフトウェアエンジニアの変な癖やまた違った思考・行動パターンは、いつ身に付くかというと、新卒新人で入社した最初の会社です。それと同時によい習慣や正しい思考・行動パターンが身に付くもの最初の会社です。とくに前者の場合、一度身に付いてしまうと、組織を変わってもなかなか変えることが難しくなるのではないかと思います。

コメント(0) 

訳者まえがき『Effective Java 第3版』 [訳者まえがき・あとがき]

Effective Java 第3版

Effective Java 第3版

  • 作者: Joshua Bloch
  • 出版社/メーカー: 丸善出版
  • 発売日: 2018/10/30
  • メディア: 単行本(ソフトカバー)
 プログラミング言語Java は、1995年に登場してから短い期間に広く普及し、多くのソフトウェアエンジニアがJava 言語を使ってソフトウェアの開発を行っています。広く普及したとはいえ、プログラミング言語Java を正しく理解して、簡潔で、明瞭で、正確なソフトウェアを設計する能力を身に付けるのは容易ではありません。
 この本は、著者であるJoshua Bloch 氏が、Java 言語を用いたソフトウェア開発で得た経験や知識を まとめたものです。Java 言語の生みの親であるJames Gosling でさえ、この本の初版について次のように述べています。
10 年前にこの本を持っていたかった。私には、Java に関する本は必要ないと思うかもしれないが、この本は必要だ。
—James Gosling
 私自身も、初版の英語版を読んで目から鱗が落ち、多くを学び、影響を受けました。初版の翻訳をきっかけに、第2版と、この第3版の原著の草稿のレビューおよび翻訳を行い、その過程でさらに多くを学べました。この本は12章から構成され、第2章から第12章では、テーマに沿った項目が著者の経験に基づい て書かれています。項目の多くは、何も気にしないでプログラミングをしていては修得できない事柄を解説しています。
 第2版から10年が経過しており、Java 8で新たに導入されたラムダとストリームに関する第7章「ラムダとストリーム」が新規に追加され、既存の項目もその内容が見直されています。全体の項目数も第2 版の78項目から90項目と増えており、第7章以外でも追加されている項目があります。
 この本は、初版のタイトルにあった「プログラミング言語ガイド」の名にふさわしく、James Goslingの言葉は誇張ではありません。Java でプログラミングするすべてのソフトウェアエンジニアにとって必読の書籍だと思います。ただし、この本は、初心者向けではありません。この本の内容を理解するには、私が翻訳した『プログラミング言語Java 第4版』および『Java SE 8 実践プログラミング』で解説されている内容程度は理解しておく必要があります。また、この本では、Joshua Bloch 氏とNeal Gafter氏の共著『Java Puzzlers 罠、落とし穴、コーナーケース』で解説されている内容に関して、[Bloch05]として参照されているので、併せて読まれるとよいかと思います。
 翻訳に際して、原著の誤植や内容変更等は、Joshua Bloch 氏に確認を取って、日本語版では修正されています。初版および第2版と同様に、この第3版により、日本のソフトウェアエンジニアの技術力向上に微力ながら貢献できれば幸いです。


コメント(0) 

初めての海外生活から30年 [その他]

生まれて初めて日本を出て、米国のEl Segundo, CAに赴任したのが、いまから30年前の1988年11月でした。29年間ずっと日本にしか住んだことがなく、海外旅行もしたことがなかったのですから、不安だらけの赴任でした。

3年のLビザでしたので3年以内で日本に帰国する予定でしたが、実際にはビザを一回更新して、4年半を米国で過ごしました。赴任したのが28歳でしたが、誕生日の直前だったので、ほぼ29歳からの4年半でした。今から振り返ると、24歳で就職して29歳で海外駐在できたのは幸運だったと思います。

当時Salientと呼ばれるプロジェクトのために、私と同年代の20名以上のソフトウェアエンジニアが富士ゼロックス社から米国西海岸の米国ゼロックスのソフトウェア開発組織に送り込まれました。北はSunnyvale, CAで、南はEl Segundo, CAでした。

米国ゼロックス社は、Altoワークステーションを開発したことで有名ですが、商業ベースのStarワークテーションを開発してきた組織へ多くのソフトウェアエンジアが送り出されました。私が配属されたグループは、VP Document Editorと呼ばれるワードプロセッサソフトウェアを開発しているグループでした。

Salientプロジェクトは、StarワークステーションのMesa言語で書かれたソフトウェアをSunワークステーションへ移植するプロジェクトでした。そのため、プロジェクトの終盤は、あまり楽しくないプロジェクトになっていました。赴任当時いた多くの優秀なソフトウェアエンジニアは、辞めていくだろうという思っていたのですが、実際に辞めていきました。

初めての海外が29歳、今は59歳です。時の流れを速く感じます。

コメント(0) 

API仕様を書く(まとめ) [API仕様を書く]

「API仕様を書く」として私自身の過去の経験を書いたものを読みやすく並べてみました。
ちょうど同じような内容が『A Philosophy of Software Design』に書かれていました。

A Philosophy of Software Design

A Philosophy of Software Design

  • 作者: John Ousterhout
  • 出版社/メーカー: Yaknyam Press
  • 発売日: 2018/04/06
  • メディア: ペーパーバック

関連する章は、第12章「Why Write Comments? The Four Execuses」と第15章「Write The Comments First」です。第12章では、コメントを書かない理由として多くのソフトウェアエンジニアが挙げる理由について反証しています。第15章ではコメントを最初に書くことの有用性を説いています。ここでのコメントは、私が述べているAPI仕様に関する部分も含まれています。

翻訳はされないようなのですが、分かり易い英語で書かれていますので、ぜひ読まれることをお勧めします。

コメント(0) 

『Effective Java 第3版』研修 [プログラミング言語Java教育]

Effective Java 第3版

Effective Java 第3版

  • 作者: Joshua Bloch
  • 出版社/メーカー: 丸善出版
  • 発売日: 2018/10/30
  • メディア: 単行本(ソフトカバー)

第1章「はじめに」には次のように書かれています。
この本は初心者向けではありません。つまり、みなさんがJava をすでに使いこなしていることを想定しています。もし、そうでなければ、Peter Sestoft の『Java Precisely』[Sestoft16] などの多くの優れた入門書籍を検討してください。『Effective Java』はJava 言語の実用的知識を持つ人なら誰でも理解できるように意図していますが、上級プログラマに対しても考えるべき材料を提供しているはずです。
また、私自身も「『Effective Java 第2版』は、やはり初心者向けではない」と題する記事を書いています。

従来、富士ゼロックスグループおよびリコーグループで行っていたJava研修では、『プログラミング言語Java第4版』を学んだ後に『Effective Java 第2版』を学んでもらっていました。『Effective Java 第3版』に関しては、第25期Java研修の修了生を対象として翻訳原稿を使って「補講」を行いました。

『Effective Java 第3版』をきちんと理解しようと思うと多くの基礎知識を必要とします。少なくとも以下の3冊は読んでおく必要があります。

プログラミング言語 Java 第4版

プログラミング言語 Java 第4版

  • 作者: ケン アーノルド
  • 出版社/メーカー: 東京電機大学出版局
  • 発売日: 2014/05/10
  • メディア: 単行本
Java 5までの言語仕様、メモリモデル、シリアライズなどの基礎的な事柄が書かれています。

Java 2 Standard Edition 5.0 Tiger―拡張された言語仕様について

Java 2 Standard Edition 5.0 Tiger―拡張された言語仕様について

  • 作者: 柴田 芳樹
  • 出版社/メーカー: ピアソンエデュケーション
  • 発売日: 2005/04
  • メディア: 単行本
Java 5で導入された言語拡張がどのように実現されているかも含めて解説されています(PDF版を公開しています)。

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

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

  • 出版社/メーカー: インプレス
  • 発売日: 2014/09/22
  • メディア: Kindle版
Java 8で導入された機能(ラムダ式やストリーム)およびJava 7で導入された機能が解説されています。

第25期Java研修生はこれらの3冊の学習まで終えていたので、補講として『Effective Java 第3版』を学習してもらいました。しかし、従来のJava研修では期間が長すぎる(一年半)ので、『Effective Java 第3版』だけを学習する研修を企業向けに半年間(月に1日で6か月)コースとして開催します。Javaに関する受講生の知識に応じて技術的な補足・解説を行いながら読んでいきます。

『Effective Java 第3版』研修の第1期は、12月から開講です。開催時期を調整中ですが、第2期も予定しています。

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