チームとともに成長する

かとりえ(@katorie)氏:こんにちは。かとりえと言います。よろしくお願いします。今日は最後のセッションなのでみなさんだいぶ疲れてきていると思いますが、難しい話はしませんのでボーッとしながら聞いていただければと思います。

今日はTokyoGirls.rb Meetup vol.1ということで、改めて開催おめでとうございます。私はりさきゃん(@_risacan_)から声をかけてもらったんですが、コンセプトを聞いたときにすっごくいいなと共感したので、今日この場に立ってお話させていただくのをとても光栄に思っています。ありがとうございます。

勉強会やイベントってどうしても平日の夜が多くて、私も以前はそういうところにいっぱい顔を出していました。ですが今2歳の子供がいて、子育てをしながら仕事をしているので、平日夜のイベントにはほとんど参加できないでいます。だから休日のイベントがすごくありがたくて、もしかしたら今日この中にも休日だったから参加できた方もいらっしゃるんじゃないかと思います。

あと、託児スペースが本当にすばらしい取り組みだなと思いました。子育てしているお父さん、お母さんには本当にありがたいと思います。スポンサーの企業様、本当にありがとうございます。

この託児スペースがあるイベントはお母さんだけにありがたいわけではなくて、お父さんとお母さん両方にありがたいと思うんですね。例えばお父さんがイベントに参加したいとなったら、お母さんが子供を見ていなくちゃいけません。

ですが託児スペースがあるのであればお父さんが子連れで勉強会に参加できるから、お父さん的には「休日勉強会行ってきていいかな?」ってお母さんに相談するときの心理的負担が実質ゼロになるので、すごくいいなと思っています。こういう託児スペースがあったり子連れで参加できるイベントがこれからも増えるといいなと期待しています。

さきほどようちゃん(@youchan)の話にもありましたが、4月18日から3日間で行われるRubyKaigi 2019には託児所があります。RubyKaigiではようちゃん(@youchan)の話も聞けますが、すごくテッキーな話が多くてハードルが高く感じるかもしれません。

ですが、自分が知らないことを知るチャンスでもありますし、Rubyistの方々やRubyコミッターの方々とたくさん交流できるすごく楽しいイベントなので、機会があったらぜひみなさんも福岡まで足を運んでみてください。

私はRubyKaigiが本当に大好きで、いつも参加したあととても元気になって帰ってきます。去年は仙台だったんですが、託児所があったので当時1歳だった娘と参加してきました。

今年も2歳になった娘と参加しようと思ってます。

自己紹介とこれまでのキャリア

ところで私がまだ誰なのか自己紹介していませんでした。改めて、かとりえと言います。

だいたいSNSはkatorieでやってるので、よかったらフォローしてみてください。今回はInstagramも載せてみたんですけど、だいたい子供の写真が多いんですが、おいしいものとか趣味の写真もあげてます。

だいたいアイコンはこれでやってます。

ふだんは原宿にある株式会社ユビレジの開発部でお仕事をしています。実はこのユビレジに入るときにさっき話していたようちゃん(@youchan)と出会っていて。実は元同僚なんですけど(笑)。

2015年に入社して2年くらいお仕事したところで1年間お休みしました。ユビレジで初めての育休取得をして、ドキドキだったんですけれどもようちゃん(@youchan)のサポートもありながら復帰して、今は元気に仕事をしています。

私はユビレジに入る前はぜんぜんエンジニアでもなくて、Webサービスやアプリケーションもなにも作ったことがなく、まったくの未経験からエンジニアに転職しました。

Rails Girlsの話はちょいちょい出てきているので説明は端折りますが、Rails Girls TokyoがきっかけでRubyコミュニティに顔を出すようになって、縁があってエンジニアになりました。

このへんの話は『わたしとRails Girls』っていうブログエントリーに……ちょっと書いたのが2016年で古いんですが、よかったら読んでいただければと思います。

最近の活動としてはIkejiri.rbというのをやっています。これは2年くらい続いているんですが、りさきゃん(@_risacan_)とはじめました。1人で読むと挫折しそうな技術書を一緒に読むという会をやっています。

最初は1週間に1回活動をしていました。あらかじめ本を1冊決めて、今週はここからここまで読んで来ましょうというのを決めて。GitHubのイシューを立てて読んでわからなかったこととか、ここがよかった、おもしろかったとかをイシューのコメントに書いていました。

1週間に1度会ってランチを食べながらそこについて話すというのを始めました。けっこうこれで読んだことって、1人で読むより内容について話しているのですごく定着して。これはすごくいいなと思いました。

