🎯

Fairy Devicesにインターンで参加しました

に公開

H1rono_Kと申します。学生です。

経緯

業務でRustを採用している会社にインターンで参加できないものかと思ってFairy Devices株式会社に応募したところ3ヶ月間 参加できることになりました。この記事は、3ヶ月のインターンを通してのまとめになります。

やったこと

3ヶ月の期間中、前半はTHINKLETを用いた新規アプリ開発を行い、後半は進行中のプロダクト開発に参加しました。

前半: THINKLETを用いたアプリ開発

THINKLETは首に装着するウェアラブルデバイスで、その中にはAndroidベースのOSが搭載されています。インターンの前半では、THINKLET上で動くAndroidアプリの開発に挑戦しました。

僕はTHINKLET以前にAndroid StudioもKotlinも初めてでしたが、THINKLETアプリ開発スタートガイドのおかげですんなり動かすことができました。他にも、アプリ開発の中で以下の技術に触れました。

  • Tauri
  • JNI
  • OpenCV
  • YOLO + TensorFlow
  • mimi (with Ktor)
  • Dlib

色々と試した結果、最終的には以下のアプリが、デモを行える程度に出来上がりました。

  • YOLO + TensorFlowでTHINKLETのカメラに映った物体を認識し、mimiの音声合成を用いて読み上げるアプリ
    デモ:
  • THINKLETのカメラに映った顔を認識・分類し、「今日はこの人と何回会った」のようにまとめるアプリ
    デモ: ナイスガイの顔が分類されている

前述の通りKotlinは初めてでしたが、なかなか面白い言語ですね。structured concurrencyはまた新しい体験でした。

後半: プロダクト開発に参加

インターンの後半では進行中のプロダクト開発に参加し、機能実装・パフォーマンス改善・リファクタリングと、様々な変更を入れました。具体的には以下のような変更を入れました。

  • 機能実装: アプリにアップロードされた物の一覧を取得するWeb APIにフィルターを追加(Web API変更、クエリ修正、UIにボタンを追加)
  • パフォーマンス改善: I/Oの並列化、メモリ使用量の削減など
  • リファクタリング: CIで実行するClippyのオプションを修正

自分のRust力でも現場で十分に戦えそうだとわかったのは大きな収穫でした。

感想

3ヶ月で色々と新鮮な経験ができて楽しかったです。FairyDevicesには様々なバックグラウンドの人がいて、刺激的な会話ができました。

その一方で、業務でのアプリ開発の大変さというものも実感しました。自分が作りたいものを作るのではなく、他の人に使ってもらえるアプリを作る必要があります。また、一度動き出したものを数(十)年に渡って保守し、機能追加を繰り返すことの大変さも肌で感じました。Real World業務Rustは想像よりも大変でした。

以上、3ヶ月のインターン体験記でした!

フェアリーデバイセズ公式

Discussion