クラウドワークス エンジニアブログ

日本最大級のクラウドソーシング「クラウドワークス」の開発の裏側をお届けするエンジニアブログ

フロントエンド開発体験向上のために VRT を導入してみた

アイキャッチ:フロントエンド開発体験向上のために VRT を導入してみた

はじめに

こんにちは、ジャンヌチームです。 前回のVue3 移行記事に引き続き、フロントエンド周辺の改善をおこなっています。 今回は開発体験の向上を目的とした、 VRT の導入の記録となる記事になります。

VRT について

VRT とは Visual Regression Testing のことで、画像による回帰テスト、つまり画像の変更をテストするものです。

クラウドワークスでは Vue3 移行に伴い、ほぼ全ての Vue.js コンポーネントで Storybook を定義しています。 この Storybook 定義を用いて、Storyshot による DOM レベルの自動回帰テストを行っています。

しかし CSS の変更におけるビジュアルテストは担保できていなかったため、VRT を導入することにしました。

続きを読む

不正利用対策チームメンバーの入社前と後と今

アイキャッチ:不正利用対策チームメンバーの入社前と後と今

こんにちは砂です。

私はクラウドワークスのエンジニアグループの中でも主に不正利用対策をしているチームに所属しています。

今回は、私と同チームの関口さんとの2人で、チームメンバーから集めた質問に答える形で、私達のことをお伝えしてみようと思います。

クラウドワークスの文化については「CW Culture | CROWDWORKS」でご覧ください。

不正利用対策チームの紹介

不正利用対策チームは2021年10月に発足したチームで、PO1人とエンジニア6人(正社員5人・業務委託1人)で構成されています。

チームでは主に以下の3つの関心事をもっています。

  1. サービスの不正利用対策
  2. 経理業務の改善
  3. 決済周りの改善

日々の業務としてはクラウドワークスの売上集計に関わる業務を行っています。

私たちの自己紹介

砂:2021年4月に入社しました砂と申します。前職ではRuby on Railsやログ基盤や検索基盤周りをメインに触っていました。最近は運動ついでに徒歩出社にハマっています。よろしくお願いします。

関口さん:2021年12月に入社しました。前職ではRuby on RailsSalesforceを用いてアプリケーション開発を行なっていました。 入社4ヶ月が経ちましたがクラウドワークスの仕様の理解がまだまだで、日々チームメンバーの皆さんに助けていただいています! リモートワーク中心(出社は月に数回)なので自炊の機会が多くなり料理が趣味になりました。自宅近くの業務用スーパーで大きい肉・魚を買って調理しています笑

質問1:クラウドワークスに入社を決めた理由はなんですか?

砂:決め手としては、カジュアル面談・採用面接者の温かさでしょうか。自分は転職活動自体が初めてで、クラウドワークスが1社目だったんです。とても緊張していた中、全ての面接において面接担当者全員がとても温かく、このような方々と一緒に働きたいと思い、入社を決めました。

関口さん:自分の中での会社選びとして2つのことを重要視していて、1つ目はカルチャー面です。 面接前にHPのカルチャー紹介ページやブログ(クラウドワークス エンジニアブログクラウドワークス人事ブログ)を読んだり、SNSクラウドワークスのことを調べていました。 転職は2回目でしたので今まで多くの企業さんのHPを見てきましたが、ここまで深く考えられて作成されたカルチャーを見るのは初めてで、少し驚いたのと熟読してしまいました笑 カジュアル面談の際にカルチャー紹介動画を共有していただきました!実際に働いている方々の生の声が聞けたのも決め手の1つです。

砂さんのおっしゃっていたクラウドワークスの社員の温かさには同感です。

重要視することの2つ目は技術面です。 実務ではRubyを1番長く使っていたのと、設計のスキルを向上させたいと思っていて、「Ruby on Railsをメインとしている」「中規模以上のサービスを運用している(できれば大規模)」という観点で会社を探していて、ヒットしたのがクラウドワークスでした。

質問2:面接で特に印象に残っている会話はありますか?

砂:自分は情報系大学の出身で、そのままの流れでエンジニアになったのですが、「そもそもなぜ情報系を選択したのか」という質問とその受け答えの会話が特に印象に残っています。入学したのが2009年だったので10年近く前の動機を聞かれたのは原点を聞かれたようで新鮮に感じたことを今も覚えています。

関口さん:1番記憶に残っているのは、10月末あたりに転職活動を始めて12月に入社したい意向を伝えたところ「期間短くて大丈夫?入社日遅らせることも可能なので言ってくださいね!無理せず!」と言われたことです。 気遣いや配慮に嬉しく思いました!

質問3:入社後の気づきはなんですか?

