東北大学理学部卒の僕が、アトラエに入社して Android や Flutter 開発に挑戦している話
こんにちは、株式会社アトラエの @muttsu_623 です。
2019年3月に東北大学理学部物理学科を卒業後、4月から株式会社アトラエに入社しました。
現在は社内唯一のAndroidエンジニアとして、ビジネスマッチングアプリ『yenta』の開発・運用を行なっています。(※Androidの開発経験があるエンジニアは他にもいますが、メインで開発を行なっているのは僕のみです。)
また2020年10月より、転職サイト『Green』でもAndroidアプリを、今巷で話題のFlutterでつくることとなりその開発も兼任しています。Androidアプリをリリース後、iOSアプリもFlutterにリプレイスするつもりです。
今回は、理系の学部を卒業した身として、経験した仕事の内容や学びを書き起こすことで、少しでも働くことへのイメージを持ってもらえればいいなという想いと、社内からの勧めが背中を押したこともあり、本記事を投稿することにしました。
入社までのエンジニア経験
学生時代は、某プログラミングスクールの教材を行なったり、インターネットを通してプログラミングを学べるサービスを通して、プログラミングをかじったことはあるものの、身につくまでしっかりとは学習しませんでした。
本格的に勉強をし始めたのは、アトラエに内定をいただいて内定者インターンとして働いてからです。何の価値も出せない状態で内定者インターンでエンジニアとして働かせてくれたことに感謝しかありませんでした。
それから1年間、エンジニアとして価値をなるべく早く出せるよう、仙台にある大学へ通い研究活動を行いながら、会社で先輩たちから直接教わりたいと考え、毎週夜行バスで仙台と東京を往復しながらインターンを行なっていました。
インターン時代からバリバリ機能開発をしていました!と、言えればとてもかっこいいと思うのですが、そこまで活躍できず、小さな機能をいくつか開発できるようになった程度でした。
入社してこれまでにやったこと
実際入社してから今まで取り組んできたものをいくつかご紹介します。
ありがたいことに、自分の実力以上に色々と機会をいただき、フルスクラッチリニューアルからプロジェクトマネジメント、グロースハック、新技術でのアプリ開発等々を担当しています。
入社後の学び
細かいことで言うと、色々とあります。とにかく早く実装するために得た学びとか、円滑にプロジェクトが進むようにするために得た学びとか。
ただ、そういうのはその都度キャッチアップすればいいものだと思うので、ここでは記載しません。
本当に重要な学び、そしてこれからも意識していきたいなと思うものは『会社やプロジェクトにおいて何が必要なのか、必要になりそうかを考え行動することが何より重要』ということです。
会社の先輩が以下ブログを書いていました。
初めはあまり意識していませんでしたが、あるときからこれが非常に重要なことだと気づきました。
僕にとって、上記に記載したやってきたことの中で、大きな機会をいただくことができたタイミング、そして大きく成長できたタイミングは以下です。
すべてにおいて、 『自分がやりたいこと』というより、『アトラエにおいて必要、やるべき』 だと考えていたことが共通しています。
1. Androidのフルスクラッチリニューアル
リニューアルが始まった当初、僕より経験が豊富で社内でエース級のエンジニアがフルスクラッチリニューアルを担当していました。
しかし、リニューアルが始まって1, 2ヶ月が経過したタイミングで、その先輩が他の事業部に異動しなければいけなくなり、代わりに僕一人でリニューアルを担当することになりました。
正直、最初は不安しかありませんでした。
しかし、元々担当していた先輩が僕に期待をしてくれていたことや、yentaとしてとにかく期日にリリースしたいというチーム全員の想いがあったことで、
「自分が成長できるか、やりたいか、は一旦置いといて間に合わせなければいけない、その必要があるからコミットする。」という気持ちが芽生え、それからなんとか一人で完成まで漕ぎ着けることができました。
周りのために、アトラエのために、コミットしたいという一心で完成し切った結果、大きなアプリを1人で作りきったという経験や自信、ノウハウを得ることができました。
2. 海外展開対応のプロジェクトマネジメント
このプロジェクトを担当したメンバーが僕含め、若手のメンバーのみでした。
それまでは、フルスクラッチリニューアルのプロジェクトも含め、先輩たちに仕様の詰めやプロジェクトとしての進捗管理などをお願いしていました。
そのため、海外展開対応のプロジェクトメンバーの中に率先してプロジェクトマネジメントなどを経験した人はいない状況です。
そんな中、僕の想いとしては、若手だけでチームを組んだことによって、リリースの期日が延びてしまったり、アプリのクオリティが落ちてしまうのは一見しょうがないかもしれないけどダサい。それはどうしても避けたいと考えました。
なんとしても期日を遅らせないよう、プロジェクト管理ツールを利用し、全体のスケジュールを把握して調整したり、仕様の詰まっていない機能は仕様を詰めたり。それまでAndroidしか開発経験がなかったですが、必要とあらばiOSやWebフロントもキャッチアップし、開発を行いました。
結果、どうしても間に合わず先輩の力を借りたものの、そこまで後ろ倒しにせずリリースすることができました。この過程でプロジェクトマネジメントや、iOS、Webフロントの開発もできました。
3. Flutterを導入し、Androidアプリ開発
アトラエは社員一人あたりの生産性、言葉を変えると、世の中に出す付加価値をどうやって上げていくかにこだわって組織文化を創っています。
そのため、どんな職種においても生産性を高められる方法を常に模索しています。
「エンジニアが足りない」と、どの企業でも言われているこのご時世ですが、モバイルアプリの開発においては、iOSとAndroid、両方とも似たようなUIで仕様が同じものをそれぞれ別の言語で開発を行う必要があります。
つまり、yentaのようなアプリのサービスで、1つの機能をリリースするのに1人が開発を担当して1ヶ月かかるものをリリースしようとすると、iOS, Androidで必ず2人分のリソースがかかります。
仮に、今iOS, Androidを1人ずつ開発を行なっているものを、2人で両方を開発できるようになったら、今以上に生産性を上げられるのではないかと考え調べ始めました。
そこで、React NativeやFlutter, Xamarin, Kotlin Multiplatform Mobileなどの技術を実際に検証し、先輩方にも相談しながら、Flutterが一番伸びていて、かつここ数年でドキュメントも充実していたため、安心して利用できるという結論に至りました。
ちょうどそのタイミングで、「GreenでAndroidアプリを作りたい」という話が出て、kotlinで開発するよりもFlutterで開発したほうがいいというメリット、デメリットを並べて説明し、Flutterで開発することが採用となりました。結果、現在リードとしてAndroidアプリの開発を任せてもらっています。
---
上記で紹介したブログにもこんなことが書いてあります。
まさにこの通りだなと感じています。
意識的に行動できるようになったのはごく最近の話ですが、振り返ってみるとこの考え方、そして行動のおかげで様々な機会を得ることができ、成長することができました。
僕自身、成長したい!と考えていましたし、今も考えています。
ですが、一番早く成長できるのは、『会社やプロジェクトにおいて必要なことを考え、それを実行する手段を考え、実行していたとき』なんだと感じています。
一見、会社の課題を見つけることは難しそうですよね。
でも、部活動で勝ちたいとき、コンクールで入賞したいとき、周りの仲間と同じ目標を追っているとき、この人たちとどうにか目標を達成したいと思っているときは、何かしら課題、改善点、伸び代が見つかるはずです。
まずは、一緒に何かの目標を追いたい、どうにか一緒に達成したいと思える、そんな関係を会社の人と築けるような会社を見つけられる、もしくは、入社した会社で周りの人とそんな関係を築けると大きな一歩に繋がるのかなと思います。
過去の経験で活きたこと
ちょっと話は変わり、大学生時代の経験で活きたことについてお話しようと思います。
それは、 相手のやりたいこと・望むことと自分のやりたいことの重なりを考える習慣 です。
この習慣は、上で学んだことにも非常に活きていると感じています。
会社、プロジェクトの目指している方向性と、自分がエンジニアとしてなりたい像はそれぞれ存在します。自分がなりたい像を会社やプロジェクトに無理に寄せる必要はないですし、やりたいことだけやらせてくれと会社やプロジェクトに求めすぎるのも違うと思います。
大事なのは、どうすればそれらはうまいこと重なるか、重ねるにはどうすればいいかを考えたり、周りへ発信をして重ねにいくこと。
それによって生まれたアイデアは、会社にとっても自分にとっても、 win-win になり、会社へも貢献することができ、自分も成長することができます。
この習慣が身についたきっかけはほんの些細なことでした。
僕がいた研究室では、大学4年生になったタイミングから卒業までの間に研究活動を行う必要がありました。それが必修科目の一環になっていたため、必須でした。
研究室は、素粒子物理学の実験系の研究室で、主にILC(International Linear Colider)に関するシミュレーションを行う研究室でした。
当時すでにアトラエへの入社は決まっており、エンジニアになることも決まっていた僕としては、研究活動だけ素粒子物理学を勉強することへ抵抗がありました。
せっかく1年間取り組むのであれば、エンジニアとしても力がつきそうなものに取り組みたいと考えていました。
ほぼすべての先輩が素粒子物理学の研究をしている中、一人だけそういうことはできないだろうと思いつつも、ダメ元で先生へ相談してみると、
「(研究室の先輩)〇〇くんが行なっている研究で、とある物理現象を可視化したいというニーズがあるから、それをGUIで表示するツールをつくるのはどうかな?」
という提案をしてくださいました。
結果、ROOTというC++のフレームワークを利用して、物理現象を可視化するツールの作成に取り組みました。
研究室内のニーズと、僕のエンジニア力をつけたいというニーズの重なりをそのツールの作成により満たすことができました。
最終的に、すべての機能を実装するところまではできなかったものの、一定のところまでは可視化でき、研究活動を終えることができました。
自分が何かしたいとき、相手や会社のニーズも聴きながら、重なりを考えたり、発信して相談しにいく活動は、ほんの小さな勇気と行動を持って実現できるんだとその時に感じ、今も習慣として活きています。
終わりに
これまで色々と、機会をいただけたこと、成長できたこと、学んだ大切なことを書いてきましたが、僕自身最初からできていたわけではありませんでした。
むしろ、1年目の最初の半年はエンジニアとしての楽しみを見いだせず、「元気がないけど大丈夫?」と声をかけられることが多くなってしまったほどうまくいかない時期もありました。
でもそんなときに、アトラエへ入社を決意したときに考えていたこと、自分が将来どういう存在になりたいかを立ち返り、「どうにか変わりたい。今の自分がかっこ悪い。」と、挫けてはちょっと立ち上がってを繰り返し、少しずつですが、より良い方向へ変わることができてきました。
そして、周りのアトラエの人たちがみんな視座が高く、みんなでより良い会社を創ろうと考えているからこそ、この人たちと「より良い会社を創るためにまた頑張ろう」と日々感じています。
何か目標を持ったときに踏ん張れる、周りのこの人たちがいるからこそ頑張ろうと思える、そんな会社やチーム、組織に出会える人が増えたり、そんな会社やチーム、組織が世の中に増えていったらいいなと思います。
つらつらと書いた長文ですが、何かのきっかけになれば幸いです。読んでいただきありがとうございました。