So-net無料ブログ作成

第5期Go研修が終了しました [golang]

リコーを退職後に、個人の活動として始めたリクルートテクノロジーズ社向けのGo研修(2017年11月〜2018年4月)が終了しました。私にとっては通算第5期となります。第5期は8名が修了し、第1期から合計で35名が修了したことになります。

第5期.png
修了生と私

リクルートテクノロジーズ社向けには、現在第6期を開催中であり、7月からは第7期(通常の半年コース)を予定しています。

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

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

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

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

今日が最終回でしたので、その簡単な振り返りの発表をしてもらいました。その中からの抜粋です。
  • プログラミング言語をしっかり学ぶということはどういうことなのかを学べた
  • 業務や1人で本を読むだけでは学べなかったであろう知識を得ることができた
  • とにかくコードを書いた6ヶ月だった
  • 楽しかった!知らないことがいっぱいあってそれを知ることができる機会があるのは最高!
  • 基礎から学ぶことで抜けていたことを知ることができた
  • Golangへの理解が深まった
  • goに限らず低レイヤーのことを学べた
  • goに関係ないアカデミックなことも学べた
研修では、スレッドとゴルーチンの違いや、スタックが伸長することのメリット、一般的なマルチスレッドプログラミングの難しさなど、Go言語と直接関係ない基礎的な事柄も必要に応じて説明しました。時間が余れば、『Java Puzzlers』をやったり、私のJaSST Tokyo 2018での講演内容を話したりしました。

修了証書はありませんが、テキストにサインして修了証書の代わりとしました。


スポンサーリンク





コメント(0) 

第6期Go言語研修を開講します [golang]

今日(2月16日)から、私にとっては通算第6期になるGo言語研修を、現在開講中の第5期と同じ企業様向けに開講します。第5期までとは異なり、第6期は少しゆっくりと行うコースです。

通常のコースは、月に1日で6回(6か月)実施して終了するコースです。第6期は、現場の若手のエンジニア向けではなく、マネージャ向けのコースです(若手のエンジニアも含まれています)。そのため、終日の研修を避けて、3時間だけの研修を12回(12か月)実施して終了する予定のコースです。

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

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

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

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

今回は初めての試みなので、一回あたりの予習範囲が基本的に一章単位になります。章ごとに練習問題の量と難易度がかなり異なるため、12回でうまくいくかはやってみないと分かりません。

初日の今日は、同じ企業で「『ベタープログラマ』輪読会」が夕方開催されるということで、それにも参加します。

ベタープログラマ ―優れたプログラマになるための38の考え方とテクニック

ベタープログラマ ―優れたプログラマになるための38の考え方とテクニック

  • 作者: Pete Goodliffe
  • 出版社/メーカー: オライリージャパン
  • 発売日: 2017/12/15
  • メディア: 単行本(ソフトカバー)



コメント(0) 

『Java Puzzlers』とGo言語(2) [golang]

Java Puzzlers 罠、落とし穴、コーナーケース

Java Puzzlers 罠、落とし穴、コーナーケース

  • 作者: ジョシュア・ブロック
  • 出版社/メーカー: ピアソン・エデュケーション
  • 発売日: 2005/11/14
  • メディア: 大型本
パズル3: 長除法(Long Division)

このパズルは、2 つのlong 値を割るプログラムに関することなので、LongDivision と呼ばれます。被除数は一日が何マイクロ秒であるかを表し、除数は一日が何ミリ秒であるかを表しています。このプログラムは、何を表示しますか?
public class LongDivision {
    public static void main(String[] args) {
        final long MICROS_PER_DAY = 24 * 60 * 60 * 1000 * 1000;
        final long MILLIS_PER_DAY = 24 * 60 * 60 * 1000;
        System.out.println(MICROS_PER_DAY / MILLIS_PER_DAY);
    }
}
このプログラムの実行結果は、5です。その理由は、Javaではint型(上記の数値リテラルはすべてint)から構成される式の演算結果の型はintなので、上記のMICROS_PER_DAYへの代入の右辺の式の計算結果はintに収まらずにオーバーフローが発生しているからです。その結果、小さな値となっており、実行結果が5なのです。

単純にGo言語で書いたコードは次のようになります(対比しやすいように、Go言語の命名規則には従っていません)。
package main

import "fmt"

func main() {
    var MICROS_PER_DAY int64 = 24 * 60 * 60 * 1000 * 1000
    var MILLIS_PER_DAY int64 = 24 * 60 * 60 * 1000
    fmt.Println(MICROS_PER_DAY / MILLIS_PER_DAY)
}
このコードの実行結果は、1000です。その理由は、右辺の式に書かれているものはすべて定数つまり「型付けなし整数」であるため、式の演算はコンパイル時に計算されます。そして、その計算結果の値も「型付けなし整数」なのです。

