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

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

TDD(テスト駆動開発)+モブプログラミングを社内でやってみた話

こんにちは!アニメとゲームが大好きな@mayoxtunaです。

2018年3月26日に入社しました。

まだ2週間ほどしか経っていませんが非常に密度が高い時間を過ごしています。

CrowdWorksのエンジニア達は積極的に社内勉強会を開催しています。

続きを読む

Terraformプロバイダから動的に型定義情報を取得するtfschemaというツールを作った

Terraform職人の @minamijoyo です。

クラウドワークスではAWSのインフラ構成管理にHashiCorpの Terraform を利用しており、 日々Terraformの設定ファイルを書いてるわけですが、 コード書いてると、リソースタイプの名前がうろ覚えとか、属性値の名前のスペルに自信がないとか、この属性値って必須項目だっけ? とか、なんだかんだで公式ドキュメントを見ながらコードを書いてることが多いです。

Vimのプラグインで補完してくれるやつがあるのは知ってるんだけど、 あらかじめリストファイルを持っているアプローチだと、バージョンに合わせてリストファイルの更新しないといけなくて、仕組み上の限界があるし、サポートされてない自作プロバイダとかだとそもそも使えない。

なんかもっといいかんじにできないかなぁと思って、趣味でTerraformのソースコードを読んでたら、最近入ったGetSchema APIというのを見つけて、欲しかったのはこれだよ感で早速試してみたらバグってるし。まじかよ。で、バグ報告修正に協力したり、AWSプロバイダにも修正を取り込んでもらったり、なんやかんやあって、結果的にTerraformプロバイダから動的に型定義情報を取得するtfschemaという俺得ツールができたので、テラフォーマーズの皆さんの役に立つかなーと思って紹介します。

github.com

続きを読む

grpc-gatewayを使用したマイクロサービスの管理画面

SREチームの那須です。

3/7に開催されたピクスタさんの 大規模プラットフォームを支えるエンジニアの技術と工夫〜Web現場Meetup #3〜 で登壇させていただきました。そのときにお話ししたgrpc-gatewayを使った管理画面の構築について改めてまとめてみます

続きを読む

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

この記事は 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チームの背景や最近の仕事について書いていきたいと思います。

続きを読む

© 2016 CrowdWorks, Inc., All rights reserved.