Tech Do | メディアドゥの技術ブログ 

株式会社メディアドゥのエンジニアによるブログです。

メディアドゥの新卒エンジニアが一年で身につけたこと Go/Next.js/AWS/NFT/etc...

f:id:mdtechdo:20220316224226p:plain

はじめに

こんにちは、21卒エンジニアの菅野です!我々21卒エンジニアは総勢5名で、足並みそろえて入社して同じ研修を受けましたが、それからは配属された現場で各々がキャッチアップを進めてきました。そんな我々も来月からは新卒2年目ということで、この1年がどんな1年だったかインタビュー形式で振り返ってみました!

f:id:kazusa_sugeno:20220321003506p:plain
21卒エンジニア紹介

―入社のモチベーションは何でしたか?もし変わっていれば今のモチベーションも教えてください

安村:私自身漫画やイラストなど創作物が好きで、クリエイターの方に貢献できることを仕事にしたいと思っていました。その上で、エンジニアとして貢献することができるポジションにある会社がメディアドゥだったというのがモチベーションの大きなところです。

―実際仕事をしてみて貢献できている実感はありますか?

安村:NFTを扱うtoC向けマーケットプレイス「FanTop」の開発に携わっているのですが、Twitterで実際にNFTアイテムがユーザーの手に届いて喜んでもらっている声を聞けるので、モチベーションになります。

―確かに、toCのサービスに関わっていると、ユーザーの生の声をSNSで見ることができるというのは面白いですね!

安村:エゴサする人の気持ちがよくわかりました(笑)

―逆に、「このUI使いにくいな」みたいなマイナスな意見も目にしませんか?

安村:あると思いますが、ないよりはそういう意見もあったほうが絶対良くて、サービスとして盛り上がっているということかなと思います。そんなところも含めて、toCサービス開発の面白さなのかなと。

―なるほど。大森君はどうですか?

大森:私も漫画とか本が好きなんですが、メディアドゥはそれを生み出している出版業界に貢献できるポジションにある会社だから、というのが入社のモチベーションです。

―ビジネスサイド、エンジニアに関わらず、メディアドゥにはコンテンツが好きな人が集まりますよね。そこから変化はありましたか?

大森:根本にある出版業界に貢献したいという気持ちは変わっていません。ただ、短期的なモチベーションが技術力を上げることに偏ってきています。プロダクトと向き合う時間が長いというのと、周りの優秀な先輩エンジニアの方々から刺激を受ける機会が多く、技術を深めたいというモチベーションの方が大きくなっている感じです。

―配属後のキャッチアップ、OJTはどのように進めましたか?身についた技術スタックの割合も教えて欲しいです

―プロダクト開発部(既存システムのリニューアルやtoB向けサービスを開発)の二人はどんな感じでしたか?

二俣:私はフロントエンドの開発チームにいたので、業務経験はほとんどフロント寄りです。私のチームではReactベースのNext.jsというフレームワークを使っていて、業務後の時間に現場で使われている技術のドキュメントを読んだり、小規模なアプリを作ったりしてキャッチアップしましたね。

―二俣君は配属後即戦力で開発していたイメージがありますが、キャッチアップはスムーズに進みましたか?

二俣:そうですね。学生時代にReactでアプリ開発をしていたこともあり、スムーズに進んだ気がします。

―OJTはどのような感じでしたか?

二俣:チューターのように教えてもらうという感じではなくて、何か勉強するネタを提供してくれる感じでした。

大森:私は配属当初バックエンドの開発が多かったのですが、Goを書くのが初めてだったので、まずは言語のキャッチアップを行いました。基本的な文法がわかってからはリポジトリのコードリーディングを進めたのですが、このタイミングで言語のことだけでなく、Go特有のディレクトリ構成も合わせて勉強することができました。基本的にキャッチアップは業務時間内に行っていて、わからないところがあればメンターの方にいつでも質問できる環境でしたね。

―すぐ質問できる環境があると心強いですよね。

大森:ただ、わからないところを単純に質問するのはダメで、自分なりにどう考えたかということも合わせて聞くという決まりというか、雰囲気がありました。あくまでも自分で考えることが大切という認識です。

―この1年経験した技術領域の割合はどうでしたか?

大森:フロント2割、バックエンド5割、インフラ3割という感じです。最終的にフロントよりもインフラの割合が多くなりました。インフラはほとんどterraformで管理しているので、そのキャッチアップにかけた時間も多く含まれています。

―ファンマーケティング事業本部(NFTマーケットプレイスなどの新規サービスを開発)の二人はどんな感じでしたか?