「型付けなし整数」の値は、型がある変数(上記の場合、int64MICROS_PER_DAY)への代入において、変数の型(int64)の取り得る値の範囲に収まれば、コンパイルされます。収まらなければ、コンパイルエラーです。

コメント(0) 

『Java Puzzlers』とGo言語(1) [golang]

先週の金曜日のGo言語研修が終わって、懇親会(会社の食堂)まで時間があったので、『Java Puzzlers』をやってみました。

Java Puzzlers 罠、落とし穴、コーナーケース

Java Puzzlers 罠、落とし穴、コーナーケース

  • 作者: ジョシュア・ブロック
  • 出版社/メーカー: ピアソン・エデュケーション
  • 発売日: 2005/11/14
  • メディア: 大型本

もう12年前の本で、現在は絶版となっています。発売された時に、日本でJavaOneが開催されていて、印刷されたばかりのこの本が販売された頃が懐かしいです。

ところで、Javaではパズルになるものが、Go言語ではそもそもコンパイルエラーになるものが多いです。その理由の一つは、異なる整数型の混合計算をGo言語が許さないことです。初めてGo言語に触れると、その点がちょっと煩わしく感じます。でも、パズルをGo言語で書くとどうなるかを知ると、言語の違いが分かってきて面白いです。
パズル2: 変革の時(Time for a Change)

次の文章問題を考えてみてください。
トムは、$1.10 するスパークプラグを購入するために自動車部品店に行きますが、財布の中にあるのは2 ドル紙幣ばかりです。2 ドル紙幣でスパークプラグの代金を支払ったとしたら、彼は、お釣りをいくら貰うでしょうか。

この文章問題を解こうとしているのが、次のプログラムです。このプログラムは、何を表示しますか?
public class Change {
    public static void main(String args[]) {
        System.out.println(2.00 - 1.10);
    }   
}
これを実行すると結果は、0.8999999999999999となります。その理由は、1.10を浮動小数点数では正確に表現できないからです。

Go言語で同じコードを書くと次のようになります。
package main

import "fmt"

func main() {
    fmt.Println(2.00 - 1.10)
}
そして、実行結果は、0.9です。なぜ、Go言語でこうなってしまうのでしょうか?

それは、2.001.10の扱いの違いです。Go言語では、それらは「型付けなし(untyped)浮動小数点数」です。そして、Printlnの引数の式は定数リテラルの演算なので、コンパイル時に定数として計算されます。この定数計算に関しては、Go言語では言語仕様ですべのGo言語の実装に対して、次のように高い精度を要求しています。

Represent floating-point constants, including the parts of a complex constant, with a mantissa of at least 256 bits and a signed binary exponent of at least 16 bits.
しかし、いくら高い精度でもっても、正確には表現できないはずです。そこで、言語仕様では次の条件が付加されています。
Round to the nearest representable constant if unable to represent a floating-point or complex constant due to limits on precision.
つまり、定数計算の結果は、表現可能な最も近い値の定数となるのです。

もちろん、定数ではないfloat64の変数に代入してから計算すると、0.9にはなりません。
package main

import "fmt"

func main() {
    var x, y float64 = 2.00, 1.10
    fmt.Println(x - y)
}
このコードの実行結果は、0.8999999999999999です。

型付けなし定数については、『プログラミング言語Go』の「3.6.2 型付けなし定数」(p.87)でも説明されていますが、上記の丸めについては書かれていません。

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

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

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


コメント(0) 

第5期Go言語研修を開講しました [golang]

11月24日(金)に、私にとっては通算第5期となるGo言語研修を某企業様向けに開講しました。受講生は、入社3年目までの若いソフトウェアエンジニアの11名で開講しました。

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

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

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

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

月に1日で、6か月で終了する研修コースです。事前にあらかじめ決まっているテキストの予習範囲に対して以下の予習を行ってもらいます。
  • テキストの内容に関して、疑問に思ったことや分からないことを、受講生で共有しているGoogle Drive上のGoogle Sheetに記入してもらいます。
  • 練習問題のプログラミングを行ってもらい、解答を各人のGithub上のリポジトリに入れる
予習は業務ではなく、プライベートの時間を使って行ってもらいますので、希望者だけが受講する研修です。