最近は音読するのがいいということで、オンラインで音読読書会というのを続けています。最近ぱんさん(@nappan23)が加わって3人でオンラインで『メタプログラミングRuby』を読んでます。

メタプログラミングRuby 第2版

このIkejiri.rbの活動を始めたのが私の出産後すぐだったので、仕事も休みだし24時間育児しかしてないし、ガラリと生活が変わってしまってすごく焦りを感じていたときでした。そのときにりさきゃん(@_risacan_)に「なんかやりたい~!」っていう話をしたら、「じゃあなんかやろう!」って読み始めたのがきっかけです。

なので、今でも基本的にスケジュールは私の育児の合間みたいな感じでお付き合いいただいている感じです。オンラインの読書会も夜22時開始みたいな感じになってます(笑)。

家族構成は、2歳の娘と夫の3人家族です。魔の2歳児ってやつで大変なんですけど(笑)。大変ですけどかわいいなと思いながらいろいろ一緒に初めてのことを体験したりしながら毎日を過ごしています。

今までの話とまったく1ミリも関係ありませんが、趣味はお茶をやっています。小笠原流煎茶道という流派でずっと勉強していまして、一応教授のお免状を持っているので教えたりもできます。お茶好きな方いたらあとで声かけてください。

どんなことをやっているかと言うとちょっと道具が小さいんですけどこういう、お抹茶とは違って急須でお茶を入れるような感じです。玉露を使うので旨味の強いお茶を入れます。お茶会もやったりしてます。

写真は和室ばっかりなんですが、テーブル席でお点前することもすごく多くて。そういったワークショップを開催したりとかっていうこともしてたりします。自己紹介はこれくらいにしておきます。

ユビレジの開発環境

今日お話したいことはタイトルそのままなんですけど、ユビレジという会社でチーム開発をしてきて、チームの変化を自分の変化として、つまり成長のチャンスとして捉えてやってきたよという話をしたいと思ってます。あとはチーム開発の中で子育てしながら仕事するのってどんな感じなのかも伝わるといいなと思ってます。

今日会場にお越しのみなさんはソフトウェアとかなにかしたら開発に関わっている方というよりはちょっとこれからという方が多いのかなという気がしたんですけれども。私も医療機器の営業みたいなことから来た人間だったので、あまりチームで仕事をするという経験がありませんでした。

ユビレジで開発の仕事を始めてみて一番最初に感じたのが「チーム開発ってすごい!」ってことです。語彙力が微妙なんですけど(笑)。要はチーム開発をしているとチームのメンバーのすごい技や知見を共有してもらえます。

今、ユビレジではチームが4つに分かれていて、新機能を開発しているスクラムチームと、継続的・長期的に運用面の課題に取り組んでいるリライアビリティチームと、新規サービスの立ち上げをがんばっているチームと、社内システムをやっているチームに分かれています。

私はスクラムチームとリライアビリティチームの両方に所属していて、その両方のチームで3つのプロダクトを主に運用・開発しています。

ユビレジのプロダクト

簡単に説明すると、1つ目がiPadで使うPOSレジのユビレジというアプリです。

最近iPadのレジをよく見かけると思いますが、このアプリ自体はiOSなので開発言語はObjective-CとSwiftです。お客様の使う管理画面などがRailsアプリになってます。管理画面はReactも使っていてHeroku上で動いています。

もう1個がFlickOrderです。

これは飲食店でよく見るハンディ端末ですね。お客様の注文を聞きながら端末を操作してキッチンに注文内容を送信するやつです。これもアプリ側はObjective-CとSwiftで書かれていて、サーバーサイドはScalaという言語で書かれています。お客様が触る管理画面はありませんが、iOSアプリの開発がメインになっています。

3つ目がStockScanという在庫管理をするアプリです。

ユビレジで会計するとその商品の在庫が減ったことを管理できるものです。これはiOS側はぜんぜんSwiftで書かれていなくてObjective-Cのみという感じです。管理画面はPythonとJavaScriptで書かれていています。

今、ユビレジの開発部がこの3つの面倒を見ているのですが、もともとはそれぞれ別の開発者が作っていたという経緯があるので、サーバーサイドの言語が全部バラバラです。iOSアプリの設計もそれぞれ違っています。

ユビレジの開発部が全部引き取ることになったので、ここ数年で徐々に開発が移行してきましたが、プロダクトごとにチームを分けるのではなくてユビレジの開発部全員で全プロダクトを見ている感じになっています。

これだけ聞くとけっこう「すごく大変そう……」ってよく言われるんですけど(笑)。私も最初「3つ見るから」みたいなことを言われたときは、びっくりしたんですけど。