岩下:大森君と同じで、最初は業務というよりReactとかGoのチュートリアルを進めました。基本的な所をキャッチアップしてからは実際に業務案件を渡されて、簡単な修正案件をこなしました。段々と案件のレベルが上がっていって、徐々に技術力が身についたという感じです。FanTopの開発に初期から携わっているフェローの沓名さんがメンターについてくれているので、技術的に躓くことがあってもフォローしてもらえる環境だったと思います。

安村:最近はフロントエンドの開発チームに所属していて、実際に業務案件をこなしつつ、レビューいただいて知識を身に着けていくという感じです。技術スタックの割合としては、フロント7割、バックエンド2割、インフラ1割くらいですね。

f:id:kazusa_sugeno:20220307215221p:plain
技術スタックの割合

―仕事の日の平均的なスケジュールを教えてください

(Googleカレンダーの空いている日付に予定を入力してもらいました!)

f:id:kazusa_sugeno:20220307220304p:plain
平均的な1日の予定

―皆残業は少なめですね

大森:リリース前など特別忙しい時でなければ月10時間いくかいかないかくらいですね。今月はほぼ残業なしです。

―仕事の進め方で言うと、朝はタスクチェックから始める感じですね。

岩下:自分は、退勤後にSlackで議論が進んでる時があるので、そのチェックとかも含んでいますね。特にメンションが付いていなくても、関係ありそうな話題であれば一通り目は通します。

―そのあとは私以外は朝会やデイリーのミーティングがあるんですね。

岩下:あ、朝会ないんですね。

―チームが小規模なこともあって、状況がある程度把握できるというのはあるのかなと思います。朝会ではどんなことをしてますか?

大森:メンバーそれぞれ今日抱えているタスクを整理したり、問題があれば共有したりといった感じです。あと、持ち回りで話題を提供して雑談の場を作ったりしていますね。

―そのあとは、皆13時ごろまで実装して、お昼休憩と。生活リズムが大体同じなのは、新卒メンバーが去年までほぼ毎日出社していた影響がありそうですね(笑)

岩下:名残がありますね(笑)

―メディアドゥはフレックスタイム制ですけど、極端に早くしたり遅くしたりということはあまりなさそうですね。

安村:日によって1時間くらい早めることはあるけど、大体こんな感じですね。

大森:1日の流れがルーチン化してきた気はします。

―安村君のドメイン知識を貯める会とかイーサリアム勉強会とか気になりますね。

安村:これは岩下君も一緒に参加しているんですが、週1日1時間、Solidity*1という言語の勉強会をしています。主な目的は、スマートコントラクト*2という仕組みについての理解を深めることです。

大森:それいいですね。大学の時研究室で、CryptoZombiesというSolidityでスマートコントラクトを実装するチュートリアルで勉強した覚えがあります。

岩下:CryptoZombiesはドメイン知識を貯める会の方で触りましたね。この会はNFTやブロックチェーンを利用したサービスを実際に触ってみる機会を設けるために行われていて、他にも有名なNFTマーケットのOpenSeaを見ました。

―私と大森、二俣も社内輪読会でDDDに関する勉強をしていたけど、社内で知識を深めあったり共有できたりできるのはいい文化ですよね。

―配属後経験した一番大きな仕事や一番成長に繋がった仕事は何ですか?

二俣:リニューアル中の電子書籍流通システム「DB4」の大きな機能2つの画面設計から実装までを一気通貫して行ったことが大きな仕事だったと思います。

―大きな機能というと、メニューから選んで開く画面全体の設計から実装を2画面分といったイメージで合っていますか?

二俣:そうですね。そのようなイメージです。

―かなり実装が多そうですね。どんなところが難しかったですか?

二俣:単純に実装量が多いことが大変だったというよりかは、多い実装の中で使いまわせる部分を作るために、共通コンポーネント化することが難しかったです。具体的には、そもそもどの部分を共通化するのかを選定したり、コンポーネントのインアウトを考えるといった点が難しかったですね。

―実装の難しさが際立っていたんですね。そもそものデザインであったり、ビジネス要件の調整などはどうでしたか?

二俣:私がビジネスサイドとのやりとりで、主に担当したのは画面モックの説明ですね。実際に作ったモックを見せながら、どういう動作をするのかの認識合わせを行ったりしました。

―実装だけでなく、ビジネスサイドとの要件固めなども担当したんですね。安村君はどうですか?

安村:最近だと、FanTopの新規ユーザー登録画面の実装が大きな仕事でした。デザインは既に決まっていたのですが、そのデザインとロジックの実装含めて1ページ全て任せてもらえました。

―皆画面1ページ全体くらいの粒度で仕事を任されているんですね。どんなところが難しかったですか?

安村:FanTopではBloctoというウォレットを使用しているのですが、それぞれが独立したサービスなので、登録状態やウォレット作成状態の管理が複雑化してしまう点が難しかったです。例えば、Bloctoの登録はしていてFanTopでは登録していなかったりといった状態がありえるため、その管理を1ページに工夫して収めるのは大変でした。

