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
2024新卒技術研修_BE
Search
DMM.com_新卒採用
September 17, 2024
0
81
2024新卒技術研修_BE
DMM.comの24新卒エンジニア技術研修_バックエンド研修の資料です。
DMM.com_新卒採用
September 17, 2024
Tweet
Share
More Decks by DMM.com_新卒採用
See All by DMM.com_新卒採用
DDD‗20250716_traP×DMM
dmm_recuruit
0
14
組織運営‗20250716_traP×DMM
dmm_recuruit
0
9
DMMにおけるレコメンドの紹介‗20250716_traP×DMM
dmm_recuruit
0
180
KC3Hack2025向け_ハッカソンのコツ.pdf
dmm_recuruit
0
87
DMM.com_技育祭2024秋講演資料
dmm_recuruit
0
210
2024新卒技術研修_FE①
dmm_recuruit
0
47
2024新卒技術研修_FE②
dmm_recuruit
0
45
2024新卒技術研修_FE③
dmm_recuruit
0
54
2024新卒技術研修_チームビルディング
dmm_recuruit
1
88
Featured
See All Featured
Embracing the Ebb and Flow
colly
87
4.8k
Connecting the Dots Between Site Speed, User Experience & Your Business [WebExpo 2025]
tammyeverts
8
480
Raft: Consensus for Rubyists
vanstee
140
7.1k
YesSQL, Process and Tooling at Scale
rocio
173
14k
Into the Great Unknown - MozCon
thekraken
40
2k
Agile that works and the tools we love
rasmusluckow
329
21k
The Cost Of JavaScript in 2023
addyosmani
53
8.8k
Optimising Largest Contentful Paint
csswizardry
37
3.4k
GraphQLの誤解/rethinking-graphql
sonatard
71
11k
Mobile First: as difficult as doing things right
swwweet
223
9.9k
Side Projects
sachag
455
43k
A better future with KSS
kneath
239
17k
Transcript
© DMM.com © DMM Web開発技術 backend
© DMM.com Why go ? “Go gopher” ©️ Renee French
(Licensed under CC BY 3.0)
© DMM.com Why go ? DMMでの開発で現在主流になっています なぜ?? 3 dmm-com org(GHEC)の言語分布
© DMM.com Why go ? - 言語仕様がシンプルである →(チームに入りたての)メンバーの学習コストが低い - ランタイムが小さく起動が早い
→ コンテナでの実行に向いている 4
© DMM.com Introduction 5
© DMM.com 本研修の目的 •goで書かれたプロダクトの読み書きができる •業務レベルのwebアプリケーション開発経験 6 “Go gopher” ©️ Renee
French (Licensed under CC BY 3.0)
© DMM.com 心構え 未知の人 •わからないことがあったらTAや同期の人にガンガン 聞いちゃいましょう •焦らず自分のペースで進めましょう 既知の人 •講義部分は気楽に聞いておいてください 7
© DMM.com 研修のながれ 大きく2パートに分かれます • 前半戦:go tutorial • goでWebバックエンド開発をするための基本知識を学んでいきます •
tour of goで学んだ言語の基本+αの部分 • io / json / context / HTTP / DB / Generics / Slices • 後半戦:演習パート(Yatter Hands on) • なんか見覚えのあるSNSサービスのAPIを実装してもらいます 8
© DMM.com Web開発技術の研修ではどこかで見たことある様なSNSを作ってもらいま す 9 Yatter(画面共有) 19卒の成果物 • 今回はバックエンド編 •
後の研修でフロント作り • Webフロントエンド • Android • iOS • 作り込んでおくと 後の演習で遊べます
© DMM.com 10 スケジュール 環境構築 処理系とエディタ(研修推奨はVSCode)の用意 5/14 Tutorials for Yatter
ioやjsonの扱い,HTTPサーバの基礎,GoでのDB取り扱い 5/14, 5/15 Yatter (exercise) メインコンテンツ,皆さんにはSNSを作ってもらいます!! 5/15-5/17, 5/20-5/22 DMMにおけるgo DMMでの使われ方紹介 5/22 最後に 総括、並びにフリータイム 5/22
© DMM.com 11 スケジュール 5/14 5/14-5/17 5/18-5/19 5/20-5/22 5/23 導入
/ 環境構築 Tutorial 休み Yatter →フロントエンド Tutorial Yatter 総括
© DMM.com 12 一日のスケジュール 10:30 開始 13:00-14:00 お昼 14:00-14:30 進捗確認
18:00 終了
© DMM.com 進行について • Tutorialsは口頭でも説明します • 録画の都合でZoomでやります • 分かる人は資料読んで自力で先進んじゃって大丈夫です •
解説は聞きたい人だけ聞きに来る感じでOK • 終わったらYatterに入っちゃって大丈夫です • 進捗だけ出欠票に記録しておいてください 13
© DMM.com Tutorialが早く終わった人 • 随時Zoomから抜けてもらっても問題ないです! → Discord でYatterに入ってもらって大丈夫です Tutorialの新しいセクションが始まる時はSlackで通知します •
他のTutorialが終わっていないチームメンバーのフォローアップも大歓迎! 14
© DMM.com 質問について • Slackのチャンネルに投げてください • 質問を分けて投稿 → 各スレッドで回答の流れでいきましょう •
講義中ならCommentScreenでもOKです • 雑なリアクションなどもお待ちしてます • 演習中は講師陣がDiscordの運営・講師待機部屋に待機しています • わからないことがあればどんどん聞きにきてください • チームメンバーに聞いてみてお互い教え合うといいかも • 教える側も知識の整理が出来ていい勉強になるはず 15
© DMM.com 環境構築 16
© DMM.com 環境構築 • goの処理系 + エディタの準備をしていきましょう • 詰まると本編の時間が無くなるので早めにhelpを上げましょう •
自己責任で別のエディタを使ってくれても大丈夫です • サポート外です • 詰まると本編の時間が無くなるので適度に見切りをつけましょう • 一旦VSCodeにしてあとで環境整備がいいかも 17
© DMM.com Hello World (IDEの機能やgoコマンドで)以下が動かせる環境ができればOK 18 // helloworld.go package main
import "fmt" func main() { fmt.Println("Hello, World!") }
© DMM.com 19 環境 (docker-compose) ローカル環境を作るのにdocker-composeを使います コンテナを使って仮想環境をいい感じに管理するツールです コンテナ技術の詳細はコンテナ入門にて
© DMM.com docker-compose 基本操作 立ち上げ(バックグラウンド) 20 $ docker compose up
-d 終了 $ docker compose down ログの確認(-fで流しっぱなし、webでwebサーバのログonly) $ docker compose logs [-f] [web]
© DMM.com Tutorials 21
© DMM.com Tutorial Goの標準ライブラリ •https://pkg.go.dev/std ◦ io ◦ encoding/json ◦
context ◦ net/http ◦ database/sql ◦ generics ◦ slices 22
© DMM.com Yatter実装part! 23
© DMM.com Appendix 補足資料 24
© DMM.com io 補足資料 25
© DMM.com 資料補足:bytesパッケージ io.Reader / io.Writerを作る際はbytesパッケージが便利 • bytes.Buffer • string
/ []byteからio.Reader / io.Writerを作るときに • テストモックにも • bytes.Reader • Read Onlyな代わりにSeekをサポート 26
© DMM.com net/http 補足資料 27
© DMM.com 28 CORS 攻撃を防止するために、ブラウザは「Same-Origin Policy」という仕組 みを実装し、異なるオリジンのリソースへのアクセスに制約をかけて います。 CORSは、この制約を一部解除し、異なるオリジン間でリソースを共 有するための仕組みです。
参考: - CORS(Cross-Origin Resource Sharing) - https://developer.mozilla.org/ja/docs/Web/HTTP/CORS
© DMM.com 29 CORS
© DMM.com database/sql 補足資料 30
© DMM.com $ docker compose ps 31 環境 $ docker
compose exec mysql mysql -psample -usample sample --default-character-set=utf8mb4
© DMM.com 32 互換性のない型システム間でデータ構造を変換するための技術 (英wiki) ここでは, DBのテーブルとGoを相互に変換するためのラッパー くらいの認識で大丈夫です ORM