Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
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
110
第一回Enablement Bootcamp for Gopherizing 発表会資料
kushidam
October 12, 2023
Tweet
Share
More Decks by kushidam
See All by kushidam
Gitの紹介/共有
kushidam
0
150
Other Decks in Technology
See All in Technology
Claude Code for NOT Programming
kawaguti
PRO
1
100
OWASP Top 10:2025 リリースと 少しの日本語化にまつわる裏話
okdt
PRO
3
840
AWS DevOps Agent x ECS on Fargate検証 / AWS DevOps Agent x ECS on Fargate
kinunori
2
130
茨城の思い出を振り返る ~CDKのセキュリティを添えて~ / 20260201 Mitsutoshi Matsuo
shift_evolve
PRO
1
400
SchooでVue.js/Nuxtを技術選定している理由
yamanoku
3
200
生成AIを活用した音声文字起こしシステムの2つの構築パターンについて
miu_crescent
PRO
3
220
コンテナセキュリティの最新事情 ~ 2026年版 ~
kyohmizu
6
1.7k
AzureでのIaC - Bicep? Terraform? それ早く言ってよ会議
torumakabe
1
600
Bill One急成長の舞台裏 開発組織が直面した失敗と教訓
sansantech
PRO
2
400
外部キー制約の知っておいて欲しいこと - RDBMSを正しく使うために必要なこと / FOREIGN KEY Night
soudai
PRO
12
5.6k
Context Engineeringの取り組み
nutslove
0
380
私たち準委任PdEは2つのプロダクトに挑戦する ~ソフトウェア、開発支援という”二重”のプロダクトエンジニアリングの実践~ / 20260212 Naoki Takahashi
shift_evolve
PRO
2
200
Featured
See All Featured
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
31
9.9k
Build The Right Thing And Hit Your Dates
maggiecrowley
39
3k
Taking LLMs out of the black box: A practical guide to human-in-the-loop distillation
inesmontani
PRO
3
2k
The Language of Interfaces
destraynor
162
26k
Data-driven link building: lessons from a $708K investment (BrightonSEO talk)
szymonslowik
1
920
The AI Search Optimization Roadmap by Aleyda Solis
aleyda
1
5.2k
New Earth Scene 8
popppiees
1
1.5k
Why Mistakes Are the Best Teachers: Turning Failure into a Pathway for Growth
auna
0
54
Git: the NoSQL Database
bkeepers
PRO
432
66k
The Spectacular Lies of Maps
axbom
PRO
1
530
Collaborative Software Design: How to facilitate domain modelling decisions
baasie
0
140
The Impact of AI in SEO - AI Overviews June 2024 Edition
aleyda
5
740
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...