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

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

施策チームの開発プロセスについて

クラウドワークス(crowdworks.jp)の施策チームの薄井です。 当チームは、エンジニア3名、デザイナー1名、プロダクトオーナー1名の5名で、 ユーザ向けの機能改修施策の開発を行っています。

今回の記事では、 当チームが機能リリースまでの開発プロセスをどのように進めているかを書いていきます。 現在、チーム内には開発プロセスの詳細なドキュメントはないため、これを機に言語化をして、ドキュメントを作りたいという考えです。

開発プロセスの流れ

当チームでは、下記の手順で開発プロセスを進めています。

  1. プロダクトオーナーが開発要件を決める
  2. デザイナーがUIデザインを作る
  3. エンジニアが調査・設計・実装を行う
  4. チーム全員でステージング環境で動作確認を行う
  5. 機能リリース!

開発要件とデザインの決定

まず初めに、プロダクトオーナーが開発要件をまとめます。 開発要件は、施策の「ビジネス価値」「対象」「背景にある課題・仮説」「受け入れ条件」などを記載しています。 開発要件をチーム全体で確認した後、デザイナーがUIデザインを作成し、さらに具体的な内容が決まります。

エンジニアは出来上がった開発要件とデザインを基に、この後の工程を進めていきます。

調査

開発要件の受け入れ条件とデザインを、現行機能と比較しながら、変更箇所を洗い出します。 それと共に、機能を追加する画面の、既存実装の調査を行います。

リリース単位をどう分けるか

リリースをなるべく細かく行いたいため、 開発要件の受け入れ条件に書かれている内容から、リリースをどう分けられるか考えます。 全体の設計完了を待たずに実装を始めることもあったため、優先度が高い部分から設計を終わらせたい、という意図もあります。

既存実装にどこまで手を入れるか

最近行っている改修の対象になっている既存機能は、マイナーチェンジを除いて5年以上前から手付かずで、テストが無いことがしばしばあります。 本当は既存実装に対して、テスト追加やリファクタリングをしたいですし、するべきなのですが、時間は有限で、やりたい施策は順番待ちになっています。 なので、今回行いたい改修のために必要な分はどこまでかを議論し、既存実装にどこまで手を入れるかを決めます。

フロントエンドは何で進めるか

クラウドワークスでは、Railsで動いているサービスのフロントエンドをVue.jsに置き換えつつあります。 その上で、コストとリターンを鑑みて、Vue.jsに切り替えるか、Railsで完結させるかを決めます。 とはいえ、Railsを採用するケースは、ごく小規模(1画面のみ)で、複雑なロジックはなく、既存のスタイルを適用するだけ、という場合で、それ以外はVue.jsで実装しています。 また、jQueryで動いている機能もまだまだあり、それをVue.jsで作り直すかも考えどころです。

設計

以前は、設計は最低限にして、具体的な部分は実装者の裁量に委ねていたのですが、 現在は、詳細なタスクに落とし込むまで打ち合わせをしています。 時間はかかりますが、このやり方の方が、実装に着手したあと、スケジュールが大きく膨らむのは避けられているため、やるべきであるという認識をチームで持っています。

必要なUIコンポーネントの洗い出しと命名

設計方針が決まり、Vue.jsを採用する規模だった場合、デザインから必要なコンポーネントを洗い出していきます。 コンポーネントをどこまで細かくしていくか、コンポーネント名・プロパティ名を考えつつ話し合います。 チーム全体で納得できる名前をつけられると、そのコンポーネントに対する認識が揃ったな、と確信できます。

実装

調査・設計は、エンジニア全員が集まった場で同期的に進めていますが、実装は個々人の裁量で非同期に進めていきます(モブプロをするときはまた別)。 各タスクの実装後は、コードレビューを必ず行います。命名が適切か、可読性が低くないか、ロジックが最適化されてるかなどの、ソースコードの品質の担保のためです。また、チーム内の複数のエンジニアが実装内容を把握することも大事です。

ステージング環境での動作確認

一通り実装が終わり、リリースができるようになったタイミングで、プロダクトオーナー、デザイナー含め、チーム全員でステージング環境での動作確認を行なっています。リリース前に不具合に気づくために、欠かせない工程になっています。

機能リリース

ステージング環境での動作確認で発見された不具合への対応が終わったら、本番環境への機能リリースを行います。リリース後に不具合報告がないことが確認できたら、リリース完了です。

今後解決すべき課題

実装は、内容が具体的に定まっているため、概ねスケジュール通りに進むのですが、 それ以前の調査・設計のフェーズは、手順が確定しておらずアドリブで進めており、どれぐらい時間がかかるか把握し切れていません。 まず、手順を確定すること、次に、所要時間をコントロールしていくことを、今後実施していきます。

We're hiring!

