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
第一回Enablement Bootcamp for Gopherizing 発表会資料
Search
kushidam
October 12, 2023
Technology
110
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
第一回Enablement Bootcamp for Gopherizing 発表会資料
kushidam
October 12, 2023
More Decks by kushidam
See All by kushidam
Gitの紹介/共有
kushidam
0
180
Other Decks in Technology
See All in Technology
Webの常識が通じないHTMLメールのダークモード
teamlab
PRO
0
130
「Docker Desktop不要の時代」は 来たのか?
ueponx
0
820
hackers_champloo_2026_tidb
makocchi
0
170
WasmをRustにする
sansantech
PRO
0
260
実体験から学ぶ分析エージェントの開発と運⽤
recruitengineers
PRO
8
2.4k
Classmethod Company Deck
satoshi7
1
730
Claude の新機能を、 出た日に触って社内に届けるまで
rfdnxbro
1
190
FinOps Agentが生んだ技術負債:コスト自動調査の落とし穴と解消までの道のり
oasis1994liveforever
1
120
今さら理解するウェブフォントver.2026
takanorip
3
890
LambdaWebFunctionsを試してみた / exploring-lambda-web-functions
koukihosaka
1
360
NDIでApple Vision Proにリアルタイム映像送信
jyouryuusui
0
130
夫婦で子育てするための育児標準化
codmoninc
PRO
0
440
Featured
See All Featured
Building AI with AI
inesmontani
PRO
1
1.3k
Optimizing for Happiness
mojombo
378
71k
The Illustrated Children's Guide to Kubernetes
chrisshort
51
53k
The Limits of Empathy - UXLibs8
cassininazir
2
720
Mind Mapping
helmedeiros
1
400
Digital Projects Gone Horribly Wrong (And the UX Pros Who Still Save the Day) - Dean Schuster
uxyall
1
3.4k
The Curious Case for Waylosing
cassininazir
1
570
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
50
10k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
203
77k
Gemini Prompt Engineering: Practical Techniques for Tangible AI Outcomes
mfonobong
2
590
Fashionably flexible responsive web design (full day workshop)
malarkey
409
67k
Why Our Code Smells
bkeepers
PRO
340
58k
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...