Slide 1

Slide 1 text

● 自己紹介をする ● 気になるセッションやワークショップ ● どこからきた? ● etc… ● PCは閉じよう! 待ち時間に隣の人と話そう!

Slide 2

Slide 2 text

Go を使って TDD を体験しよう!! Go Conference 2025

Slide 3

Slide 3 text

今日の流れ 自己紹介 10分 TDDについて TDDのデモ TDD体験① 休憩 TDD体験② 10分 20分 20分 10分 20分

Slide 4

Slide 4 text

自己紹介

Slide 5

Slide 5 text

自己紹介 ● 所属 ○ 株式会社モリサワ ● 趣味 ○ コミュニティ運営 ● 好きなパッケージ ○ strconv ちひろ

Slide 6

Slide 6 text

株式会社モリサワ ● 様々なフォントを 作っています ● 同じ金額で何書体でも 利用可能です (メイン商品) ● Webフォントの配信も 行っています

Slide 7

Slide 7 text

自己紹介 おーたかこーたろー(@otakakot) ● 所属 ○ 株式会社ビットキー ● 趣味 ○ 登壇 ○ TinyGo Conference 2025 で LT します! ● 好きなパッケージ ○ net/http/httptest

Slide 8

Slide 8 text

株式会社ビットキー スマートロックを中心とした ハードウェアとソフトウェアを 融合したプロダクト開発 認証認可基盤・IoTプラットフォーム などさまざまなバックエンドサービス でGo言語を採用 こんなところでGoを使ってます The Go gopher was designed by Renée French.

Slide 9

Slide 9 text

みなさんも自己紹介しましょう ● テーブル単位 ● 内容は自由 ● 時間は5分 ● ポイント ○ 全員喋ろう ○ 他の人と同じくらいの時間を喋ろう

Slide 10

Slide 10 text

TDDについて

Slide 11

Slide 11 text

TDDとは ● ソフトウェア 開発 技法のひとつ ○ ひとつずつ、一歩ずつ進める ○ 過度な設計を防ぐ ○ 安心して開発できるようにする

Slide 12

Slide 12 text

よく見かける図 Red Green Refact oring 落ちるテストを書く 最短でテストを通す コードを最適化する 間違ってはいないが部分的!!

Slide 13

Slide 13 text

誤解が多い ● “最初” に落ちるテストを書く ● 最初にすべてのテストケースを書く ● 最初からキレイなコードを書く ● いきなり実装のことを考えてしまう ● etc…

Slide 14

Slide 14 text

TDDの流れ TODOを完了にする Red Green Refact oring テストをひとつ書く 最短でテストを通す コードを最適化する start TODOリストを書く

Slide 15

Slide 15 text

集中 今やるべきこと以外をやらないこと

Slide 16

Slide 16 text

なぜ集中するのか ● 効率を上げたい ○ 思い出しコストをなくす ● 品質を上げたい ○ 見落としを減らす ● 簡単 ○ 同時に色々考えるのは難しい

Slide 17

Slide 17 text

コードを書くとき func Add(a int, b int) int { return a + b } 引数まとめ られそう 変数名は 適切? 小数は? 公開して いいんだっけ? Plusのほうが いい? 関数で いいんだっけ? このパッケージで いいんだっけ? 別ファイルに 切り出したほうが いい? Go Doc 書かなきゃ ロジックを作ることに頭をフル活用できない! 既存コードに なかったっけ?

Slide 18

Slide 18 text

TDDと集中 TODOを完了にする Red Green Refact oring テストをひとつ書く 最短でテストを通す コードを最適化する start TODOリストを書く

Slide 19

Slide 19 text

TODOリスト ● タスク全体の設計をする ● 集中するための外部ストレージ ○ ここに書いたものは忘れて良い ○ TDD中にいつでも編集して良い

Slide 20

Slide 20 text

最近見かけたポスト https://x.com/nwiizo/status/1967347627218903164

Slide 21

Slide 21 text

落ちるテストを書く ● シグネチャを設計する ● 実際にどのように使用されるかを設計する ○ 使うための準備が大変か? ○ etc Red

