こんにちは!ランサーズ株式会社 採用広報です!
現在ランサーズではSRE,モバイルアプリ,プロダクトマネージャー等積極的に採用活動を行っています!
そこで今回は、エンジニア職の面談/面接時によくいただく質問をまとめました!
・使用技術
・フロントエンド
・AI・データ活用
・開発組織
の項目で質問にお答えしていきます!
(ビジネス職版Q&Aはこちら!)
使用技術について
技術選定はどのように行っていますか?
大きな観点として、その技術がデファクトスタンダードになるかを見極めるのが大切だと考えています。なるのであれば全力で導入を進めます。今までもAWS、Docker等は全力で導入を進め、デファクトスタンダードになりました。
今後PHP以外の技術を使うことはありますか?
可能性は十分にあります。今もPHP以外の技術も使っており、関連サービスはRubyやPythonで開発されているものもあります。サブシステムはGolangで開発されているものもあります。
なぜLaravelではなくCakePHPを採用しているのでしょうか?(なぜCake2からのリプレイスのタイミングであえてCake4を選ぶのか?)
CakePHPはLaravelと比較して現在は衰退傾向な側面もありますが、ユーザーが減った分、コアデベロッパーとのつながりが深くなっていてその恩恵を受けることができています。弊社の提案を検討してくれたり、CakeFestへの参加を積極的に支援してもらえています。CakePHPへのOSS貢献もチーム全体で行えています。
また、FWの特徴的な面で言えば、CakePHPはLaravelよりも縛りが多いFW。そもそもFWというのは縛りを設けることで開発を楽に進めたり、ソースコードの品質の均一化を測るという目的があるため、FWを入れるのであれば、FWからより多くの恩恵を受けた方が良いし、それが弊社のチームにも合っていると考えています。
技術負債の解消・PHPのバージョンアップを積極的に行っているとのことですが、どのように進めているのでしょうか?
現在、PHP7.3+CakePHP2.10の状態です。CakePHP2.10はPHP7.4まではバージョンアップ可能ですが、それ以上は、CakePHPのバージョンアップも必要になります。
CakePHP2からのメジャーバージョンアップはほぼ作り直しに近い工数がかかります。そのため、管理画面とバッチに関してはリポジトリを分けて先行して最新のCakePHP4で構築し、移行中です。
本体のリポジトリに関しては、管理画面とバッチのバージョンアップで培ったノウハウを応用しながらバージョンアップ予定です。CakePHP1.3→2にバージョンアップしたときと同様、Controller単位で徐々にバージョンアップしていく予定です。
技術的な課題はどのようなものがありますか?
CakePHP2→4にController単位でバージョンアップする仕組みの構築に工夫が必要になります。CakePHP1.3→2のときの仕組みを応用する形になりますが、作り直しに近い実装が必要になり、1回の移行単位も多くなるため、そのソース管理が重要になると考えています。
フロントエンドについて
フロントエンド領域の課題を教えてください
大きく2点あります。
1つはテストコード化です。具体的には、
・実装だけ進めている状態なのであまりメンテナンス面が良くない
・Storybookによる開発が最近になって進め始めたのでナレッジが少ない
・APIなどのデータ(型)の連携がPHPとTypeScriptで異なるためどうしてもフロントエンド/サーバサイドで別々の定義を実装してしまうこともあってデータのモック化がうまくいっていないことがある
などがあります。
2つ目はUI/UX 向上/アクセシビリティ向上です。
CakeによるHTMLがアクセシビリティのlintを入れて検知しておらず、既存に対しては考慮できていないことが多いので向上させていきたいと考えています。
(例:画像のタイトルがなかったり、button要素ではないものに対してクリックのイベントを行うがroleによるクリック可能であるかのHTML文書になっていないなど)
課題に対しての改善活動について教えてください
前提として、人数少ないこともありプロダクトの活動以外の改善活動ができていない部分が多いです。
今後改善していきたい点として、以下のようなものがあります。
- コードリファクタ
- Datadogに出力されているJSエラーが出ている箇所の修正
- 脆弱性・ライブラリの更新ができていない点
- jQuery jQuery UI
- サポート終了したmoment.jsを使い続けている点など
また、デザインシステムのパーツへの書き換えも取り組んでいきたく、モーダルなどもMUIを使いながらやってたりするが、共通のパーツならどんどんデザインシステムに反映していきたいと考えています。
AI・データ活用について
現在取り組んでいる課題について教えてください
大きく以下の4つになります。
➀データ収集基盤の運用
➁検索システムの改善
➂レコメンドシステムの改善
④MlOps
将来的に取り組みたい課題
ランサーズには仕事の依頼内容に関するテキストデータやそれらに紐づいた経済的なデータ、ロゴ作成依頼などで提出される画像データなど様々な種類のデータがあります。それらを活かして以下のようなサービスの改善を行いたいと考えております。
- 仕事依頼の入力補助
- 言語モデル等を活用した支援システムの開発
- ロゴの自動生成
- ロゴ作成の依頼内容から簡易的な案を提示して具体的な指示をしやすくするための画像生成モデルの開発
- 適正金額推定
- 仕事依頼する際に不適切な低単価にならないように回帰モデルの開発
- トラブル検知
- ユーザ間のトラブル発生や発生前の兆候を検知するシステムの開発
開発組織について
事業部、チーム分担について教えてください
今年度から大きなチームの役割として、以下の3チームの体制で開発を行っています。
- グロースチーム:事業・KPIにコミットして早くサイクルで開発を回す
- プロジェクトチーム:中長期的なプロジェクト・プロダクト開発。レバーを探す開発
- 専門チーム:SREやコーポレートITなど専門性をもって横断的に事業やプロジェクトに関わる
各プロジェクトとしては4,5人くらいの単位になっており、チームごとにプロジェクトを動かしていますPdM+PM+エンジニア+UIUXデザイナーが基本のユニットとなっています。
事業部間の異動はありますか?
プロダクト開発としては組織全体で一体感を持って進めているため、あくまで本人との擦り合わせの上になりますが、事業部間の移動もございます。基本は本人のやりたいに合わせるやりたいが一番パフォーマンスが出ると考えており、なるべくやりたいドリブンで仕事ができるようにしています。例えば、新規事業に関わりたい!SREの知識得たい!などは柔軟に対応しています。
エンジニアの横連携はどのようにしていますか?
基本はGatherでちょっとした雑談もmtgもしています。
その他には勉強会(デザイナー勉強会、フロントエンド、DDDなど)を有志で開催しています。
また、月に1回はプロダクト開発組織全体で集まる会を実施していて横の連携と縦の連携、それぞれ大事にしています。
最後に
以上、よくある質問にお答えしました!
少しでもご興味をお持ちいただけましたら、ぜひカジュアル面談からお話しさせていただけますと幸いです!
ここまで読んで頂いてありがとうございました!