砂:社内イベントが豊富で、社員の方々が参加者として各イベントを盛り上げようとする意思はとてもエネルギッシュなので、いつのまにかイベント毎に元気を分けてもらってることに気づきました笑。特に全社キックオフはオンラインがメインの開催だったにも関わらず、すごく盛り上がり、元気いっぱいになりました。

関口さん:10年も運営しているアプリケーションなのでコードリーディング大変だよと面接で言われて、ある程度心構えはしていたのですが想像以上でしたね笑 日々の業務では対応するところの把握から始めていますが、別対応を途中に挟んだりあれもこれも調べていると自信がなくなってしまうことも多々あります。 複雑なコードにはコメントが記載されていたりQiita等にまとめてあったり、Slackで騒いだら誰かが助けてくれるので、とても問題解決しやすい環境だと思います。

質問4:入社前に知りたかった、またやっておけば良かったことはありますか?

砂:どういうチームにジョイン予定で、そのアサイン先で必要になるであろうドメイン知識の勉強とかでしょうか笑 現在、自分は決済周りや不正利用対策周りのチームに所属していますが、クレジットカード決済についての勉強は前もってできたなーと反省があります。

関口さん:入社が確定してから入社までの期間は2週間しかありませんでしたし、その期間は前職で働いていた期間でもあるので、事前に知りたかったということはあまりありません。あっても着手できていたかは自信がないです!

質問5:入社されてから現在まででどのようなスキルを身につけましたか?

砂:入社後ではっきりと違いがわかるのは2つあります。1つ目はクレジットカード決済周りのスキル?(知識)を身につけました。現在のチームがそこに関心を持っているからです。2つ目はセキュリティ周りです。ほんの短い間ですが、脆弱性対策に関心を持ったチームにも居たので、ウェブセキュリティ基礎試験で合格できるくらいのスキル(知識)を身につけました。

関口さん:入社してから約1ヶ月間はオンボーディング期間で、クラウドワークスのアプリケーションを知るということがメインでした。評価・開発環境上でアプリケーションのアカウントを作成して、ユーザーさんとしてロールプレイをし、仕事を依頼したり仕事を受注したりと各機能の理解を深めていました。 その後は、現在形にはなりますが決済周りの知識を身につけています。 決済はクラウドワークスのアプリケーション以外でも通用する知識なので、学べること自体とてもありがたいです。 他には、社内(主に分報やQiita)でたくさんの知見が飛び交っていてそこから学べることも多くあります。フロントエンド、バックエンド、インフラストラクチャ、設計思想、思ったこと、頑張ったこと、辛いこと等々、分野問わず様々な知見が取得できるので気になったものは深堀りするようにしています。

質問6:今後クラウドワークスで学んでいきたい技術はありますか?

砂:先程も少し話に出したのですが、ウェブセキュリティと認証・認可(特に認可を意識したセキュアなWebAPI)についての技術を身につけたいです。

関口さん:まずは決済周りもそうですし、ドメイン駆動設計についても深く学習していきたいです。ドメイン駆動設計は昨今のソフトウェア開発で有名になってきている設計手法で、クラウドワークスでも取り入れていたりするので早々に身につけたいです。 やりきったと思うまで学習してその後は目についたこと何でも着手できれば良いと思っています。 クラウドワークスではフロントエンド、バックエンド、インフラストラクチャ、マネジメントなどなど様々な領域で技術が秀でている方がいらっしゃるので、まずは背中を追いかけつつも、追いかけられるような人になれたら良いと思っています。

最後に

同じチームのメンバーのことをより深く知ることができて良かったです!今まで面接時のことはあまり話してこなかったのでこのような場で共有できて新鮮でした。

クラウドワークスにはいろいろなサービスやチームがあり、 そしてなにより温かい仲間がたくさんいます!

そんな環境で一緒に働きたい人、お待ちしています!

クラウドワークス採用ページ

フリーランスから会社員になって一年経った感想

f:id:keigo0331q:20220316175804p:plain

クラウドワークス施策チームの神山です。クラウドワークスでは主にRubyJavaScriptを書いています。

3月でちょうど一年経ったので、入社前と比較して実際どうだったかを書きました。

目次

  • 入社するまでの経歴
  • 主なトピックス
    • 10年規模のサービスは大変
    • 大型な機能開発の連続
    • Vue.js, ドメイン駆動設計, スクラムに触れた
    • チーム開発の有り難みを感じる日々
    • ルフレックス、フルリモートという働きやすい環境
    • 人が良い
    • 逆に就職して大変だったこと
  • まとめ

入社するまでの経歴

現在僕は27歳でエンジニアは約6年やっています。

新卒時はWEBメディアを主軸とする設立二期目のスタートアップで自社サービスの開発に従事していました。開発は主にRubyRuby on Rails)を使って行い、フロントエンドの一部をReactで書いていました。

