エンジニアサマーインターンシップ2023を開催しました!

--

0. はじめに

こんにちは!Finatextエンジニアの小林です。Finatextグループでは現在新卒採用を強化しており、1~3年目の社員が中心となって日々さまざまな施策を企画・実施しています。

今回はその中でも目玉施策である、サマーインターンシップについて紹介します。エンジニア就職を考えている学生の皆さんは、ぜひ今後の参考にしてください!

なお、インターンプログラムの内容は、あくまで今年度のものとなります。今後変わることがありますので、あらかじめご了承ください。

1. 募集・選考

まず、選考についてです。以下の実際の募集ページと合わせてお読みください。

Finatextグループのエンジニアインターンは、ソフトウェアコースとデータサイエンティストコースに分かれています。新卒向け募集職種でも同じ分け方をしており、お好きな方をお選びいただけます。

今回の選考はコーディング課題を用いて行いました。実際のインターンプログラムを想定した実践的な内容となっており、課題に取り組みながら少しだけインターンの雰囲気が感じられたかと思います。

今年の選考スケジュールは以下の通りでした。

  • 6/23 募集開始、選考課題配布
  • 7/16 課題提出一次締め切り
  • 8/13 課題提出二次締め切り

選考を経て、最終的にソフトウェアコースに6名、データサイエンティストコースに4名の方が参加されました。なお、課題の提出状況によっては二次締め切りが無い場合も十分ありえますので、ぜひお早めの提出をお願いいたします。

2. 概要・スケジュール

いよいよプログラムの詳しい内容について紹介していきます。まずは、コース共通の内容についてです!

今年度のサマーインターンは、全5日にわたり開催しました。簡単なオリエンテーションの後、初日から早速開発に入り、合間に社員やインターン生同士のランチで交流を深め、最終日には社員の前で成果をプレゼンテーションしていただきます。

CTO/CISOの田島による技術スタック紹介

オリエンテーションでは、Finatextホールディングス代表の林による会社紹介や、CTO/CISO田島による技術スタック紹介も行われます。「もし自分がFinatextグループで、エンジニアとして働くとしたら……?」というイメージを膨らませるきっかけにしていただければと思います。

さて、ここからは各コースでどのような開発を行っていたのかを紹介します!

3. ソフトウェアコース

3–1. 概要

ソフトウェアコースでは、Goとアマゾン ウェブ サービス(AWS)が提供するサービス(以降、AWSサービス)を使って開発を行うこと、開発したサービスを実際に稼働させることを目的としました。関数レベルの設計からインフラストラクチャの設計、機能実装・デプロイまで、ソフトウェア開発を一気通貫で体験できるプログラムになっています。

昨年までは参加者全員が一つのテーマに取り込んでいたのですが、今年はそれを一新し、

  1. いくつかの開発テーマを用意して、好きなものを選んでもらう
  2. 同じテーマを選んだ人とペアで開発を行う

という形式をとりました。

以下が、今回の参加者6名のチーム編成とテーマです。

  1. マーケティングメールチーム「Amazon SESを利用してマーケティングメールを送信してみよう」
  2. 認証基盤チーム「既存の認証機能をCognitoに乗り換えてみよう」
  3. push通知チーム「push通知配信基盤を作ってみよう」

これらは私たちが普段の業務で行っている開発と密接に関係しているもので、非常に実践的な業務体験を得られるようになっています!

3–2. 開発の様子

マーケティングメールチーム

マーケティングメールチームには、事前に用意されたテンプレートや送信者情報をもとに、コマンドベースでメール送信ができるアプリケーションを開発してもらいました。テンプレートをS3から、送信対象者をDynamoDBから取得し、メール送信はもちろんSESを利用して行います。

インターン生が作成した、メール配信システムのAWS構成図

このチームはコア機能の実装を余裕を持って終わらせることができたので、SPFなどの設定による送信レピュテーションの改善や、クリーンアーキテクチャを意識した実装方法の勉強などもしていました。

認証基盤チーム

認証基盤チームには、ユーザーの認証処理を自前で実装しているサービスを事前に用意し、その処理をAWSが提供する認証基盤「AWS Cognito」に乗り換える開発を行っていただきました。今回の対象サービスは、サインアップ時にユーザー名とパスワードをAmazon Auroraに保存し、サインイン時にそれらを照合することで認証を行っています。Cognitoを用いることで、MFA認証やサインアップ時のEメール検証といった認証時のステップを手軽に実装できる点に着目し、よりセキュアな環境を作成することにフォーカスしたプログラムとなっています。

インターン生が作成したAWS構成図。上部が認証部分。

このチームでは、認証機能を変更するにあたり構成を検討した結果、バックエンドだけでなくフロントエンドの改修もかなり必要になりましたが、チーム内で上手く協力して実装を進めていたのが印象的でした。実際の開発でも必要に応じて新しいスキルセットに手を出すことはありますので、臨機応変に学びを深めていくことができる機会だったと思います。

push通知チーム

push通知チームのテーマは、既製のNativeアプリに対してサーバーレスでpush通知を送信する基盤を作成するというものですが、利用するAWSサービスを一切指定せず、インフラ部分の設計を0から行ってもらいました。

結果、このチームは通知の配信の箇所ではFirebaseを利用しましたが、それ以外の部分はAPI Gateway+Lambda+DynamoDBというスタンダードなサーバーレスアーキテクチャを採用し、ソフトウェアの価値提供にフォーカスできる開発環境を整えることができました。しっかりとした調査の後に技術選定をしたり、ローカルとデプロイ後とで動作に違いがある中でデバッグを行ったりと、クラウドを用いて開発をする際に意識すべきことを学んでいたのが印象的です。

