LIFULL Creators Blog

「株式会社LIFULL(ライフル)」の社員によるブログです。

検索エンジンチーム配属後、最初の半期を振り返ってみた

検索エンジンチームの寺井です。21卒新卒エンジニアです。

気づけば入社から半年、本配属からは約4ヶ月が経過して、入社後最初の半期が終了しました。
ちょうど節目のいい機会なので、主に配属されてから今までやってきたことを振り返りつつ、使用した技術やもっと事前に勉強しておけば良かったことなどを書いていこうかなと思います。
今後エンジニアとして入社を考えているみなさんや、初心者エンジニアのお仲間さんがちょっと気づきを得られる記事を目指します。
※とは言いつつ今回はテクニカルな話はほとんど出てきませんのでゆるい読み物として読んでいただけたらと思います。

入社までの話

学生時代は認知心理学の分野に強化学習を取り入れた研究をやっていました。
当時のエンジニア的な能力はPythonを利用したシミュレーションやデータ解析を研究で扱っていたのと、競技プログラミングを少しやっていた(緑)くらいで、何もできないというわけではないけど…でもコード書くのは楽しい!!という感じでした。

また、Webアプリの開発経験はほとんどありませんでした。やばいですね。
(LIFULLの新卒エンジニアは約1ヶ月半の研修で全員が基礎の基礎から学んでWebアプリを作って発表するという鬼カリキュラムになっているので未経験でもばっちり学べて安心です!)

配属後にやってきたこと

そんなエンジニア超初心者の私ですが、新卒エンジニア研修を無事修了して5月末に検索エンジンチームへ配属されました。今までやってきた仕事の内容は主に以下の通りです。

  • 検索エンジンSolr周りの機能の改善
    • 内部機能で使われるコンポーネントのバージョンアップ
    • 障害が発生しづらくなるような仕組みの追加
  • Solrの新バージョンの検証
    • 変更箇所の調査
    • 新バージョンで動作やパフォーマンスに問題ないかをテスト

弊社サービスの「LIFULL HOME'S」のメイン機能である物件検索は全文検索エンジンのSolrを利用しています。検索エンジンチームではユーザーの皆様のより良い物件検索や検索体験の向上を目指して、Solrを最新のバージョンに保ったり、Solr関連の機能を使いやすい形にメンテナンスすることなどに日々取り組んでいます。

業務で使用した技術をいくつか挙げると、

  • Solr: オープンソースの全文検索エンジンです
  • AWS関連: 様々なリソースを活用してSolrの構築から自動化まであらゆることに活用しています
  • mitamae: サーバをプロビジョニング(初期設定みたいなこと)するのに使います
  • goss: YAMLでテストを記述してサーバ構築のテストをすることができます
  • Node.js: AWS上のLambdaの中身を記述しています
  • mocha: JS用のテストフレームワークで自動テストに使われます

細かく挙げるとキリがないのですが、この辺りのものは使用しました。
入社するまでにこれらを利用した経験はほとんどありませんでしたので業務中に苦しみながら学びました。人は痛みを伴うとしっかりと記憶に刻まれるんだなと実感しました(先輩エンジニアのみなさんに手取り足取り教えていただき、毎日大変お世話になっております)。

やっておいた方が良かったと思ったこと

AWSに触れておくこと

真っ先に思いついたのがこれです。先ほど使用した技術をいくつか挙げましたが、その中でも特にやっておくべきだったなと感じています。
理由としては、AWSは独自の用語がたくさん出てきて謎が謎を呼ぶ状態になるので、0→1の部分をしっかりと押さえていない状態でいきなりサービス運用に携わろうとしても迷子になってしまうからです。
そんな0→1の部分を自分のペースでしっかりと押さえるためにはもちろん実際に触って何か作ってみることが一番いい経験になると思うのですが、そうじゃなくてもAWSにあるサービスについて理解しようとしてみるだけでも最初の一歩としては十分だと思います。
事前にざっくりとサービスの概要を知っているだけでも、配属されてからEC2…?CloudFormationって何…?何もわからないわ…って泣いちゃうことは減ることでしょう。また、ざっくりと知っていれば頼れる先輩エンジニアのみなさんに質問する時にも有利です(何がわからないのかがわからない問題を低減)。

その入門としておすすめしたいのがAWSが毎月無料で開催(2021年9月現在)している「AWSome Day Online Conference」です。

aws.amazon.com

約3時間で、全く知識がない状態からある程度手広くAWSのサービスを学ぶことができます。 ちょっとサービスを触ったことがある初学者の方にも、知識を整理し直せるという意味でおすすめです。 私は配属当初、業務の一環として上長から許可をいただいて参加をしてきました。
確かに実際に業務で使われている運用のレベルと比較すると非常に初歩の内容しか取り上げられていないのですが、それでもどこから手をつけていいか分からないほどの初心者だった私には学びの多い経験でした。

