新卒インタビュー - エンジニア
New graduates - Engineer
入社1年。 フロントエンドからバックエンド、モバイル、アーキテクチャ設計へ。 スキルを大幅に拡張できた。
プロダクト本部 プロダクト開発ユニット 山下 賢治 (2022年入社)
大学院では、多言語対応なコンテナ型実行環境と自動フィードバックを行うプログラミング支援システムを開発。インターンシップでkubell(当時:Chatwork株式会社)の開発スタイルに魅力を感じ、フロントエンドエンジニアとして入社。技術的負債の解消やライブラリのアップデートを経て、アカウント設定機能の開発をリード。フロントエンドのアーキテクチャ設計にも関わり、現在はID統合管理と外部サービスへの統合認証サービス提供のための基盤開発に携わっている。(インタビュー:2023年7月)
大学院では、教育系システムを研究。
kubellのインターンシップで、大規模システムの土台を学ぶ大学院では、プログラミング教育を支援するシステムを開発していました。プログラミングに取り組む学生に対して、機能・非機能要件に基づいた評価とフィードバックを行うというシステムです。さらに、学生の進捗や結果をリアルタイムに教師側に通知。学生の課題提出間隔や作業内容、実行結果から得られる情報を元に、どの学生群がどのあたりでつまずくのか、問題を抱えることが多いのかなどを分析できるようにしました。また、教師による指導支援の効果などもデータとして検証可能なシステムも開発しました。ユーザーの反応がそのまま収益に直結するという点で、現在のプロダクト開発と似ている部分は多いですね。新しい機能開発や改修を行って、それに対するユーザーの反応を分析して次に活かす。そのサイクルを学生時代に経験できたのは、今でも大きな財産になっています。
kubellに入社したのは、インターンシップがきっかけです。大学院での研究開発ではフロントエンドをメインで担当していて、Reactを使っていました。大規模システムの開発に関与し、そのスキルを伸ばしたいと考えて、kubellのインターンシップに参加しました。
新しいチャットツールをチームで開発したのですが、学びが非常に大きかったです。大規模システムでのモノ作りに向き合うために必要な心構えや技術に触れることができたのは、本当にありがたかったです。エンジニアとしてのキャリアの土台になるものを、自分の中に持つことができました。
インターンシップを通じて、kubellへの入社も意識するようになりました。開発の雰囲気が自分に合っていたからです。当時はリモートでのインターンシップでしたが、チャットでコミュニケーションを密に行い、意見を活発に交わしながら開発が進んでいきました。分からないことは遠慮せずに聞けますし、ここまで楽しくモノ作りをしたことはなかったので、衝撃を受けたのを覚えています。会社が急成長していくタイミングにも惹かれました。新しい事業も立ち上がっていく中で、新人でも得られるチャンスは大きいだろうと。
入社直後に技術的負債の解消を行い、
コアライブラリのメジャーアップデートの実施入社後に最初に携わったのは「Chatwork」のフロントエンド開発の技術的負債の解消です。「Chatwork」では、jQueryとReactが共存して動いていますが、部分的にjQueryをReact化したという取り組みです。React化を進めていく中で、既存機能に対してデグレ(デグレード)が発生してしまいました。既存機能の仕様を詳細に把握できていなかったことが原因です。
プロダクトマネージャー(以下PdM)と議論を重ねながら仕様の該当箇所を究明し、1ヶ月を掛けてリプレイスを完了。何らかの機能の改修を行う際には、背景にある仕様やこれまでの開発プロセスをしっかりと把握する必要がある。そのことを入社直後に学べたのは、反省とともに貴重な経験でした。
同時並行でもう1つのReact化のプロジェクトを手掛けた後に担当したのが、フロントエンドのコアライブラリのメジャーアップデートです。Renovateによるライブラリの自動アップデートを導入しているのですが、幾つかのライブラリが依存関係になっていて、スムーズに更新ができていなかったのです。開発者の体験としても、このまま放置しておくのは得策ではないと判断して自ら起案しました。特にフロントエンドのライブラリの依存関係は複雑なので、まずは全体を俯瞰して整理し、ロードマップを綿密に作成して取り組みました。このプロジェクトもチームメンバーと頻繁にやりとりしながら、約2ヶ月で完遂することができました。
入社半年後から、
バックエンドとモバイルの開発にチャレンジそして、2022年の10月、機能別開発組織「Featureチーム」に異動しました。その中でも、「Chatwork」の管理画面の体験改善チームにジョイン。フロントエンドエンジニアが2名、PdM、バックエンドエンジニア、デザイナーがそれぞれ1名ずつ所属する、5名のチームです。
私自身はフロントエンドだけではなく、バックエンドとモバイルの開発も任されるようになりました。スキルの幅を拡げたかったので、「やらせてください」と手を挙げたら、受け入れてもらえました。ほぼ未経験からのチャレンジだったので、キャッチアップしながらチームで結果を出すのには苦労しました。必要なインプットの量が体感値で十数倍くらいになったので、独学では難しい部分もあり、その時は周りの先輩たちを頼りました。
バックエンドの技術は、チーム内のPHPエンジニアとのモブプログラミングで習得。私がドライバーを担当し、不明点を細かく聞きながら、活きたスキルを身につけました。kubellには貪欲に技術を追求するカルチャーがあるので、質問はいつでもウエルカム。ちょっとした会話から議論が始まるケースも多く、探究心が強いエンジニアにとっては最適な環境だと思います。
モバイルについては、別チームのモバイル専任エンジニアにチャットで投げかけて、数々のフィードバックをもらいました。急速にキャッチアップをするのは大変でしたが、業務内で「新しい技術を知りたい!」という好奇心が満たされ、それに加えてスキルも拡張できたのは非常にありがたいです。
フロントエンドのアーキテクチャを提案。
Next.jsをベースにFeatureチームでは、技術のキャッチアップを行いながら、「モバイル版のアカウント設定機能」の実装に取り組みました。登録名やメールアドレス、パスワードを変更できる機能です。以前はこれらの設定をモバイルアプリではできなかったので、ユーザーから問い合わせをいただくこともありました。実装後はそれらが一切無くなったので、大きな達成感を味わうことができました。
機能の実装を行う上で、私はフロントエンドのアーキテクチャの提案を行いました。開発コストやデグレリスク等を考慮した結果、既存画面のレスポンシブ対応を行わず、新規に構築することに。機能・非機能要件を考慮しつつ、開発者体験やOSSの開発状況、コミュニティの発展等を考慮し、Next.jsをベースにすることを決めました。また、技術選定だけでなく、テスト設計や運用周りも整備し、自分なりにも成長を感じました。
「Chatwork」を中小企業向けのプラットフォームに。
そのための共通基盤の開発に挑戦そして、2023年6月以降は、ID認証基盤チームに所属しています。kubellは「スーパーアプリ化構想」を掲げています。中小企業のあらゆるビジネスの起点となるプラットフォームになる、そのための準備を進めている最中です。ユーザーがそれぞれのサービスを横断的に活用できるように、私たちはID認証基盤を開発しています。サービス同士の連携については、まだまだ見えない部分も多いです。認証基盤は全てのユーザーに影響することもあり、非常に重要な役割を担っています。まさに急成長中の企業でしかできない体験だと思いますし、自分自身の成長スピードをもっと加速していきたいです。