LoginSignup
14
3

More than 1 year has passed since last update.

Supership株式会社のインターンで検索基盤を作ってデプロイした話

Last updated at Posted at 2022-10-26

初めに

2022年の9/2~9/15で開催されていた、Supership株式会社のエンジニアサマーインターンに参加してきたので、体験記を残したいと思います。

Supershipではサマーインターンの実施自体は初らしく、
最初のインターン生として、敷かれていないレールを歩いていく感じが最高に楽しかったです!

募集されていたコースは2つあり、私は検索コースに参加しました。

環境

技術的な要素とそうでない部分に分けて、10日間どんな感じだったかの雰囲気を整理します。

技術

  • バックエンド
    • FastAPI (Pythonの軽量フレームワーク)
    • Elasticsearch
  • フロント
    • React
  • インフラ
    • docker compose
    • Google Cloud
  • バージョン管理等その他
    • git
    • Gatling (scalaで負荷テスト)

非技術

  • 4人チーム(学生3人、メンター1人)
  • プロジェクト管理自由!
  • 技術選定自由!
  • 月曜の午前中休み!(有給なので実質週休2.5日!)
  • フルリモート!

こんな感じです。

技術的なところで言うと、インターン期間の課題は決まっていてそれを達成するためであれば自由に選定しても良いとのことだったので、比較的馴染みの深いものの中から開発スピードとレスポンスタイムを意識して選定しました。

技術以外のところだと、プロジェクト管理や1日のスケジューリングがほぼ完全自由でやらせてもらえたので、私のチームはGithubのカンバンを用いてタスク管理をしていました。開発中もVScodeのlive share繋いで議論しながら開発できたので、フルリモートの恩恵を最大限受けながらスピーディーに開発できた気がします!

具体的に取り組んだこと

最初の1日は事業説明やアイスブレイク、環境構築で終わり、最後の1日は最終発表と打ち上げだったので、実質8日間の開発期間で行ったことになります!

ちなみに開発物の用件としては、以下のような検索サジェストシステムを作る。と言うものでした。

  • 全年齢が使用できる
  • 1秒間に30リクエストを安定して処理できる

検索サジェストってのはこんな感じの画像のやつです。
スクリーンショット 2022-10-09 16.29.52.png

「すし」とひらがなで打つと、検索欄に補助が出ているのが見えますが、
ここの補助をする部分を作成しろと言うものでした。

前半戦

前半戦では、手元で動くものをまず作ることを目的としていました。

チームメンバーの協力もあり、

  • ElasticSearchに生ログを入れるバッチ処理
  • サジェスト用のAPI
  • APIの結果を表示するフロント
  • Google Cloudデプロイ

までを達成することができました。

検索用サジェストAPIの用件として、レスポンスタイムやアダルトワードの削除があったので、
本当の勝負はここから!と言うところで前半戦の1週間が終わりました。

後半戦

前半戦のスピード感を保ちつつも、中間発表でフィードバックいただいたところを中心に、以下のことに取り組みました。

  • アダルトワードの除去
  • 検索ワードの前方一致
  • 読み検索対応
  • ログの正規化
  • レスポンスタイムの計測
  • 同時リクエストによる負荷テスト
  • 検索ログの保存
  • ログ圧縮
  • 保存したログを定期的にGoogle Cloud Storageに上げる定期処理

太字部分は、特に力を入れた部分です。

制作物の目標として、
「全年齢が使用できる検索サジェストシステム」

があったので、アダルトワードの除去を優先順位高く気を遣ったところでもありました。

また、上の画像で紹介した部分でもありますが、ひらがなの「すし」と言う検索クエリに対して、漢字やカタカナのレコメンドがあったかと思います。

このような仕様(というか、ユーザーが潜在的に使いやすいと思えるような機能)を実現するためにも多くの力を注ぎました。

面白み

上記の前半戦、後半戦のタスクを全てチームメンバーと話し合って決められたことです。

いわゆる与えられたタスクとしてではなく、

自ら考えたタスクに全力コミットして、それに対して評価をいただけるのがSupershipでのインターンの醍醐味であると感じました!

もちろん完全放置というわけではなく、要所要所でタスクを前に進めるための助言も多くもらえました。

インターン期間中はチーム外の定例MTGにも参加させていただき、自分が会社に入った際、どのような働きをするのだろうかという部分に関しても妄想することができました!

最後に

個人的に今回のサマーインターンでは、「会社の胸を借りた自分の実力試し」、みたいな色があったように感じました。

実際に今までの自分の力を注ぎ込んだ2週間だったと感じましたし、全力でやったからこそつぎ込んだ熱量分多くのことを学ぶことができました。

もう一度同じ夏が来たとしても、ぜひまた参加させていただきたいインターンだと思いました!

面倒見てくださったメンターの方、その他関わってくださった社員の皆様、本当にありがとうございました!

14
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
14
3