ちなみに同期エンジニアや別企業へ入った学生時代の友人たちも同じような苦しみを味わっているみたいなので、今までAWSを避けてきたエンジニア志望の方々は早めにアクションを起こすのがおすすめです。スタートダッシュで差をつけよう。

一人で何か動くものを作ってみること

業務では基本的なプログラミングスキルに加え、通信に関する知識やサーバ構築に関すること、さらにLinuxに関する知識やその他諸々が基礎的な知識として使われます。
新卒として関わらせてもらっている業務では、知識レベルとしては基本情報技術者で出てくる程度の内容のものが多いのですが、実際に自分で手を動かしてシステムを触ったことがほとんどないと、暗記しただけの知識だけでは実務で活用していくのはなかなか難しいです。

それらを手っ取り早く身に付ける方法としては自分で何か1つ、動くシステムを作成することが良いのではないかと思います。 私はエンジニア研修中に初めて一人でアプリを作り上げましたが、想像以上に基本的な情報スキルを幅広く要求されることが印象的でした。 大変なことも多かったのですが得られるものも多く、エンジニアとしてのレベルが一段階上がる非常に良い経験になりました。 しかし同時に、時間のある学生の内にもっと開発経験をしておけば良かったとも思いました。
なので、一人で動くものを作った経験があるということは大きなアドバンテージになると保証します。ぜひ取り組んでいただきたいです。スタートダッシュで差をつけよう。

逆にやっていてよかったと思ったこと

1つのプログラミング言語についてある程度複雑なコードを書いた経験があったこと

プログラミング言語は使い回しが効くとはよく言われますが本当にその通りでした。
言語によって多少の表記の違いや実装概念の違いはありますが、逆に言えばそこだけ押さえてしまえばあとは汎用的なプログラミングスキルで何とか食らいつくことができました(万事解決できたわけではないです)。
また、これも大体の企業で共通していると思いますが、業務で利用するコードはかなり莫大な量です。 1つの機能を見るだけで何百行も追ったりするといったことが多々あるので、やはりある程度は複雑なコードを書いた経験が欲しいところです。

とはいえあまり身構える必要もないと思っていて、長めのコードを見たときに強烈な嫌悪感を抱くことがないくらいに、プログラミングに触れて慣れていればいいんじゃないかと思っています。
そのためにもなるべく日常的にプログラミングに触れる機会を増やしていくことが大事だと思います。 例えば、ゲーム感覚で楽しめる競技プログラミングなど、楽しみつつ手軽にプログラミングを触れる環境を自分に合わせて構築していくことがおすすめです。
コードを書くのは楽しいという感覚が身についているのは、エンジニアにとってかなり心の拠り所となります。

メモを取る癖があったこと

私は正直記憶力がそこまで良い方ではないので、昔から聞いた内容やその時考えていることなどをなるべくメモに書き出すようにしていました。
仕事を始めてからは毎日の業務に加え、新しい知識のインプットなど扱う情報の量や覚えることが増えたので、このメモを取る癖がかなり役に立っています。
もちろん言われたことを忘れないようにする目的もありますが、定期的に見直したりまとめ直したりすることでより知識を定着することができていると感じます。

また、雑多に書き残すのに加えて、部署に配属されてからは毎日やったことやその時悩んでいる点、その日の気分を一言で などを盛り込んだ日報を書くようになりました。
今回の記事を書く際にも日報を読み返しつつこんなこともやったなぁと思い出しながら執筆しています。 自分がやってきたことを時系列順に書き残すことで、成長を実感してモチベーションにつなげることもできますし、当時の記述をレベルアップした今の自分が読むと思いがけない新しい発見があったりもして楽しいです。

メモを取る癖をつけてみるのと、日報あるいは日記のように日付順に見られる形式で自分の文章を残すこと、おすすめなのでぜひやってみてください。

おわりに

冒頭にも書いた通り、気づくと半期が終わってあっという間の社会人0.5年目でした。 でも振り返ってみると中身の詰まった濃い毎日で、充実した日々を過ごしています(今回書ききれていない仕事の話やチーム内外での勉強会の話、チームビルディングでマインクラフトをやったりLIFULL独自のイベントがあったりと盛り沢山でした!)。
業務もわからないことや難しい内容が多く苦しいことも多々ありますが、それでも難しいことに挑戦をすることは楽しいですし、それが達成できた時の嬉しさは他の何にも勝ると思っています。
今後も精進して強いエンジニアを目指しつつ、ユーザーのみなさまにより良いプロダクトをお届けできるように頑張っていきたいと思います。

最後になりますが、LIFULLでは一緒に働いていただける仲間を募集しています。カジュアル面談もやっていますので、よろしければこちらもご覧ください。

hrmos.co

hrmos.co