Helpfeelインターンを終えて
夏休みを利用し、7月から1ヶ月ほどHelpfeelでインターンしたので、その振り返り記事を書こうと思います。
目次
1. 自己紹介
僕は機械学習を用いたサービス作りが趣味の大学生です。UCSCというカリフォルニアにある大学に通っており、夏休み期間中は日本に帰国し、いくつかの企業でインターンをしています。Twitterのアカウントはmasaishi2001、Githubはmasaishiです。画像生成の推論コードをシンプルにしたライブラリのPareDiffusersなどを作っています。
2. Helpfeelとは
スクリーンショット共有ツールのGyazoや、ナレッジ共有サービスのCosense、FAQ検索SaaSのHelpfeelなどを開発している会社です。
僕はHelpfeelチームのインターンをしたのですが、実際に使ってみれば検索精度の良さが実感できますので、以下の導入例サイト一覧から、適当なFAQページを開いて、何回か検索をしてみてください。
導入の実例ライブラリー - Helpfeel
例えばカラオケパセラさんのFAQページで「WiFi」や「ワイファイ」で検索すると「Wi-Fiは使えますか?」がヒットしますし、「イーサネット」という少し意地悪なキーワードで検索しても3つ目にはその記事がヒットします。
3. 研究チームキックオフ
僕はHelpfeelでのインターンとして、通常業務として既存のサービスの開発に参加しました。また、研究業務として機械学習を活用したPoC(Proof of Concept、概念実証)の開発も行いました。そのため、研究チームのキックオフイベントに参加するため、7月1日と2日に京都オフィスへ行きました。
初日には、チームビルディングとして自己紹介を行ったり、Helpfeel関連サービスの説明をしてもらいました。機械学習に関心がある自分としては、Helpfeel AIでどのようにAIを活用しているかを知れたのがよかったです。その後、京都に住む開発部のメンバーも合流して焼き肉に行き、彼らの関わったプロジェクトについての話などが聞けて有益でした。
2日目は開発環境構築などのオンボーディングを行い、現在の課題の共有がありました。そして、それらの課題の解決案についてのアイデア出しなどをチームメンバーと行いましたが、自分とは全然違うスキルセットを持ったエンジニアの意見は大変参考になりました。休憩時間にはApple Vision Proの体験もさせてもらい、その細かいUIについて議論することができ、非常に充実した時間を過ごしました。
4. 通常業務
通常業務では、Generative Writerという、LLMを活用したFAQ生成ウェブサービスの開発に関わりました。
それぞれのタスクの詳細はCosenseに書かれており、改善が必要な画面にはGyazoのペンツールを用いて注釈を加えていました。社内で自分達のプロダクトを、ドッグフーディングとして積極的に使っていたのが印象的でした。
社内のCosenseは多岐にわたる内容が記載されており、非常に興味深いページが多かったです。今年買ってよかったものの紹介から論文の解説まで、多様な記事があり、休憩時間には様々なページを広く読んでいました。特に興味深かったのは他の人の作業ログを通じて、「技術Aは〜〜という問題があったので、技術Bを選んだ」など、Githubでコードを読むだけでは得られない知見を得られたことです。それらを得ることができたのも、今回インターンして良かったことの1つです。
5. 研究業務
研究チームでは週次ミーティングを行っており、毎回、各メンバーが注目しているニュースを共有したり、その週に作ったものを共有したりして非常に有益でした。
僕は、問い合わせの分類に興味をもち、いくつかの実験を行いました。その後、ブラウザ上で問い合わせを分類できるツールを作成し、最終的にはこのプロジェクトに集中して開発を進めました。これらのミーティングで他のチームメンバーからのフィードバックを受けながら開発を進めることができ、非常に良い経験となりました。
Helpfeelは基本的にフルリモートの会社ですが、最後の10日間は京都のオフィスに滞在し、そこで開発作業を行いました。そのため、開発部のメンバーと一緒に昼食や夕食を取る機会が多く、Reactの挙動、個人プロジェクトの開発、RAG技術など、多岐にわたる技術についての話を聞くことができ、非常に勉強になりました。
6. オンデバイス機械学習
問い合わせ分類はブラウザ上で学習と推論を行えるようにしたので、その技術について触れます。
そもそも、オンデバイス機械学習とは、機械学習モデルをデバイス上で直接実行し、モデルの学習や推論を行う技術です。モバイル向けではCore MLやML Kitなどが有名ですが、今回はブラウザ上で学習と推論を行いたかったので、Tensorflow.jsを使うことにしました。
Tensorflow.jsは、Googleが開発しているJavascript用機械学習ライブラリです。デバイス上でデータの学習と推論を行うことで、プライバシーを重視したアプリケーションを作成することができます。また、もう1つのメリットは、機械学習用サーバーのレンタルや運用コストが不要であることも大きな利点です。
社員の方からは必要に応じてAWSなどを利用してもよいと言われてましたが、1つの実験的なウェブアプリケーションにかかる維持コストは低いほうが良いですし、プライバシーを要する問い合わせ分類というタスクに適していたため、Tensorflow.jsを用いてブラウザ上で分類モデルの学習と推論を行いました。
最終的に、週次ミーティングでのアドバイスを受けて、「最初の分類をChatGPTに委ねてから、ユーザーが手直しする」などの、自分では思いつかなかったアイデアを取り入れることで、最初のバージョンに比べると、分類のしやすさが大幅に上がった使いやすいツールに仕上がりました。
7. 最後に
ユーザーが使っているプロダクトの開発に携えたこと、自分で0からツールを作れたことは僕にとって非常に有意義なものでした。特に、社員の皆さんからフィードバックを貰えたこと、Cosenseを通じて多くの知識を得ることができたことは、僕にとって得難い経験になりました。
機械学習を用いたプロダクト開発では、モデルを訓練するだけではなく、そのモデルが解決すべき具体的な問題、必要なデータをどう用意するか、学習プロセス、そしてそれをどのようなUI/UXでユーザーに提供するかという点を総合的に考える必要があります。これらの包括的なプロセスを、様々なサポートを受けながら経験できたことは、僕にとって非常に貴重な学びとなりました。