レトリバインターン参加報告

経緯

サマーインターンで2ヶ月間,株式会社レトリバ様(以下敬称を略させていただきます)にお邪魔し,製品開発の職業体験をさせていただいたのでその記録です.

retrieva.jp

 

想定する読者

  • 来年以降インターン時期になるNLPer
  • レトリバに興味がある人
  • レトリバの人

 

 

選考

インターンに参加しようと思ったきっかけ

弊学ではインターン参加が修士の単位として認められています.毎年多くの M1 が夏休みに 2週間~2ヶ月間 のインターンに参加します.私も夏休みにどこかのインターンに参加することにしておりました.

インターンに参加するには(基本的に)受け入れ機関の審査に合格する必要があります.選考方法は受け入れ機関によって様々ですが,私が受けたところは大体 書類選考→ プログラミング課題 → 面接 の流れだったように思います.プログラミング課題はそれこそ機関によって様々で,時間内に解くものもあれば時間は自由でしっかり作り込むようなものもありました.ただし時間制限がないと言っても学業に差し支えるといけないので,そこは課題を出す側も解く側も気をつけます.

レトリバにしたきっかけ

どうせ行くならしっかりと得られるもののあるインターンに参加したいと思い,1ヶ月以上の長期のインターンを中心に選びました.また,苦学生なのでちゃんとお給料がでるところっていうのも大事です.インターン参加によって普段のバイトをお休みするので,最低でもその分は稼げるところじゃないと生活できません.

このような基準でいくつかのインターンを選び,応募しました.その中でも自然言語処理を前面に推しているレトリバインターンはトップクラスで行きたいものでした.人気が予想され,また枠も少ないので落ちる覚悟でした.なので他のインターン選考も結構ちゃんと進めていました.

結果,一度は落ちたもののご縁あって開発のインターンに参加させていただけることになりました. 

レトリバインターンについて少し詳しく

レトリバは例年,研究のインターンを1名程度受け入れています.今年からはインターン枠を少し増やして,研究2名,開発1名という枠でした.狭き門...

レトリバのインターン選考は プログラミング課題→面接 だったかと思います.プログラミング課題は研究も開発も共通です.時間制限がないタイプの課題だったので私なりに結構しっかり作りました.プログラミング技能そのもので私が他の人(特に競プロer)に勝てる気は全くしなかったので,テストや README をちゃんと書くことで差別化を図りました.ちょうどその時期テストにハマっていたんですよ〜.テスト楽しい.テスト通ると嬉しい.

プログラミング課題で通ると面接に進みます.面接は研究開発別々で,どちらも応募している場合はそれぞれ1回ずつあります.遠方にお住いの際はリモート面接OKでした.私はリモートでさせていただきました.大阪-東京 の往復で丸一日潰れてしまうので,リモートOKは助かりました.

面接が終わるとしばらくしてから,具体的には他の候補者の面接が全て終了してから,合否が返ってきます.実は私は一度落ちています.3枠が埋まり,4番手だったらしいです.だったのですが,面接をしていただいた社員さん(インターン期間中のメンターさん)が私のコードの雰囲気を気に入ってくださったようで,私をとりたいと思ってくれていたらしいです.そしてその思いが社長に届いたようで,開発の枠を一つ増やすという取り計らいをしてくださったらしいです.嬉しい.

 

インターンでやったこと

Answer Finder (レトリバが提供する FAQ 検索システム)の改善

Answer Finder ユーザからいくつかの改善してほしい事項が上がっており,これの原因究明および対応をさせていただきました.以下ざっくりと時系列でやったことをまとめます.

1~2 週目

Answer Finder やその周辺のコンポーネントの開発環境構築や修正の反映方法の確立をしました.コンパイル言語がまず初めてだったので,ビルドでこけた時にめっちゃ詰まりました.メンターさんにビルドとはなんぞやを教わりました.院試勉強で知識としては知っていたけれど,実際のコマンドとリンクしていなかった...

3~4週目

