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
75
2024新卒技術研修_BE
DMM.comの24新卒エンジニア技術研修_バックエンド研修の資料です。
DMM.com_新卒採用
September 17, 2024
Tweet
Share
More Decks by DMM.com_新卒採用
See All by DMM.com_新卒採用
KC3Hack2025向け_ハッカソンのコツ.pdf
dmm_recuruit
0
81
DMM.com_技育祭2024秋講演資料
dmm_recuruit
0
170
2024新卒技術研修_FE①
dmm_recuruit
0
39
2024新卒技術研修_FE②
dmm_recuruit
0
39
2024新卒技術研修_FE③
dmm_recuruit
0
42
2024新卒技術研修_チームビルディング
dmm_recuruit
0
83
2024新卒技術研修_振り返り
dmm_recuruit
0
110
2024新卒技術研修_Android
dmm_recuruit
0
47
2024新卒技術研修_ios
dmm_recuruit
0
74
Featured
See All Featured
GraphQLとの向き合い方2022年版
quramy
46
14k
Site-Speed That Sticks
csswizardry
10
620
Building Applications with DynamoDB
mza
95
6.4k
Optimizing for Happiness
mojombo
379
70k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
8
770
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
32
5.9k
What's in a price? How to price your products and services
michaelherold
245
12k
Java REST API Framework Comparison - PWX 2021
mraible
31
8.6k
Bash Introduction
62gerente
614
210k
Visualization
eitanlees
146
16k
The Invisible Side of Design
smashingmag
299
50k
Optimising Largest Contentful Paint
csswizardry
37
3.3k
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