はじめに
今年のエンジニア研修の担当をしたkurotakyとtokkyです。ペパボのエンジニア研修2021がはじまっていますという記事を書いてあっという間に時が経ち、先日研修が終わったので研修資料を公開します。各研修の講師からコメントをもらっているので、ぜひ読んでいってください!
研修を実施するにあたって、専門的な内容を学んでから現場に入る方法や、幅広い技術層に触れてから現場に入る方法など、さまざまなスタイルがあります。ペパボでは最新の技術の幅広く触れてOJTに入っていくやり方を選択しています。それはなぜかというと、GMOペパボのわたしたちが大切にしている3つのことの中で、「みんなと仲良くする」ということ話がありますが、みんなと仲良くするというのは、エンジニアという職種だけでも100人以上になり、そのみんなと仲良くするのは実際は結構難しいと思います。過去にCTOのあんちぽさんが2017年のテーマ: One Loveというエントリを書いていますが、事業部や興味関心がある技術が違う仲間と良いコラボレーションを生み出すためには、自分が分からない技術や取り組みを「分からない」で終わらせてしまうのではなく、少しのことでも良いので興味関心を持って調べてみる、質問してみる、実際にやってみるというのが「みんなと仲良くする」ための第一歩だと思っています。
具体的な話だと、サーバーサイド開発がメインのエンジニアが、モバイルアプリでの検証を自分でもできるようにiOS/Androidアプリを手元でbuildして動かしてみるとか、フロントエンド開発をメインでやっているけど、インフラの構成を変えたい時に、Dockerfile書き換えてプルリクエストを送るとかそういう小さいことで良いと思います。サーバーサイド開発がメインなのでモバイルのことは何もやらない、フロントエンド開発がメインなのでインフラのこと何もやらないみたいになってしまうと、みんなと仲良くするのは難しいと思います。少しのことでも分かる範囲でコードを書いたり、自分の知っている知識に置き換えて得意な人に相談できると良いと思っています。
Rails Tutorial
Ruby on Rails チュートリアル:プロダクト開発の0→1を学ぼうを使って研修を行いました。講師はkomatun、todacchi、yoshikoukiの3名でした。自主学習をしながら、わからないところはSlackで社内のエンジニアに質問しながら進められるような環境を作り、社内のGitHub Enterprise(GHES)にRails Tutorial用のリポジトリを作成して、Ruby 3.0.1、Rails 6.1.3.2 を使って実施しました。
コンテナ研修
akichanとghostが担当しました。
座学ではコンテナの歴史から、Infrastructure as Codeの基本的な考え方について学び、演習ではDockerの使い方やTerraform で AWSを操作する方法を手を動かしながら学びました。
研修の資料は https://github.com/pepabo/training/tree/master/container です。
研修の目的
開発環境構築や各種運用作業の効率化等を目的として、ペパボのさまざまなサービスでは積極的にアプリケーションのコンテナ化が進んでいます。 さらに、プライベートクラウドとAWSが専用線接続されシームレスにAWSリソースを利用できるようになり、マルチクラウドによる効率化や可用性の向上がこれまで以上に行いやすくなりました。 一方で大規模なサービスではVMでホストされるアプリケーションもまだまだ残っており、複数のアプリケーション動作環境が入り組む移行の過渡期です。
このような背景から、本研修ではクラウドサービスを利用するメリットやコンテナ関連技術の基礎を学びこれからの新しいサービス提供基盤で効率的なサービス開発を主導していけるようなスキルを身につけることを目的としました。
研修の構成
コンテナ技術基礎、クラウドサービス、Infrastructure as Codeのそれぞれについて座学と演習の2パート構成で実施しました。
演習で学んだことをもとに、最終課題は k8s 上でサービスを構築する実践的な演習を行いました。
いずれも1から10まで全てを説明するようにはせず、演習の中でヒントを与え各々に調べてもらうことで、未知の課題へのアプローチを学べるようにしました。
Web セキュリティ研修
Web セキュリティ研修を担当した mrtc0 です。
昨年同様に、Web セキュリティの研修を15時間ほどのボリュームを5日間かけて実施しました。
ここでは、この研修の内容についてご紹介します。
研修の目的
GMO ペパボではセキュリティのシフトレフトや DevSecOps に取り組んでいます。これらの取り組みは、継続的なセキュリティスキャンを実施することなども重要ですが、セキュリティを当たり前とする組織文化作りやトレーニングも必要とされます。
そのため、新卒研修においても、ペパボのセキュリティへの取り組みや背景についての共有や、セキュアコーディングやセキュリティテストなどを実践する素地を習得することを目的として、セキュリティ研修を実施しています。
研修の構成
研修では、脆弱性の概要を説明したあとに、PortSwigger 社が提供している Web Security Academy を利用して攻撃を体験し、最後に「BadApp」と呼ばれる「やられ Web アプリケーション」の脆弱性を修正する流れで実施しました。
BadApp では脆弱性が修正されているかを自動テストでチェックする仕組みがあり、受講生はチームに別れて相談しながら、自分たちだけの力だけで取り組みました。どのチームも脆弱性の原理を理解し、それを適切に修正するためのアプローチを実践できていたと思います。
本研修で利用したスライドを公開しておりますので、是非ご覧ください。
https://github.com/pepabo/training/blob/master/security/web-security-training-2021.pdf
フロントエンド研修
フロントエンド・ SPA 研修に研修で使った資料が置かれています。Rails Tutorialの続きとしてRailsにおけるフロントエンド環境セットアップからデプロイまで学ぶことができます。今年は@pione30が担当しました。
モバイルアプリ研修
モバイルアプリ研修担当の@tokkyです。
研修の目的
この研修は、宣言的UIプログラミングの利点を学びつつ、 Flutter を用いてモバイルアプリケーションを開発できるようになることを目的としています。 Flutter を採用した理由は元々 SUZURI の Android アプリを Flutter で開発していたこともありますが、以下のようなメリットがあったためです。
- ボイラープレートコードが少なく、シンプルな記述で宣言的UIプログラミングを学べる
- フロントエンド研修を終えた後であれば、 JavaScript や TypeScript と近い記述の Dart を採用している Flutter はコード読み書きの敷居が低い
研修の構成
Ruby on Rails チュートリアル、フロントエンド研修の続編として、宣言的UIプログラミングと Dart ・ Flutter の基本を学んだ後、チュートリアルで作成した Rails アプリケーションのモバイルアプリ版を開発する構成となっています。
機械学習研修
機械学習研修を担当した monochromegane zaimy tossy tosh2230 です。 昨年実施した研修内容を一新して、5日間・合計14時間で実施しました。
研修の目的
この研修は、機械学習の初学者がその手法のコンセプトを学び、手法を用いる際の設計や手順が研修前と比較して具体化できることをゴールにしました。また今年より、機械学習の前提としてのデータの重要性とその扱い方を習得することにもフォーカスしています。
研修の構成
今年の機械学習研修では、Day1, 2 はデータエンジニアリング、Day3, 4, 5 は機械学習という構成になっています。
研修日程ごとのゴールと、実施した研修の内容をまとめました。スライドを公開していますので、ぜひご覧ください!
Day1: 大規模データをハンドリングする方法を知る
- 座学: ペパボのデータ活用基盤である Bigfoot のコンポーネント解説
- ハンズオン: Google BigQuery & Google DataStudio
- スライド: day1_data_engineering_overview.pdf
Day2: データウェアハウスの使い方や ETL(Extract, Transform, Load) という考え方に慣れる
- 座学: ETL の概念と Bigfoot における実装例
- ハンズオン: Google Colaboratory, Google BigQuery での ETL演習
- スライド: day2_data_engineering_etl.pdf
Day3: 機械学習を自分の言葉で説明できる
- 座学: 機械学習とは何か
- ハンズオン: Machine Learning Crash Course(Introduction to ML ~ Introduction to TF)
- スライド: day3_machine_learning_introduction.pdf
Day4: 機械学習を使って課題を解決する流れを思い浮かべることができる
- 座学: 勾配降下法
- ハンズオン: Machine Learning Crash Course(Generalization ~ Classification)
- スライド: day4_gradient_descent.pdf
Day5: 機械学習をサービスに導入するまでの流れを思い浮かべることができる
- ハンズオン: BigQuery ML でのロジスティック回帰モデルの作成・予測・性能改善
- スライド: day5_machine_learning_hands_on.pdf
最後に
今回の研修を受講した11thエンジニアのみなさん研修お疲れ様でした。また、メンターのみなさんと講師のみなさんもお疲れさまでした!
ペパボのエンジニアリングを支えるいろいろな技術スタックと、様々なバックグラウンドを持ったメンターや講師の方との関わりの中で、ペパボを支えるサービスの基礎となる技術について広く学べたと思います。これからの業務では自身の専門性を磨きつつも、自分があまり知らない領域の人とも協力して仕事を進めることが増えてくると思いますので、沢山の分からないことが出てくるかもしれませんが、そんな時はこの研修で学んだことを思い出し、みんなと仲良くすることを忘れずに、自分から一歩踏み出していきましょう!頑張って下さい!!!!!