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

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

クラウドワークスを退職します。

オフィス
お世話になったオフィス

こんにちは、@ysk_118 です。
実は2020/06/30をもって退職することになりました。
2015/05/18に入社していますので5年とちょっと在籍していたことになります。

時系列とKPTでこの5年を振り返ります。

  • whoami
  • やってきたこと
    • 2015年
    • 2016年
    • 2017年
    • 2018年
    • 2019年
    • 2020年
  • KPT
    • Keep
    • Problem
    • Try

whoami

この5年で非常に多くのことに携わりましたので、まず軽くやってきたことを振り返りながら何者なのか知っていただけたらと思います。

  • 2015/05〜2016/03: 開発Div. エンジニア
  • 2016/04〜2017/02: プロダクトDiv. 新規事業開発グループ チームリーダー
  • 2017/02〜2018/03: プロダクトDiv. エンジニア -> スクラムマスター -> プロダクトオーナー
  • 2018/04〜2019/04: プロダクトDiv. エンジニアリング部 部長
  • 2019/05〜2020/06: 執行役員, エンジニアリングDiv. GM, 人事兼務1

クラウドワークスに入社した当時は新卒3年目でまだ経験的にも浅く、エンジニアとしてしっかりキャリアを積んでいきたいという一心でいろいろな会社を受けていたところ、運良く拾ってもらえたので非常にうれしかったです。

そこから2年ほどエンジニアとして様々なプロジェクトに関わり、その後スクラムマスターやプロダクトオーナーとしてプロダクトや組織そのものへアプローチを1年ほど。さらにその後組織全体をみていくポジションに手をあげ、マネージャーや執行役員として会社全体の中でのエンジニアリングを考える役割を2年ほどやってきました。

こうしてみると自分で手を動かすよりもマネジメント寄りのことをしている時間のほうが若干上回っていそうです。当初の目的であったエンジニアとしてのキャリアを突き詰めるよりかはなんだかんだジェネラリストを極めた結果になってしまいましたw


  1. Div.=Division(部署) GM=General Manager(部門責任者)

続きを読む

Rollbar による快適通知生活 (フロントエンド編)

こんにちは、エンジニアの Bugfire です。

自分の前の記事 でも Rollbar について書きましたが、今回はフロントエンド編です。

無法地帯

バックエンド(Rails)では、Rollbar による通知は便利に活用されており、対応したりみなかったことにしていたわけですが、フロントエンドでは以下の状況にありました。

  • あまりにもエラーが多い
  • エラーが多すぎて課金がすごいことになるのでかなり厳しめの RateLimit をかけていた
  • エラーが多すぎて slack 通知していない
  • 結局エラーを誰もみていない
  • SourceMap が登録されていないので、いざ登録されたエラーをみても分析が難しい

問題は、エラーが多すぎる件と SourceMap がないの二点です。それぞれ対応していきます。

目次

  • 無法地帯
  • Rollbar の設定
  • SourceMap
    • Webpacker 編
      • webpack の設定変更
      • AssetSync の設定変更
      • Rollbar へのアップロード
      • Source linking
    • Sprockets 編
      • SourceMap 生成部分の追加
        • lib/sprockets/uglifier_compressor.rb
        • uglify_with_source_maps
      • Rollbar へのアップロード
      • 問題点
  • 「エラーが多すぎる件」対策
    • XXX is not defined
    • 外部ライブラリに起因するケース
    • ブラウザ側のプラグイン等に起因するケース
    • Rollbar で特定エラーを無視する設定
      • botにより発生したエラーのケース
      • 例外以外のエラーのケース
      • 手がかりが全くないケース
      • 未知の Schema が存在するケース
      • 外部スクリプトのケース
      • スクリプトロードエラーのケース
      • 謎の Injection エラーのケース
  • 最後に
  • We Are Hiring!
続きを読む

イニシエのコードをモダンJS化

こんにちは。D&Aチームです。

クラウドワークスではユーザーの皆様により良い体験をしていただけるよう、クラウドワークス 安心安全宣言の取り組みを進めています!

そんな中、私たちのチームでは、ほぼ初めてのフロントエンドの開発に関わることになりました。 新規での開発ではなく、既存の実装からの更新という形となるのですが、それは古の時代のCoffeeScriptで書かれたものでした。

今回のブログはフロントエンドモダン化までの流れについて書いていこうと思います。

目次

続きを読む

Elasticsearchのバージョンを6.8系から7.5系にアップグレードしました

f:id:t0yohei:20200604122036p:plain

こんにちは、 @t0yohei です。今回は、1つ前のElasticsearchのバージョンを5.6系から6.8系にアップグレードしました のブログに続けて、 Elasticsearch v7.5 系までのアップグレードについて書いていきます。

この記事では、 v6.8 系へのアップグレードの方で書かれていたアップグレードの進め方やタスク管理法には触れず、 v7.5 系へのアップグレードで必要だった対応や課題についてのみ書いていきます。 v6.8 系アップグレード時の進め方がすごくやりやすかったので丸パクリ結果、書くネタがないという。

アップグレード全体に対してや、破壊的変更の一覧については下記の公式ドキュメントをご参照ください(リンク先はこの記事作成時点で最新の v7.7 のドキュメントになっています)。 https://www.elastic.co/guide/en/elasticsearch/reference/7.7/setup-upgrade.html https://www.elastic.co/guide/en/elasticsearch/reference/7.7/breaking-changes.html

目次

  • 目次
  • はじめに
  • タイプレス移行に向けた対応
    • 1. Elasticsearch v6.8 のインスタンスに対して、 include_type_name=true オプションを 付けた 上で index を構築する
    • 2. Elasticsearch v7.5 のインスタンスに対して、 include_type_name=true オプションを 付けた 状態で index を構築する
    • 3. Elasticsearch v7.5 のインスタンスに対して、 include_type_name=true オプションを 外した 状態で index を構築する
  • 対応必要だった breaking changes
    • track_total_hits defaults to 10,000
    • rest_total_hits_as_int
  • 対応した deprecation log
    • random score
  • Elasticsearch アップグレード後に起きた問題とその対応
  • おわりに
  • We are Hiring!!
続きを読む

Elasticsearchのバージョンを5.6系から6.8系にアップグレードしました

f:id:k-waragai:20200603120838p:plain

紹介

混沌に秩序を齎すとして爆誕したチームcosmosに所属している@k-waragaiです。

今回はタイトル通りElasticsearchのアップグレードに関するお話になります。

Version: 5.6.x から Version: 6.8.x までを約1ヶ月で上げきる事が出来ました。

今回はその1ヶ月の間にどのような事を行いどのような手順で上げていったのかを紹介していきます。

障害なども起こしてしまった為、その時に何があったのかなども赤裸々にお話していきますのでご期待ください。

この記事の後には6.8.x系から7.5.x系にアップグレードしたときのお話が投稿される予定です。 そちらも合わせてお読みください!

目次

  • 紹介
  • 目次
  • はじまり
  • Elasticsearch バージョン6アップグレード対応
    • STEP1 ~5.6と6.xのドキュメントを読み漁り、対応すべきところを対応する~
      • インデックス内の複数タイプが利用不可
      • Booleanタイプに指定可能な値がtrueまたはfalseのみ
      • タイプstringの廃止
      • _allフィールドが利用不可
    • STEP2 ~やることの見通しがついたらスケジュールを立てる~
      • ガントチャートを作成しよう
      • タスクを元にTrelloカードを作成しよう
      • タスクを消化したら
    • STEP3 ~ふりかえる~
      • Good
      • Bad
  • 最後に
続きを読む

© 2016 CrowdWorks, Inc., All rights reserved.