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

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

開発メンバーとユーザーサポートが一緒にサービス浄化して年間アワードをもらった話

この記事は CrowdWorks Advent Calendar 2017 の21日目の記事です。

目次

0. キックオフで年間アワードをいただきました!

1. クラウドワークスのユーザーサポートで困っていたこと

2. 人力の限界

3. 機械学習と教師データ

4. 効果効能

5. まとめ

0. キックオフで年間アワードをいただきました!

ユーザーサポートとしては珍しく、弊社キックオフミーティングで年間アワードグランプリをいただきました。

(※キックオフ:年に一度の全社ミーティングです)

(※年間アワードグランプリ:その年の最優秀チームに送られる表彰制度です)

開発チームとユーザーサポートの融合について何かの参考になればと思い投稿します。

↓社内に掲載されたポスター

f:id:Onoyoshi:20171221153702p:plain

↓キックオフで表彰されたときの記念撮影

f:id:Onoyoshi:20171221153723j:plain

1. ユーザーサポートで困っていたこと

ユーザーサポートやカスタマーサービスのイメージといえば、

・クレーム対応

・問合せ対応

が一般的なイメージだと思われます。

ユーザーサポート業務をご存知の方は、上記に加えて、

・改善活動

・品質向上

もあるよ!という方もいるかもしれません。

うちのサービスでは更に、

・悪質案件の取り締まりと浄化作戦

が追加されます。

クラウドワークスのような多くのユーザを抱えるマッチングサービスでは、

一部の悪質ユーザーの標的にされ、悪質案件が手を変え品を変え投稿されるのを完全に防ぐことは困難です

(※悪質案件の定義は利用規約や仕事依頼ガイドラインに違反している仕事掲載)

直近一年の流行は、MLMです。

一昔前は、ねずみ講とかマルチ商法と言われていたやつです。

MLMはそれらの最新版でうちのサービスには今年の1月くらいから掲載され始め、

最盛期はGW前後でした。

2. 人力の限界

1月から3月までは、人の目と、人の手で、悪質案件撲滅対応をしていました。

具体的には、目視でサービス上に悪質案件が無いか確認して削除をしていました。

が、4月には1月比5.7倍の件数で泣きながら必死で対応していましたが、

5月には1月比32倍、4月比5.6倍ともはや人力では無理なレベルになってしまいました。

↓大人の事情により件数は伏せますが、こんな伸びでした。 f:id:Onoyoshi:20171221153934p:plain

3. 機械学習と教師データ

12月7日のアドベントカレンダーにもある通り、(下記URL参照)

ユーザーサポートでは開発チームにお知恵を拝借することにしました。

サポメンA:最近よく聞くAIだったら自動で悪質案件を取り締まれるんですかねー?

サポメンB:ちょっと開発メンバーに相談してみよ!

開発メンA:AIてのは無くて、機械学習を活用すればできるイメージですね。

開発メンB:ちなみに教師データありますか?

サポメンA&B:ポカーン

ご想像の通り、よくある文系のサポートと理系の開発メンバーの会話ですw

サポートメンバーもググって僅かな理解をし、これまで人力で悪質案件対応を行てっきた

実績データを教師データにすれば、なんとかなりそう!という理解ができました。

「AI」って言うと自動でなんでもできそうなイメージですが、そんなに世の中甘くないです。

ユーザーサポートにて人力で行っていた作業を「教師データ」にして、

悪質案件の自動検出をベイジアンフィルタで行うことが可能になりました。

具体的な内容は、 「うちのサービスに人工知能を使って何か面白いことやってよと言われた時に考えるべきこと」を参照ください。

4. 効果効能

この施策の目的ゴールは、「悪質案件をユーザーに見られないようにすること」すなわち、

「悪質案件PV数を減少させる」ことです。

結果、PV数は最盛期の12%まで減少できました。

↓いろいろな事情で数字は伏せますが、こんな減少グラフです。

f:id:Onoyoshi:20171221153830p:plain

5. まとめ

ユーザーサポートに限らずサービスを運用しているチームは、

「運用でカバーしなきゃ」とか

「人力で改善してやる」とか

思っていますので、ぜひぜひ開発視点から

「こうやったら楽になるよー」とか

「自動化のアイデア事例でこんなんあるかもー」とか

言ってもらえると、ユーザーの「笑顔」を実現できると思います。

CrowdWorksのSREチームの仕事

