imaizumeの個人メモ

コードとか旅とか飯とか

Diverse退職の報告と在職時の振り返り・成果まとめ

f:id:imaizume:20191030145043j:plain
最終出社日に頂いた花束と色紙

表題の通り、現職の株式会社Diverseを本日10月31日付けで退職しました。 (ちなみに最終出社日が偶然にも10月10日=銭湯の日になった) すでに次の職場は決まっていて11月から始まりますが、それについては今回は触れません、機会があれば別で書きます。

ここでは新卒で入ったミクシィから、転籍後のDiverseまでに経験したことや成果(と個人的に思えること)をまとめました。 あくまで個人的用途で書いているものなので、時間がない方や興味がない方は上記のご報告だけ見ていただければ結構です。 また本件をより詳しく聞きたい方はぜひ個別に飯でも誘ってください (←誘われ待ち)

注意点: 当時の状況を書いている部分は、当然ですが現在とは違うことも書かれていますのでご承知おきを。

0年目 - 内定から入社まで

まだ社員ではないけれど、インターンや内定者時代も社員のように思って過ごしていたのでここから書きます。

SupporterZのイベントでミクシィと出会う

ミクシィとは先輩の紹介で就活SupporterZ(サポーターズ)に入って逆求人面談を受けていた時に初めて出会いました。 SNSしか(モンストすら)知らなかった自分でしたが、サービス志向やボトムアップ型の組織・カルチャーに惹かれ、インターンシップへの内定をいただきました。

みてねでサマーインターンシップに参加

pr.mixi.co.jp

家族アルバムみてねでのサマーインターンに参加し、主に新機能開発やバグ修正の他、テストの追加やAuto Layout対応などをしました。 (でもどれも当時はよく理解できていなかった) またスクラムイベントやユーザーオフ会というものも初めて経験し、3ヶ月でしたがとても貴重な経験をさせていただきました。 Rails以外の開発経験はほぼ無いに等しく、モバイル開発等は覚えながら見様見真似でタスクをこなしていったことを覚えています、というか本当に何も分からず先輩に聞いてばかりでしたが、どなたもすごく丁寧に教えていただき親切にしてくださったことを覚えています。

第1回 git challenge に参加

gitへの理解を深めた、とても思い出に残るイベントでした。 受賞こそ逃したものの、解説でブランチやgitオブジェクトの仕組みを理解することができ、今振り返ってもミクシィの文化として続けてほしいイベントだなと思います。 私もこのおかげで、現在ではcoconalaやtime ticketにてgitの相談サービスを出品するまでになりました。

alpha.mixi.co.jp

mixiグループに入社新卒

2017年4月にミクシィグループへ入社。 カルチャーマッチこそ感じていたものの実力に自信があったわけではなく、うまくやっていけるか不安に思っていたのを覚えています。 しかし採用活動のお手伝いや内定者イベントを通じて、主体性や自主性の面を評価していただいた記憶があります。 それまでは技術だけがエンジニアスキルの全てだと思っていた自分でしたが、そうではないということを認識したきっかけだったのだと思いますし、後のDiverseでもその点を評価していただきました。

1年目 - iOSエンジニアのキャリアのスタート

経験0からiOSエンジニアに

入社研修後は株式会社Diverseへ配属となり、Poiboyというマッチングアプリの担当になりました。 ...が、当時は自社の扱う婚活支援事業のドメイン知識も、担当になったiOSの開発経験もほぼ0の状態。

プロダクトのコードが100%Swiftだったので、言語的に扱いやすくすぐに覚えることができたのは幸いでした。 いろいろなマッチングアプリを入れて研究したり、カジュアルに恋愛や性の話をする会社の雰囲気にも最初は驚きましたが、後から考えると面白い会社だったなと思います。

また当時の上長も新卒である自分の成長を第一に考えてくれるようなとても良い方だったのも幸運でした。 忙しい中でも希望するタスクを任せていただいたり、難しいタスクでも学習の機会として時間を作ってもらったりと、とにかく人にも恵まれていたのは間違いありません。