月に1日の業務扱いの研修は、9時30分から17時までです。研修では、質問表の質問に回答したり、質問に関連した基礎知識を説明したりします。そして、練習問題のプログラミングの解答の確認も行っていきます。研修終了後は、懇親会を行い、研修の内容も含めて、色々な話をします。

コメント(0) 

第5期Go研修を11月から開講します [golang]

2017年8月31日付けで株式会社リコーを退職し、9月からはソラミツ株式会社に勤務してソフトウェア開発に従事しています。しかし、勤務日は月曜日から木曜日までの週4日勤務の雇用契約を結んでいます。金曜日は契約上は休日です。

リコーグループで行っていたGo研修は9月22日(金)に第3期と第4期が終了しました。同様に、Java研修も9月8日(金)に第25期が終了しています。9月は社員ではないので、個人として有償で金曜日に実施したものです。

リコーの退職は、自己都合扱いといっても「セカンドキャリア制度」(ある種の早期退職制度)の適用を受けており、リコーグループの会社から私個人への業務委託は今後は認められないということになっています。今後3年間は、リコーグループに対して技術教育を行うことはありません。

11月下旬から私にとっては通算で第5期となるGo言語研修を某企業で実施します。その企業では第1期となります。

コメント(0) 

第3・4期Go研修が終了しました [golang]

2017年4月に開講した第3期および第4期のGo言語研修が9月22日に終了しました(Go言語研修実績)。第3期は9名、第4期は4名が修了しました。これで、27名が修了したことになります。

第3・4期Go研修.jpg
修了生と私(3名欠席)。

先週終了した第25期Java研修も含めて、株式会社リコーの社員として実施していたすべての言語研修が終了となりました。

今までJava研修やGo研修は、社内研修という位置付けで実施してきました。そのため、在籍していた時期ごとに、富士ゼロックスグループ(富士フィルムグループ)やリコーグループの社員が対象でした。今後は、教育を希望される企業に対して実施していく予定です。

コメント(0) 

Go言語研修実績 [golang]

今までの実績、現在開催中、今後開催予定をまとめておくためのページです。

【プログラミング言語Go基本技術習得コース ― リコー(株)勤務 ―】
開始月 終了月 修了人数 備考
1 2016年2月 2016年10月 9名 社内向け。前半は翻訳原稿を使用
2 2016年7月 2017年2月 5名 社内向け
3 2017年4月 2017年9月 9名 社内向け
4 2017年4月 2017年9月 4名 リコーITソリューションズ社向け

【Go言語研修コース ― 個人活動 ―】
開始月 終了月 修了人数 備考
5 2017年11月 2018年4月 リクルートテクノロジーズ社
6 2018年2月 開講中 リクルートテクノロジーズ社 技術マネージャ向け。一回3時間の一年コース
7 2018年7月 開講予定 リクルートテクノロジーズ社

【研修内容】

研修では、『プログラミング言語Go』を事前に読んで、質問をまとめてもらうと同時に練習問題を解いてもらいます。この予習は基本的に私的時間に行ってもらいます。月に1日だけの業務中の研修では、質問への回答やディスカッション、および練習問題の解答の確認を行います。
※ 予習がすべて私的時間なので、研修の受講は「希望者」だけです。

リコー勤務時の研修コースのタイトルは、「プログラミング言語Go基本技術習得コース」となっていました。これは初心者向けという意味ではなく、Go言語でプログラミングするのであれば最低限学んでおくべきことを学ぶという意味でした。

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

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

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


現在は、個人として研修を実施しています。研修を希望される企業があれば、お知らせください。

第2期Go言語研修が終了しました [golang]

2016年7月に開講した第2期Go言語研修が終了しました。

第2期Go研修.png
修了生と私

第2期は5名が修了しました(1名が最終回を欠席)。第1期も入れると合計で14名が修了したことになります。

研修では、『プログラミング言語Go』を事前に読んで、質問をまとめてもらうと同時に練習問題を解いてもらいます。この予習は基本的に私的時間に行ってもらいます。月に1日だけの業務中の研修では、質問への回答やディスカッション、および練習問題の解答の確認を行います。
※ 予習がすべて私的時間なので、研修の受講は「希望者」だけです。

4月からは第3期を開講予定です。第3期からは過去の実績を踏まえて、6回(半年)で終わる研修コースに変更します。

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

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

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


第1期Go言語研修が終了しました [golang]

今年の2月から開講した第1期Go研修が終了しました。

IMG_0468.jpg
修了生と私

研修は一月に1日で、全部で8回で終了です。7回を通して、テキストの学習と練習問題を全部解いてもらい、今日の8回目は成果発表会でした。テキストは、『プログラミング言語Go』です。

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

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

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