SREチームの那須です。好きな鉱物はダイヤモンドです。宝石の国は今期イチオシのアニメです。ダイヤモンドかわいい。

最近のことですがCrowdWorksにもSREチームというものが誕生しました。CrowdWorks の最近の取り組みについての記事でも取り上げています。

engineer.crowdworks.jp

SRE とは Site Reliability Engineer の略でGoogleが提唱している概念です。主にサイトの信頼性向上や運用の自動化などインフラの仕事を、ソフトウェアエンジニア的な問題解決手法で行っていく人たちのことを指すようです。

そんなSREのチームが CrowdWorks にも誕生しました。自分はインフラの知見があまりないのですが、チャレンジとしてSREチームに加わり現在 CrowdWorks のインフラ周りと格闘しています。今回はそんなSREチームの背景や最近の仕事について書いていきたいと思います。

続きを読む

クラウドワークスの技術戦略とアドベントカレンダー始めますのご紹介

こんにちは。クラウドワークス CTO の@akiray03です。 あっという間に年末が近づいてきて、いよいよ明日から12月になり、アドベントカレンダーが始まります。

qiita.com

CrowdWorksはサービス提供開始から約5年が経過し、2017年9月期の一年間で53億円超の報酬をユーザの皆様に届ける規模のサービスにまで成長しました。この10月からは、新たな技術方針を打ち出し、各チームが動いています。その中で出てきたトピックも今年のアドベントカレンダーでは垣間見えるのではないでしょうか。

本記事では、クラウドワークスのエンジニアが今期どのような領域に対して技術的挑戦をしているのか、代表的なものをご紹介したいと思います。


続きを読む

ActiveRecord のパフォーマンス改善に関するgemを作った話

こんにちは。クラウドワークスの八木です。

今回は、ActiveRecord のパフォーマンス改善に関する gem を作ったので、それについて紹介したいと思います。先にオチを書いちゃいますが、この Gem を入れるだけで必ずパフォーマンスよくなるとか、そこまでのものではありません(仮に、そんな銀の弾丸があれば、 Rails 本体にリクエストを出すべきですし....)。特定のケースにおいて改善が期待される、というタイプのものです。

どんなgem

ActiveRecordのpreloadを使う際、アプリケーションの仕様上不必要なSQLのクエリの発行を避けることができるようになる active_record_association_query_economizer という gemです。

github.com

例をあげて説明します。

続きを読む

expect(suusan2go.engineer?).to eq ....

クラウドワークスに入社して2年と半年くらいたった suusan2go です。 そして今月で退職します。「退職エントリーまだー?」とCIOから言われまして、ブログを書くことにしました(正直書きたくなかったw)。

最近は退職エントリーに対する風当たりが強い気がしていて、自分のブログなら「個人の日記やぞ!」と強気になれますが、会社の公式ブログに書くとなると「個人の日記レベル」ともいってられないわけで…結構書くことを躊躇していました。

でも、退職エントリーをみて入社する人もいる*1 ということで、最後の恩返しのつもりで頑張って書きます。お前だれだよって感じだと思いますが、お付き合いください。

クラウドワークスでの思い出

前職では某メーカーのSEとして働いていました。あるあるですが、コードを書いたり設計をしたりする時間よりも、発注管理や他部署との調整などエクセルとにらめっこしてる時間の方が多いという状況でした。でもどうしても自分は手を動かすことがしたくて、業務改善のアプリをRailsで書いてみたり、趣味でサイト制作やってみたりと色々もがいているときに、オファーが出たのがクラウドワークスです。

でもはっきりいって、入社した当時の自分はWEBエンジニアとはいえない、結構微妙なラインだったんじゃないかと思います…(よく採用してくれたなーと思うし、当時の自分は今だったら採用してもらえなさそう)

入社直後、最初のプルリクは数行の簡単なメソッドを1つ足すっていう些細なものだったんですが、自分としては割と感慨深いものがあったので今でも覚えています。自分やっていけるのかなー大丈夫かなーという不安もありつつ、CIが通ることを確認するとか、Rubyらしいコードを議論するとか、ちゃんと開発できてる感が凄く嬉しかった。

その後3ヶ月ほど crowdworks.jp に携わったあと、詳細は割愛しますが新規サイト・サービスの立ち上げに関わり、直近の半年はもう一度 crowdworks.jp の開発に戻って、創業時からのレガシーなコードと戦いつつ、決済回りに手を入れるというアグレッシブな経験を積み、現在にいたります。

クラウドワークスに入社してよかったところ

