![header2_アートボード_1](https://assets.st-note.com/production/uploads/images/19476763/rectangle_large_type_2_d2acea0265fd46e76c37de16974b749f.png?width=1200)
フルスタックに活躍した話
はじめに
今回は僕(マミー)のSHABOMでのお話として、普段考えてることを交えつつハッカソンからリリースに向けた開発まで何をしてきたかお話ししていこうと思います。
ハッカソン中
ハッカソン中はテックリード的な立場にいました。フロントで用いるツールがUnityだったことや、バックエンドも僕が使ったことのあるPythonのFlaskを採用したこと、DBも既存知識のあるmongoDBにしたことなどから結果的に僕が全体を理解できる立場だったということもあります。
まず、コード設計は絶対に考えようと思っていました。これは、去年の春にゲーム会社でインターンをさせて頂いたときにUMLを書いてから実装した経験から、絶対に設計をしておいた方が潤滑に進むという確信があったからです。結果として、コード設計をしていたからこそ、あとのリリースに向けての部分でも破綻せず実装していけたと思います。
ただ、アーキテクチャレベルでの全体を見渡した設計はまだまだ出来ていなかったというのもあります。これは僕の知識や経験が未熟だったというのが原因なのですが、機能修正・追加する上でここの設計ミスってたなぁっていうのが何回かありました。
フロント、バックエンド、そしてコード設計まで自分が把握していた状況だったのでハッカソン中はゴリゴリコードを書いて、実装してとにかくプロジェクトを引っ張っていく形になりました。
リリースに向けて
ハッカソンから目標を変更して、リリースを目指そうとなりました。ここからまた大きな変化がありました。それは元々バックエンドを実装していたカルボにはレビューをしてもらう形式を取り、僕がバックエンドのコードも書くことになったことです。ここからフルスタックへの道が始まりました笑
ハッカソン後にバックエンドの使用技術も大きく変化し、dockerを導入したり、言語をpythonからGolangへ変更したり、DBMSをmongoDBからMySQLに変更したりとほぼ全て変わりました。
何が良かった
フルスタックに開発に携わってきて良かった点としては、フロントとバックエンドの両立場の話が出来るようになったことです。
普段Unityで開発していてサーバとの接続部分を考えることは、個人開発だとかなり珍しい機会だと思います。しかし、近年のソシャゲなどの流れを見ているとサーバサイドが関わっていないゲームはほぼ皆無だと思います。なので、フロントエンジニアとしてバックエンドを理解する最高の機会でした。
つまり、フロントエンジニアとバックエンドエンジニアのインタフェースにあたる部分が明確になったことが良かったところです。
浮かび上がる問題点
現状、SHABOMのフロントとバックエンドはかなり自分が手掛けている部分が多いです。そのため、僕にしかわからない部分が生まれてしまっていたり、バックエンドも今からカルボがキャッチアップするには負担が大きい状態になってしまっています。以前のカルボの記事でもありましたが、プロジェクトのコードが属人的になるのは非常に危険です。フルスタックにやり過ぎてしまったから生まれた問題点かなと思っています。解決手段としては、以前のカルボの記事にあったようなドキュメントを整備することなどが考えられると思います。
最後に
良かった点も、問題点もありましたが、結果としてここまでフルスタックにひとつのプロダクトを担当できている現状は成長につながるありがたい機会です。そして何より自分の知識範囲が広がると次第に作れるもの、想像できるものも広がっていきます。この感覚を味わえているのは本当にありがたいです。
今後フルスタックなエンジニアになっていきたいかと言われると、少し答えに迷いますが、広くプロジェクトを見渡せるエンジニアになりたいとは思っています。それは「世界にまだない当たり前を最高のチームで作る」という僕の目標に必要な要素だと考えているからです。
最高のチームとは個人の力を掛け算できるチーム。個人の力が足し算ではなく掛け算になるには、歯車のように一人一人が噛み合わないといけないと感じています。だからこそ、全体を見渡す知識を持つためにフルスタックに取り組むことには意味を感じています。ただ、業務としてフロントもバックエンドもコードを書きたいのかと言われると少し違うかなと思っています。
今回はかなり個人的な意見が多めの記事になりました🙇♂️それぞれいろいろなエンジニアの方々がいて、目指す像も人数分あってもいいと思っています。だからこそ、僕自身がどんなエンジニアになって、何をしていきたいのか改めて考え直してみました。
拙い文章だったかもしれませんが、これで僕の担当は終わりになります。今まで読んでくれた方ありがとうございました🙇♂️