togami2864のゴミ箱

メルペイで2ヶ月間フロントエンドエンジニアのインターンをしてきた

2021-10-07

画像は著者近影

8/2から9/30日までの2ヶ月間メルペイでフロントエンドポジションでインターンをしました。
受け入れが2年ぶりだったらしい && フロントエンドポジションに関して参加記録がネット上に少ないように感じたので残しておきます。
ちなみにちょっと前に書いたサイボウズへのインターンは期間中に1週間お休みもらって行きました。



結果から言うと

  • Cypressを使ったインテグレーションテストの追加
  • リグレッションテストの修正
  • utilsのユニットテスト追加
  • 新機能の追加
  • 小さいのもろもろ

と色々できました。

加えて個人的なことでは

  • 極めて自由度の高いフルフレックス
  • 最終日に<<<<<<Freedomの民>>>>>>に初めてリアルで遭遇する
  • 0円自販機
  • 六本木ヒルズのエレベーターに30分以上振り回される

など色々ありました。

9月の後半、学校が始まりバタバタしていたためあまり作業ができなかったこと、最後のプルリクのCIが謎の全落ちのままにしてきたこと以外はとても充実していました。

インターン先としても強くお勧めします。
組織として思ってたよりも5倍くらいでかく、各ポジションごとにチームもたくさんあります。
解決を待っている課題が大量にまだ眠っていると思うので機会があれば挑戦してみてください。

動機

カルチャー的な面が僕の考えの方向性と一致していたので前から気になっていました。が上述の通り案外Frontendポジションのインターンに関しての情報が少なかったので逆求人で直接指名して色々聞いた記憶があります。

応募

レジュメとフォーム記載を少々。レジュメは日本語でも英語でも可。前にもちょろっと書きましたが、zetyというソフトを使って作っていたら日本語フォントとの相性が悪すぎてあんまり文字が入らないのにスカスカな物になりました。ので英語で書いて送りました。

フロー

  • コーディングテスト

僕の場合atcoderでいうA~Cでした。(筆者は灰色なのであんまり当てにしないでね)
全問通せること前提だった記憶があります。

  • 面接2回(エンジニア・マネージャー)

1回目は技術中心
2回目はカルチャー的なこと
公式に載ってる通りです

技術スタック

フロントはNuxt.js + TypeScriptで構成されていました。
テスティングに上述の通りCypressやjestを使っていました。

メインタスク

新規に実装された機能/ページ・修正箇所に対するCypressによるインテグレーションテストの追加をメインにやっていました。
逐次なぜこのテストが必要なのかも学習していきました。

1: 変更や修正に対する安心を手に入れるため
小さな変更でも自分が思いも寄らない部分に影響が出ることがありますが、それをCIが勝手に特定してくれます。
大きな変更(ex: フレームワークのマイグレーション)に対しても直感的にどこか壊れるだろうなとはわかると思いますが、具体的に"どこの・どの機能が・どのようなエラーで"壊れているのか、手作業よりかは特定を容易にできます。

2: QAフェーズでのバグを極力防ぐ
多くの場合新規に開発したもののQAフェーズ中は次の開発が進んでいます。QAでブロッカーが出て差し戻しがあると、新規開発の時間をその修正に割かなくてはならなくなります。その分実装の時間が減る-> また次のQAでバグが出る ->・・・と悪循環になる恐れがあるので、極力避けたいです。

難しかった部分

1: Cypressの動作が謎
結構動作が独特でかなり困りました。そのため、次のようなアプローチを取りました。

  • 50% hard work💪

シンプルですが、ドキュメントを読んだり、他人の書いたコードを読んだりして進めていきました。

  • 50% ツールの動きを観察する。

ドキュメントも確かに大事ですが、ちょっと着眼点を変えて実機がどういうフローで動いているのか(renderやmockのタイミング)を再度じっくりみて見るのも有効でした。
自ずと今のコード動かないよなーとわかる時もあります(わからない時もあります。)

2: ドメイン知識
途中まで結構苦労しました。こちらもシンプルですが、素直にメンターに助けを求めることで対策しました。
ドメインに関して、社内・プロダクト独自なものは確かにググっても出てきませんが、知っている人は必ずいるはずので、悩みすぎず速攻で識者に聞くのが一番効率が良さそうだと考えました。


環境に関して

もちろん諸先輩方が書いてきたようにValueを体現したようなチーム・人がありましたし、対外的に発表している通りだなという感想を抱きました。
僕がそれ以外で環境に対してよかったと思っているのが"些細なことでも報告ができる雰囲気言われずともある"ことでした。

今まで"じょぶほっぱー(笑)"をしてきた中で、「新参者だからこそ感じる違和感や疑問もどんどん組織に還元していくべきだ」という持論(というか色んな人の話を聞いて形成されたもの?)があります。
当初問題に思っていることでも時間が経つにつれて、薄れていき、単なるお約束みたいになっていき放置されることが往々に存在するからです。時間というのは良くも悪くも感覚を薄れさせます。
もしかしたら些細なことだと思っていても、それが仕様がこんがらがる予兆であったり、古くなっている証拠であったりするかもしれません。

些細なことでも報告するのが是であるという空気が言われずともあったのはとても助かりましたし、ベストマッチでした。

終わりに

ほとんどリモートではありましたが、関わっていただいた多くの方には本当にお世話になりました!!ありがとうございました🙇