🐐
2weeks サーバーサイド向け育成型インターンシップ~Go編(CA Tech DoJo)に参加した件
基本情報
- Golangの勉強をしたいと思い、大学2年の12月頃に応募。
- プログラミング経験はpython(1年半), Golang(1ヶ月)
- 面接では、技術的な質問ではなく、チームで長期間取り組んだ内容についてかなり深く聞かれた。人事2人。
- ES, 面接(1回)で選考
- 参加者20名
- 2022/2/21~3/4の平日10:00~18:00(計9日間)で実施
概要
- 合計8つのゲームAPIを使用通りに開発
- 4つのAPIに関しては、ハンズオンで開発。残りは、個人で開発。
- 個人開発の際は、5つのグループに分かれ、各チームにつきメンターが3人ついてくれ、コードレビューをしてくれる。
- 使用通りのAPI開発(基礎課題)の後、自分で課題を見つけ取り組む(発展課題)。
- 開発以外では、現役社員やインターン経験者の発表、社員や他のインターン生との交流(ランチ、カフェタイム)がある。
学んだこと
- 汎用的なコードの書き方
- 同じような処理はまとめておく(可読性UP, 使い回しできる)
- 実践的なコードの書き方
- コードの責務、役割を考慮
- メモリの節約
- 変数スコープの考慮
知っておけばよかったこと
- n+1問題
- context
-
for range
-
make
でメモリ節約 -
sruct
定義の際の大文字小文字- 外部から参照しないstructは小文字で定義してprivateにする
- ただし、publicなメソッドの返り値で使っているstructは大文字で定義
- 不必要にpublicな宣言を増やすのは避けるべき
- 外部から参照しないstructは小文字で定義してprivateにする
-
map([string]struct{})
で存在チェック - トランザクション
-
*sql.Tx
- golang でトランザクション処理を行う際に使用。
- 公式
-
stackoverflow
- 公式で書かれているのをラッパー関数にして汎用性を上げている
- Qiita
- 個人ブログ
- クリーンアーキテクチャ
- よくわからん
- ↓自分なりに実装
- https://github.com/yagikota/clean_arch_with_go
- sqlインジェクション
感想
- 自分が思っていたよりも成長できた。その理由として一番大きいのは、現役エンジニアによるコードレビューであると考える。レビューをしてもらうことで、エンジニアがコーディングの際気をつけていることや考えていることが完全にとは言わないが分かった。
- 優秀なエンジニア仲間ができ、楽しかった。
今後の展望
- インターンで学びきれなかった技術の勉強
- アーキテクチャ改善
- テストコード
- コード生成
- 静的解析
- 本インターンで学んだことをアウトプット
- 個人でアプリ開発
- 他のインターンにも参加
Discussion