f:id:mdtechdo:20220308162916p:plain
FanTopの新規ユーザー登録画面
安村:あとは、基本的な仕様はビジネスサイドで固めてくれているのですが、どうしても実装レベルに落とし込んでいくと考慮しないといけない細かい問題が浮かんでくるので、そういったところは自分から仕様を提案したりしてうまくコミュニケーションを取れたかなと思っています。

―細かい仕様でも合意形成は大切ですよね。岩下君はどうでしたか?

岩下:フロントの実装は細かいタスクが多いので、粒度で言うとステージング環境のインフラ構築を行ったことが一番大きかったと思います。インフラ設計自体はできていたのですが、ポリシーや環境変数の設定など細かい点はできていなかったので、そういった部分の詰めを一環境丸々行いました。

岩下:ただ、一番成長を実感できたのは外部向け勉強会用の登壇資料作成です。FanTopの勉強会で「FanTopはどのように動いているのか」という内容で登壇したのですが、どのように動いているのか理解するために、リポジトリの全てのコードを読みました。

―1つのサービスのリポジトリ全部というと、かなりのコード量ですよね。全て理解できましたか?

岩下:細かい部分の理解はまだですが、一応全て読んで、サービスの全体像を理解することができました。特にブロックチェーンの部分はそれまでなんとなくしか理解していなかったのですが、そういった曖昧な理解を潰せたのは良かったです。

―すごいですね。コードリーディングというと、大森君も研修で行っていましたよね?

大森:そうですね。自分は配属されたタイミングでコードリーディングの時間をしっかりもらっていて、1か月かけてバックエンドのリポジトリを全て読みました。例えばOAuthといった初めて見る技術があり、ハマるポイントもありましたがそういったことを乗り越えてキャッチアップできたという感じです。

―なるほど、コードリーディングで成長できたという意見が多いんですね。

―学生のころやっておけばよかったと思うことはなんですか?

大森:技術的なことは入社してからのキャッチアップでなんとかなったので、逆に仕事以外のこと、例えばゲーム以外の趣味を作っておけば良かったなと後悔しています。社会人になると、思っていた以上に可処分時間が少なくて、新しい趣味を始めにくく感じます。

―確かに、何か仕事以外の熱中できる物があるとリフレッシュもしやすくなるので、趣味は多いに越したことはないですよね。

安村:自分も勉強は入社してからでどうにかなったので、学生のうちならではのことをやっておけば良かったなと思います。

―入社前、当時のマネージャーに「何か勉強しておいたほうがいいことありますか?」と聞いたら同じことを言われて、その時は安心させるために言ってくれているのかなと思っていました。今になってみると本当でしたよね。

岩下:これに関しては全員一致の見解ですね。

―最後に来期の目標を教えてください

大森:今期はビジネスサイドとのコミュニケーションがあまり取れていなかったので、そこをしっかり行ってエンドユーザーが求めているものを実装に反映させたいです。要件がすでに固まっている開発だとしても、なぜその開発をするのかという背景を理解することで、より要望に近いものを実装できればと考えています。

岩下:もう一度LTや勉強会などで登壇したいです。発表資料を作ることで大きく成長できたという実感があったのですが、これが思っていた以上で少し自分でびっくりしたところがありました(笑)。なので、機会があればまた挑戦したいなと思っています。

安村:Googleアナリティクスのデータを基にした、ユーザー目線でのプロダクト開発を行いたいです。マネージャーもtoCのサービスではユーザーを第1に考えないといけないとおっしゃっていて、まずはユーザーの行動データを取得する基盤作りから始めたいです。データ分析は元々自分の興味分野でもあるので、もちろん仕事ですからどこまでやらせてもらえるかわからないですけど、できる範囲で頑張りたいです。

二俣:去年の7月ごろから半年以上開発を行って来ましたが、開発だけしているとナレッジが溜まる一方で整備できていないなと感じました。なので、そのナレッジを新しく入るメンバーやチームに対して共有できるようにドキュメント化したり、うまく説明できるように自分でもよく理解できたらと考えています。

おわりに

この1年自分自身の成長も感じていましたが、同期の皆が各々成長していてとても嬉しかったです。メディアドゥの社是は「成長と可能性」で、その意味は「仲間を認め、尊敬し、その成長と可能性を喜び合うこと」です。お互いの成長を認め合える同期と一緒にこれからも成長していきたいです!同期っていいですよね!

採用情報はこちらから↓↓↓↓↓

recruit.mediado.jp

*1:Ethereum内で動作するスマートコントラクトの実装用言語

*2:ブロックチェーン上で実行されるコードとしての合意形成の仕組み