でもここで、私はチャンスかなって思うようにしました。ごめんなさい、私はユビレジの場合しかわからないのであれなんですけど。自社プロダクトが複数あって、チームがプロダクトごとに分かれているわけじゃなく、全部の開発に関わることができるのってあんまりないんじゃないかなと思っています。逆にこれを強みにしちゃおうかな、みたいな気持ちで臨んでいます。

変化していく開発環境

先ほど、3プロダクトの元の開発はバラバラで、という話をしましたが、私が入社したときはほぼ取り扱いをしていたのはユビレジだけでした。FlickOrderの開発者も一応いるんですが、その人にFlickOrder側はお願いするという感じでした。

私はサーバーサイドで入社したのでサーバーサイドのことだけで精一杯、みたいな感じでいました。ほかのみなさんは私以外みんなスペシャリスト集団っていう感じで、私の印象だと「ソースコードはここにある。それを見ろ。あとはよろしく!」みたいな感じでした。

どうやってついてったらいいんだろうみたいな(笑)。すごい人たちがいっぱい! みたいな感じでした。そうすると属人化しがちだったなと今は思っています。

そのあと1年間お休みしていたんですが、その間にけっこう人が増えてきて。サーバーサイドやiOSのコードを書くんじゃないQAエンジニアとか、UXデザイナーが入社していました。

QAエンジニアによってテストの取り組みが変化したり、UXデザイナーがユーザビリティ観点からすぐプルリクを見てレビューしてくれたり、設計段階でいろいろコメントをくれたりして、すごく変化が生まれていました。

2017年の途中からスクラム開発を取り入れるようになって、スクラムチームが発足して。そこでチームメンバーが全員RailsもiOSもみんなでやる体制になっていて。全員で全プロダクトを開発・運用するようになりました。

ユビレジにおけるスクラム開発

スクラムチームやスクラム開発はあまり聞き慣れない方もいるのかなと思ったので、簡単にユビレジでスクラムチームがどのように開発しているのか説明すると、開発サイクルを2週間で回しています。

その2週間を1スプリントと言っているんですが、スプリントのはじめにこの2週間でやる内容の計画を立てます。それを開発して、そのスプリントの終わりまでにリリースして。終わりに振り返りをするのがざっくりとした流れです。

開発タスクはカンバン形式で管理していて、着手したり終了したらふせんを動かすという感じです。言葉で書いてもわかりづらいので写真を撮ってきました。あんまりお見せできないので、もやっとしちゃってるんですけど(笑)。

横に長くレーンが取ってあって、ふせんは左から右に流れて行きます。お客さんに価値のあるストーリーのレーンが、このスプリントでこういう機能を追加するとかというストーリーがまずレーンとして設定されます。

まず、計画段階でそのストーリーを実現するためにやらなきゃいけないタスクを1つずつふせんにしていきます。だいたい1人1日で取り組めるくらいの粒度にしてふせんにしていきます。

バックログに積まれたものを「これ私やります」という形でアサインして、開発中にずらします。

開発は終わってるけどなにかブロッカーがあって、みたいなところは待ちレーンに入ったりとか。プルリクになったらIn Reviewに移動してもらうという感じですね。なのでスプリントの終わりにはこのふせんがすべて掃けているはず、みたいな感じになってます。

これ、Trelloなどでいろいろ電子化できると思うのですが、なぜかユビレジはずっと物理ふせん、物理カンバンでやってます。このカンバンの前で毎朝みんな1回集まって、デイリースタンドアップをして進捗確認をしているという感じです。

育休から現場復帰

そんなわけで、2017年の途中でスクラムチームが発足して、私は暮れから育休復帰しました。復帰してみたらサーバーサイドだけというわけにはいかなくなっていて、iOS開発もやってね、みたいなことになってました。最初は「わぁ……」と思ったんですが、これもチャンスと捉えてiOS開発もできるようになっちゃおうと腹をくくりました。

iOS開発の研修として、最初のほうに初心者向けの本を何冊かやったりしました。あとおもしろかったのが開発部のみんなを巻き込んでTry Making Itというのをやりました。私はこういうアプリ作りたい、みたいな簡単な仕様を決めるんですよ。1週間くらい期間を設けて、それに対してみんな各自アプリを作ってくるみたいなことをやりました。

私はiOSをがんばりたかったので全部iOSでやっていたんですが、技術スタックは自由でMacアプリを作って来る人もいたりしました。しばらくそんなのをやっていました。結局使われてないんですが、会社の玄関で使えるアプリを作りたいねなんて言ってやったりもして、それもすごく勉強になりました。

「プロダクトの品質」について考えるように