そこで丸二年働いたあとフリーランスエンジニアとなりました。案件を受注して納品するような、いわゆる請負契約の仕事がほとんどでした。フリーランスの期間も主にRubyJavaScriptを使った開発をしておりました。3年ほどフリーランスをして、昨年の2021年3月にクラウドワークスに入社しました。

フリーランスから就職を決めた理由は簡単に言うと技術力をつけたかったからです。これまでは個人で学ぶばかりでレビューされたり相談したりする環境がなかったことが起因しています。

主なトピックス

10年規模のサービスは大変

crowdworks.jpは開始して10年になる巨大サービスです。そのようなサービスを触るのはなかなか大変でした。まず大きすぎて全てを理解できません。機能修繕をしていると現仕様の把握から始めますが、コードベースが巨大すぎて理解にかなりの時間を要します。

また昔に作られた機能だと仕様を把握している人がいなかったりドキュメントが残っていなかったりするので、誰も知らない仕様があったり意図の読めないコードがあります。謎すぎて触れるのに勇気が必要になることも。他にもテストが完全に整備されていないので、気づかぬうちにバグが起きていたりしました。

負債も大分溜まっており、コード一行追加するにも結構な時間を要したりします。リファクタリングを行うにも依存関係が多すぎて片手間にはできません。

入社当時「全貌を知るには数年はかかる」ということを言われましたが、その意味を一年かけてやっと理解できました。

辛いことばかり書きましたが、この規模のサービスだからこそ学べることもあります。例えば負債をどう減らすかや負債にならないコードの書き方は深く身につきました。コードを書く力がつくのはとてもありがたいです。また沢山のユーザーがいるからこそ機能を作ったときの反響が大きく、それがやりがいにもつながっています。プログラミング以外にもWEBサービスのノウハウが沢山知れるのは非常に有り難いです。

大型な機能開発の連続

配属されたのは主にユーザー向けの機能開発や改善を行う施策チームで、今もこのチームに所属しています。この一年で僕が関わった施策は以下の3つでした。3つのリリースを見届けていたら一年経ちました。

  • カンタン発注プラン診断

blog.crowdworks.jp

  • クイック出金機能の改善

blog.crowdworks.jp

  • 評価機能施策

blog.crowdworks.jp

今までの環境だと時間がかかっても一ヶ月でリリースされるので、このスピード感は慣れるまで大変でした。もちろん時間がかかるのには理由があります。

一つは今までと比べて設計をかなり丁寧にやっています。スタートアップとかだとスピードを意識するあまり設計がおざなりになっていたりもしましたが、クラウドワークスではスピードと正確性のバランスだと正確性に比重がより集まっていると思えます。このバランスは事業のフェーズなどにもよるのでどちらが良いという話ではないですが、サービスがある程度余裕がある状態だとじっくり物事を考えられてとても良いですね。

他には上で書いたようにサービスが巨大すぎたり負債が溜まっているので必要以上に時間がかかることも大きいです。

Vue.js, ドメイン駆動設計, スクラムに触れた

クラウドワークスに来て新しく触れた技術です。新しいものに触れるのはそれだけで楽しいです。プライベートでもできますが、ユーザーが沢山いるサービスで実際に試せるのは滾るものがあります。

Vue.jsに関しては学ぶにはかなり質の高い環境があります。ちなみにこの前Vue3に移行されました!

engineer.crowdworks.jp

僕は正直まだまだ書けるとは言えないレベルですが、情熱を持った人が多いので書くのが楽しいです。JavaScriptまわりは変化が早いですが、そこをキャッチアップして仕事で使えるのはとても良きです。

ドメイン駆動設計(以下、DDD)に関しては一人で学ぶにはとても大変な分野なので、詳しい人がいるのは非常に有り難いです。またRailsを使っているモノリスアプリをどうしていくかの議論も日々行われておりとても勉強になっています。DDDを効果的に使える場面に立ち会えるのは貴重ですね。

また「ドメイン駆動設計 モデリング/実装ガイド」を使ってチームで勉強会もしたりしました。とてもわかり易い本なのでおすすめです。

booth.pm

スクラムに関しては元々興味はありましたが環境がなかったので、ようやく経験できました。また今チームで「SCRUM BOOT CAMP THE BOOK」という本の輪読会をやっており、日々改善に取り組んでいます。

SCRUM BOOT CAMP THE BOOK | 西村 直人, 永瀬 美穂, 吉羽 龍太郎 |本 | 通販 | Amazon

いろいろと新しいことを学べた反面、RubyRailsに関してはそこまで成長していない感じがしています。すでに6年書いているので、これ以上の力を手に入れるにはどうしたらいいか悩んでいます。とりあえず本を読んだりしています。スペシャリストみたいな人にレビューされたいですね。

チーム開発の有り難みを感じる日々

