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

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

WebエンジニアのチームがReactNativeでアプリをリリースした話

@kinakobo です。

先日フィークルという新規サービスのiOS, AndroidアプリをReactNativeで開発し、リリースしました。

アプリ: iOS | Android

feecle.works

すでに国内でもいくつか採用事例があるReactNativeですが、まだまだ事例が少ないと感じます。

今回自分たちもReactNativeを採用したので、まずはその検討段階から紹介したいと思います。 また、開発チームはWebエンジニアのみで構成されていたため、特にWebエンジニアの方向けの内容になります。参考までに、開発チームの人数は4人でAPI側も同じメンバーが担当していました。

はじめに、ネイティブアプリを何で作るか検討した際に出た選択肢は以下の3つでした。

  1. iOSAndroidそれぞれネイティブのコードで書く
  2. ReactNativeを使用する
  3. Flutterを使用する

1は全く知識がない状態から始めることになるため、最も学習コストが高いです。作ろうとしているものがまだ検証段階のサービスであったこともあり、長い時間やコストをかけて開発を行うべきではなく、選択肢から外しました。

2はチーム内にReactの経験者が数名いたため、有力な選択肢でした。しかし、ネイティブアプリの開発経験がないため、ビルド周りやネイティブのコードでエラーが発生した時などに多少不安がありました。

3は最近勢いがあるものの、ReactNativeと比較すると採用事例が少ないことや不明確な点が多いため選択肢から外しました。

このような経緯でReactNativeを採用することに決めました。ネイティブの知識不足に多少不安があったものの、社内のアプリエンジニアにいつでも質問できる環境だったことが選択の後押しになりました。

そんなこんなでアプリ開発をはじめ、リリースまで漕ぎ着けることができました。結果的にReactNativeにして正解だったと思います。

開発の際にいくつか検討が必要なポイントや使ってみて良かったと思える技術があったため、以下で紹介します。

続きを読む

フルリモート・フルフレックスの運用は実際どうなの?求められる運用とその方法

すらすらチームの @keitaKozuka です。

我々「すらすらチーム」では主にiOSAndroidアプリケーション及びAPIの開発を行っています。 現在は今リリースされていますワーカー向けアプリケーションをメインにエンハンスを実施し、

またサブでクライアント向けアプリケーションのエンハンスを実施しています。

