こんにちは、パパエンジニアのkentaroです.
本記事はトレタ Advent Calendar 2020の 24 日目の記事です。
去年の終わりにO/Xの開発に携わるようになってから様々な経験を積むことができたので、今回はそれを振り返ってみたいと思います。
なお、「トレタO/X」については代表のnoteをご覧ください。
O/Xジョイン前
トレタの主力商品である予約/顧客台帳サービスのiOSアプリ開発を担当していました。
トレタ入社以前も2014年8月から Swift / Objective-C によるiOS開発をずっとやってきていた、というキャリアです。
(なお、その前は営業等をやっておりエンジニアではありませんでした。これはこれで語れる話なのですが、別の機会に譲ります。)
O/Xジョイン
2020年11月中旬、当時開催されていたネイティブ定例にkitagawaさんが参加し、「O/Xでエンジニアが足りていないんだけど、やってみたい人いませんか?」というのに手を挙げたのがきっかけです。 まずはワンダーテーブルさまのよなよなビアワークス向けのモバイルオーダーアプリ開発を担当することになりました。
技術スタックとしてはフロントエンドがFlutter Web、バックエンドがFirebaseという構成でした。
ジョインしたはいいがしんどい
11月中に諸々のインプットをしてもらい、12月入ったところで環境構築を行い実際に開発を開始しました。
今振り返ってみてもこの頃はめちゃくちゃしんどかったです。
しんどさの原因は「なんもわからん」状態だったこと。
技術面ではそれまで慣れ親しんできたSwiftからDartに変わり、Flutterもしくは採用しているpackageが提供する機能などとにかくキャッチアップすることだらけでした。
公式ドキュメントが充実していること、SwiftUIの経験があったので宣言的UIへの抵抗感がなかったことは救いでしたが、開発効率はiOSのときとは比べ物にならないほど落ちていた実感がありました。
また、モバイルオーダーという文脈だと予約事業とは異なったドメイン知識が要求されるのですが、それが圧倒的に不足していたことも辛かったです。
しんどさをなくす
これはもう特効薬はなく、愚直に「わかるようになる」しかありませんでした。
技術面では同僚エンジニアとビデオ会議をしまくり、実装で詰まっているところの相談をしたり、PRの意図の確認をさせてもらったりしていました。
その後は試行錯誤しながらコードを書いては動作確認をしたり、PR作ったり、うまくいかなかったらまた相談したり…と、ひたすらプロダクトと向き合うしかありませんでした。
ドメイン知識に関しては社内のドキュメントを読み漁り、わからんことがあれば有識者に質問をしたり…のような当たり前のことを継続し続けていました。
2021年2月に自分が担当した比較的大きめな機能追加がリリースされた頃にはしんどさはほとんど無くなっていたように記憶しています。
共通基盤対応
この頃のバックエンドはPoC期間のプロトタイピング用のものだったため、製品版として共通基盤を利用する対応が必要となってきていました。
全体像としてはマイクロサービスへの挑戦とその結果を参照ください。
自分はフロントエンド側の以下対応を担当しました。
- ユーザー向けアプリの共通基盤対応
- 共通基盤に向けてのAPIリクエスト周りの実装
- スタッフ向けアプリのリプレイス
- 共通基盤に向けてのAPIリクエスト周りの実装
- Flutter2系を採用
- Riverpodによる状態管理
主な挑戦
APIクライアントの実装に挑戦してみました。
詳細は割愛しますが、リクエスト用抽象classをextendsしたリクエストclassを渡してあげると、リクエストclass側で期待している型のレスポンスが受け取れるような仕組みになっています。
SwiftではProtocolとGenericsで実装するイメージですが、同じ要領で抽象classとGenericsを使い実装しました。
Dartでも抽象的な処理が書けるんだなーと感動したのを覚えています。
6月リリース
こちらの共通基盤対応は無事6月にリリースされました!
議事録を書くようになった
この頃から日々のMTGやスタンドアップの議事録を書くようになりました。
もともと自分とは別の法人のプロジェクトを担当しているQAが取り組みをはじめていて「ええやん!」と思って真似したのがきっかけです。
話したのはいいんだけど、結局何が決まって何がNext Actionなんだっけ?というのがテキストとして残るとその場にいなかった人にも共有しやすいし、後から検索もできて便利だなと感じています。
ちなみにNotionに各種議事録が作成されているのですが、会議体ごとにまとめて表示できるようにしてみたりもしました。
これを作ってたらNotion力が向上したような気がします。
React化対応
PoCではFlutterで作っていたユーザー向けモバイルオーダーアプリをReactにリプレイスするプロジェクトです。
自分は2021年9月から本格的に参加しています。
こちらはまだリリースされておらず、絶賛開発中です。
Webフロントエンドへの挑戦
Flutter版もWebアプリではあったのですが、基本的にプラットフォームのことをあまり気にせず開発できるので、このプロジェクトでWebのフロントエンド開発に業務で初めて携わる感覚がありました。
技術スタックとしては、TypeScript・React・Next.jsを採用しています。
個人ブログを上記技術スタックで開発した経験はあったものの、業務での開発はやはり一味違いました。
TypeScriptの重鎮にPRをレビューしてもらうので色々と指摘されることはあるのですが、意図・根拠が明確でめちゃくちゃ勉強になりました。
まだまだ勉強することがたくさんありますが、楽しんでやれているのはいいことかなと思っています。
振り返ってみて
本当に色々なことやったんだなーと感じました。1年じゃなくて、2, 3年くらい経ってるんじゃねーの?という感覚です。
新しい環境に飛び込むとこんなにも密度が高いんだなーという気持ち…
まだ書きたいことはあったけど、キリがないので特に印象深いことに絞って書きました。
あと、SwiftもDartもTypeScriptも好きだなーということに気がつけました。みんないい言語!!
最後に
新しい技術に挑戦したい方も、得意な技術でバリューを発揮したいという方も、もし興味がありましたらお気軽にカジュアル面談等お申し込みください!