【ONE CAREERエンジニアのホンネ vol.1】技術的難易度の高い開発に挑戦
みなさんこんにちは!
ワンキャリアにて、共通基盤開発チームでリーダーをしています鶴瀬(X:@nuoooo_kazu)です。
今回は私がワンキャリアに入社してから3か月の間に取り組んだことについて振り返っていきたいと思います。
はじめに:ワンキャリアに入社したきっかけ
入社のきっかけは、CTOの岩本さんとの面接で、ワンキャリアが技術的難易度が高いことに挑戦していくフェーズと聞いてワクワクしたからです。
また、ワンキャリアが持っている全プロダクトで扱うような共通基盤を開発していくことができることも、自分の興味分野と合致していたので入社を決めました!
ワンキャリアに入社してから
4月:トラフィック改善の取り組み
入社してからは就活サイト ONE CAREER(以下、OCとする)の開発チームに参加し、そこでOCのトラフィック改善業務を行っていました。
トラフィック改善と聞いて、具体的に何をするのか疑問に思う方もいるでしょう(実際にやってみるまで私も分かりませんでした笑)。
やることはすごくシンプルで、「トラフィック改善 = SEOを良くする」ようなイメージになります。具体的には、OCというメディアサイトにおける任意のページに、検索エンジンのクローラーが理解しやすくなるようなメタ情報を付与したり、ページにコンテンツを追加したりすることなどに取り組んでいました。
また、トラフィック改善の大きな開発項目として、ペイウォールコンテンツ対策をするというものがありました。
ペイウォールコンテンツとは、サイト内にある任意のページにおいて会員登録や課金をしないと閲覧できないコンテンツを指し、OCでは選考体験談がペイウォールコンテンツに該当します。
会員登録とログインを促すボタンがコンテンツの上面に配置されており、Googleの検索エンジンが重複ページとして扱いインデックスされません。
そのため、「Googleの検索エンジンがサイトをクロールする時だけコンテンツを公開する」といったようなペイウォールコンテンツ対策をする必要があります。
このペイウォールコンテンツ対策を行ったことにより、サイト内のページのインデックス登録数が従来の2倍になるという結果になりました。
5月:ONE CAREERの機能開発
4月にトラフィック改善を行い、落ち着いてきたところでOCの機能開発に携わりました。この機能開発では、求人イベントへの参加率を向上させるための取り組みとして、「リマインドメールを最適化する」というタスクに取り組んでいました。
これまでは、イベント開催のリマインドメールを、イベント開催日の前日のみ通知するようにしていました。ただこれでは、ユーザーがエントリーしたイベントを把握しておくことが難しい、前日のリマインドのみだとイベントへの出席率が低いという問題がありました。
そのため、イベントのリマインドメールを前日だけでなく、3日前・7日前にも通知する、メール本文にワンキャリア独自のコンテンツを追加するという対応を行いました。本機能のリリース後、ユーザーがエントリーしたイベントページのPV数がリリース前と比較すると2倍に増加し、参加率を向上させることができました。
開発の進め方は、自分が最初にデザインドックを書き、上長にレビューをしてもらってレビューが完了したら実装するという方法でした。
デザインドックのレビューが完了して実際に実装を進めていくと、そんなに難易度は高くなくサクサク実装することができました。通知タイミングを増やす実装については、既存の前日リマインドの実装を参考にしながらだったので進めやすかったです。
実装が完了してステージング環境での動作確認も問題ないことが分かり、本番環境にリリースすることになりました。
リリース後しばらくは問題はなかったのですが、夜の時間帯にSentry(監視ツール)を確認すると明らかに今回の機能開発のリリースに影響しているエラーがたくさん出ていました。
ただこの時に自分はエラーの内容自体はすぐに修正できるものと判断して、翌日にチームの朝会でエラーが発生していることを共有すれば良いと判断してしまいました。
翌日の朝会でエラーが発生していることを共有すると、上長から「インシデントなのですぐに対応すべきです」と言われ、関係者を集めて影響が出ているユーザーを調査し対処を行いました。
対処と恒久対応を完了した後にポストモーテムを実施し、なぜエラーが発生してしまったのか・エラーが発生しないようにどうすれば良かったのか、エラーを検知した後にどのような行動をとるべきだったかについて議論しました。ポストモーテムを実施しての反省点と学んだことは以下です。率直に書いていますが、個別のインシデントの原因に対して真摯に向き合い、次に繋げられるのがワンキャリアの開発組織の良いところだと思っています。
反省点
関係者と円滑なコミュニケーションを取ることができなかった
仕様書に書いてあることに対して疑問を持っていたが、自分の中で都合の良い形で解釈をし、相談などをあまりしていなかった
入社して間もなかったので遠慮していた部分もあった
プルリクエストの粒度の肥大化
当初はリマインド通知の追加やメール本文の改修を一つのプルリクエストでやろうとしていた
レビューコストが増える、動作確認も大変になる
インシデントが発生してからの報告が遅い
エラー内容がすぐに修正できるものと判断
学んだこと
一つのプルリクエストで行う変更は一つ
レビュアーからのフィードバックの質と速度を向上させるため
プルリクエストでチームに開発内容を学習してもらう
リリースもユーザーからのフィードバックをもらえる単位で行う
大きくリリースしたい場合でも、何か問題が発生した場合に影響範囲をできるだけ小さくできるようにPdMと相談し調整を行う
プルリクエストで学習してもらうというのは、今回のようなリマインド通知の追加の場合は、通知ロジック自体は同じ(通知タイミングだけが異なる)なので一度3日前リマインドの実装PRを作ってしまえば、7日前リマインドの実装も3日前リマインドの実装を応用すればすぐに実装できるということになります。
また今回の機能開発では、リマインド通知の追加やメール本文の改修のすべてを同時にリリースする必要はなかったと思います。
開発側が同時にリリースすることによって発生するデメリットをビジネス側に説明を行い、リリース計画を立てていれば今回のインシデントは発生しなかったと考えられます。
6月:ONE CAREER for Engineerの開発
6月からはONE CAREER for Engineer(以下、OCEとする)の開発に携わるようになりました。
OCEで最初に取り組んだタスクは、ログインと新規会員登録の導線の改修タスクです。具体的には、これまでモーダルで行っていたOCEのログインと新規会員登録をページに変更するというものです。ページにすることによって、モーダルではできなかったUTMパラメータの付与が可能になり、ユーザーがどのページからログイン・新規会員登録ページに遷移したのかが分かるようになりました。
6月後半からは、ワンキャリアID(以下、OCIDとする)の開発に携わりました。OCIDはワンキャリアが運営するONE CAREER、ONE CAREER for PLUS、ONE CAREER for Engineerという3つのキャリアサービスを一つの会員IDで利用できるサービスです。
OCEでOCIDを利用できるように、既存のOCEの認証のロジックや規約情報の管理に関するロジックを改修しました。
かなり大変でしたが、開発チームの枠を飛び越えてさまざな人が協力し、無事8/7にリリースすることができました(プレスリリースはこちらです)。
これから
今後はワンキャリアが運営するプロダクトの全てで利用する機能の共通基盤を開発していく共通基盤開発チームのリーダーとして、プロジェクト牽引します。
難易度は高いですが、わくわく仕事ができる毎日、そして日々成長を実感しているのでとてもやりがいがあります!!
そんな刺激的な環境でともに働く仲間を募集しています!!
▼ワンキャリアのエンジニア組織のことを知りたい方はまずこちら
▼カジュアル面談を希望の方はこちら
▼エンジニア求人票