Mercari Engineering Blog

We're the software engineers behind Mercari. Check out our blog to see the tech that powers our marketplace.

新卒エンジニア向け技術基礎研修「Fundamental Training」を実施しました!

こんにちは。エンジニアのオンボーディングを担当しているチーム「Engineering Gateway」の@afroscriptです。

メルカリでは、2019年度春の新卒エンジニアとして31名が入社してきてくれました。新卒のみなさん、ウェルカム!:)

入社式のあと、さっそく新卒研修が始まりましたので、今回はその中でも4/15(月)〜4/19(金)に行われた新卒エンジニア向けの技術基礎研修「Fundamental Training」について、紹介していこうと思います。

f:id:afroscript:20190510132709j:plain
Fundamental Trainingの様子

「Fundamental Training」とは?

新卒エンジニアのためのトレーニングの1つで、5日間という短い期間で、Programing・ Frontend・Backend・Microservices・Mobile・AI・Security・QAの8つの分野を、ハンズオン等のworkshopを交えつつ学ぶ研修です。 研修の目的としては2つ。メルカリで使われている技術スタックを理解することと、自身の技術領域を広げることです。

「Fundamental Training」はどんなコンテンツ?

Fundamental Trainingで実施されるコンテンツを紹介していきます。

Training 1:Development Using Go

初日に行われたのは、メルペイのExpert Teamの@tenntennによるGoを用いたプログラミング研修です。

  • Lecture
    • Goとは?Goの特徴、Goの学び方
    • チーム開発やコードの可読性を意識したコードの書き方
    • 抽象化
    • エラー処理
    • テスタビリティ
    • 並行処理
    • HTTPサーバとクライアント
  • Workshop
    • APIサーバの作成
    • ペアレビュー

Training 2:Microservices Development

2日目、最初の研修は、Microservices Platform Teamの@masartzによるMicroservicesについての研修です。

  • Microservicesとは?
  • なぜMicroservicesなのか?
  • Microservices ArchitectureにおけるBackend Engineer に期待する役割とは?
  • メルカリにおけるMicroservices Architectureとcomponents
  • Microservicesの始め方、開発手法
  • Mercariで使用しているSaaSの紹介

Training 3:Continuous Delivery & Microservice Hands-on

続いての研修は、Backendチームの@nicoによる継続的デリバリの研修とMicroserviceのハンズオンです。

  • Continuous Delivery
    • 継続的デリバリとは?継続的デリバリの基本事項
    • メルカリにおける継続的デリバリ
  • Microservice Hands-on
    • Echo(※)を用いたMicroserviceのビルド
    • Dockerを用いたEcho Microserviceの実行
    • Echo MicroserviceのGCPへのデプロイ

※Echo … Go初学者でも、すぐにGoでマイクロサービスの開発を始められるよう社内で開発・提供しているテンプレートプロジェクト

Training 4:Mobile

3日目はMobileについての研修からスタート。講師はMobileチームのSenior Mobile Developer、@Jon Bottです。

  • MobileとWebの違い
  • Mobileアプリにおける設計
  • Backend APIについて
  • UI(Storyboards, View Controllers, Tables)
  • ビジネスロジック
  • Threading
  • Navigation
  • Hands On

Training 5:Frontend

3日目後半は、Frontendチームの@urahiroshi、@okamotti、@hashによるFrontendの研修です。

  • Lecture
    • 現在のメルカリのFrontend
    • メルカリのFrontendの今後と動いているプロジェクト
    • メルカリFrontendの技術スタック
  • Hands-on
    • ローカル開発環境でMercari Web版の構築
    • ローカル開発環境でMercari Web版の改良

Training 6:Machine Learning

4日目はMachine Learningの研修です。AIチームから、@hurutoriya、@ackoroaが講師を務めました。

  • Lecture
    • Machine Learningが得意なこと・不得意なこと
    • メルカリでのMachine Learning 活用事例
    • Machine Learningプロジェクトはどのように進めるのか?
      • アンチパターンとリーンキャンバスを使った立案方法
      • サービスへの企画・立案・ブラッシュアップ
  • Hands-on
    • Big Query の基礎的な学習と集計作業
    • Jupyter / Pandas による詳細な分析

Training 7: Quality Assurance

最終日の前半は、Automation & QA groupの@fumiharuと@danielgより、QA(Quality Assurance)のトレーニングです。

  • Quality Assuranceとは?
  • Quality Assuranceで確認していること
  • メルカリアプリのテストプロセス
  • Quality Assuranceチームとの連携について
  • QAがソフトウェアエンジニアに求める行動

Training 8:Security

Fundamental Trainining、最後の研修はSecurityです。Securityチームの@yannarak、@yagihash、@rungより「ソフトウェアセキュリティの基礎」「Cryptography (暗号) for Software Engineer」の講義が行われました。

  • ソフトウェアセキュリティの基礎
    • なぜ開発者にセキュリティの理解が求められるのか
    • セキュリティとは
    • セキュリティの概念
    • セキュリティ設計の原則
    • セキュアソフトウェア開発ライフサイクル
    • OSSセキュリティ
  • Cryptography (暗号) for Software Engineer
    • 概要
    • 暗号ではないもの
    • エンコード
    • 難読化
    • 暗号とは
    • ハッシュ化
    • 共通鍵暗号方式
    • 公開鍵暗号方式
    • 暗号化のベストプラクティス
    • セキュリティプロトコル

研修中の様子

f:id:afroscript:20190510133153j:plain
講義中の様子

f:id:afroscript:20190530113244j:plain
講義は日本語/英語両方で行われるため、GOTのメンバーが翻訳します

f:id:afroscript:20190510133254j:plain
ハンズオン形式の研修では、お互いの得意分野を教えあっていました

おわりに

5日間という短い期間の中、かなり詰め込んだハード目な内容ではありましたが、皆ポジティブに取り組み、大枠では満足度高く楽しみながら受けてくれたようでよかったです。 また、研修自体は基本的には午後のみで、1日4,5時間程度のカリキュラムになっていましたが、内容が非常に濃い分、空いた時間はみな必死に理解を深める時間に充ていたことと、各々の得意分野を教えあっているのが印象的でした。

現在は、新卒のPM・エンジニア・デザイナー合同でチームを組み、実際にプロダクトや新規機能を企画・開発する「Scrum Training」を実施中で、いよいよ終盤に差し掛かってきました。果たしてどんなプロダクトが完成するのか...6月上旬に行われる成果発表会がとても楽しみです! 新卒のみなさん、これから一緒に、さらなる進化を遂げるメルカリを作っていきましょう!!

また、メルカリ・メルペイ では、新卒を通年で採用しております。ご興味ある方、ぜひ連絡お待ちしております。

Software Engineer (Fresh Graduate Position)Product Manager (Fresh Graduate Position)Software Engineer (Internship)その他募集職種一覧