SSブログ

2019年の技術研修 [プログラマー現役続行]

複業として行っている技術研修ですが、今年コースが終了したのは以下の通りです。

Go言語研修

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

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

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

リクルートテクノロジーズ社だけでしか実施してきていませんが、すでに30名以上が修了されています。書籍『プログラミング言語Go』の内容を理解するだけでなく、すべての練習問題に取り組むため、かなりきつい研修となっています。

研修では、質問表に記入された質問に答えた後、練習問題の解答を確認するという形式です。練習問題は130問以上ありますので、予習にはかなりの時間を必要とします。

『Effective Java 第3版』研修

Effective Java 第3版

Effective Java 第3版

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

『Effective Java 第3版』研修は複数の企業で実施させてもらったのですが、受講生のJavaでの経験と知識レベルによって、進め方はそれぞれ異なっています。予習としては、毎回指定された範囲のテキストを読んで不明点を事前に質問表に記入しておいてもらいます。

この研修に関しては、どの程度質問するかに関して、次のように分かれます。
  1. 全く質問を記入しない人
  2. 多少は、質問を記入する人
  3. かなりの数の質問を記入している人
内容がそもそも難しいので、ある程度Javaの経験や知識があっても、きちんと理解できていないことが多いはずなのですが、1.か2.の人が多いです。1.か2.の人に対して他の人の質問を聞いてみても、答えられない場合が多いです。

3.の人は、Javaの経験が少ない人なのですが、テキストをきちんと読み込んで理解できない部分を質問してくれるため、「良い質問」が多いです。

プログラミング言語Java基本技術習得コース

『Effective Java 第3版』研修で痛感するのは、テキストを理解するためのJavaの知識が不足している人が多いことです。そのため、一年半を要しますが、私にとって通算第26期の「プログラミング言語Java基本技術習得コース」を9月から開講しました。予習がかなりきつく、期間も一年半なので、受講生が集まりやすいリコーグループで実施しています。

Go言語研修も予習がかなり大変なのですが、予習が大変な研修は、その企業内で「きつい研修である」という評判が定着しているにもかかわらず多くの修了生がいる場合、受講生が集まりやすいです。第26期も現在は14名が受講しています。
コメント(0) 

2019年の講演 [プログラマー現役続行]

今年は、三つのカンファレンスで話しました。
  • 「私が取り組んだレガシーコード改善」
    6月1日(土)Legacy Code Meetup Kagoshima 2019(鹿児島)
  • 「私が経験したソフトウェアテスト 〜 ワークステーション、組み込みシステム、ウェブサービス 〜」
    10月4日(金)JaSST '19 Tokai
  • 「マイクロサービスの開発とテストファースト/テスト駆動開発」
    12月14日(土):GDG DevFest Tokyo 2019
鹿児島は、私のJava研修の修了生が主催のメンバーの一人でしたので、声をかけてもらいました。

JaSST'19 Tokaiは、JaSST'16 Niigata、JaSST'18 Tokyoに続いてJaSSTでの三回目の講演でした。JaSSTでの三回の講演には、三回とも富士ゼロックスの秋山浩一さんが(JaSST'19 Tokaiでは日帰りで)聞きに来てくれました。

GDG DevFestは「メルペイEngineering Office」の@kikoさんを通して講演の打診があったものです。DevFest Tokyoのように技術を中心とした大きなカンファレンスで話すのは初めてでした。最新の何らかの技術動向について話ができる訳でもないので、メルペイで私自身が日々行っているテストファースト開発を中心に話しました。

幸い、GDG DevFestへの参加者アンケートで、「一番良かった・役に立ったセッション・ハンズオン・コードラボはどれですか?」という質問では、基調講演に次いで、私のセッションが2番目でした。

2020年も機会があれば、いろいろな場所(特に訪れたことがない土地)で話したいと思っています。
コメント(0) 

メルペイで一年間プログラミングしました [プログラマー現役続行]

2018年6月にメルペイで働き始めて、今年は2年目でした。ちょうど一年7か月働いたことになります。今年一年間は、Backendのマイクロサービスの開発で、ずっとGo言語とVimでプログラミングしていました。昨年は、5月は全く仕事をせずに休みだったのと、メルペイに入社してしばらくはAPI仕様ばかり書いていたので、振り返ってみると最後に一年間プログラミングした年は2008年だと思います。

リコーに勤務していた8年間(2009年9月〜2017年8月)では、現場のソフトウェアをレビューすることはあっても、自分でプログラミングすることはほとんどありませんでした。

一年間プログラミングし続けたと言っても、月曜日から木曜日までなので、40代の頃と比べると時間的には少なかったです。また、40代に行っていた複雑なマルチスレッドプログラミングと比べるとそれほど複雑なプログラミングは行っていないです。

