Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Go College

Avatar for Ogata Katsuya Ogata Katsuya
March 16, 2025
56

Go College

Avatar for Ogata Katsuya

Ogata Katsuya

March 16, 2025
Tweet

Transcript

  1. 自己紹介 名前 : 緒方 克哉(おがた かつや) 出身 : 宮崎県小林市 所属

    : 大阪大学 基礎工学部 情報科学学科 B3 趣味 : 登山 旅行 サウナ Go College参加前 : ・Go一度も触ったことない ・Go Collegeについていけるか心配。。 ・でもサーバーサイドを静的型付け言語で書いて みたいなぁ。。。 登山 地元小林市 ブルネイのビーチ
  2. Golangでの具体的な実装 クリーンアーキテクチャの考え方 をGolangに落とし込んで実装する ことで、レイヤードアーキテクチ ャの目的や考え方を深く理解する ことができました。 保守性の向上 各層が独立しているため、特定の 機能の変更やバグ修正が他の部分 に影響を与えにくくなりました。

    これにより、保守の効率が大幅に 改善。開発の安定性も向上しまし た。 クリーンアーキテクチャの利 点 クリーンアーキテクチャにより、 コードの注意点が分かりやすくな り、開発者間での理解がスムーズ に。階層構造により、変更が特定 の層に限定されるため、柔軟に対 応可能です。 1.1 クリーンアーキテクチャの導入 クリーンアーキテクチャの導入により、開発の柔軟性と保守性が向上しました。
  3. 01 各層のテスト実装 クリーンアーキテクチャの各層 に対して、単体及び統合テスト を徹底的に実装しました。これ はバグの早期発見と迅速な修正 を可能にし、コードの信頼性向 上に貢献しています。 03 02

    自動化による効率向上 Github Actionsを用いてテストを 自動化し、手動での実行を不要 にしました。これにより開発者 の負担を軽減し、リソースを新 機能の開発に集中できる環境を 用意しました。 1.2 テストの導入 テストの導入はコードの信頼性向上と開発効率の改善を可能にしました。
  4. 1.2 テストの導入 抽選ロジックのテスト ・10万回ガチャの抽選を実行 ・試行回数×排出確率を計算 ・各アイテムの期待する排出数を算出 ・期待している排出数と、実際の排出 数が設定している誤差の範囲内であっ たら成功 ・確率誤差は0.1%誤差である、100と

    して設定 MySQLを使用したテスト実行 ・インフラ層のロジックのテストには SQLiteや、モックを用いずに、テスト 用のDBを用意して実施 ・GitHub Actions上でも、都度MySQLを 立ち上げてテストを実行する ・これにより、より本番の環境に近い 状態でのテストを実現
  5. 01 ログの構造化 zapを使用することで、ログの出 力が構造化され、解析が容易に なります。この構造化により、 特定の情報に迅速にアクセス可 能になり、効率化が図れます。 03 02 可視化の効果

    Dataogを用いてログやメトリク スの可視化を実現しました。可 視化により、システムの状態を 一目で確認できるため、問題発 生時の対応が迅速化されます。 1.4 構造化ログの出力と可視化 zapでのログ出力とDataDogでの可視化により、迅速かつ正確な問題解決を可能に。
  6. ・アーキテクチャってなに? ・Goのinterfaceっていつ使うの? ・動けば良いだろう コード品質の向上 ・pprofやk6等のツールを用いてAPIの ボトルネックを見つけることができる ・DataDog等の可視化ツールを用いて 、メトリクスの改善をできる ・Cacheのメリデメを考慮した上で、 適切なCache戦略を考えることができ

    る 2. Go Collegeを通した成長ポイント パフォーマンスチューニング テスト ・アーキテクチャの目的を理解して、 実装に落とし込める ・各層のinterfaceを実装してDIできるよ うにする ・依存する方向を意識しながら実装 ・各層の責務を意識しながら実装 ・時間がないからテストは書かない ・テスト書いてもあまり効果がないか らいらない ・とりあえず、なんとなくテストを書 いておく ・各層の責務をきちんと検証できるテ ストを書くことができる ・テストがあるおかげでリファクタリ ングした際のエラー改善にかかる時間 を軽減することができる ・実行時間は気にせずに、動けば良い ・DBから逐次取ってきて表示 ・パフォーマンスチューニングって聞 いたことはあるけどなにすればいいか わからない
  7. 01 アーキテクチャの利用 03 02 今後に向けての意気込み 個人で開発しているものや、イン ターン先でもアーキテクチャの考 え方を導入してみる middlewareの利用 middlewareを意識して、ログを出

    力したり、エラーログを追いやす い工夫をしてみる 03 03 パフォーマンス改善 普段からパフォーマンスを意識し て、コードを書いたり、キャッシ ュを活用する 03 04 テストの充実 開発効率を上げるために、テスト を充実させていきたい