こんにちは、2024年新卒のXeramiyaです。
本記事では4ヶ月間のドワンゴの新卒研修について、研修生の立場からお話しします。 レッツゴー!
全体研修
入社直後の約2週間は、企画・デザイナー・エンジニア職合同での全体研修が行われました。 各事業部や会社の制度の紹介、社会人としての心構えなどを教わります。
また、ドワンゴグループ各社の新卒合同で行われるワークショップでは、数日に渡るグループワークでの実践を通じてビジネスの基礎を学ぶことができました。 アイデアを出し合い、互いに意見しながらプロジェクトを前へと進めた経験は、同期の人柄を知る近道になったと今では感じています。
全体研修は毎日出社で行われました。 遠慮がちな性格の自分としては、たった2週間ほどでしたが、リアルで動き回れたおかげで発言のハードルは明らかに下がりました。 リアルっていいですね、うまい飯も食べられますし。
エンジニア研修
全体研修が終わり、ここからは約3.5ヶ月間のエンジニア研修が始まります。 ここからはフルリモートで行われ、出社は任意です。 エンジニア研修は、大きく3つの期間に分かれており、それぞれ基礎課題、個人課題、チーム課題に取り組むことになります。
ようやく基礎研修でコードがかけるぞ! ── 同期某氏
また、課題とは別に、朝の読書会と朝会・振り返り会、コーヒーチャットが毎日行われます。
朝の読書会は、設定された課題図書を読み、今日読んだぶんの要約と感想を発表し合うものです。 課題図書の内容は、Web技術やプロジェクト管理、読みやすいコードや文章の書き方など様々でした。 課題図書はエンジニア研修中に取り組む課題の予習・復習にちょうど良い順序で並べられており、読書で得た知識を実践を通して学ぶことができたと感じています。
朝会・振り返り会は、日々の連絡と、一日の目標の設定・振り返りを行うものです。 研修運営と新卒が出席するホームルーム的な存在で、リモートワークに足りない始業感と終業感を補ってくれました。 もちろん、振り返りをしっかり行うほど、他人の振り返りを参考にしやすくなるなど、振り返る意義を実感できるものでした。
コーヒーチャットは雑談タイムです。 毎日お昼頃に30分設けられており、新卒メンバー同士でいろいろ話せます。 何を話したかは内緒です。
基礎課題
基礎課題は座学が中心で、N予備校(研修当時の名称です。現在はZEN Study!)を使ってWebの技術や開発の基礎を学んだり、AWSについて学ぶ外部講習を受講したりするものです。
N予備校を使った学習は、ネットワークの基礎知識からBotやフレームワークを用いたWebアプリ開発の体験まで、N予備校の教材を用いて行われます。 専門用語を学ぶことで検索しやすくなる、道具の仕組みを知ることで自分がしていることを自覚できるようになるなど、体系的な学習によって技術面の見通しが良くなり、不安が少し解消されました。
ニコニコと比べるとあまり触れる機会のない教育事業の自社サービスのユーザーになる良い機会にもなりました。 教材は、Dockerを用いた環境構築やテストコードの書き方、デプロイの方法など、一通りの作業過程を理由も併せて丁寧に解説してくれます。 開発中に何度も使用するコマンドがあれば毎回解説もしくは過去の教材へのリンクがある、外部サービスのスクリーンショットは常に最新に更新されているなど、教材は初学者を挫折させない工夫が随所に凝らされており、物覚えのわるめな私も難なく進めることができました。
AWSについて学ぶ外部講習は、教材でAWSについて学んだ後に講師を招いたハンズオンといった流れで行われました。 ハンズオンでは、実際に構成図を描き、その通りに各種サービスを組み合わせて動作させることが目標です。 教材では用語を覚えるのでやっとでしたが、ハンズオンを通じてそれぞれの役割について実感が持てるようになりました。
個人課題
個人課題では、一人で簡単なブログサービスを開発します。 期間は1ヶ月ほどで、成果物の発表機会は中間発表とお披露目会の2回用意されています。
具体的には、ユーザー登録ができて、記事をブラウザで執筆できて、記事の一覧画面があって〜と、みなさんが想像しているようなブログサービスを作ります。 Webアプリケーションであり、セキュリティやAWSへのデプロイ、テストコードも書くなど最低限の要件は設定されていますが、それ以外の仕様や構成は自分たちで決定します。 基礎課題の学習で使用した技術や道具を流用するもよし、慣れたものを使うもよしです。
個人でひと通りの条件をクリアしなければならないため、大変なこともあります。 セキュリティやテストコードについて、私はこれまで趣味では触れてきませんでした。 しかし、今回の個人課題で学習したことをもとに実際に自分の手で実装したことによって、そうした苦手意識を薄めることができました。 わからないことがあれば、メンターさんや同期に相談し、ペアプロなどをしてもらいつつ進めていきました。
焦り、振り返り、ちょっと落ち着く
私にとって、制作期間の1ヶ月は、とても短いものでした。 最初にタスクの洗い出しを行い、スケジュールを組んでから始めたのですが、どんどん狂います。 自分で決めたストーリーポイントはあまり当てにならず、経験の浅い分野では調査に時間を取られまくりでした。 これまで趣味で際限なく行えていた開発活動とは異なり、締切があるだけで基礎課題で得た知識を活かすことさえ難しかったです。 焦りとは恐ろしいものですね。
同期たちも同じく苦しみを味わっていたようで、日々の振り返り会は基礎課題のころ以上に熱が入るようになりました。 遭遇した技術的な問題から、そもそも質問するタイミングをどうすれば良いかといった悩みまで。 こうした振り返りの共有のおかげで、誰かが手助けをしてくれたり、自分自身苦しみについて話しやすくなったりしました。 リモートワークでは、一人で藻掻いていてもなかなか気づいてもらえないため、振り返りを共有する機会が毎日用意されていることのありがたさを実感しました。
中間発表・お披露目会では、去年の研修ブログにあるような先輩や同期からの攻撃を受けることはありませんでした。 今年は別の攻撃があったため、AWSへのデプロイは取りやめになり、お披露目会ではローカル環境で動作させたサービスを見せ合うことになりました。 少し残念ではありましたが、大規模障害からの復旧や(Re:仮)の開発を、研修生の立場から見ることができたのは良い経験になりました。
チーム課題
さてさて最後はチーム課題! チーム課題は、1ヶ月半ほどの期間でチームごとにニコニコ動画のようなサービスを開発します。 チーム構成は1チーム5人で、3つのチームに分かれました。 書き出しの勢いからもわかる通り、とても楽しみにしていました。
具体的には、個人課題でも課された最低限の要件に加え、動画を投稿でき、コメントが動画の上を流れるサービスを開発します。 その他の機能や、要件の達成方法については今回もチームごとに自由に決めることができます。 コメントの流し方や動画のエンコード・配信方式、アップロード時の自由度まで、どのチームも独自性を押し出した設計を行っていました。
弊チームでは
私たちはチーム名をChyawangoX、サービス名はSmirkVideo (smirkは「ニヤニヤ」の意)と決めて開発を始めました。 ちなみに、チーム名の発音は最後まで合意がなされませんでした。
私たちのチームは、オンライン会議ツールを常に繋いだまま開発を進めました。 おかげで質問のハードルが下がり、問題の解決にかかる時間の短縮になり、(雑談も多かったですが)チーム全体の開発効率を上げられたように感じています。 出社して顔を合わせて作業する日は、他のチームにも合わせて週1で設けました。 リアルの方が雑談の幅が広がるほか、先輩方に連れられボルダリングに行くなど交流の良いきっかけになりました。 このときの週一出社の習慣は、今でも同期全体で続いています。
チーム課題は、チーム開発におけるあたりまえの意義を実感する良い機会になりました。 例えば、常に音声通話を繋いでいると忘れがちな文書化を徹底することや、不明瞭な議論を減らすために実装方針の最終的な決定者を1人にするなどです。 日々の振り返りを通してチームを改善していく体験は、成熟したチームに参加することでは得難いものだと思います。 自分たちが動かなければチームは変わらず、自分たちが動けばチームは変わるというのはあたりまえですが、既存のあたりまえに遠慮することなく意見を出せたのは研修ならではかもしれません。
ところで、AWSへのデプロイは、迅速な復旧のおかげでチーム課題では可能になりました。🎉 しかし、個人課題でAWSを触り慣れていなかったこともあり、セットアップには苦労しました。 私たちのチームはこれに最終日まで悩まされることなります...
最終成果発表会では、研修外の方たちも交えて完成したサービスを触り、質疑や感想を交わしました。 他チームの発表はどれも興味深く、特にチーム運営の話は三者三様でプロジェクト管理や日例のやり方などにもチームの色が出ていました。 私たちのチームは伏線通り、発表中もデプロイ後に発現したエラーと戦うドタバタぶりで、「ハッカソンの発表を見ているようだ」と言われるほどでした。 が、チームメンバーや別チームからの応援のおかげで、なんとか動画視聴とコメント機能までは公開に漕ぎ着けることができました!(ヨカッタ)
私たちが作ったSmirkVideoについて、せっかくなので少し説明しましょう。 上の画像と併せて読んでいただければわかりやすいと思います。 縦型で再生時間の短い、いわゆるショート動画の再生に特化したサービスを目指して開発しました。 コメントは縦書きで、縦に流れます。 縦書きはまだまだブラウザ間で挙動の差があり、苦労させられたポイントです。 プレイヤーの外周に滲む光は、某動画共有サービスのアンビエントモードを真似て実装されています。 バックエンドではHLS形式での動画配信や、コメントと動画で異なるDBを使うなど、軽快な操作感を実現するための工夫が行われています。
振り返ると、今回のチーム課題で作成したものが、娯楽サービスでよかったと思っています。 娯楽を目的としたアプリケーションには「一見無駄のように見えるが楽しそうなもの」が多数存在します。 例えば今回は、縦書きコメントを流すアルゴリズムや動画のエンコード品質、視聴画面へのアンビエントモード実装などです。 それらの楽しそうな機能の実装を、限られた時間や計算資源と向き合いながら、チームで取捨選択して行いました。 楽しませようと考えることで、必然的にユーザーを意識することができ、娯楽が好きな自分としてはこの遊び心に似た感情を今後も大切にしようと思える研修でした。
さいごに
今回は、ドワンゴの新卒研修を新卒のエンジニア視点でご紹介しました。 この記事を通して、ドワンゴに少しでも興味を持っていただけたら幸いです。
同期が書いたもうひとつの新卒研修の記事はdwango on GitHubで近日公開予定です。お楽しみに!
We are hiring!
株式会社ドワンゴの教育事業では、一緒に未来の当たり前の教育をつくるメンバーを募集しています。カジュアル面談も行っています。お気軽にご連絡ください!
開発チームの取り組み、教育事業の今後については、他の記事や採用資料をご覧ください。