見出し画像

フルスタックエンジニアとして複数言語を同時に使う時に気を付けていたこと

フルスタックエンジニアとしてVoicyにジョインし、はや半年が過ぎました!最初はかなり大変で知らないことしかないような状態でしたが、それも徐々に落ち着き今ではさまざまな部分で開発ができるようになりました。今回はVoicyのアドベントカレンダーの12日目の記事ということでVoicyでの自分がフルスタックエンジニアとして気をつけていることや、どのように複数言語を開発できるようになったのかについて書いていこうと思います!

何者?

株式会社Voicyでフルスタックエンジニアとして開発しています!現在はYugunというチームに所属し、Voicyの全てのドメインでの開発をせっせとこなしています!
2023/5月に共同創業者以来のフルスタックエンジニアとして採用され、iOSアプリ、Androidアプリ、バックエンド、webフロントと色々な言語を使い開発しています

様々なドメイン

Voicyには音声を再生するアプリ(iOS, Android, web)だけではなく、
パーソナリティが収録するための アプリ版Voicy Studio(iOS, Android)
パーソナリティがチャンネルを管理するための web版Voicy Studio(web)
社内でVoicyを運用するための社内管理サービス(web)
それぞれのサービスに紐づくそれぞれのバックエンド(めちゃくちゃある)
ポッドキャスト用サーバー
など大量にドメインが存在します。最初入社した時はマジで混乱しました
現在自分はポッドキャスト用のサーバーを除いた全ての開発に少しづつ携わっている形になります

複数言語を習得するためにしたこと


Voicyでは主にKotlin、Swift、Golang、TypeScript(Angular)の言語を使用してそれぞれの開発を行います。初めは一つ一つ慣れていく予定でしたが予定よりも早く色々な部分を触る機会があり、入社一ヶ月後にはざっと全ての言語を開発してみる経験をしました
そんな「一気に4言語開発する」という経験をした自分の中で重要だったことやこうすればうまくいくのかとわかったことがあります

まずは基礎を知る

まずは書き方を最低限知らないと何も書けません。前職ではVue.js、Rails、Swift少し触る、Kotlin少し触るといった感じの開発をしていたので全ての開発にガッツリ入るためには改めてVoicyで使う言語の全ての基礎を知っておく必要がありました。
そのために4つの言語のチュートリアルを入社してすぐに始めました!
開発も並行でやりながら休みの日にチュートリアルして言語を理解していく形だったので最初の1ヶ月はすごく大変でした。
でもそのインプットのおかげで4つの言語の基礎を理解でき、既存のプロジェクトで何が書いてあるのかがなんとなくわかるようにはなりました
やはり基礎は大事ですね。

既存のアーキテクチャを理解する

言語が違うと開発体験も全然違うように感じるかもしれませんが意外とそんなことないです。自分の中で言語よりも大事なのは既存のアーキテクチャを理解し、それに沿ってキャッチアップをしていくということでした
MVVMやVIPERなど一つの処理がどういった流れで渡されているのか、一連の処理の流れさえ理解ができれば中身の言語がなんであれエンジニアならなんとなく読めると思います
正直このアーキテクチャの把握さえ最初にしておけば言語なんてなんでも開発できると思っています
自分も正直最初はアーキテクチャの理解をしないまま行き当たりばったりでコードを読んで開発をしていました(初心者丸出しですね)
しかししっかりとアーキテクチャと処理の流れを理解するとどの部分でどの処理が行われ、どこに何を書くのか、今回の実装はどこに書けばいいのかは大体わかるようになりました

とりあえず聞く

自分はフルスタックとして開発に携わっていますが、Voicyの中では基本的に一つの言語のプロフェッショナルがそれぞれのドメインを開発しています
なので自分よりも遥かに詳しい人がたくさんいる中で自分がしたことはまずは聞きまくるということでした
自分で考えることも大前提必要ですが、今考えていることが思考したら結論が出るものなのかどうなのかすら最初はわからないので
考えてわからないようならすぐに聞く!を最初は繰り返しました

念入りな準備は無駄

新しい言語の開発の時に自分が知ったことの一つとして念入りな準備は無駄だということです。新しい言語を使って開発するためにインプットばかりして、開発できるような状態になったら開発しようという考えや、今は開発できる技術力じゃないから開発はやめておこうという考えは無駄だということがわかりました
使うかわからない知識をどれだけ事前に詰め込んでも実際に使うのはほんの一部です。一つの言語のプロフェッショナルになるのであればまだしもフルスタックのようなどの言語でもやるような人はいちいち勉強してから飛び込むことはしない方がいいです。飛び込んでから勉強するのが一番早くその言語を使えるようになる方法だということがフルスタックエンジニアになってわかったことでした

フルスタックエンジニアとして開発する時に注意していること

言語切り替えの負荷をなくす

フルスタックの気になることの一つとしていっぺんに複数言語扱うと混乱するのではという点があると思います
確かに複数言語同時に扱うと多少混乱する部分はあります
なので自分はこの日はiOSの日。この日はAndroidの日。この日はwebの日みたいにできるだけまとまって開発を行っています1日に4言語扱うこともありますが、そうなってくると開発の効率が落ちてくるのでできるだけまとめて開発するように意識をしています
上でも述べたように開発の基本はアーキテクチャに沿って実装していくだけでそれぞれの言語での書き方はその都度調べながら書くことが多いです(それぞれの言語の書き方は特に覚えてません)

久しぶりの開発では既存の処理や前回の実装を確認する

例えばしばらくiOSとバックエンドを開発していた後に久しぶりにAndroidを開発するとなると感覚を忘れていることは結構あります
そんな時は既存のコードを再度追ってこんな書き方だったなと思い出したり、前回実装した自分のコードを確認して開発こんな感じでやってたなと振り返ったりしています
根本にあるのはアーキテクチャの理解なのでそれさえ忘れなければ少し前回の振り返りをすれば書けるようには戻ります

まとめ

どうでしたでしょうか?フルスタックとして気づいたことを書いてみましたが改めて自分のしたことをよく見てみると、一つの言語を習得するプロセスと全く変わらないと思います
そうです。フルスタックだから何か特別なことをしているというわけではないのです
エンジニアは一つの言語を習得すると他の言語も習得しやすいとよく言いますがそれは本当にその通りだと思います
言語を1つ習得するのも4つ習得するのも物理的な作業量が増えるだけで、やることは何も変わらないということをフルスタックエンジニアになって改めて理解しました

最後に

Voicyではエンジニアを募集しています!!
フルスタックエンジニアになりたい人も1言語を極めたプロフェッショナルになりたい人も!気になる方はぜひ応募してください!!


この記事が気に入ったらサポートをしてみませんか?