さっきちょっと出てきましたが、QAエンジニアやUXデザイナーの影響もありました。テストの取り組みが変化したので、その影響もあって以前に比べてプロダクトとしてどんな品質が求められているかを深く考えるきっかけをもらうようになりました。

というわけでその影響がすごくあって、この2人が入ってきたのをチャンスと捉えて考えるようになりました。プロダクトの品質について考えている人たちってどんな人たちなんだろうと思って、それまでRuby界隈、Rubyの勉強会しか参加したことがなかったんですが、いろんな本を読んでみたり、今まで行ったことのないカンファレンスに参加してみたりしました。

去年はpmconf、プロダクトマネージャーカンファレンスに参加して、「愛されるプロダクト創ろう」というテーマで語っている人たちの話をいっぱい聞いたりして。

あとはWebService QA Meetingというのがあるんですけど、QAエンジニアの集まりで。すごくアウェイだったんですけど(笑)、QAエンジニアの方々がどんな熱い想いでプロダクト開発に関わっているかをいっぱい聞くことができました。テスト関連でいろんな本を読んだりとかしました。

スクラム開発が定着して、事業が成長

そんな感じで、2018年は私も本格的に仕事復帰した1年でしたが、チームとしてはスクラム開発が定着してきていた時期です。

私がお休みしていた2017年くらいからすごく社員数が増加して、事業が成長して、ユーザー数も増えて、お客様の使用方法も変わってきました。

ユーザー数が増えると単純にサーバーへの負荷が上がった、設計を見直したほうがいい箇所が出てきたりして課題がいろいろ発生するようになりました。

それでスクラムチームとは別にリライアビリティチームを発足して、プロダクト全体の品質を向上していくためにはどんなことをしたらいいかを考えるチームが作られました。

リライアビリティチームというのはスクラムチームと協力しながら、ときには異なる視点で問題解決をしたり、提案をしています。2週間スプリントのスクラムチームに対しては、もうちょっと長期的な目線で課題解決に取り組んでいます。

リライアビリティチームが発足し、リーダーに

リライアビリティチームができたのと同時に会社全体の人数も増えてきたので、ほかの部署の人たちに「開発部ではこんなことをしていますよ」という説明をわかりやすくする必要が出てきたりしました。「リライアビリティチームが発足したからにはリーダーがいるよね」みたいな話になって「誰がやる?」みたいな感じになって(笑)。

これも1つの巡り合わせ、チャンスかなと思って、今はリライアビリティチームのリーダーをやっています。というわけでリライアビリティチームとスクラムチームの2足のわらじみたいな感じで、プロダクトの品質を一生懸命考えながらお仕事をしています。

まとめると、はじめは1つのプロダクトをサーバーサイドから見ているだけでしたが、会社が取り扱うプロダクトが3つに増えたので開発も運用も見るものが広がって、守備範囲が広がりました。

スクラムチームが発足してiOS開発もするようになりました。チームのメンバーの影響からプロダクトの品質を考えるようになりました。また、リライアビリティチームが発足したので、そのリーダーをやるようになりました。っていう感じです。

こんなふうにチームや会社はどんどん変化していくと思いますが、その変化に対応して自分も変化していくと、チームの成長とともに自分も成長しているなって思えて、ますます仕事が楽しくなると思います。そんな感じで仕事をしています。

答えは1つじゃない

先ほど(スポンサーLTでお話しされていた)鳥井さんの話にもありましたが、私がチームに復帰することでチームも変化しなきゃいけないことがいっぱいありました。デイリースタンドアップの時間を変えてくれたり、ミーティングは全部コアタイム内で終わるようにしてくれました。

子育てしている私は働きやすいんですが、そういうふうにチームが変化したことで子育てじゃなくても、例えば介護が必要だったり自分の体調があまりよくないときでも働きやすい職場になっているんじゃないかなと思っています。

今日は女性の参加者も多いですし、今のところエンジニア界隈ってどうしても男性が圧倒的多数なので、自分のキャリアがどうなっていくのか漠然とした不安を抱えてらっしゃる方もいると思います。

みなさんの前でお伝えしたいのは、答えは1つじゃないということです。なぜなら、状態は常に変化し続けるからです。自分が納得できる状態を考え続けることが大事だと思っています。

最後に、名著『Webを支える技術』の山本陽平さんが、私がエンジニアになるために勉強していた時に「エンジニア楽しいよ!」って本にサインをしてくれました。2014年なんですけど。

ひさしぶりにこれを見返して、「あぁ、私今すごくエンジニア楽しくやってるな」と思ったので、この写真を最後にあげさせていただきました。今日はこんな私の話を聞いていただき、どうもありがとうございました。

(会場拍手)