夏キャンペーンでの無限スクロール実装とリリース延期

speakerdeck.com

入社後に最初に携わった大型の施策。 夏のキャンペーン企画として、アプリ内にスロットゲームを作成するというもので、当然ゲーム系の実装などしたことも無く試行錯誤しながらやった記憶があります。 技術的な課題や未知な点が多い中で、1ヶ月かけて実装した無限スクロールによるスロットゲームでした... が、諸般の事情で夏にリリースをすることができず、結局1度お蔵入りになったのは、今となっては懐かしいお話です。 (スライドには割とポジティブなまとめを書いているが当時は「マジフザケンナヨ」って思ってた) しかし一年越しにリリースされたので結果オーライ(?)でした。

採用イベント参加

自分が逆求人出身ということもあり、同じようなイベントに人事側としても行きました。 私が行くと、学生さんからの面談の満足度が高いと人事の方に褒められたことを覚えています。 自分なりには、自分よりもまずは相手の話を聞く、そこに興味を持って質問をする、みたいなことをしていたからかなという学びを得ていて、そこは今も大事にしています。

新卒同期によるコーポレートサイト制作

同期でコーポレートサイトのリニューアルを行うプロジェクトを本業と並行してやっていました。

会社のことを理解するため、いろんな人にインタビューしたり社長やマーケの責任者の方とミーティングを重ね、半年以上かけサイトで伝える内容やファーストビューのムービーに込めるメッセージなどをひたすら提案・修正していました。 途中同期がチームを離脱するといったこともある中でもなんとかサイト制作を続け、新卒1年目のうちにはリリースをすることができました。 なお現在のサイトは更新により別デザインになっています。

タスクはこなしていたが効率は悪かった

当時、チーム全体のモチベーションこそ高かったものの、成熟度は決して高くなく工数管理やKPTといったスクラムの開発手法の導入の検討すらしていない状態でした。 そのため深夜残業が常態化したり土日出勤があったりと割とひどい状態ではあったのと、その割に何をしていたのか覚えておらず、このあたりからテストや自動化に対する意欲みたいなのが徐々に高まっていったような気がします。 記憶に残っている出来事としては、Push通知の許可導線をPMに言われるがまま、あまり考えずにいろんな導線と条件で出しまくった結果、処理が複雑化してしまったためエンジニア部門の上長に相談したところ「効果測定すらしていないのにそんなにダイアログを出す意味無いだろう、考え直したら!?」と怒られたのは今となっては良い思い出です。 逆に言うと、ひたすら新機の開発と手動テスト、そしてQAからも上がってくる細かいバグの修正をひたすらやっていたのではないかと思います。

Poiboyはテストコードが0行だった一方、隣のチームではテスト文化が根付いており、そのチームの当時のリーダー的な人の勧めもあって初めて行ったiOS系の勉強会がDeNAさんで開催しているiOS Test Nightでした。

testnight.connpass.com

他社のテスト事例を聞いてやっていきたさは高まったのですが、当時のPoiboyは

  • ベースとなる設計自体がなく責務分割もできていなかったためテストが書きづらいなどの技術的な面
  • 機能開発最優先でエンジニアによるボトムアップの改善が難しかったなどの組織的な面

の両方からテストが思うようにかけず、エンジニア文化としてちゃんと運用にこぎつけるまでにはそれから2年を要したのでした。 このあたりの話は後にTest Nightで発表したりもしました。

speakerdeck.com

これも今振り返ったからわかることであり、当時は自分の技術力が足らないからだめなのだと思いこんでいたりして、みんなもこうやって何かを乗り越えるのかなぁとか今でも思ったりします。

学習もしていなかった

加えてこの頃は、プロダクト開発以外に学習時間をほぼ割いていなかったと記憶していて、iOSやSwiftなどの勉強会にはほぼ行ったことがなく(話を聞いても分からないと勝手に思い込んでいたのもある)、自動化も後手後手に回っており、結果として開発効率が悪い状態ではあったと思います。

