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にも是非一度きてみてくださいね…!👀

2020 年の CAMPHOR- 総括 〜この時代に「リアル」なコミュニティを作り続ける意味〜

この記事は、CAMPHOR- Advent Calendar 2020 25 日目の記事です。

こんにちは、CAMPHOR- 10 期代表の @p1ass です。

今年も多くの方に Advent Calendar を書いていただきました。更新担当の asamas さん、記事を書いてくださった方、本当にありがとうございました!

この記事は Advent Calendar の最終日の記事ということで、2020 年の CAMPHOR- の総括をしたいと思います。
2020 年は新型コロナウイルスの影響で多くの苦労をした 1 年でしたが、その中でも

  • 新型コロナウイルスの対応に追われた 2020 年の振り返り
  • With コロナ時代における「リアル」なコミュニティの存在意義

をピックアップして、思いの丈を語りたいと思います。

この記事を読むことで、より多くの方に CAMPHOR- のことを知ってもらい、CAMPHOR- に訪れる方が増えることを願っています!

続きを読む

当日の様子です

「インターン報告大会 2020」を開催しました!!

こんにちは、運営メンバーのさんぽしです

今回は、10/10(土)に開催した、「インターン報告大会 2020」の様子をお伝えします!

インターン報告大会 2020 – connpass

「インターン報告大会 2020」はCAMPHOR-としては久しぶりとなる完全オフラインのイベントになり、CAMPHOR- HOUSEにて開催しました。

  • 参加人数の制限(12人)
  • マスクの着用
  • アルコール消毒
  • 定期的な換気

などに心がけ開催しました。

このようなCAMPHOR- HOUSEにて行うイベントを通じて、HOUSEに来てもらうきっかけになれば嬉しいなと思います!

続きを読む

運営メンバーだけでなく、みんなで作り上げるコミュニティ

2020年のCAMPHOR- は「みんなで作り上げるコミュニティ」へ

あけましておめでとうございます!今月からCAMPHOR-の10期代表になった@p1assです。

CAMPHOR-は今年で10年目を迎えることになりました。いつも遊びに来てくれる学生や活動をサポートしていただいている企業の皆様のおかげで、ここまで活動していくことができました。本当にありがとうございます!

記念すべき10年目はCAMPHOR-の運営メンバーだけでなく、コミュニティ全体として様々なことにチャレンジしていく1年にしたいと思います。

さて、この記事では新年ということで、

  • 改めてCAMPHOR-の紹介
  • 今年のCAMPHOR-の目標

の2つについてお話したいと思います。

CAMPHOR-がどんなところなのかを知ってもらうことで、CAMPHOR-に関わってくれる人がもっと増えてくれたら嬉しいです。

続きを読む

2019年のCAMPHOR- 総括 〜コミュニティが生まれ変わるために〜

この記事は,CAMPHOR- Advent Calendar 2019 の 25日目 の記事です.

こんにちは.CAMPHOR- 9期代表の@shiba6v です.
Advent Calendarの記事を書いた方も読んだ方もお疲れ様でした!

今年のアドベントカレンダー事情としては京都大学アドベントカレンダー熊野寮アドベントカレンダーなど,エンジニア以外にもアドベントカレンダーが広まって面白い記事がたくさん投稿されていました.毎日記事を追うのも大変な量でしたが,僕も楽しんで読ませてもらいました.

CAMPHOR- Advent Calendarからも負けずに面白い記事がたくさん出ていたと思います.特に,看護学生がCAMPHOR-を訪れてUnityの勉強を始めるまでと,これからプログラミングを始める君へは,CAMPHOR-との関わりについても書かれていて面白いので,まだ読んでない人はぜひ読んでみてほしいです.

Advent Calendarを毎日更新してくれたぷらすくん,ありがとうございました!

さて,タイトルの通りCAMPHOR-は今年一年で大きく生まれ変わりました.

変わったことについて,4年前の僕のCAMPHOR-との出会いから振り返っていこうと思います.

続きを読む

CAMPHOR- 2018年の総括

この記事は CAMPHOR- Advent Calendar 2018 25日目の記事です.

こんにちは.代表の @yu-i9 です.今年は運営メンバーに卒論生が多く,アドベントカレンダーの開催すら危ぶまれる状況でしたが,なんとか最終日までたどり着くことができました.この忙しい年末に面白い記事を上げてくださった皆様には感謝の気持ちでいっぱいです.本記事では,そうした有能執筆者諸氏の末席を汚しまして,CAMPHOR- 2018年の総括をお送りいたします.まずは,CAMPHOR- HOUSE (以下 HOUSE)の環境・設備面の変化についてお知らせして,その後で,CAMPHOR- の運営に関する話をしていこうと思います.

続きを読む

2018年はCAMPHOR-で圧倒的成長しませんか?

あけましておめでとうございます!CAMPHOR- 新代表の @yu-i9 です.遊びにきてくれる学生や活動を支援してくださっている企業のみなさまのおかげで,CAMPHOR- は8年目に突入しました.この記事では,新年度スタートという節目に乗じて,改めて CAMPHOR- の紹介をしようと思います.特に,以下の三つのポイントに注目します.

  • CAMPHOR- とは?
  • CAMPHOR- で圧倒的成長できる理由
  • CAMPHOR- に関わる方法

CAMPHOR- の情報をまとめることで,多くの人が CAMPHOR- に関わるきっかけになればと思います.

続きを読む