前記事の通り(http://engineer.crowdworks.jp/entry/2018/08/23/123555クラウドワークスでは7月中旬より、 人事制度「ハタカク!」のリモートワーク・フレックスタイムの制度を見直し 「フルリモート・フルフレックス」 にアップデートされました。

すらすらチームでもこのアップデートをきっかけに、リモートワークを1ヶ月ほど積極的に活用していきました。

現在ほぼ全てのチームメンバーがフルリモート・フルフレックスで運用しています。

そこでチームの運用状況やリモートワークでの学びをご紹介します。

運用状況

スクラム体制 スクラム

  • 1週間を1スプリントで回します
  • 毎朝、デイリースクラムを実施します
  • 月曜日にスプリントプランニングを実施します
  • 金曜日にレトロスペクティブを実施します

すらすらチームではデイリースクラム時に「Slack Call」を使用し、カメラでの顔合わせを実施しています。 f:id:kozukaaaa:20180910163607p:plain

Slack Callでは画面共有は勿論、共有された画面にペンツールが使用できるので、 直に画面で指差しでコミュニケーションする方法がリモートワークでも手軽にできるようになっています。

チームでのフルリモートワーク・フルフレックスタイムのメリット

  • 満員電車のストレスが軽減された
  • 通勤時間を有効活用できるようになった
  • 子供の保育園の送り迎えができるようになった
  • 昼休憩時に家事を手伝えるようになり、家庭円満に繋がっている
  • 全員がリモートワーク作業となり、それまでは社内で閉じていたコミュニケーションが全体に広がるようになった
    • 一部の人のみがリモートワークで他メンバーが社内で作業となるとコミュニケーションが社内で完結してしまうことが多々あるため
  • 付箋紙やホワイトボードベースのMTGがなくなり、どこででも仕事できるチーム環境ができた
  • アプリ・リリース時間の自由度が上がる。
    • リリース後は一定時間の監視が必要だが、帰社時間を気にする必要がない。

チームでのフルリモートワーク・フルフレックスタイムのデメリット

  1. 属人化されているタスクが間に挟まると作業のボトルネックになる
  2. ルフレックスだと、積極的にステータス発信をしないと勤怠体系が乱れやすい
  3. 通信環境が悪いと作業が遅延したりコミュニケーションできなかったりする
  4. オフィスにいると他のチームも見えていたけど、リモートワークになるとチームしか見えなくなる。若干視界が狭くなるのを感じる
  5. 一人でもオフィスにいると外野の声が入ってきて、聞き取りづらいことがある
  6. 家の光熱費が気になる

デメリットを対応していく(深掘)

1. 属人化されているタスクが間に挟まると作業のボトルネックになる

属人化を防ぐために自動化するところは自動化し、 PO、エンジニア、デザイナーの垣根を無くすための施策を行なっています。 リリース作業などは「fastlane」を使用しています。 1スクリプト叩くことでビルド→ストア申請までのフローを実施します。

APIドキュメント整理は「Swagger」を使用しています。 こちらを現在環境適用し、自動的にドキュメント生成までするように検討中です。

デザイン・プロトタイプ確認作業は「Figma」を使用しています。 どうしてもデザイン・プロトタイプはボトルネックになりがちなので、 こちらでエンジニアも積極的にデザイン作業に参加し、チームの作業遅延になることを防いでいます。

2. フルフレックスだと、積極的にステータス発信をしないと勤怠体系が乱れやすい

すらすらチームでは朝出勤時、昼休憩時、昼休憩終了時、夜退勤時は メンバーそれぞれがSlackで独自の挨拶を実施しています。

朝出勤時

f:id:kozukaaaa:20180910163753p:plain

昼休憩時

f:id:kozukaaaa:20180910163848p:plain

昼休憩終了時

f:id:kozukaaaa:20180910163922p:plain

夜退勤時

f:id:kozukaaaa:20180910163947p:plain

またSlackのステータスを編集を利用し、現在どの状態なのかチームにわかるように実施しています。

f:id:kozukaaaa:20180910164028p:plain

更にGoogleカレンダーとSlackbotを使用して当日のリモートメンバーの通知を毎日実施しています。

3. 通信環境が悪いと作業が遅延したりコミュニケーションできなかったりする

Wifi通信環境が悪かったりするとリモートワークでは致命的になります。 リモートワークする上では、良質な通信環境が必須と言えます。

4. オフィスにいると他のチームも見えていたけど、リモートワークになるとチームしか見えなくなる。若干視界が狭くなるのを感じる

リモートワークの働き方をチームだけでなく全体を巻き込んで意識してもらう必要があります。 Slackを駆使したり、オンラインミーティングのツールをQiitaTeamで紹介するなど 社内でのリモートワーク意識の向上が課題になっています。

5. 一人でもオフィスにいると外野の声が入ってきて、聞き取りづらいことがある

すらすらチームではリモートワーク会議の際はMacの内蔵マイクを使用するのではなく、 イヤホンマイクを別途準備するようにしています。 またオフィス滞在中など仕方ない時もありますが、リモートワーク会議中は静かなところで実施した方が良いです。

イヤホンマイク

6. 家の光熱費が気になる

夏の間に家でリモートワークすると光熱費が上がり困っています笑 冷房

得た学び、まとめ

  • リモートワークする上で作業を円滑化するための自動化作業は積極的に取り組んだ方が事業の成果が高まることに繋がる
  • チーム内で何人かがリモートワークするくらいなら、全員リモートワークの方が会議がスムーズに進む
  • 物理的に同じ場所にいる人グループと、リモートワークメンバー間のコミュニケーションの差異がなくなるので
  • オフィスはメインでリモートワークがサブでみたいな認識でいるとうまくいかない。みんな一斉にやるとそうならないのでうまくいく
  • フルリモートワークするなら、誰もいないところで仕事すべし! 通信環境良好な場所、時間厳守は必須!
  • 最初は不安もあったが、やってみたら特に問題もなく上手く行った

タイ(バンコク)も行ってきちゃいました

f:id:kozukaaaa:20180910164116j:plain

f:id:kozukaaaa:20180910164323j:plain

所感

  • 日本とタイの時間差は2時間ですが、日本時間で予定されている会議に参加することが難しかったです。
  • また、タイは依然として発展途上国であるため、インターネット接続はあまり信頼できなかったのが難点でした。
  • しかし完全なリモート/フルフレックスポリシーを持っていれば海外でも仕事は可能ということを実感できました。

海外のリモートワーク詳細はこちら engineer.crowdworks.jp

最後に

Wantedlyにも副社長の成田から 「フルリモート・フルフレックス」のストーリーがありますので、そちらもどうぞ!

https://www.wantedly.com/companies/crowdworks2/post_articles/130568

クラウドワークスのリモートワークはどこまで許されるのかやってみた

sawadashotaです。

クラウドワークスでは7月中旬より、 フルリモート・フルフレックスが試験的に導入されました。

www.wantedly.com

「フルリモート・フルフレックスなら海外リモートもできるじゃん!」と思い、

僕「マネージャー、LA予算*1を使ってバンコクでリモートしてもいいですか?」

マネージャー「いいよ。おもしろそうだから明日にでも行ってほしい。あとブログ書いてね。」

思いの外、すんなり許可されてしまった...

ということで、リモート in バンコクしてきました!

f:id:shotasawada:20180830142029j:plain

バンコクってどこ?

バンコクタイ王国の首都で日本との時差は2時間、成田空港から約6時間ほど西に飛ぶと到着します。 統計によると2017年時点で約7.3万人もの日本人がタイに住んでおり、日本人にはかなり過ごしやすい国なのかもしれません。

今回宿泊した場所

f:id:shotasawada:20180905111849j:plain

今回はAirbnbWiFi・エアコン付きのワンフロア貸し切り、家でも作業できるようにしました。

近くにカフェやコンビニなどもあるため、モノに困らない環境でした。

ただ、業務用の回線ではないからか、複数人がビデオ通話をすると通信状況が悪くなることが結構ありました。

カフェでもネットが標準装備

f:id:shotasawada:20180830095821j:plain

WiFiがないカフェはない」と言えるほど、どのカフェでもWiFiが飛んでおり、電源のある席が数個はあります。

ただ、セキュリティ的に心配なので、一例ですが、VPN、画面保護シートの用意やお手洗いなど離席するときには携帯するようにするなどがしました(それは日本でも同じですね)

コワーキングスペース事情

バンコク市内には少なくとも60以上ものコワーキングスペースがあります。

月額制のものもありますが、デイリープランがあるコワーキングスペース3ヶ所に行ってきました。

The Continent Hotel

f:id:shotasawada:20180905111751j:plain

4時間ドリンク付きで1人300バーツ (約1,022円) でした。

エグゼクティブ感漂う雰囲気で気持ちよく仕事ができました。

Co-Working Space | The Continent Hotel Bangkok

The Work Loft

f:id:shotasawada:20180829165457j:plain

1日345バーツ (約1,112円) でした。

ネットが安定的に早く、快適なビデオ通話ができました。

電話室があり、リモートでミーティングに参加するときに使っていました。

f:id:shotasawada:20180829165438j:plain

www.theworkloft.com

NapLab

f:id:shotasawada:20180829170228j:plain

12時間245バーツ (約786円) でした。

駅から少し離れているものの、3つの中で一番コスパがいいように感じました。

NapLabも電話室があり、リモートでミーティングに参加するときなどに有用です。

また、滑り台や卓球台、サンドボックスストリートファイターズのゲーム機があり、息抜きのファシリティ完備です。

f:id:shotasawada:20180830095959j:plain

NapLab - Facebook

1週間の中でやったこと

ふりかえりの実施

バンコクでのリモートは発見の連続でした。

記憶や感覚が新鮮なうちにと考え、毎日リモートワークに関する振り返りをするようにしました。

当初、「日本との時差を計算しながら会話するのが面倒」という問題も上がってきましたが、3日目あたりから「慣れた」「時間を表現するときにJSTと明言すればいいだけ」と順応していました。

その他、振り返りで上がってくるほとんどのトピックは、不慣れなバンコク生活への順応、いかに日本に残ったメンバーに安心してもらうか、海外関係なく日本でも起こっているリモート・フレックスの課題で、面白いことに海外が理由で解決が難しい技術的な課題は出てきませんでした。

いろんな場所で働いてみる

カフェやコワーキングなどいろいろな場所で働いてみるようにしました。

そこで感じたことは「日本よりも働く場所の選択肢が多い」ということです。

どのカフェに入ってもWiFiが飛んでいるのは本当にすごいことだなと思いました。

現地のエンジニアとの交流

図らずも、ランチでたまたま隣の席になった現地企業のエンジニアの方と交流できました。

手前に写っているメンバーは、到着当初、店員さんに「すみません、ソーセージありますか?」と日本語で話しかけてしまうほどだったのですが、数日間のバンコク生活を経て、英語でコミュニケーションができるようになりました。

f:id:shotasawada:20180830104553j:plain

海外で活動するフリーランスとの交流

海外を拠点にするフリーランスの方と交流し、どのような価値観・働き方をしているのか聞いてきました。

f:id:shotasawada:20180830105409j:plain

ところで、海外って安全面的に大丈夫?

「海外リモートって夢あるよね!」という希望に溢れた思いと裏腹に「海外って危険そう...」という心配もありました。特にメンバーの怪我とマシンの盗難の心配です。

危険を可能な限り排除するために現地の安全な過ごし方を知ることが重要であると考えています。

そこで、6日間中、前半3日間は全員行動を共にし、ベトナムに1年半暮らして得た知見を共有しながら、安全なエリア・安全な振る舞いを全員で覚えていくようにしました。

後半の3日間はソロ活動を解禁し、頻繁に連絡を取り合うことでお互いの安全を確かめ合うようにしました。

また、渡航したメンバーが現地の安全な過ごし方を知るだけでなく、その認識を日本に残ったマネージャーに共有することで、より安心して送り出してもらえると思います。

バンコクリモートしてわかったこと

想像以上にいつもどおりに働ける

普段、日本でリモートしているのと同じように働けました。

ミーティングなどがあっても、相手にとっては日本でリモートしているときと同じだからです。しかし、ビデオ・音声通話に耐えうるネットワークであるかどうかには、いつも以上に気を遣う必要があると思いました。

この結果を受けて、今後はもっと働き方を選べる未来があるじゃないかと思ってます。

  • 家族の事情で海外に移住しても、今の会社で今まで通り働ける
  • 今の仕事を続けながら、国内・国外問わず住む場所を変えられる
  • 海外旅行しながらリモートできるようになる

こんな未来があるのかと思うとワクワクしますよね。

見えていなかった小さな問題を炙り出すことができる

なんとなく「この問題は対面のほうがよさそうだな」と思うと出社していましたが、海外にいるとリモートでなんとかしなければいけず、問題にぶつかります。

バンコクリモートメンバーの振り返りでは以下のような意見が出てきました。

  • 付箋を使ったミーティングは、リモートで参加しにくい
  • フルリモート・フルフレックスを導入していない部署とのコミュニケーションが難しいと感じた

バンコクリモートを通して、あまり表面化していなかった問題を炙り出すいい機会になったと捉えています。

まとめ

以上のことから、クラウドワークスのリモートワークは海外でも可能であることがわかりました。

今回は時差2時間で、日本の勤務時間と同じ時間帯で勤務していましたが、時差がもっとある国でリモートチャレンジしたら、極限までリモート・フレックスの課題を炙り出せるのはないかと思いました。

f:id:shotasawada:20180905111649j:plain

ところで...

ぼくと一緒にチェコに飛んでくれるエンジニアを募集してます!

www.wantedly.com

*1:Learning Animal予算の略。一人ひとりが、自分で必要と考える「学び」を得るための予算

フルリモートを最大限活かすために使用する3つのツールについて

玉露チーム*1@mayoxtuna です。

8月に入り本格的な暑さが続いておりますが、夏らしいことが出来ていない事に悩んでいます。

クラウドワークスでは7月中旬より、 人事制度「ハタカク!」が以下のようにアップデートされました!

制度名 アップデート前 アップデート後
リモートワーク 週3日まで 制限なく利用可能
フレックス コアタイム10:00~16:00 コアタイムなし

フルリモート・フルフレックスに関する詳細は以下の記事を読んでいただけると幸いです。 www.wantedly.com

玉露チームでは、このアップデートをきっかけに「リモート」を積極的に活用していこうという流れになりました。

リモートを始めるにあたっては、 「対面でしか行ったことが無いワークショップ形式の振り返りなどをオンラインで展開する!」というミッションを元に、 いろいろ試行錯誤した結果 3つのツール を使うだけで「スムーズ」で「ストレスフリー」にリモートでの作業が行えるようになることが分かりました。

今回はその3つのツールについて共有したいと思います。

*1:クラウドワークス社内のエンジニアチームの1つで、直近では仕事依頼画面などの改修などを主に行っているチームです。

続きを読む

CrowdWorks流!Webpacker活用術

今年の4月に入社した@sawadashota です。

カイゼンチーム」というデザイナー2名、エンジニア2名のチームで新規会員の応募率の向上に取り組んでいます。

Rails 5.1で導入されたWebpacker、みなさん使ってますか?

CrowdWorksにはコツコツ約7年書き溜められてきた約1.8万行にのぼるCoffeeScriptがあります。

既存箇所では、Sprocketsで全部のJSをひとかためにしていたのを読んでいたので、思わぬ影響を及ぼすことが多々ありました。

少なくとも新規開発部分では、局所的に読める仕組みを作っていきたいと思い、Webpackerを導入してみたので、導入時のポイントをご紹介したいと思います。

続きを読む

© 2016 CrowdWorks, Inc., All rights reserved.