しかしチームメンバー同士の人間関係は良好であったため、疲れてこそいたものの、辞めたいとか心を病んでいたという記憶が全くないのも事実。 むしろ当時のメンバーとは、今でもプライベートで会うほど仲良くしていたりします。

2年目 - 転籍とPoiboy再始動・iOS開発者コミュニティへの参加

git勉強会

iOS系の登壇には自信がなかったのですが、勉強会登壇にも目が向き始めたので、今のスキルでできる内容を考えた結果gitを選び登壇することにしました。 ちょうど就活で利用したSupporterZがエンジニア向けの勉強会を開催していたため、中の人にコンタクトを取ったらすぐにやらせてもらえました。

https://supporterzcolab.com/

git challenge以降はgitに対する理解が進み、業務でもcommitやpull requestの仕方についてよく考えるようになりました。 一方外を見た時、gitに関する勉強会や気軽に質問ができる場がないとも思っていたので、初めて外部で勉強会を開催し結果として再演までお願いされました。

speakerdeck.com

speakerdeck.com

また勉強会に来場された方から「実際に業務で困ったときに対面で質問がしたい」という声もいただいたため、相手の疑問点を中心に対面で解説ができるようcoconalaでの出品もすることにしました。

coconala.com

今後はiOS系の勉強会やサービス出品にシフトしようと思っていますが、機会があればまたgitの方でも何かやってみたいです。

iOSのチームリーダーに

入社して1年が経つ頃、諸々の事情で会社の若手メンバーが次々と抜けてしまう時期がありました。 前述のようなオーバーワークの常態化や曖昧な権限の移譲などが原因だったりしたため、会社全体として危機感を持った結果、チームに権限が移譲されたりスクラム開発をベースにした開発フローが導入されるなどしました。

自分はこの頃から、スクラムイベントの司会であったりiOSチームのリーダーなどを担当するようになっていました。 新しいメンバーがジョインしてくれたことでマンパワーに対する心配は無くなったものの、同時にメンバーのモチベーションや興味関心を上手く活かしながらコードを書いてもらう・レビューしてもらうということの難しさを知るきっかけにもなりました。 例えば全てのエンジニアがキレイなコードやテストに関心があるわけではないこと、品質とスピードにどこで折り合いつけるべきか、改善の効果はどう計測し上長に説明すべきか、このあたりは今も悩みながら試行錯誤しています。

www.wantedly.com

転籍と0からの組織作り

またそのすぐ後に、Diverseはミクシィグループを離れ株式会社IBJの子会社となったため、自分は転籍という形でDiverseに付いていくことになりました。 グループの子会社であることに変わりはないものの、ほぼ独立に近い形でやらせてもらえることになったため、エンジニア含め全員で組織作りを0から行っていくことになりました。 (それまでは採用もブランディングも親会社頼みだった)

初めての自社勉強会である「マッチングの裏側Night」に登壇したり、会社でやっているPodcastの収録・公開などを引き継いだりと、このあたりからはエンジニアの採用・広報にも参加するようになりました。 これらの企画は別のエンジニア社員が始めたものでしたが、始めることよりも継続することの方が難しく、それにはいろんな人を巻き込んでやっていくことが必要なのだなと実感しました。 当時は専属の広報もいない状態で、登壇や出演を交渉したりするのは時に難しく、けどできた時には面白いという体験をしました。

www.wantedly.com

podcast.diverse-inc.com

また今年の頭にはDiverse単独では初めて、DroidKaigi 2019にブース出展しました。 自分はブースの責任者として、手探りながら本業の傍らブースの企画を考えたりノベルティやブース関連グッズのデザインをデザイナーさんに依頼したり、当日はPodcastの公開収録を担当したりしてました。 DroidKaigiという場にも関わらず自分はAndroidの開発経験0の状態、それでもどうにかライブ収録を敢行し多くの方がブースに立ち寄ってくださいました。

www.wantedly.com

こうしたイベントには登壇・ブース出展、そして参加のための予算確保と乗り越えなくてはならないハードルがいくつもあるのですが、イベントの中心になって成功させられたことで会社の知名度も上がり、Diverseのエンジニア文化の1つとしてDroidKaigi参加が根付いたので、個人的にやって良かったと思います。