基本的に一年間、テストファースト開発で担当する機能を開発し続けました。たとえ、開発するソフトウェアが複雑でなくても、自分自身で機能を作り終えたことを確信するためには、私自身はテストファースト開発しかないと思っているからです。

この一年間で一番苦労したデバッグは、自分で作成したPubSubのFakeサーバを使って書いた(担当しているマイクロサービスの新機能の)テストコードと実装が期待通りに動作せずに、3日間(12月24日〜12月26日)を費やして原因調査したものです(調査した結果として発行したgoogle-cloud-goのissueはこちら)。幸い、原因が分かり対策(回避策)もできたので、安心して年を越えられます。

2020年も、一年間プログラミングを続けていきたいと思っています。
コメント(0) 

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

スクリーンショット 2019-12-23 3.38.15.png
総閲覧数が800万を超えました。700万から800万は約11か月でした
コメント(1) 

ソフトウェアエンジニアとして転機(5) [ソフトウェアエンジニアとして転機]

Xerox PARC(パロアルト研究所)

1991年4月にPARC(Palo Alto Research Center)で働き始めるに先立って、その前にアパートを探すために一度Palo Altoを訪れました。アパートは、スタンフォード大学の敷地に面した通りを挟んだOak Creek Apartmentsに南向きの2ベッドルームを見つけることができました。スタンフォードショッピングセンターも近くよいところで、2年間を過ごしました。

PARCで従事したプロジェクトはPageMillプロジェクトと呼ばれていました。LAからの引っ越しでは、荷物は業者に任せたのですが、LAからPalo Altoまでの約400マイルを妻と二人で車を運転して移動してホテルにチェックインしました。アパートへ入るのではなく、翌日妻を伴って日本へ帰国しました。PageMillプロジェクトに関して米国ゼロックスと富士ゼロックスでの会議へ出席するためでした。

PageMillプロジェクト

プロジェクトのリーダーはZ Smithでした。私と同じぐらいの歳で、彼の部屋の隣に私の部屋が割り当てられました。研究所なのでプロジェクトメンバーは博士ばかりで、彼らの優秀さは半端なかったです。その中で、なんとかプロジェクトのメンバーとして認められるのに必死でした。私の役割は、彼らのアイデアを実際にソフトウェアで実現して検証することでした。
※ ファーストネームであるZは、略したのではなく、本当に一文字のZです。

仕事以外でPARCで印象深かったことがいくつかあります。
  • 研究所内にフィットネスルームがある。
  • カフェテリアで昼食を購入して、会議室でランチミーティングをすることが多かったのですが、昼食のトレイや食器を会議室の近くの休憩コーナーに返却するだけでよかったです。
  • 毎週木曜日の16時からPARC Forumが開催されて、外部からスピーカーを呼んで社外からの参加がよい場合もあれば、Xerox内に閉じた話題で社外からは参加できないものとありました。PageMillプロジェクトも一度ForumでZ Smithが話をして、私はデモ係でした。
  • カフェテリアでの昼食が2時間ぐらいになることも多かったです。11時30分頃に昼食を食べ始めるのですが、食べ終えても色々な人が加わってくるので、食事を終えてからずっと話すことが多く、結果として2時間が経過していることも多かったです。
  • スーツを着た日本人のグループが、富士ゼロックスの営業に連れられて、PARCを見学していることがよくありました。
PageMillプロジェクトは、PC用のソフトウェアとして「PaperWorks」も出したのですが、その成果をデジタル複合機に搭載するために、1993年5月に米国駐在を終えて日本に帰国しました。結局、PARCでの2年間で、富士ゼロックスから駐在したのは私一人でした。これで、私の1回目の米国駐在である4年半が終わりました。32歳でした。

4年半の間に、二つのプロジェクトに従事し、多くの優秀なソフトウェアエンジニアや研究者と仕事して、どちらもカリフォルニアですが2か所(Rancho Palos VerdesとPalo Alto)に住むことができました。一方で、昭和が終わり、ベルリンの壁崩壊サンフランシスコの大地震湾岸戦争ロサンゼルスの大暴動があったのもこの4年半でした。
コメント(0) 

GDG DevFest Tokyo 2019に参加しました [プログラマー現役続行]

東京電機通信大学で開催された「GDG DevFest Tokyo 2019」にスピーカーとして参加しました。ソフトウェアテストのシンポジウムであるJaSSTを除くと、大きなソフトウェア技術系のカンファレンスとしては初めて登壇しました。

DevFest2019.png


