Skip to main content

DeNAのエンジニアの方をお招きし、Goのテスタビリティに関するハンズオンを開催しました!


こんにちは、CAMPHOR-運営のさんぽしです

3/6にDeNAのエンジニアの方をお招きして「テスタビリティの高いGoのAPIサーバを開発しよう」と言うハンズオンのイベントを開催しました。

イベントのconnpassページは以下になります。

【DeNA】ハンズオン: テスタビリティの高いGoのAPIサーバを開発しよう【学生限定】 (2021/03/06 15:30〜)

今回は完全にオンラインのみの開催となり、参加登録者がなんと135人にのぼるという大盛況のイベントとなりました。

テスタビリティの低いAPIサーバーを題材に、そのコードのリファクタリングを通して、Goにおいてテスタビリティを高く保ちながらAPIサーバーを書く方法が学ぶことができるハンズオンでした。

YouTubeにアーカイブが公開されているので、興味がある方はそちらをご覧ください!

当日のスライドも公開いただいています!

 

Chapter 1. Testabilityとは

(動画17:41~)

このチャプターでは「そもそもTestabilityとはなんなのか」や「リファクタリングを進める上でのテストの重要性」に関して解説をいただいています。リファクタリングにおいては外部からの振る舞いが変わっていないことを担保する必要があるため、テストを実装しておき、APIの振る舞いを担保する必要があります。

その後ハンズオンパートではサンプルアプリケーションの確認と、これからリファクタリングを進めるにあたってE2Eテストの実装を行いました。ハンズオンに関しての資料は以下になります。

テスタビリティの高いGoのAPIサーバを開発しよう(その1 ~準備&E2E実装編~)

Chapter 2. Testabilityとアーキテクチャ

(動画26:32~)

このチャプターでは3層アーキテクチャを題材に、Dependency Inversion(依存性の逆転の原則)の考え方にそった実装によってTestabilityを如何にして上げることが出来るかといった解説を行なっていただきました。

3層アーキテクチャとはWebAPIを責務によって「プレゼンテーション層」「ビジネスロジック層」「データアクセス層」に分割し、実装を行うアーキテクチャです。

そして、Dependency Inversion(依存性の逆転の原則)とはSOLID原則のうちの一つです。詳しい解説はここでは割愛しますが、抽象に依存し、直接依存することを避けるべきと言う原則になります。少し具体的に言うと、直接依存するのではなく、interfaceに依存しようと言うことになります。

3層アーキテクチャにおいては、それぞれの層の実装はDependency Inversion(依存性の逆転の原則)に則って直接依存するのではなく、interfaceに依存するべきと言うことになります。
この実装によって、テストの際に依存しているinterfaceの中身をChapter3で登場するモックなどに差し替えることができます。

この後のハンズオンパートではサンプルアプリケーションをこの3層アーキテクチャにそった実装になるようにリファクタリングを行いました。ハンズオンに関しての資料は以下になります。

テスタビリティの高いGoのAPIサーバを開発しよう(その2 ~リファクタ編~)

Chapter 3. Test Double

(動画40:13~)

このチャプターではテストダブルの種類とGoにおける実装のパターンに関して解説を行っていただきました。テストダブルというのはテスト時に本物の実装の代わりに使用される代役で、モックやスタブと呼ばれるものはこのテストダブルのうちの一種です。

Chapter2で依存を切り離すことができたので、ハンズオンパートでは実際にテストダブルに差し替えを行い、テストを実装しました。ハンズオンに関しての資料は以下になります。

テスタビリティの高いGoのAPIサーバを開発しよう(その3 ~テスト編~)

終わりに

ハンズオンを通して、リファクタリングを通してどのようにテスタビリティをあげていくかということが、具体的な実装例とともに、学ぶことができとても勉強になりました。

今回のハンズオンは予想を超える申し込みがあったので、CAMPHOR-としてはZoom開催+YouTube配信ということに初挑戦となりました。当日は少しバタバタした場面などもありましたが、大きな障害なく配信とハンズオンを並行することができよかったです。

今後も色々なイベントの開催の準備を行なっています!興味がある方はぜひ CAMPHOR-の Twitter や connpass をフォローして、新着イベントの情報をいち早く手に入れてください!

また、今回はオンラインにおける開催でしたが、京都に在住の方はこちらの開館スケジュールを参考にCAMPHOR- HOUSEにも是非一度きてみてくださいね…!👀


コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です