So-net無料ブログ作成
検索選択
前の10件 | -

テスト駆動開発プロジェクトの経験 [時の流れ]

11年前の2003年9月末に、あるハードウェアを制御する最も低レベルのコンポーネントのインタフェース仕様書の最初のバージョンを、私は書き上げています。それは、それから6年間におよぶテスト駆動開発の序章でした。最初は、(親会社と子会社の開発者から構成される)約10名の小さなチームでした。

1990年代までは、テストと言えば手作業というのが当たり前のソフトウェア業界でしたが、2000年に入り、テストは手作業ではなく自動で行うことが当たり前なる時代の幕開けでした。今日では、テスト駆動や継続的インテグレーションは当たり前ですが、2003年は、Jenkinsもなく、CruiseControlも登場していましたが、広くは普及していなかったと思います。

1978年に大学に入学してプログラミングを学び始めてから、すでに25年が過ぎていました。大規模になると予想されるシステム全体のテストをすべて自動化するという仕組みを導入するというのは、私自身にとっても未知の経験でした。しかし、技術的には可能であり、テスト駆動開発にするのが正しいということで、最終的なシステム全体をどうやって自動テストするかまでの青写真を描いたのもこの頃だと思います(ひょっとしたら、翌年かもしれませんが)。

私がインタフェース仕様書を最初に書いたモジュール(コンポーネント)から、完全にテスト駆動の開発が始まりました。C++でマルチスレッドプログラミングを私自身が再び行う開発の始まりでした。

さらに10年さかのぼると、1993年5月には、4年半の米国駐在を終えて帰国しました。駐在時代の開発の継続となるFuji Xerox DocuStation IM200の開発が本格的に始まろうとしていた年です。それからの3年間におよぶこのプロジェクトでは、私自身は、C++とマルチスレッドプログラミングを学びましたし、当時としては社内でも画期的だった夜間自動ビルドシステムを私自身で構築しています。

※ 「商品・サービスの歩み」の1996年の欄に写真が掲載されています。1986年には、私が就職して最初に開発に従事した「Fuji Xerox 6060 Workstation」も掲載されています。

こうやって振り返ってみると、当時、画期的だと思った開発手法(夜間ビルドやシステム全体のテスト駆動開発)が、10年後には当たり前になっていたり、時代遅れになっていることになります。

(つづく)
コメント(0) 

朝型 [朝型]

過去、朝型について書いた記事を検索してみたら、以下の記事がありました。
振り返ってみると昔から朝型ではありませんでした。高校生の時は、朝型ではありませんでした。大学の1年生と2年生の2年間は、通学が往復5時間だったので朝は早くは出ていたと思います。3年生から大学の正門から1分の所に住むようになって、全く朝型ではありませんでした。むしろ、昼夜が逆転してることもありました。

やはり、朝型になったのは就職してからということになります。
コメント(0) 

スキル向上の場としての練習問題 [プログラミング言語Java教育]

業務としてのソフトウェア開発で、テストファーストリファクタリングを必ずしも経験できるとは限りません。業務で扱っているソフトウェアが、いわゆる(テストコードがない)「レガシーコード」だったりすると難しかったりします。私自身の経験からしても、2000年に書いた雑誌記事「リファクタリングの勧め」(「Java PRESS, Vol.12」2000年5月)でも、業務以外のコードで練習することを勧めています。

そのような練習の場の1つとして、私が行っているJava研修の課題の練習問題があります。実際の製品開発ではないので、プログラミングの質は問われないのですが、それでも、かなり個人差が現れます。

テストコードが書けるような練習問題であっても、単純に結果を出力して目視で確認するだけの人もいれば、JUnitを使用してテストコードを書いてくる人もいます。mainメソッド内にテストコードを書いて、目視で確認するという解答も多いです。実装を見ると間違っているのに、テストは通りましたという場合には、そのほとんどがテスト項目不足となっています。

練習問題などは、テストファーストを経験する格好の材料ですし、テストに合格したあとにリファクタリングをすることで、「Red-Green-Refactor」を練習することもできるわけです。しかし、提出された練習問題の解答やテストコードを見るとがっかりすることが多いです。

一年間のJava研修を修了した人だけが受講資格がある「Java 8基本技術習得」コースは、一ヶ月遅れて10月から開講します。練習問題も多いのですが、GitHubへ提出されている練習問題の解答を見るとがっかりすることが多いです。新人ではないので、自分のスキルを向上させる練習の場だと認識して、もう少しテストファーストやリファクタリングを実践してもらいたいものです。
コメント(0) 

訳者まえがき 『Java SE 8 実践プログラミング』 [訳者まえがき]

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

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