カンファレンスの説明としては次のように書かれています。
DevFest は、Google Developer Group (GDG) コミュニティによって世界各地で開かれるデベロッパー向けイベントです。東京では、Android、Google Cloud Platform(GCP)、Web、Firebase、Machine Learning (ML)、Assistant、Flutter、Goといった様々な技術の最新情報や現場でのノウハウを一日で学べるコミュニティイベントとして開催しています。
残念ながら何らかの技術の最新情報として話すものがなかったので、「現場でのノウハウ」ではないですが、メルペイで私がどのようにマイクロサービスを開発しているかを話しました。

話としては大きく次の3部です(スライドは、こちらです。)。
  • テスト駆動開発の登場は2000年前後
  • 私自身のテスト駆動開発の経験
  • メルペイで、私がマイクロサービスをどのようにテストファーストで開発してきたか
私のセッションはB101教室(150名)だったのですが、満席で立ち見の人も多くおられました。そのため、TwitterのTLを見るとセッションを聞けなかった人もおられたようです。

セッション後は、会場の「Ask the Speaker」コーナーで4〜5名の方が質問に来られました。
コメント(0) 

ソフトウェアエンジニアとして転機(4) [ソフトウェアエンジニアとして転機]

米国ゼロックス社に駐在

米国に駐在してソフトウェア開発をするようにと、1988年の夏前ぐらいに言われました。それまでゼロックス社固有のハードウェア上で動作していたStarワークステーションのソフトウェアをSunワークステーション上のSunOSへ移植するSalientと呼ばれたプロジェクトでした。正確な人数は覚えていませんが、当時の富士ゼロックスから私と同期や先輩達の20名以上が米国のEl Segundo, CAおよびSunnyvale, CAへ駐在員として送り出されました。

米国へ赴任したのが1988年11月で29歳でした。そして、私にとっては生まれて初めて日本を出たときであり、多くの不安を抱えながらの赴任でした。

赴任前の送別会で、今は亡くなられた先輩のS.U.さんが「米国では与えられた仕事をやり遂げたら、次に難しい仕事が割り当てられるけど、仕事ができないと判断された、日本と違って仕事が割り当てられなくなる」といった趣旨のことを言われて、そうかなと思ったのですが、実際の米国ゼロックス社でのソフトウェア開発はそうでした。

2年半弱、El Segundo, CAでSalientプロジェクトに従事して感じたことは次の通りです。
  • 歳を取ってもソフトウェア開発は続けられる
  • プロジェクトに面白さが失われていくと、優秀な人は転職していく

William Maybury

私が所属したVP Document Editorチームには、William Mayburyという年配のソフトウェアエンジニアがいました(でも、おそらく今の私よりも若かったと思います)。当時の日本では、彼と同じ年齢の人がソフトウェアを開発し続けているというのは全く想像できなかったので、私にとっては衝撃でした。
私事ですが、「さらなる学習」に掲載されている「Mesa Language Manual」の著者の1人であるWilliam Mayburyの名前を見ると、彼と一緒に仕事をした2年半の米国El Segundo, CA時代が懐かしく思い出されます。彼は、私よりもかなり年上でしたが、驚いたことにマネジャーではなく、現役のソフトウェアエンジニアとして働き続けていました。本書が生涯ソフトウェアエンジニアを目指して、常に新たな技術を学び続けている人々に読まれれば幸いです。

『プログラミング言語Java 第4版』の「訳者まえがき」より
そして、米国に赴任してから31年の月日が流れて、私自身が今でも日々ソフトウェア開発をしているのは、彼の影響が大きかったのかもしれません。

優秀な人は転職していく

Salientプロジェクトは、Mesa言語で書かれたStarワークステーションの膨大なソフトウェアを移植するプロジェクトでした。しかし、プロジェクトの終盤になってくると優秀な人からゼロックスを辞めていきました。プロジェクト次第で、優秀は人は会社を変わっていくことを実感したのはこの頃です。当時、うらやましく思った転職先は、PenPointを開発していたサンフランシスコにあったGO Corporation社でした。残念ながらPenPointは時代的に早すぎ、製品を出さずに7年間後にGO社は解散しました。

追記

El Segundo, CAでのSalientプロジェクトも終わりが近づき、日本への帰国がそろそろだと思ったので、1990年12月にはリオデジャネイロとブエノスアイレスへ旅行しました。しかし、1991年になると多くの駐在員が帰国するなか、PARC(ゼロックス社のパロアルト研究所)に駐在することになりました。PARCへ転勤する前にPARCで従事するプロジェクトの説明を聞くために初めてPARCへ行った日は、1991年1月17日でした。その日は、米国がイラクを空爆して湾岸戦争が始まった日でした。

コメント(0)