Slide 22

Slide 22 text

最短でテストを通す ● システムを安定させる ○ 壊れていない状態にする Green

Slide 23

Slide 23 text

コードを最適化する ● コードの内部を設計する ● テストコードの内部を設計をする Refact oring

Slide 24

Slide 24 text

まとめ ● TDDはソフトウェア開発技法 ● TDDではTODOリストの作成から始める ● TDDは集中がキモ

Slide 25

Slide 25 text

TDDのデモ

Slide 26

Slide 26 text

FizzBuzz 引数として整数 n が与えらたとき、以下の内容を 返すプログラムを作成してください。 ● n が 3 の倍数の場合に Fizz を返す ● n が 5 の倍数の場合に Buzz を返す ● n が 3 の倍数かつ 5 の倍数の場合に FizzBuzz を返す ● それ以外の場合は n を返す

Slide 27

Slide 27 text

TDDの流れ TODOを完了にする Red Green Refact oring テストをひとつ書く 最短でテストを通す コードを最適化する start TODOリストを書く

Slide 28

Slide 28 text

デモ!!

Slide 29

Slide 29 text

TDD体験①

Slide 30

Slide 30 text

体験の流れ ● お題の説明 ● 進め方の説明 ● レッツトライ!(15分) ○ 問題を解き切る必要はナシ

Slide 31

Slide 31 text

お題: URL分析 URLから以下を取得する処理を書いてください。 ● ドメイン ● サブドメイン https://pkg.go.dev/fmt サブドメイン ドメイン

Slide 32

Slide 32 text

お題: URL分析: 補足 今回は以下のパターンのみ ● トップレベルドメイン: .com, .co.jp, .jp ● スキーマ: http, https

Slide 33

Slide 33 text

進め方 せっかく仲間がいるのでペアプロで進めましょう ● ドライバーとナビゲーター ● ドライバーがコードを書く ● ナビゲーターがサポートする

Slide 34

Slide 34 text

ドライバー ● コードを書いていく ● 思っていることを口に出す(常に喋る) ○ 手より先に口を動かす ● ナビゲーターに「今何やってるんですか?」って 言われたら負け

Slide 35

Slide 35 text

ナビゲーター ● ドライバーが快適にコードを書けるように サポートする ○ コードをすいすい書いているときは見守る ○ 詰まっているときには一緒に考える

Slide 36

Slide 36 text

Aさん 一緒に考える ドライバー ナビゲーター ドライバー ナビゲーター Bさん 一緒に考える ナビゲーター ドライバー ナビゲーター ドライバー TDD x ペアプログラミング Red Green Refact oring Red

Slide 37

Slide 37 text

TDD体験②

Slide 38

Slide 38 text

体験の流れ ● お題の説明 ● 進め方の説明 ● レッツトライ!(15分) ○ 問題を解き切る必要はナシ

Slide 39

Slide 39 text

お題: 給与計算 あなたは超大手グローバル企業 "tddle" (ティーディル)の日本法人に勤めています。 あなたの業務のうちのひとつは社員への給与の 支払いです。 ここで、社員へ支払うべき給与を計算する プログラムを作成してください。

Slide 40

Slide 40 text

お題: 給与計算 ● 給与は世界共通で、アメリカドルで定義されています。 ● 日本法人の社員は、給与をアメリカドルで受け取るか 日本円で受け取るかを選択できます。 ● 為替レートは常に変動しますが、参照するのは月に1回、 給与を支払うときのみです。 ● 日本法人には独自の制度があり、資格などに応じて 給与が上乗せされます。 ○ この制度の金額は日本円で定められています。

Slide 41

Slide 41 text

お題: 給与計算: ヒント 例えば以下の給与計算をできる必要があります。 (以下は 為替レート=148 の場合) ● 給与 $5,000 を日本円で算出する ○ $5,000 = ¥741,117 ● 給与 $5,000 + 資格手当 ¥10,000 をアメリカドルで 算出する ○ $5,000 + ¥10,000 = $5,067

Slide 42

Slide 42 text

進め方 ● 先ほどと同様にペアプロで進めます