Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Gopher道場#3を振り返る

Daichi Hioki
September 18, 2018

 Gopher道場#3を振り返る

Daichi Hioki

September 18, 2018
Tweet

More Decks by Daichi Hioki

Other Decks in Technology

Transcript

  1. - 最大週4リモート - 私は基本週4 - モダンな開発スタイル - GitHub, Slack, PivotalTracker,

    esa, 2 人以上のレビュー体制 - 使用している言語やバージョン - Ruby on Rails + Vue.js (基本的に最新バージョン ) - 対応ブラウザは Google Chrome 最新版のみ クリニカル・プラットフォーム株式会社 https://clinical-platform.com/ エンジニア募集してます〜
  2. 参加の動機 ~Gopher道場になぜ参加しようと思ったか?~ - 現在仕事で使っている Ruby はというと・・ - 界隈の高齢化を感じるような・・ - Go

    は若いイメージ - Ruby の懇親会で若い Gopher を見かけた - 「Go で API サーバーとか書いてますよー」といっていた
  3. 選考課題 7/27 - 8/4 - 当時の自分の Go 歴 - vim-go

    チュートリアル をやった - ※ Vim のプラグイン vim-go のチュートリアル - A Tour of Go がバズった時にちょっとやったような・・うっすらとした記憶・・
  4. 第1回の講義 8/6 ~Goに触れる/基本構文/型と関数/コマンドラインツール ~ - 翌日からは @shuntaka9576 さんのコードを味わう日々 - 日記

    - 『8/8 shuntaka9576さんのコードをもとにいちから書いてみてるけれど変 数を使い回すのだったり、for 文で index でたどっていったり、読み込ん だ分だけ引いていくところだったり、脳のワーキングメモリーを多く使うの ですごく疲れる。go は疲れる。でも面白い。試すたびに発見があるスルメ のようなコード。』 - 『8/8 shuntakaさんのリポジトリ、Makefileがある。初めてちゃんと見た 気がする。こうやって書くのか。テストコードもすごく参考になる。』
  5. 第1回の宿題 8/6-8/20 ~画像変換コマンドを作ろう~ - いざ着手し始めると・・ - ImageMagick が不要なの不思議 - Ruby

    の `File.exist?(path) -> bool` が Go にはない !? - REPL 欲しいな・・ - ※ 現在では gore を便利に使ってます
  6. 第1回の宿題 8/6-8/20 ~画像変換コマンドを作ろう~ - 一応できた・・が、もうひと工夫 - GIF 対応 - ファイル名が重複した時に上書きする

    -f オプション - 冗長なログ出力をする -v オプション - ファイルの内容が期待するフォーマットかどうかのチェック - JPEG だったらファイルの内容が FF D8 FF で始まるかなど - ※ 後になって同様のチェックが標準パッケージ側でされていることが 判明 - https://github.com/gopherdojo/dojo3/pull/20#discussion_r21 4764456
  7. 第1回の宿題 8/6-8/20 ~画像変換コマンドを作ろう~ - いざ提出 (8/14)・・が・・ - osamingo さんから以下のアドバイスが -

    『自力で作る => セルフレビュー => 昔の道場生の作品をみる => 書き直 す をすると、PDCA が回るはず。』
  8. 第1回の宿題 8/6-8/20 ~画像変換コマンドを作ろう~ - さっそく昔の道場生の作品を全部見てみた - https://github.com/gopherdojo/dojo3/pull/1#issuecomment-413155710 - この日の日記 -

    『8/15 過去の道場生の作品から学ぶことが多すぎ』 - JPEG だったらファイルの内容が FF D8 FF で始まるかなどのチェック、昔の 道場生の @onoyama-git さんも同じことやっていて親近感を感じるなど
  9. 第1回の宿題 8/6-8/20 ~画像変換コマンドを作ろう~ - そこからコミットを 52 個積み・・・再提出 (8/19) !! -

    ついでに昔の道場生 @int128 さんが実装していた画像変換時の品質等のオ プションも実装してみたり・・ - JPEG: Quality - GIF: NumColors - PNG: CompressionLevel
  10. 第1回の宿題 8/6-8/20 ~画像変換コマンドを作ろう~ - この日の日記 (※ エモ注意。会場限定コンテンツ) - 「8/20 tenntenn

    さんに GOOD ラベルを頂けて感無量。しばらく尊すぎて説 明が頭に入ってこなかった。godoc も README も PR 本文もちゃんと書い たのが功を奏したと思われる。**これ以降は公開時に削除されました**」
  11. 第2回の宿題 8/20-9/3 ~第1回の宿題のテスト~ - 日記 - 『8/23 テストカバレッジが 72 %

    までいった。正常系は一通りやった気がする。 異常系をどうするかだな。』
  12. 第2回の宿題 8/20-9/3 ~第1回の宿題のテスト~ - 日記 (その2日後) - 『8/25 テストカバレッジが 90

    % 超えた。codecov が落ちてたから `$ make cov` でローカルに吐けるようにしたけど便利で最初からこれで確認すりゃよ かった。』
  13. 第2回の宿題 8/20-9/3 ~第1回の宿題のテスト~ - 日記 (さらに翌日) - 『8/27 カバレッジ 100

    % 達成 !!!』 - ※ main.go のテストを書いていなかった実は 100 % ではなかった
  14. 第2回の宿題 8/20-9/3 ~io.Reader と io.Writer~ - アプローチの仕方が難しかった - ファイル名が reader.go

    や writer.go で、かつ、Read や Write の実装を持つ ファイルを片っ端から読んでいくというアプローチをとった
  15. 第2回の宿題 8/20-9/3 ~io.Reader と io.Writer~ - iotest package が便利そうなことを知った -

    主にテストに役立つ Reader や Writer を提供しているパッケージ - 例えば TimeoutReader ( src/testing/iotest/reader.go#L73-L88 ) は 2 回目 の Read でタイムアウトエラーを返すような Reader になっている - (どこかで聞いたような・・)
  16. 第3回の講義 (9/3) ~ゴルーチンとチャネル ~ - 日記 (※ エモ注意。会場限定コンテンツ) - 『9/3

    3回目が終わった。やはりてんてんさんは尊かった。とてもありがたい時 間。何かに向かって複数人で真剣に学ぶ経験は実は初めてかもしれない。そ ういえば**これ以降は公開時に削除されました**』
  17. 第3回の宿題 (9/3-9/10) ~タイピングゲームと分割ダウンローダー ~ - タイプする単語のソースはどうしよう? - 最近スプラトゥーンしてない・・ - 道場通い中はスプラトゥーンをしないという掟

    - かといって溜まったスプラ欲を発散しないのは不健康・・ - タイプする単語のソースをスプラ関連にすることで昇華しよう - ソースをスプラトゥーンに出てくるブキ名に !!
  18. 第3回の宿題 (9/3-9/10) ~タイピングゲームと分割ダウンローダー ~ - 1 文字ごとにヒット判定したかったが・・断念 !! - ScanLines

    なので Enter を入力するまでヒット判定ができない - https://github.com/pkg/term を使えば実現できそうなことはわかったが・・ - 実際にやってみると入力は一見上手く動いているように見えるが、表示が 少しずつズレれていく・・
  19. 第4回の宿題 9/10-9/18 ~おみくじAPIを作ってみよう~ - 工夫点 (2) - name が 33

    文字以上の時にバリデーションエラーになるようにした - ステータスコード: 400
  20. 以上、振り返りでした !! ありがとうございました !! - メルペイさま、複数回に渡って会場のご提供ありがとうご ざいました。 - 講師の皆さま、本当に貴重で素晴らしいお時間をありがと うございました。

    - 道場生の皆さま、一緒に課題に取り組んでくださり、また、 Slack を盛り上げてくださり、ありがとうございました。 - 特に @shuntaka9576 さんは毎回の帰り道でお話 して楽しかったです。ありがとうございました。 - 昔の道場生の皆さま、コードたくさん参考にさせていただ きました。ありがとうございました。 - 課題1: 画像変換コマンドを作ろう - https://github.com/gopherdojo/dojo3/pull/1 - 課題2: 課題1のテスト・io.Reader と io.Writer - https://github.com/gopherdojo/dojo3/pull/20 - 課題3-1: タイピングゲーム - https://github.com/gopherdojo/dojo3/pull/42 - 課題3-2: 分割ダウンローダ - https://github.com/gopherdojo/dojo3/pull/50 - 課題4: おみくじAPIを作ってみよう - https://github.com/gopherdojo/dojo3/pull/65