訳者まえがき

 私自身がJava言語を学び始めたのは、1996年の夏でした。その頃は、バージョン1.02であり、ネストしたクラスやネストしたインタフェースは言語仕様として存在していませんでした。バージョン1.1でネストしたクラスやネストしたインタフェースが登場し、Javaプログラムの書き方が変わりました。その後の言語仕様の大幅な拡張は、2004年にリリースされたバージョン5.0であり、ジェネリックス、enum、アノテーションといった変更が加えられました。

 それから10年が過ぎて、再び言語仕様の大幅な拡張が行われ、Java 8として登場したのです。Java 6および7でも言語仕様の変更は行われましたが、小さなものでした。Java 8でのラムダ式の導入により、従来のコードが簡潔に書けるだけでなく、多くのライブラリが影響を受けて拡張されています。そして、いわゆる関数型プログラミング的な思考を求められるようになりました。

 ラムダ式に加えて、今までのJavaと大きく変わったのはインタフェースです。デフォルト実装を持つメソッドをインタフェースへ追加することができるようになりましたし、実装を持つstaticメソッドをインタフェースへ追加することもできます。ラムダ式のサポートとインタフェースの仕様変更は、従来とは異なったJavaプログラミングの世界への扉を開いたことになります。

 この本では、簡潔にJava 8の機能が説明されています。第1章から第8章までは、Java 8に関して説明されており、第9章ではJava 7が説明されています。また、各章の章末に練習問題が用意されています。練習問題に取り組むことで、Java 8の基本的な機能を習得することができると思います。

 1996年の夏からの18年間で、私自身は、Javaを通して多くのことを学んできました。もちろん、この本でも新たなことを学ぶことができました。多くのJavaプログラマーが新たな言語仕様を学び、実践し、マルチコア時代へ向けた新たな道具を獲得することに、この翻訳本を役立てていただければ幸いです。

※ バージョン5.0で行われた言語仕様の変更は、拙著『Java 2 Standard Edition 5.0 Tiger --- 拡張された言語仕様について』にまとめられています。

コメント(0) 

Jolt Awards 2014: The Best Books [Jolt Awards読書会]

2014年のJolt AwardsのThe Best Booksが発表されました。Jolt Awardを受賞したのは、次の本です。
【Jolt Award】



Jolt Productivity Awardとして選ばれたのは、次の2冊です。

【Jolt Productivity Award】


Single Page Web Applications: JavaScript End-To-End

Single Page Web Applications: JavaScript End-To-End

  • 作者: Michael S. Mikowski
  • 出版社/メーカー: Manning Pubns Co
  • 発売日: 2013/09/27
  • メディア: ペーパーバック

Programming: Principles and Practice Using C++ (2nd Edition)

Programming: Principles and Practice Using C++ (2nd Edition)

  • 作者: Bjarne Stroustrup
  • 出版社/メーカー: Addison-Wesley Professional
  • 発売日: 2014/05/25
  • メディア: ペーパーバック

最後にFinalistは、次の3冊でした。

【Jolt Finalist】


Automate With Grunt: The Build Tool for Javascript

Automate With Grunt: The Build Tool for Javascript

  • 作者: Brian P. Hogan
  • 出版社/メーカー: Pragmatic Bookshelf
  • 発売日: 2014/05/03
  • メディア: ペーパーバック

Rethinking the Internet of Things: A Scalable Approach to Connecting Everything

Rethinking the Internet of Things: A Scalable Approach to Connecting Everything

  • 出版社/メーカー: Apress
  • 発売日: 2013/12/29
  • メディア: Kindle版

Threat Modeling: Designing for Security

Threat Modeling: Designing for Security

  • 出版社/メーカー: Wiley
  • 発売日: 2014/02/12
  • メディア: Kindle版

どれもまだ読んでいません。
コメント(0) 

Java 8の研修コース(2) [プログラミング言語Java教育]

記事「Java 8の研修コース」で、9月に開講するとしたJava 8の研修コースですが、私の業務の都合で10月開講となりました。テキストは、もちろん、次の本です。

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

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


今回は、「トライアル」コースとして開講します。何回で終わるか分からないので、トライアルとしています。受講生は、予習範囲を読んで疑問点を質問表としてまとめ、練習問題は全部解いて提出してもらいます。

質問表は、すべてGoogle Driveで共有して、そこへ記入という方式を取ります。また、練習問題の提出は、すべて、受講生が各人でGitHub上にリポジトリを作成して提出する方式にしました。

受講資格は、社内の一年間の「プログラミング言語Java基本技術習得」コースを修了していることです。今までに修了した人は、72名※1しかいません。今回のトライアルでは、その内の14名が受講します。
※1 実際には、すでに5名の修了生が転職していますので、対象は67名です。

本来は、9月開講でしたので、受講生には第3章までを印刷したもの※2を事前に渡してあります。もちろん、本が出版されましたので、残りの章は本で学習してもらいます。
※2 今回の本も、私自身で組版しています。
コメント(0) 

『Java SE 8実践プログラミング』が届きました [本]

Bx0BabDCEAAuQtn.jpg
4月から翻訳を始めた、私にとっては14冊目の翻訳本となる『Javaプログラマーなら習得しておきたい Java SE 8 実践プログラミング』出版社から届きました。5月に『APIデザインの極意 Java/NetBeansアーキテクト探究ノート』を出しましたので、今年で2冊目の翻訳本となります。2冊続けて翻訳し、両方で約1年半(約800時間)を費やしました。