クラウドワークスでは、様々なポジションのエンジニアを募集しております。 ご興味のある方は、ぜひご連絡ください。

https://crowdworks.co.jp/careers/

クラウドワークスを支える愉快な仲間たち ~2022年度版~ 前編

ブログタイトル クラウドワークスを支える 愉快な仲間たち  ~2022年度版~ 前編

エンジニアブログお久しぶりです!みーたです。

夏真っ盛りですが、皆さんいかがお過ごしですか。 私はコミケ脱稿しまして一安心しているところです。*1

さて、今回は6年ぶりのこの企画

いつもと趣向を変えて、クラウドワークスを作っているのはこんな人達だよ、ということで、当社プロダクト開発部のエンジニアにアンケートを取ってみました。 アンケート配布数は約39、回答数は31でした。(前回より増えてますね🤗)

その分情報量が多いため、2回に分けてみました。後編は後日公開。

前回と比較も出来るようほぼ同じ内容にしてみました。

*1:せっかくなので宣伝。コミックマーケット100にて「土曜日西地区"す"17a」まどや にて技術本と表紙キャラのアクスタを販売します。遊びに来てね💁‍♀️

続きを読む

CoffeeScript 辞めました

CoffeeScript 辞めました

はじめに

こんにちは、CrowdWorks のジャンヌチームのエンジニア bugfire です。

CrowdWorks は歴史のあるサービスで CoffeeScript が利用されている箇所が大量にあります。 具体的には411ファイルありました。[^1]

いまとなっては CoffeeScript を利用したコードを新たに書くことも少なくなり、改善するときに TypeScript で書き直されることも多くなってきました。しかし、個別に変換すると時間が掛かってしまうため、まとめて機械的に変換することにしました!

3行まとめ

  • CoffeeScript より TypeScript の方に記述を移していきたい。
  • 利用している Sprockets の CoffeeScript 変換コードを借用して全ファイルを変換しました。
  • 確認は変換前後の出力 JavaScript コードの完全一致で行いました。
続きを読む

Terraform AWSプロバイダv4アップグレードツールを作ろう

はじめに

SREチームの @minamijoyo です。趣味のTerraformで遊んでいたら、先日HashiCorpさんから「Core Contributor to HashiCorp Terraform for 2022」という名の、がんばったで賞をもらいました。対戦よろしくおねがいします。

crowdworks.jp のインフラはAWSで運用されており、インフラの管理にTerraformを使っています。先日ようやくTerraform AWSプロバイダv4アップグレードが完了しました。既にご存知の人も多いかもですが、v4ではS3バケット関連で大きな破壊的変更が入っており、アップグレード作業はなかなか大変です。もう皆さんアップグレードは終わりましたか? crowdworks.jp ではもうかれこれ6年以上Terraformを利用しており、Terraformの設定はおよそ7万行、tfstateの数は280個ぐらいの規模感です。さすがに数万行規模になってくると、手で大きな破壊的変更をやる気が起きなくて、最近Terraformのリファクタリング用のライブラリを作り始めました。そして最終的にいいかんじのアップグレードツールを書きました。

github.com

とりあえずツールの使い方だけ知りたいという人はリポジトリのREADMEを読んで下さい。(※現状aws_s3_bucketリファクタリングにしか対応してないことに注意)

この記事ではツールの使い方ではなく、仕組みの解説をします。一体誰得なんだと思いつつ、Terraform設定をいいかんじにプログラムで書き換えたいなという人向けです。最低限のTerraformの使い方とGoプログラミングは前提知識とします。逆にAWSに特化した知識はほとんどなくても読むのには支障はないと思うので、他のクラウドプロバイダをお使いの人も参考になるはず。

本稿執筆時の各種ソフトウェアのバージョンは以下のとおりです。

特にtfeditはまだ作りたてなので、インターフェースはしばらく不安定かもしれません。最新の情報は各READMEやCHANGELOGなどを参考にして下さい。

続きを読む

エンジニアだけどPOやってみる!

エンジニアだけどPOやってみる!

はじめに

こんにちは、ビズアシスタントオンライン(以下、ビズアシ)というサービスのエンジニアをしている山田です。

みなさんこちらの記事はきっともう読んでくれてますよね?

そうです。ビズアシはPO(プロダクトオーナー)と愉快なエンジニアたちのパーティーでプロダクト開発に携わっています。

少し前に山あり谷ありの冒険をひとつ終え、ついにタイムカードアプリをリリースした私たちですが、なんと7月に現POが産休に入ります!

その間わたくし山田がPO代理を務めさせていただくこととなりました。 5月半ばから引き継ぎが始まり、まだ一ヶ月程のぴよっこPOです。右も左も分かりません、、、

当記事はそんなぴよっこPOの奮闘記、、、ではなく、頭の中の話になります。

続きを読む

© 2016 CrowdWorks, Inc., All rights reserved.