課題の原因究明と対応を2, 3件ぶん行いました.めっちゃC++読んだ.いじるコード量はそんなに多くなかったので,使い慣れている PyCharm で作業していました.それをみた CRO が不思議な顔をしていたのが印象に残っています.わかる.

5週目

中間報告資料作成とか発表練習とか発表本番とかをしました.

Answer Fidner の裏で回っているシステムのリファクタリング

中間報告までで最初に用意されていた課題を全て解決してしまいました.残りの期間は自由にしていいということだったので,Answer Finder の裏で回っているシステムのリファクタリングを強く希望しました.コードをみていてちょくちょく気になったところがあったんですよ.

リファクタリングは『レガシーコード改善ガイド』という本にしたがって進めました.大まかにはまずテストを作って,その上でコードの編集を行うという手順です.また,コードを読みやすく編集する上では『リーダブルコード』を参考にしました.どちらも良本です.

6週目

リファクタリングをする上での目標を定めました.現在は使われていない機能の切り離しを目標とすることにしました.

7週目

テスト作成をしました.テストが圧倒的に足りていなかったので,足りていないところの整備です.ただ時間がなかったのでひとまず外から見たときの挙動がざっと変わらないようにメソッドを絞って単体テストすることにしました.

8週目

リファクタリングをしました.インデントやタブのスタイルの統一という軽いところから初めて,リーダブルなコードになるようにこまごまと編集しました.機能の切り離しまで到達できました.実は機能の切り離しはすでになされていたなんて言えない

並行して最終報告資料作成なども行いました.最終報告は社外に公開されるので緊張しました.発表中に放送が落ちてしまうというハプニングがありつつもなんとか耐えました.

最終報告資料はこちらになります.

speakerdeck.com

 

業務以外の色々

歓迎会

インターン生および同時期に入社した方の歓迎会がありました.歓迎される側の人は自己紹介の一環として一発芸を披露することが慣例となっているそうです.私は腕を一回転させるっていう関節やわらかい自慢をしました. 

昼食

オフィス街に位置しているのでお昼ご飯を食べるところがたくさんあって,毎日「さて今日はどこに行きましょう...」という問答が生じていました.サクラテラス3Fの炭火の焼き魚やさんが好き.

ボドゲ

ボドゲ好きな社員さんたちが持ち寄ったボードゲームがオフィスにたくさんありました.レトリバでは歓迎会やカジュアルパーティーなどでしばしばボードゲームが行われているそうです.インターン期間中に3回ほどボードゲームに興じました.『私の世界の見方』はゲームに勝手も負けても楽しく,盛り上がるカードゲームでした.『ダイスフォージ』というボードゲームはダイスを強くしていくダイスゲームです.絵柄が綺麗で好き.

社風

レトリバは,その理念の3つ目に人材への投資を掲げるほどに社員を大切にする企業です.リモートワークや半休を気軽に取得できたり,完全週休2日だったり,休憩スペースの備品が充実していたりと働きやすい環境づくりがしっかりとなされていました.あと椅子が最高です.弊研究室の椅子も結構いいやつなのですが,それが霞んで見えるくらいにめっちゃいい椅子でした.

下の要望を上が全力で通そうとしてくれる,というのも感じました.例えば,私の「お客様が実際に製品を使っているところを見たい」という願いを受けて,インターン生の連携企業見学が実際に計画されていました.残念ながら震災の影響で中止になってしまいましたが,それがなければ実際に見学に行けていました.行きたかった...

このように風通しの良い社風で,アットホームな職場です(ホワイト)って感じでした.おかげでのびのびとインターンを楽しめました.

学び

今回のインターンを通じて,製品の保守や,保守しやすいコードとは何かを学ぶことができました.また,2ヶ月間がっつりと職業体験ができて,就職した後の生活を垣間見ることができました.

 

インターン仲間の参加記たち

www.creativ.xyz

 

専門用語抽出手法の研究と 抽出アプリケーションの開発 - Speaker Deck