Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Gopher道場#3を振り返る
Search
Daichi Hioki
September 18, 2018
Technology
2.6k
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Gopher道場#3を振り返る
https://mercari.connpass.com/event/101178/
の発表資料です。
Daichi Hioki
September 18, 2018
More Decks by Daichi Hioki
See All by Daichi Hioki
Rustで学ぶTOTP
hioki_daichi
0
1.3k
仕事でGoで書いたWindows向けの小さなアプリをAppVeyorを使ってCIした話
hioki_daichi
0
270
Rubyエンジニア多めの現場での Vue.js1系 on Rails
hioki_daichi
5
1.3k
Other Decks in Technology
See All in Technology
バイブコーディング時代のWebアプリ開発入門~Cloud Runで学ぶセキュアなビルドとデプロイ
waiwai2111
1
140
LTのテーマ どうきめてる?〜5つの型と私のやり方〜
yama3133
1
110
データ_AIの事業の勝敗をわけるもの
nek0128
1
450
AIによるクリエイティブ生成を行う上での試行錯誤
plaidtech
PRO
0
160
OpenTelemetry eBPF Instrumentationの舞台裏 / Behind the Scenes of OpenTelemetry eBPF Instrumentation
ymotongpoo
4
1.3k
CLIライブラリ開発を支える技術
htnabe
0
130
銀行勘定系システムにおける開発プロセス刷新×AIによる環境モダナイゼーション / Development Process Transformation and AI-Driven Environment Modernization
muit
1
2.3k
新機種発売前に見直そう!端末移行で再ログインが要るアプリ・要らないアプリは何が違うのか 〜シームレスに再開できる設計と実装〜
zozotech
PRO
0
210
30座EKS, 180次升級淬煉的EKS Upgrade Skill 的歷程
eric8230
0
170
技術的負債から考える、AI時代のエンジニアリング投資 — ビズリーチの技術的負債と向き合った経験から、変更し続けられるソフトウェアを考える/ technical-debt-con2026
visional_engineering_and_design
4
3.2k
GoのInterface内部構造から学ぶ!最高パフォーマンスを出すコード設計
yappli_developers
0
150
アプリをもっと"iOSアプリっぽく"する小さな工夫 / Small Touches That Make Your App Feel More Like an iOS App
matsuji
2
950
Featured
See All Featured
Un-Boring Meetings
codingconduct
0
420
Bash Introduction
62gerente
615
220k
The agentic SEO stack - context over prompts
schlessera
0
940
Prompt Engineering for Job Search
mfonobong
0
450
Making the Leap to Tech Lead
cromwellryan
135
10k
The innovator’s Mindset - Leading Through an Era of Exponential Change - McGill University 2025
jdejongh
PRO
1
340
Hiding What from Whom? A Critical Review of the History of Programming languages for Music
tomoyanonymous
3
1.2k
Beyond borders and beyond the search box: How to win the global "messy middle" with AI-driven SEO
davidcarrasco
3
240
HDC tutorial
michielstock
2
870
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
508
140k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
37
6.6k
Build your cross-platform service in a week with App Engine
jlugia
234
19k
Transcript
Gopher道場#3を振り返る @hioki-daichi
自己紹介 兼 宣伝
- 最大週4リモート - 私は基本週4 - モダンな開発スタイル - GitHub, Slack, PivotalTracker,
esa, 2 人以上のレビュー体制 - 使用している言語やバージョン - Ruby on Rails + Vue.js (基本的に最新バージョン ) - 対応ブラウザは Google Chrome 最新版のみ クリニカル・プラットフォーム株式会社 https://clinical-platform.com/ エンジニア募集してます〜
本編
参加の動機を振り返る
参加の動機 ~Gopher道場になぜ参加しようと思ったか?~ - 好きなのは Haskell のような関数型言語だけれど・・ - 学習コストが高くて流行らない・・
参加の動機 ~Gopher道場になぜ参加しようと思ったか?~ - 現在仕事で使っている Ruby はというと・・ - 界隈の高齢化を感じるような・・ - Go
は若いイメージ - Ruby の懇親会で若い Gopher を見かけた - 「Go で API サーバーとか書いてますよー」といっていた
参加の動機 ~Gopher道場になぜ参加しようと思ったか?~ そんな時に「Gopher道場#3」の選考で Go の課題が存在することを知る
参加の動機 ~Gopher道場になぜ参加しようと思ったか?~ 『え !? Go 書いたらメルカリのエンジニアが見てくれるの !?』 『これをモチベーションにして Go 入門しよ
!!』
選考課題を振り返る
選考課題 7/27 - 8/4 - 当時の自分の Go 歴 - vim-go
チュートリアル をやった - ※ Vim のプラグイン vim-go のチュートリアル - A Tour of Go がバズった時にちょっとやったような・・うっすらとした記憶・・
選考課題 7/27 - 8/4 - 実装方法は・・ **ネタバレになるため公開時に削除されました**
選考課題 7/27 - 8/4 - これではまずそうなので追加で・・ **ネタバレになるため公開時に削除されました**
第1回を振り返る
第1回の講義 8/6 ~Goに触れる/基本構文/型と関数/コマンドラインツール ~ - 帰りに、道場生との間で選考課題の実装の話になった - @shuntaka9576 さんのコードを見せてもらった **ネタバレになるため公開時に削除されました**
第1回の講義 8/6 ~Goに触れる/基本構文/型と関数/コマンドラインツール ~ - 翌日からは @shuntaka9576 さんのコードを味わう日々 - 日記
- 『8/8 shuntaka9576さんのコードをもとにいちから書いてみてるけれど変 数を使い回すのだったり、for 文で index でたどっていったり、読み込ん だ分だけ引いていくところだったり、脳のワーキングメモリーを多く使うの ですごく疲れる。go は疲れる。でも面白い。試すたびに発見があるスルメ のようなコード。』 - 『8/8 shuntakaさんのリポジトリ、Makefileがある。初めてちゃんと見た 気がする。こうやって書くのか。テストコードもすごく参考になる。』
第1回の宿題 ~画像変換コマンドを作ろう~
第1回の宿題 8/6-8/20 ~画像変換コマンドを作ろう~ - いざ着手し始めると・・ - ImageMagick が不要なの不思議 - Ruby
の `File.exist?(path) -> bool` が Go にはない !? - REPL 欲しいな・・ - ※ 現在では gore を便利に使ってます
第1回の宿題 8/6-8/20 ~画像変換コマンドを作ろう~ - 一応できた・・が、もうひと工夫 - GIF 対応 - ファイル名が重複した時に上書きする
-f オプション - 冗長なログ出力をする -v オプション - ファイルの内容が期待するフォーマットかどうかのチェック - JPEG だったらファイルの内容が FF D8 FF で始まるかなど - ※ 後になって同様のチェックが標準パッケージ側でされていることが 判明 - https://github.com/gopherdojo/dojo3/pull/20#discussion_r21 4764456
第1回の宿題 8/6-8/20 ~画像変換コマンドを作ろう~ - いざ提出 (8/14)・・が・・ - osamingo さんから以下のアドバイスが -
『自力で作る => セルフレビュー => 昔の道場生の作品をみる => 書き直 す をすると、PDCA が回るはず。』
第1回の宿題 8/6-8/20 ~画像変換コマンドを作ろう~ - さっそく昔の道場生の作品を全部見てみた - https://github.com/gopherdojo/dojo3/pull/1#issuecomment-413155710 - この日の日記 -
『8/15 過去の道場生の作品から学ぶことが多すぎ』 - JPEG だったらファイルの内容が FF D8 FF で始まるかなどのチェック、昔の 道場生の @onoyama-git さんも同じことやっていて親近感を感じるなど
第1回の宿題 8/6-8/20 ~画像変換コマンドを作ろう~ - そこからコミットを 52 個積み・・・再提出 (8/19) !! -
ついでに昔の道場生 @int128 さんが実装していた画像変換時の品質等のオ プションも実装してみたり・・ - JPEG: Quality - GIF: NumColors - PNG: CompressionLevel
第1回の宿題 8/6-8/20 ~画像変換コマンドを作ろう~ - PR 提出したところ・・ - tenntenn さんから GOOD
ラベルを頂く
第1回の宿題 8/6-8/20 ~画像変換コマンドを作ろう~ - この日の日記 (※ エモ注意。会場限定コンテンツ) - 「8/20 tenntenn
さんに GOOD ラベルを頂けて感無量。しばらく尊すぎて説 明が頭に入ってこなかった。godoc も README も PR 本文もちゃんと書い たのが功を奏したと思われる。**これ以降は公開時に削除されました**」
第1回の宿題 8/6-8/20 ~画像変換コマンドを作ろう~ - その後、レビュー指摘事項を修正 (+20 コミット) - 合計: 89
コミット (+631 -0)
第2回を振り返る
第2回の講義 8/20 ~パッケージ/抽象化とエラー処理/テストとテスタビリティ ~ - 日記 - 『8/20 しかしこのクウォリティーを無料で4回も添削付きでやってくれるの、 ちょっと改めて太っ腹すぎる。』
第2回の宿題 ~第1回の宿題のテスト~
第2回の宿題 8/20-9/3 ~第1回の宿題のテスト~ - 日記 - 『8/23 テストカバレッジが 72 %
までいった。正常系は一通りやった気がする。 異常系をどうするかだな。』
第2回の宿題 8/20-9/3 ~第1回の宿題のテスト~ - 日記 (その2日後) - 『8/25 テストカバレッジが 90
% 超えた。codecov が落ちてたから `$ make cov` でローカルに吐けるようにしたけど便利で最初からこれで確認すりゃよ かった。』
None
第2回の宿題 8/20-9/3 ~第1回の宿題のテスト~ - 日記 (その夜) - 『8/25 カバレッジ 96.86%
までいったけれどもう無理そう・・』
第2回の宿題 8/20-9/3 ~第1回の宿題のテスト~ - 日記 (翌日) - 『8/26 カバレッジ 98%までいった..!光が見えてきた!』
第2回の宿題 8/20-9/3 ~第1回の宿題のテスト~ - 日記 (さらに翌日) - 『8/27 カバレッジ 100
% 達成 !!!』 - ※ main.go のテストを書いていなかった実は 100 % ではなかった
指定した回数だけ Seek を成功させるような Mock を作ったのが山場 ← 2 回目の Seek ←
1 回目の Seek
第2回の宿題 ~io.Reader と io.Writer が標準パッケージでどのように使われているか調べる~
第2回の宿題 8/20-9/3 ~io.Reader と io.Writer~ - アプローチの仕方が難しかった - ファイル名が reader.go
や writer.go で、かつ、Read や Write の実装を持つ ファイルを片っ端から読んでいくというアプローチをとった
第2回の宿題 8/20-9/3 ~io.Reader と io.Writer~ - 読むだけだと理解が怪しいためさらに片っ端からサンプルコー ドを書くなど・・ - kadai2/hioki-daichi-sandbox/main.go
第2回の宿題 8/20-9/3 ~io.Reader と io.Writer~ - iotest package が便利そうなことを知った -
主にテストに役立つ Reader や Writer を提供しているパッケージ - 例えば TimeoutReader ( src/testing/iotest/reader.go#L73-L88 ) は 2 回目 の Read でタイムアウトエラーを返すような Reader になっている - (どこかで聞いたような・・)
第3回を振り返る
第3回の講義 (9/3) ~ゴルーチンとチャネル ~ - 日記 (※ エモ注意。会場限定コンテンツ) - 『9/3
3回目が終わった。やはりてんてんさんは尊かった。とてもありがたい時 間。何かに向かって複数人で真剣に学ぶ経験は実は初めてかもしれない。そ ういえば**これ以降は公開時に削除されました**』
第3回の宿題 ~タイピングゲーム~
第3回の宿題 (9/3-9/10) ~タイピングゲームと分割ダウンローダー ~ - タイプする単語のソースはどうしよう? - 最近スプラトゥーンしてない・・ - 道場通い中はスプラトゥーンをしないという掟
- かといって溜まったスプラ欲を発散しないのは不健康・・ - タイプする単語のソースをスプラ関連にすることで昇華しよう - ソースをスプラトゥーンに出てくるブキ名に !!
第3回の宿題 (9/3-9/10) ~タイピングゲームと分割ダウンローダー ~ - 文字ごとのヒット数も出したいなー - 以下を出すことに - トータルのヒット数
- 文字ごとのヒット数 - 1 秒あたりのヒット数
None
第3回の宿題 (9/3-9/10) ~タイピングゲームと分割ダウンローダー ~ - 1 文字ごとにヒット判定したかったが・・断念 !! - ScanLines
なので Enter を入力するまでヒット判定ができない - https://github.com/pkg/term を使えば実現できそうなことはわかったが・・ - 実際にやってみると入力は一見上手く動いているように見えるが、表示が 少しずつズレれていく・・
第3回の宿題 ~分割ダウンローダー~
第3回の宿題 (9/3-9/10) ~タイピングゲームと分割ダウンローダー ~ - 動く実装はできたが PR 出せるレベルに至らず・・ - Context
もテストも間に合わず・・
第3回の宿題 (9/3-9/10) ~タイピングゲームと分割ダウンローダー ~ - レビュー後 - タイピングゲームの方は再び tenntenn さんに
GOOD ラベルを頂けました。 尊みが深い。
第4回を振り返る
第4回の講義 (9/10) ~HTTPサーバ・クライアント ~ - 後半内容が難しかった - あっという間に終わってしまった
第4回の宿題 ~おみくじAPIを作ってみよう~
第4回の宿題 9/10-9/18 ~おみくじAPIを作ってみよう~ - 工夫点 (1) - URLクエリパラメータとして name を指定できるようにした
- `?name=名前`
第4回の宿題 9/10-9/18 ~おみくじAPIを作ってみよう~ - 工夫点 (2) - name が 33
文字以上の時にバリデーションエラーになるようにした - ステータスコード: 400
以上、振り返りでした !! ありがとうございました !! - メルペイさま、複数回に渡って会場のご提供ありがとうご ざいました。 - 講師の皆さま、本当に貴重で素晴らしいお時間をありがと うございました。
- 道場生の皆さま、一緒に課題に取り組んでくださり、また、 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