Full-Stack Webエンジニアからモバイルエンジニアへ戻ります
本日現職の最終出社日だったので、やってきたことを振り返りつつ今後のお仕事について整理しようと思い記事を書くことにしました。
どこで働いてたの
ClassDoというシンガポール本社の会社の日本法人にフルリモートでお仕事してました。
2021/7入社だったのでだいたい2年勤めました。
日本法人なので健康保険証がちゃんとあるの助かりました。
日本ではあまり聞き馴染みがないかもしれませんが、シンガポールではかなり支持されているサービスになってます。
入社当時は日本向けのプレスが少なかったですが、徐々にニュースも出せるようになりました。
転職のきっかけは在籍している元同僚のエンジニアからのリファラルで、
と書いたように「モバイルアプリの立ち上げを計画してるので来てほしい」という提案から入社に至りました。
結果として事業計画の都合上モバイルアプリを作ることはなかったのですが、その話がなかったとしてもここに転職して得たかったことがあったし、しっかり獲得できたので勤められてよかったです。
以下、解決したかった課題意識や動機づけなど。
REST API開発のつらさをどうにかしたい
Webアプリとモバイルアプリが存在するマルチクライアント開発においてREST APIの開発・運用に辛さを感じてて(Swagger使ったとしてもそのメンテナンスコストを払い続けたいのかと言われると…)、GraphQLベースのSchema-driven developmentを現場で経験したかったという思いがありました。
声を掛けてくれた元同僚がGraphQL TokyoのCo-organizerということもあり、細かい仕様から技術の歴史や展望、OSSの動きなどめちゃくちゃ勉強になりました。
今では個人アプリ作るときには自前でGraphQLサーバーも一緒に作るほどになりました。
Webエンジニアの視点に立って開発現場を見直したい
これまでモバイルアプリのエンジニア・マネージャー業務がメインだったので、サブタスクとしてWebフロントエンド・バックエンドの開発をすることはあっても「どうしたらモバイルアプリ開発の生産性を高められるのか」が主点にありました。
Webアプリ開発者から見たモバイルアプリ開発は思った以上に覚えることが多くで気軽に手助けしづらいなと思う人は多いんじゃないでしょうか。
プログラミング言語の違いもあるし、何よりXcodeやAndroid StudioなどのIDEや実機ビルド・ストアリリースあたりを未経験の状態からできるようになるまで時間が掛かりそうという気持ちもあるかと思うので、気軽にPull Request送ってみようという人も少ないかなーと。
エンジニアではない人から見てもWebアプリのほうがリリースのしやすさ、リリースの巻き戻しやすさなど敏捷性が高く目に映るので、まずはWebで施策を試してみてみようという流れもよく経験しました。
そういうこともあって過去私が経験した&仲の良い知人の会社のモバイルチームはサイロ化しやすく、Webアプリを開発するチームとどう協業していくといいんだろうと思案しつづけてました。
なかなか答えは出なかったので、だったらいっそのこと自分の視点を変えてしまえ!ってことでWebエンジニアとしての業務をメインにする計画を立ててました。
今では1機能作るにもLambdaやSQSのコスト試算もしつつフロントエンド・バックエンド一気通貫で設計・実装できるようになりました。
特にコスト意識やDBモデル設計・クエリチューニングはモバイルだけやってたらなかなか得られなかった経験だと思います。
Webエンジニアとしての開発の視点を得られたので、これを次の経験に転用できたらいいな。
余談ですがElectronにPull Requestを出す機会があり、無事mergeされて嬉しかったです。
社内でElectronアプリを作ってるんですが、その開発過程で見つけたバグを直してました。
OSSに協力する気軽さもモバイルだけやってるときに比べたらだいぶ高くなった気がします。
英語話者と仕事してみたかった
英語は決して苦手というわけではなく、旅先で最低限の意思疎通はできるくらいです。
ただビジネスの現場で英語で意思疎通できてるかと言われると厳しい…と思ってました。
特に痛感したのがnote在籍中にBitriseの営業の方とビデオ通話したとき。
だいたい聞き取れてたし通話後のメールのやりとりで認識の齟齬がなかったので良かったのですが、やはりヒアリングは不十分だし自分の意見を即座に英語にして言えなかったことにかなりの悔しさを感じました。
エンジニアは全員日本人なんですがその他の方々はほぼシンガポール人なので、要件定義やCS対応は基本英語でした。
最初こそ大変でしたが、耳慣れしてイディオムも数パターン喋りなれるとどうにかやっていけるようになりました。
欧米ほどリダクションが少なく母音も子音もかなりはっきり発音するので、アジア圏でまずは英語のお仕事始めるのはいいかもしれません。
とある機能開発にてAWSの中のエンジニア(フィンランドの方)とサポート対応でビデオ通話したのですが、なんとか会話できるようになってました。
でも今もなお外部の方と英語でビジネストークするのは緊張します。
元同僚と一緒に働きたかった
割とこれに尽きます。
そもそもどの会社もリファラルで入社してるんですが、「自分のスキルが足りてるかは分からないがやれることがあるなら助けたい」駆動で職場を選んでるので、今回もそういう気持ちで入社しました。
モバイルアプリを書くことはなかったけど何だかんだ在籍中に色々学んで手助けはできたかなと思います。
どんなお仕事してたの
社名と同名であるClassDoというWebサービスのあらゆる機能開発をやってました。
入社直後はビデオ通話に利用しているプロバイダーを変えて、より安定したビデオ品質・音声品質を長時間の授業でも提供できるようにする仕事をしていて、各社Video SDKの調査、ClassDoのアプリケーション要件を満たすかどうかの検証、月額コスト試算、組み込み実装などなどを担当してました。
Web技術に関してゼロベースで学ばなければならなかった点も多く、同僚の手助けもあれどなかなかに大変な仕事でした。
以降はビデオ通話画面のパフォーマンスチューニング、その他新規機能実装や改修、果てはTerraformのメンテナンスなどなど、いろんな仕事をさせていただきました。
技術スタックは以下にざっとまとめます。
Frontend
TypeScript
Vue.js
Backend
TypeScript
Node.js
GraphQL (Apollo / Prisma)
Infra
AWS
Docker
k8s
Terraform
Serverless Framework
他Microservices
Go
C#
見渡してみると上記全てに手を付けたので、この2年で成長したなーと実感してます。
次は何やるの
これらの経験を携えて5月から久々にモバイル開発の現場に戻ることにしました。
ポジションはiOSエンジニアですが今後どうなるかは未知。
きっと気づいたらサーバーサイドにも手を付けてるかもしれないしマネージメントもやってるかもしれない。
それも込みで楽しもうと思います。
ちなみにまたもやリファラルです。
知人からの話やニュースを見ててとんでもなく大変そうだなという現場という感想を持ってて、そこで今の自分のスキルセットと経験値でどこまでやれるのか試してみたいという思いに駆られ、転職を決めました。
***
最近久々にiOS界隈の方とお話する機会があり、コミュニティの活気づけにも協力したいなーという気持ちが高まりました。
ここしばらくご無沙汰でしたがどこかのイベントやカンファレンスでまた活動すると思うので、そのときはまた温かく迎えてくれると嬉しいです。
***
実は今回社会人になって初めて10件以上会社のカジュアル面談を受けました。
こんなにまじめに転職活動することはもうないんじゃないかってくらい一度真剣に取り組んでみようと思い、時間を掛けて様々な会社のお話を聞かせていただきました。
Webエンジニアの求人ってモバイルエンジニアのそれよりめちゃくちゃ多いなーというのを身を以て知りました。
ありがたいことにWebエンジニアとしてのかなり好条件なオファーを出して頂いた会社さんもいらっしゃいました。
そこも魅力的な会社で最後の最後までかなり悩むほどでした。
あらためてお会いした会社の方々ありがとうございました。
読んでいただきありがとうございますー よろしければシェアもおねがいします🙏