2018年10月19日0件のコメントこんにちは。GMOアドマーケティング、18新卒エンジニアのS.S.です。新卒エンジニア研修を終えたので、そこで学んだことについて紹介したいと思います。新卒エンジニアは次に挙げる3つの研修を受けました。テックイノベーションPJT基礎研修(5月)OJT研修(6月)GMOテクノロジーブートキャンプ(5月〜7月/毎週金曜日)それぞれの研修でどのようなことを学んだか順に説明します。テックイノベーションPJT基礎研修この研修では開発を行うために必要な基礎的な内容を学びました。自社プロダクトも含めた、アドテク事業についての概要GitLinux基礎コーディングスキルSQL言語研修(Java)はじめに自社プロダクトやアドテク事業に関して、プロダクトに関わっている方々から説明をいただきました。研修を受けてアドテク事業についてレポートとしてまとめてみることで理解が進みました。Git・Linux基礎・コーディングスキルなどの研修では、開発を行うにあたって基本的な内容を学びました。SQLに関しては働き始める前はふわっと知っているくらいでそれほど複雑なクエリも書いたことがなかったこともあり、業務で出てくる問題を解決するためのSQLを書く前にまとまった時間をとって基本的な操作を身につけられたのはよかったと思います。言語研修(Java)ここからはJavaの言語研修で学んだ内容を紹介します。題材であるアドサーバーの実装を通して広告配信の仕組みについても理解を深められるものとなっていました。表示する期間の設定や広告の差し替えなどを柔軟に行うための仕組みです。今回作成した、アドサーバーにおける広告配信の流れは次のようになっています。広告タグの読み込みサーバーから表示する広告を返却する返却された広告がブラウザで読み込まれる(Imp)ユーザーが広告をクリック(Click)遷移先のウェブサイトで会員登録や商品購入などのあらかじめ決めておいた行動を行う(CV)ユーザーがウェブページを表示してから広告をクリックするまでの流れを次の図に示します。JavaのServletの仕組みを使い、各ステップの処理を担当するAPIを作成しました。広告を返却するAPI、表示の通知を受け取るAPI、クリックおよびCVのAPIの4つを順に実装していきました。いくつか実装上、注意した点を挙げていきます。1点目は広告の表示通知を行うタイミングについてです。返却された広告に含まれる通知用のタグの動作時に送られるリクエストを配信サーバーが受け取ったときとしています。2点目は配信ログの不正判定に関するものです。広告主のサイトを訪問後にCVに至るという流れを経ていないものはCVとしてカウントできません。広告の効果であるとみなせないものについてカウントしないケースがあります。実装した機能はデータベースAPIの呼び出しなども含めて、テスト時にインスタンスを用意するのが難しいクラスに依存するものとなっていますが、モックを作るためのライブラリを使ってテスト用のコードも追加しました。後半は効率的にリクエストを処理するための工夫について、KVSを利用する方法などを学びました。Javaで広告の配信システムを開発するにあたって必要となる基礎的な知識を、この研修を通して身につけられました。足りない部分はこのあとのOJT研修などを通して補っていくことになります。OJT研修6月からのOJT研修では、ReeMoという弊社の広告配信アプリケーションの開発に少しずつ参加しました。この研修では配信アプリで使っている仕組みなどについて、担当の開発チケットの対応を行いながら学んでいきました。テックイノベーションPJT基礎研修で触るコードは課題を進めながら自分で実装したものがほとんどですが、OJT研修以降ではプロダクトのコードベースを少しずつ理解しながら不具合の修正や機能の追加などを行なっていきます。開発を行いながら少しずつどこに変更を加えるべきか推測がつくようになったり、レビューに出すにあたって意図が伝わる書き方を意識するようになりました。開発に関する短時間のミーティングは立ちスペースで行うこともあります。GMOテクノロジーブートキャンプこの研修はGMOインターネットグループ全体の新卒エンジニアの技術力向上などを目的として、5月の半ばから約二ヶ月半にわたって毎週金曜日に行われているものです。講義は各社の経験を積んだエンジニアが担当します。研修の最後に二日間の合宿があり、研修で学んだことをもとにチームで成果物を作成します。この研修で学んだトピックの一部を次に挙げます。PHP)この中から一つ選んで紹介しますと、セキュリティの研修では演習形式で手元に用意した脆弱性のあるウェブアプリーケションに対して不正な操作を加えながら、SQLインジェクションやXSSといった、いくつかのよく知られているタイプの脆弱性について学びました。研修の後半では、この項の冒頭で触れたチームでの成果物作成に向けて、どのようなアプリを作るかをはっきりさせていくために、ユーザー像を考えたりプロトタイプを設計してフィードバックをもらうこともありました。一緒に新しい店を開拓することを助けるためのアプリケーションを作成しました。このアプリケーションでは一人のユーザーが店につけたスコアから未訪問の店につけるであろうスコアを補完して、それをもとにおすすめの店を選びます。つながりのあるユーザーの中から共通の店がおすすめされているユーザーを見つけて、その店とともにそのユーザーを提示するという仕組みになっています。この研修全体について振り返ると、初めて知るトピックの演習で苦労するところからはじまり、Web開発における標準的なトピックの他にもたくさんのことを学び、エンジニアとしての幅を広げられた部分がありました。最後には、チームで成果物として作るものを決めて合宿でそれを完成させるところまで一通り取り組んで、きちんとアウトプットを出せるようになったので、エンジニアとして成長できた部分もあったかと思います。まとめ入社して直後に受けたこの3つの研修を通して、エンジニアとして開発に関わっていく上で必要な知識を学びました。技術的なことのほかにもエンジニアとしての働き方に関する内容のお話を聞いたり、グループ横断で他の新卒エンジニアと関わりを持つことができたのもよかったと思います。研修で学んだことを活かしつつ、足りない部分は補いながらエンジニアとしてこれからも頑張っていきたいと思います。@gmoap_engineer本ブログで発信される情報は、各エンジニア個人の見解であり、弊社の公式見解ではありません。本ブログに掲載、引用等をしている商品またはサービス等の名称は、各社の商標または登録商標です。その他の事項について一切責任を負いかねます。発表する情報には注意を払っておりますが、公式発表、見解については、弊社WEBサイトおよびプレスリリースなどをご確認ください。GMOインターネットグループにおけるソーシャルメディア運用ポリシーについては次のページをご確認ください。本ブログに掲載のあるソフトウェアのダウンロードは自己責任で御願い致します。ソフトウェアのダウンロードの結果、ご利用者に何らかの損失・損害が生じたといえども、当社ではその責任を負いかねます。本ブログに掲載のあるソフトウェアを扱う際は、各ソフトウェアの公式リファレンスを参照のもとご使用下さい。ソフトウェアの実行の結果、ご利用者に何らかの損失・損害が生じたといえども、当社ではその責任を負いかねます。