$30 off During Our Annual Pro Sale. View Details »
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
第一回Enablement Bootcamp for Gopherizing 発表会資料
Search
kushidam
October 12, 2023
Technology
0
100
第一回Enablement Bootcamp for Gopherizing 発表会資料
kushidam
October 12, 2023
Tweet
Share
More Decks by kushidam
See All by kushidam
Gitの紹介/共有
kushidam
0
140
Other Decks in Technology
See All in Technology
なぜフロントエンド技術を追うのか?なぜカンファレンスに参加するのか?
sakito
9
2k
【5分でわかる】セーフィー エンジニア向け会社紹介
safie_recruit
0
37k
Docker, Infraestructuras seguras y Hardening
josejuansanchez
0
150
Databricksによるエージェント構築
taka_aki
1
120
形式手法特論:CEGAR を用いたモデル検査の状態空間削減 #kernelvm / Kernel VM Study Hokuriku Part 8
ytaka23
2
310
M5UnifiedとPicoRubyで楽しむM5シリーズ
kishima
0
120
Modern Data Stack大好きマンが語るSnowflakeの魅力
sagara
0
280
なぜ使われないのか?──定量×定性で見極める本当のボトルネック
kakehashi
PRO
1
890
JSConf JP 2025 LINEヤフーのセッション紹介&アンケート 結果発表
lycorptech_jp
PRO
0
110
Security Diaries of an Open Source IAM
ahus1
0
120
Introduction to Sansan for Engineers / エンジニア向け会社紹介
sansan33
PRO
5
48k
Claude Code はじめてガイド -1時間で学べるAI駆動開発の基本と実践-
oikon48
43
26k
Featured
See All Featured
Balancing Empowerment & Direction
lara
5
780
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
128
54k
Writing Fast Ruby
sferik
630
62k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
367
27k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
666
130k
Why Our Code Smells
bkeepers
PRO
340
57k
No one is an island. Learnings from fostering a developers community.
thoeni
21
3.5k
The Language of Interfaces
destraynor
162
25k
Bash Introduction
62gerente
615
210k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
55
3.1k
Building a Scalable Design System with Sketch
lauravandoore
463
34k
Reflections from 52 weeks, 52 projects
jeffersonlam
355
21k
Transcript
ToDoアプリ作成で得たこと 第一回Enablement Bootcamp for Gopherizing 2023/10/12
自己紹介 Zenn https://zenn.dev/kushidam Github https://github.com/kushidam Name: @kushidam SI企業でCやC#を書いている
ToDoアプリ作成で得たこと 最終講義でgRPCを使ったAPIサーバの作成を行いました。 そこでは時間が足りなかったため、途中までの実装になりました。 講義終了後に予定されていた機能を作りました。 使用技術用語についてまとめます。
gRPCとは・・・ Google が開発した RPC(Remote Procedure Call)システム Go言語以外でもNode.js、Python、C++、C#、Javaなど多くの言語で利用可能 サーバー アプリケーションのメソッドを呼び出すことができる RESTと比べ、低遅延・高速な通信という特徴がある
Protocol Bufferesとは・・・ IDL:Interface Definition Languageの一種 モデルの型定義と、API仕様の定義 各種言語のソースコードの自動生成 gRPCはデフォルトでProtocol Buffersを用いる
対応した要件 【機能要件】 • タスクの追加 • タスクのステータス変更 • タスクの削除 【非機能要件】 •
単体テスト • シナリオテスト(窓非対応) • DBは不使用(sync.Mapを使う) • エラーハンドリング
作成した範囲 XXXX.proto xxx.pb.go IDL Interface xxx.pb.go Client xxxx.go server buf
genelate
意識したところ 単体テストではテーブル駆動テストを用いた(テスト用標準ライブラリを使用) • テストケースはなるべく1行で記述した 列で見た際のテストケースの違いが見やすくなる エラーハンドリングでは開発者向けにlogへデータを出力した
テーブル駆動テスト ツールなどではなくテスト方法の一つ ロジックとテストケースの分離 テストケースの追加が容易 テストプログラム n個のテストケース テストロジック
テーブル駆動テスト
テーブル駆動テスト テストケースが増えてきたとき、テストケース間の差異が見やすい
エラーハンドリング
開発、講義を通して実施できたこと gRPCに入門することができました。 テストを意識したロジックコードの実装ができました。 エラー処理を行うことでGoらしい記述ができました。 引数などlogに出力することで再現確認用の情報を取得できました。
課題 エラー対処に必要な情報を含める • 「どこで」 • 「誰の原因」 • 「再現に必要な情報(引数の中身など)」 errors.Is や
errors.Asなどでより詳しい情報を得て原因を特定できるようにする Go 言語の文化や他言語との差異
Thank you...