3年目 - 外部登壇の開始・そしてiOSDCへ

iOS系勉強会登壇を開始

そろそろiOS系の勉強会に出ようかなと考えていた頃、同じチームで仕事をしていたエンジニアにROPPONGI.swiftというコミュニティを紹介してもらい、初めてiOS関連での勉強会で登壇をしました。 2年が経ってようやく、体系的に経験・知識をアウトプットできるようになった遅咲きなエンジニアです。

speakerdeck.com

また会社の個人OKRで登壇を目標としたこともあって、今年の前半は立て続けにコミュニティの勉強会で登壇をしました。 こちらはその前のOKRで、コードの複雑度を下げるというトライをしたときの話をしたときの資料。

speakerdeck.com

また入社してから2年が経って、やっとPoiboyでも自動テストの仕組みがようやくプロダクトに導入できたこともあって、前述のTest Night登壇を果たしました。 入社した頃にiOS Test Nightに参加した時は、正直発表者が何を言っているのか分からないレベルだったのですが、そんな自分がアプリのテストについて発表しているのは、自分で言うのもアレですが感慨深いものがあります。

ちょっとだけ数値周りを担当しlookerを扱う

あまり書けないけど、言えるはlookerマジスゴイ!ということ(笑)

www.wantedly.com

iOSDC Japan 2019登壇

前述のDroidKaigi 2019でAndroidエンジニアが頑張ってくれたので、今度はiOSエンジニアの出番... ということでiOSエンジニアのキャリアとして一つの大きな山とも言えるiOSDCに登壇を決めました。 テスト系の話だったので受かるかどうかは微妙だと思っていましたが、最終的には初登壇の30分枠で当選することができました (初めてだったので5分LTかと思っていたのでちょっとビビった)。 またスポンサー募集が始まった日に応募ページを見に行ったらすでにブース枠が埋まりかけていて、慌ててエンジニアリーダー的な方に相談しに行ってその場でブース参加をポチった思い出もありますが、やはりDiverseの組織が小さく柔軟であるからこそできたことだなぁと思い、その点はとても個人的には好きでした。

正直に言うと、「実戦投入」と題しておきながら、プロポーザル応募の時点では導入の検討を始めていた段階でした。 そのためどうにか登壇までにプロダクトのテストコードに載せられるように0ベースでスナップショットテストを始めたのでした。 (登壇を理由に新しい技術を触れたのは良かったが業務時間もけっこう使い込んだのでその点は反省) 登壇準備はもちろんのこと、ブース運営側のお手伝いもしたり、必要とあればタスクマネージもしたりしていて、気づけばあっという間に7,8,9月が過ぎていました。 ブースや発表の様子はDiverseのブログに書きましたが、DroidKaigiに続き大きなイベントで初めて登壇・ブース展示するこの過程は他では経験できなかったことでした。

developer.diverse-inc.com

タイミングとしてはDiverseでのキャリアの最後の集大成となってしまいましたが、来年以降もきっと優秀なiOSエンジニアたちが登壇を続けてくれるものと期待しています!

もっといろいろあった気もしますが、ひとまずやったことはこんな感じでした。

まとめ - 2年半で何を得たか

ざっくりまとめるとこんな感じでしょうか...

  • 知識0からiOSDC登壇に至るまでの技術力 +α (e.g. 行動力・説明力・コミュニケーション力 etc.)
  • 多様なバックグラウンドを持つメンバーとの開発・コミュニケーションのとり方
  • 継続的なアウトプットによる会社・個人のアピアランス及びエンジニアとしての市場価値
  • スクラム開発のいろは、継続性のある開発に対する各種手法の必要性を理解
  • 単体・スナップショットテストの書き方・メリットとコストパフォーマンスに対する感覚
  • 事業は楽しいことばかりではない、大事なのは辛い時にも何をモチベーションとし、どう向き合うかということ
  • (日記みたいなのをつけておけばもっと具体的に書けたのかもしれない)

以上個人的な忘備録でした。