今回の本には、「日本語版によせて」はありませんが、日本語版向けの段落が「まえがき」に1段落だけ追加されています。今回は、余白を多めに取って組版していますので、書き込みなども行いやすいと思います。

通勤電車の書斎化」で述べているように、翻訳作業の半分ぐらいは電車の中です。残りは、スターバックスなどか自宅です。組版の最後の調整や、レビューアからの指摘事項の反映・確認などは、大きなディスプレイで作業するのが効率的だったりするので、自宅では27インチのThunderbolt Displayに接続して作業します。

翻訳のきっかけと翻訳作業」で述べているように翻訳を行うことの個人的な恩恵の1つは、(メールのやり取りを通して)著者と知り合えることです。そして、その著者の次の著書のレビューをする機会を得られたりすることです。今回も、翻訳の予定はないですが、Horstmann氏の次の著書のレビューを行っています(「技術書のレビュー」)。
コメント(0) 

再び聴けるようになったKOIT(2) [インターネット放送]



iPadの「96.5 KOIT」アプリで聴けるかを試してみました。きちんと聴けるようです。

米国シリコンバレーにあるPalo Alto, CAに住んでいた頃(1991年5月から1993年4月までの2年間)、カーラジオでよく聞いていたFM放送局がKOITでした。当時は、車には、カーラジオかカセットテープのプレイヤーだけしかない頃でした。KOITを聞いていると、シリコンバレーの青空や、当時はそれほど混んでいなかったフリーウェイ260を思い出します。
コメント(0) 

再び聴けるようになったKOIT [インターネット放送]

再び日本で聴けなくなったKOIT(2)」では、聴けなくなったKOITが聴けるようになる場合があるというのことを書きました。その記事では、KOITのホームページへ行って、「Listen Live」ボタンを押しても、通常のPCのブラウザーからはだめで、iPadのブラウザーでは、PCとは別のURLヘ接続されて、聴けるということを書いています。

その後、そのiPadのブラウザーから接続されるURLも変更になったのですが、てっきりiPadなどのiOSからだけの接続先が変更になったという先入観を持っていました。つまり、普通のPCのブラウザーでKOITのトップページから「Listen Live」ボタンを押してもそのURLヘの接続は行われないと思い込んで、実際には試していませんでした。

今朝、試しにMac上のChromeブラウザーでKOITのホームページへ行って、「Listen Live」ボタンを押したら、iPadのブラウザーから接続されるURLと同じページに行って、普通に聴くことができました。iPadのKOITアプリから聴けるかは、まだ、試していません。

KOITのホームページは、こちらです。
コメント(0) 

学生気分の人(2) [プログラマー現役続行]

以前、荒井玲子さんの著書から引用した内容で「学生気分の人」という記事を書いています(まずは、読み返してみてください)。

その中で特に次の部分について、私なりの経験からの補足をします。
 一方、企業にとっては、社員は利益を生み出す人材です。したがって、社員に対する教育投資です。投資に対する利益が得られなければ、投資機会も存在しません。よって、自分がどこまでスキルアップするのか、というのは、自分で設定する必要があります。そのスキルがその企業にとって有益である場合、企業は少しは支援をしてくれる場合もあります。
「社員に対する教育は投資」であり、「利益が得られなければ、投資機会も存在しません」と述べられています。会社によっては、様々な教育制度を提供していたり、有償の教育を受けるための予算を準備していることもあります。つまり、それらも投資なのです。

しかし、エンジニアの中には、そのような教育は毎年受けられるとか、教育の予算をもっと増やすべきだと意見を述べるのですが、実際の開発業務では成果が上がっていない人がいます。つまり、学生気分で教育を受けているし、受けるのが当然の権利だと勘違いしているわけです。

私自身は、昔から、有益だと思えるカンファレンスなどは、業務扱いで行くように指示したりします(無料のカンファレンスならなおさらです)。業務扱いというのは、休みを取る必要もないし、交通費も支給するということです。しかし、1日分の給与と交通費という投資なのです。海外のカンファレンスならもっと多くの投資となります。

ある時、ある(無料)カンファレンスに参加したいので業務扱いで参加してもよいかと聞かれたことがあります。その時の私の回答は、「行きたいなら有給休暇を取って行ってください」でした。そしたら、「業務扱いで行ける基準は何ですか」と聞かれたので、「業務扱いで参加させるという投資に、その人が値するかという私の判断です。業務扱いの参加は、会社にとってあくまでも投資です」と答えました。

自分のスキル向上を会社に頼るべきではありません。荒井さんの言葉を借りれば「自分がどこまでスキルアップするのか、というのは、自分で設定する必要があります」。そして、スキルアップのための支援を会社がしてくれることを期待しないことです。
コメント(0) 
前の10件 | -