インターン生が作成した、push通知配信システムのAWS構成図

3–3. 成果発表会

ソフトウェアコースの成果発表会では、Finatextグループの社員に加えてアマゾン ウェブ サービス ジャパン合同会社様からもゲストを招き、技術的なフィードバックをいただきました。Finatextグループでは、ほぼ全てのインフラストラクチャをAWSで構成しており、業務でも日々細やかにサポートをいただいています。そのサポートの一環として、昨年度よりインターンプログラムへのご協力をご依頼しております。

発表会ではかなり突っ込んだコメントもありましたが、AWSサービスそのものに対する理解や、AWSサービスによって実現されている機能の基礎的な理解が深まる貴重な学びの場になっていました。

ソフトウェアコースの成果発表会の様子

3–4. 参加者の感想

プログラム終了後に行ったアンケートでは、参加者全員から非常にポジティブな感想をいただくことができました。特に「チーム開発の形式をとり、メンバーと協力できる体制がよかった」「インフラアーキテクチャの考慮に多くのリソースを割くプログラム構成が勉強になった」という声が多かったです。また、通常業務中の社員と同じ部屋で作業でき、メンターに気軽に質問できる環境だったことも開発の助けになったようです。

私たちとしても、学生エンジニアのリアルな開発に触れられたことは、今後の採用活動で大いに役立つ経験となりました。

4. データサイエンティストコース

データサイエンティストコースは、ナウキャスト データエンジニアの加山が紹介させていただきます。

4–1. 概要

データサイエンティストコースでは、「コロナ前後での消費者属性ごとの消費の変化を捉えよう」というテーマのもと、オルタナティブデータの一つである、クレジットカードの決済データの分析を行いました。

具体的には、以下のようなことを体験していただきました。

  • Snowflake(クラウド上のデータ分析基盤)からSQLを用いてデータを取得
  • PythonとJupyter Notebookを用いたデータ分析
  • 一般にアクセスが難しい貴重なデータに直接触れる

データサイエンティストとしての技術的なスキルだけでなく、データの価値を最大限に引き出すビジネス力も養うことができるプログラムとなっています。

4–2. 開発の様子

今回、4人のインターン生は2人ずつでチームを組み、テーマの選定からデータ分析、資料作成、成果発表まで協力して取り組んでいただきました。

テーマ選定

前半の2日間は、SQLに慣れながらデータの全体像を捉え、仮説を立てて検証しながら分析のテーマを考案しました。ナウキャストのデータエンジニアやメンターも参加して議論を重ねながら、「東京都における居酒屋の業績はコロナ前の水準に回復したか」と「コロナ前後での美容業界の消費の変化」という2つのテーマでそれぞれ分析することになりました。

なお、今回初の試みとしてSnowflake上のデータを分析してもらったのですが、Snowflakeの機能でSQLの結果を簡単にグラフ化できるため、分析結果の確認が非常にスムーズになりインターン生からも好評でした。

データ分析

後半の3日間は、決めたテーマに沿ってより詳細な分析を行いました。作業やデータの可視化はAWSのSageMakerを使用し、Pythonで実装します。

クレジットカードの決済データは、企業の開示情報や公的統計と比べてリアルタイム性に優れ、デモグラフィック(年齢、性別、収入など)分析も可能です。一方で、男女比や年齢別構成比などが実際の人口分布と異なるなど、さまざまなバイアスが存在するため、これらを除去せずに分析してしまうと誤った結論を導いてしまう可能性があります。こうしたバイアスの適切な処理に苦戦する場面もありましたが、データの前処理の大変さや大切さを実感していただけたと思います。

人口動態統計の男女別の人口の分布(1:男性, 2:女性)
クレジットカードユーザーの男女別の分布のイメージ(1:男性, 2:女性)※データはダミーです。

4–3. 成果発表会

成果発表会はオフィスのオープンスペースにて行いました。両チームとも、わずか5日間という短期間でクレジットカードのデータ特性をしっかりと捉えた分析ができていました。質疑応答では、ナウキャストのデータサイエンティストやデータエンジニアから遠慮なくフィードバックさせていただきました。今回の学びを活かし、インターン生の皆さんが今後より一層活躍されることを期待しています。

データサイエンティストコースの成果発表会の様子

4–4. 参加者の感想

参加したインターン生からは、

  • データサイエンティストとして働くことについて具体的なイメージを持つことができた。
  • SQLの書き方にかなり慣れることができた。
  • 分析のための分析ではなく、顧客にとって価値のある分析を常に意識する必要があると感じた。
  • テーマを一から考えることで、データから物事を推測する力を得られた。

などのうれしい感想をいただきました。本物のビッグデータ分析のプロセスを通して、SQLでのデータ取得からPythonを使用した分析まで、より実践的な学びが得られたのではないでしょうか。

開発の合間のランチ。当社エンジニア御用達のカレーをデリバリーしました。

5. さいごに

再び小林です。このように、Finatextグループでは実践型の短期インターンシップを実施しています。

プログラムを通してFinatextグループに興味を持っていただけた方には、そのまま長期インターンや新卒採用の選考に進んでいただくことも可能です。実際、今回のインターンシップがきっかけで長期インターンシップが決まった方もいらっしゃいます!

かくいう私たち、小林と加山も当社のインターンシップを経て新卒入社しました(加山は短期と長期、小林は長期のみ)。これからも参加者の目線で内容をブラッシュアップしていきますので、ぜひ次回以降の開催をお楽しみに!

▼インターンシップ情報は公式Xアカウントでチェック!

▼Finatext の開発チームについてもっと知りたい方はこちら!

--

--