僕が就職を志した理由を上で書きましたが、レビューされる環境や知恵を借りられる環境が手に入ったのはとても嬉しいです。施策チームはエンジニアが3~6人ほどで構成されており、常に誰かにレビューされる環境にあります。そのため日々誰かの指摘や、より良くなるためのチップスが貰えて成長を感じています。

またペアプロやモブプロ文化もあるので、学ぶにはとても良い環境が揃っています。他にも先程あげた「SCRUM BOOT CAMP THE BOOK」の輪読会のように、いろんな読書会がチームで開かれているのもいいですね。

また組織全体でも勉強会があったり、違う領域のエンジニアリングの話が聞けたり、積み重なったドキュメントがあったりと働いていて楽しいです。しかもそれぞれの領域に強い人がおり何かあれば相談できるのでとても助かっています。

ルフレックス、フルリモートという働きやすい環境

クラウドワークスではコアタイムなしのフルフレックス、フルリモート環境があり大変重宝しております。

というのも僕はクラウドワークスで働きながら、個人でも開発案件を受けたりシェアハウスの経営や社団法人の運営なども行っています。平日に役所にいかないと行けなかったり、トラブルがあったときに時間を割けたりと時間と場所に融通がきかないと働くのが不可能でした。さらに会社全体で副業をとても強く推奨しているので、個人の活動で忙しいときに引け目を感じることがないのも助かっています。

人が良い

入社の決め手は面接で話した人たちの印象でした。落ち着いている人が多く、接しやすい印象を持っていました。入社してもそれは変わらず、皆さん非常に落ち着いていてとても仕事しやすい環境です。またエンジニアに限らず優秀な人ばかりいます。優秀な人達と働くといい影響をもらえるし、ストレスがないのでとても楽しいです。

逆に就職して大変だったこと

フリーランス時代に比べてエンジニア収入は減った

正社員の給与とフリーランスの報酬を比べるのは不毛ですが、結構差があるので少し悲しくなりました。もちろんそれを知った上で入っているので後悔はないです。ただ稼ぐなら圧倒的にフリーランスですね。

月160時間という縛り

フリーランスだと働く時間は自由に設定できますが、会社員だと月160時間働くことになります。三度の飯より仕事が大好きな人間なのでそれ自体に不満はないのですが、個人の仕事が忙しいときに大変です。また深夜や土日稼働は原則禁止になっています。労働基準法やコミュニケーションコストを考慮した内容だとは思いますが、平日日中に個人の仕事をしたくてもそう自由にはできません。

ルフレックスフルリモート環境なだけでも有り難いので特にネガティブな感情ではなく、もっと自由になってくれたら嬉しいという感情です。

同期的なコミュニケーションが多い

同期的なコミュニケーションが多い印象です。Slackを使ったテキストコミュニケーションが基本となっていますが、Google Meetなどを使って同期的に話す場面もちょくちょくあります。本当に必要ならいいのですが、そうでないことも多々あります。かくいう僕もわりとやっちゃいますが。

同期的コミュニケーションは無料と思われがちなので、リスクをつけていきたいです。ここが整うとフルフレフルリモ環境がより使いやすくなりそうです。非同期コミュニケーションの立ち回りを意識していきたいです。

まとめ

入社してとてもよかったです。

また共に働けるメンバーもまだまだ募集しているので、よかったらご応募ください!!!

herp.careers

Vue 2 からVue 3 に移行完了しました!

アイキャッチ:Vue2 から Vue3 に移行完了しました!
Vue.js ロゴ画像提供 : https://github.com/vuejs/art

はじめに

こんにちは、クラウドワークス ジャンヌチームの@bugfire@okuto_oyama@yizknnです。

ジャンヌチームはクラウドワークスの負債を管理下に置くことがミッションのチームです。
問題の大きさに合わせて、直接解決する場合や、他チームと連動したりこちらから依頼することもあります。

弊社のアドベントカレンダーcrowdworks.jp のフロントエンド活動を振り返る 2021」の記事で触れていた Vue 3 移行が完了したので、その報告になります。

続きを読む

クラウドワークスだけじゃないってことを、ここらへんでハッキリさせておこうぜ

ogp_img

こんにちは。ビズアシスタントオンライン(以下ビズアシと省略)の開発メンバーの宮城です。 光栄にも、エンジニアブログを執筆させていただく機会を頂きました。

ということで、

クラウドワークスだけじゃないってことを、ここらへんでハッキリさせておこうぜ

について話していきます。大分挑戦的な見出しですが、内容はいたって真面目です。

私が参画している ビズアシ開発チーム の紹介を軸に、「クラウドワークス」のサービス以外を開発している人たちが どんな体制で開発をしているか について、簡単に説明していきたいと思います。

続きを読む

© 2016 CrowdWorks, Inc., All rights reserved.