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