仕事

とにかくいろんな仕事を任せてもらえました。特に立ち上げ系の仕事を複数経験させてもらえたのは、自分の大きな経験値になりました。少人数のチームでこんな感じのことを一から経験できたのは本当に大きかったです。

  • ビジネス要件をもとに、アプリケーション全体の設計を考える
  • ビジネスチームも含めて開発のプロセスを改善していく
  • アプリケーションだけでなく、エラーモニタリング・ログ、バッチなど含めて運用を考える

社内では、設計や技術に関する勉強会や読書会も盛んでした。入社当初は、「Ruby / Rails Way を意識してコードを書く」というところで精一杯だったのが、最近ではDDDを勉強してみたり、他の言語・フレームワークを触ってみるなどして、設計や実装の幅が広がってきた感覚があります。これも、一緒にDDD本を読んだりする同僚がいたからかなと思います。

また、やりたいと言ったことをやらせてくれる風土がクラウドワークスのエンジニアチームにはあります(もちろん、技術的に・ユーザーに価値があれば…ですけど)。読書会や勉強会以外にも、フロントエンドの改善部があったり、Docker部があったり、ChatOps部があったり、そういった部活動からプロダクションのコードやインフラ、運用が大きく改善されたことも数多くあります。ちなみに自分はフロントエンドの改善部に入っていて、アセットのCDN化や肥大化したJSの分割を進めたりしていました。*2

働く環境

クラウドワークスでは週3日までのリモートワーク制度とフレックス制度があります。特にリモートワークの制度は子供が生まれてすぐのときは、本当に有り難かったです。休憩時間を使って仕事の合間に子供をお風呂にいれることができたり、家族揃ってご飯が食べられるというのはとても良いものです*3。 基本的にはリモートワークは週3日までですが、どうしても事情により家を離れられない人はフルリモートで働いていたりしますし、逆にオフィスで働きたい人は普通にオフィスで働いていたりと、かなり柔軟な働き方ができるようになっています。

また副業が認められているので、エンジニアでも何人かはプライベートで別の会社の開発に携わっていたりします。私も一時期やっていましたが、会社では使っていない技術に触れることができたりして、なかなか新鮮でした。

最近ではリモート・副業といった働き方は世間一般にも大分浸透してきた気がしますが、このような働き方ができる会社は実際には意外とまだまだ少ないというのが実態なんじゃないでしょうか。

なんで退職するの

なかなか単純にこれだよ!って説明できなんですが、大きくは2つです。*4

  • 子供が生まれて、自分の人生設計に変化があった
  • 今のクラウドワークスでは積めない経験を積みたくなった

後者は、自分の技術的な幅を広げていきたいという気持ちになったっていうのも含まれています(もちろん、英語とかそれ以外もある)。ただ最近のクラウドワークスは、Ruby / Railsだけの会社ではなくなってきていて、その点はこのタイミングで辞めることに勿体無さを少し感じていたり。

例えば、新規の機能やサービスはScala x DDDで作っていくという方針になり、現在エンジニアの半分くらいはScalaをやっていたりします。gRPCでマイクロサービスや、本格的に機械学習を使った機能開発も始まっていて、技術的に凄く面白そうなことをみんな始めています(既存のコードベースを捨てるわけではないし、これからもRubyやRailsは普通に使っていくよ!)。

この辺の技術的な話は、CTOがそのうちブログで詳しく書くって言ってたのでご期待下さい!

最後に

クラウドワークスに入社して2年半たちますが、今は流石に自分のことをエンジニアと言ってもいいよね?!って気持ちになっています。こう思えるような環境とチャンスをくれた会社と会社の偉い方々には本当にありがとうございますと伝えたいです。実績も実力も足りていない中で、可能性に期待してもらい仕事を任せてもらえたから、今があるなーと。

また一緒に働いたエンジニア・デザイナーの皆さん、2年半めっちゃ楽しく仕事ができたのは皆さんのおかげです。遠くに引っ越したりするわけでもないので、また飲みに行きましょう!

www.wantedly.com

*1:http://engineer.crowdworks.jp/entry/2017/08/29/124055

*2:自分がめっちゃ進めたみたいな書き方になっちゃいましたが、自分の貢献はほんの少しですw

*3:このあたりの休憩時間などの勤怠もリモートだからこそしっかり記録していました

*4:詳しく知りたい人はTwitterとかでDMください

© 2016 CrowdWorks, Inc., All rights reserved.