マネーフォワードのサマーインターンに参加しました!
どうもこんにちは、現在あくあたんとよろしくやっているマンゴーさんです。
8月の下旬の2週間で、株式会社マネーフォワードさんのサマーインターンに参加してきましたので、やったことや気づいたこと、考えたことについて書いていければと思います。
インターンに参加するまで
まず「マネーフォワード」を選んだ理由について少し書いておきたいと思います。
1つ目は「技術系勉強会でお会いしたエンジニアの方から『オープンな会社』という話を聞いたこと」です。
私の会社選びの観点の1つに「技術以外のことも楽しめる、話せる、コミュニケーションが盛んな会社」というものがあります。
仕事の内容や面白さも重要ですが、その他の仕事に関わらない雑談を多くできる場所のほうが好きで、居たいと思えることから、そうした観点を重視しています。
2つ目は「京都にオフィスがある」ということです。
私はいま現在京都に住んでいて、いろいろ思うところもあり、大学を卒業後もしばらくは京都で暮らそうと考えています。
それを前提に、出社して対面での交流をしたいと考えると、京都にオフィスを持つマネーフォワードは良い選択肢の1つでした。
選んだ理由はこの程度にしておきます。インターンの選考は、通常のルートで受けたので、人事面接とコーディング面接の2つで行いました。
人事面接では、研究室のキャラクターである「あくあたん」のことや、ロボコンでの失敗談や技術開発について質問してもらいました。人事の方が失敗談をポジティブに受け入れてくださったことや、「あくあたん」に興味を持っていただけたことが嬉しかった記憶があります。
コーディング面接では、かんたんなアルゴリズムや仕様設計などが見られていたように思います。
選考を通過したあとは、インターン生同士の顔合わせや面談などが複数回ありました。この間に、インターンの目標設定や、タスクの難易度の調整など、手厚くサポートがありました。
インターンに参加した記録
ここからはインターンでやったことについて書いていきたいと思います。
インターン中は、ちょうどオフィスが近いことや、昼食の補助があることから、ほぼ毎日出勤して、昼食時間に雑談したりしていました。
所属チームとタスクの話
関西拠点で開発をしている「クラウド会計Plus」の開発チームに入っていました。開発言語はRubyとTypeScriptで、スクラム開発をしています。
その中で行ったタスクは「新規開発中のフロントエンドで、ヘルプページのリンク先を動的に設定できる仕組みを利用できるようにする」というものでした。
まず機能自体がマイナーで、古いフロントエンドで開発のも3年くらい前と、仕様を皆がよく知らない仕組みだったため、まずは仕様をコードから読み取ったり、どのように運用されているかを聞く・調べたりするところから始めました。
(同時並行で環境構築や、社内ドキュメントを読み漁ったりもしていました)
最終的に、仕様を決めるまでで3〜4日程度使ったように思います。運用がどうされているかを把握するのに時間が掛かったり、運用時に事故らないような仕様を決める必要があったことが主な難しいポイントでした。
何があっても「事故らない」仕様、とはいきませんでしたが、及第点くらいの仕様を決めたので、そこから実装をしていきました。
実装において困ったのは、まず私がRubyを触ったことがないというところでした。ここは、昔さわっていたPerlの知識をうまく掘り起こしてあげることでなんとかできたような気がします。
次に困ったところとしては、フロントエンドのテストでした。フロントエンドのテストは、Reactによるコンポーネントに対して、JSDOMを用いてDOMを生成して、比較する形で行われています(@testing-library/jest-dom
)。
ここに、今回作成したAPIを呼び出すコンポーネントについてのテストを加えるのですが、加える場所がいままであまりテストされていなかったコンポーネントであったため、エラーが起きていました。
具体的には、SVG形式の画像をコンポーネントとして読み込む部分でエラーが起きていました。これを調べていくと、Next.jsが設定するmoduleNameMapper
と、内部で使っていたSVGファイル向けのmapperが競合していたことがわかりました。
ですので、それを上書きすることで対処しました。
と、このようにいろいろな困りごとに直面しつつも、無事に各種実装を行い、コードレビューに進めることができました。
コードレビューでは、設計の意図のような質問からRuby/TSのプラクティスまで指摘をもらい、知識を得る点と、考えたことをアウトプットする点で良い機会でした。
チームの話(?)
マネーフォワードで実務をしていく中で、毎日のデイリースクラムや、各種振り返りの会議にも参加していました。
会社として英語化を進めている中で、会議に参加するのは最初緊張していましたが、数回こなすと慣れたのでよかったです。
毎日の会議のような短いものだけではなく、スプリントで取り組むタスクの仕様を決める会議に参加できたのはいい経験でした。
とくに、そうした会議では、シニアなエンジニアの方が議論しているのを聞くことができたので、その思考に少しでも迫れたかなと思います。
また、途中からモブプログラミングっぽくなっていたときは、いい感じに参戦していました。たのしかった〜
タスク以外の話
インターン中は、ほぼ毎日オフィスに出社していました(メンターさんが大変そうでした、ありがとうございます)。
出社した際は、昼食を社員の方といっしょに食べに行っていました。技術についての話や、趣味について、大学でやっていることや、ビジネス職を含めた他の部署の話、東京オフィスの話など、多くの話を聞くことができ、楽しい機会でした。
また、業務時間中にも、人事・エンジニアの方との1on1を行っていました。人事の方がアレンジメントしてくださり、社内事情の把握や、自分の不安点を解消する機会として有用でした。
たとえば、インフラ系など、今回のチームとは異なるチームとの交流や、PO(Product Owner)さんの言語化スキルや思考法などを知ることができました。
また、スキルのうち、自分自身が持っているものと、持ってないもの・足りていないものを把握するという点でも有用でした。
他にも、自分が就活・社会人をやっていく中で不安に思っている事柄への解決策なども少し得ることができたかなと思っています。
加えて行っていたことに、社内の記事(Kibelaで公開されていて、6桁件ある)を読み漁ることもしていました。社内の実情や歴史を見ることができ、また今後の会社の課題などを知ることができました。
こうしたインターンにおける手厚さや、得られる情報の多さは、マネーフォワードという会社を知る上でタスク自体よりもずっと大きな価値があったと思っています。
振り返り
インターン期間は2週間とあまり長いものではありませんでしたが、自分のソフトウェア開発者としての位置づけや、働き方について具体的なイメージは十分持つことができたかなと思います。
また、丁寧なサポートもあり、就活を進める上での安心感や自信にも繋がりました。インターンに関してサポートしてくださった皆様、ありがとうございました!
Discussion