今年の3月頭から5月末までの約3ヶ月間、株式会社CyberZで内定者アルバイトを経験してきたので、その体験記を残していこうと思います。
のちのち自分の部署選びの参考になるというのも兼ねてですね。
配属部署
配属先はCyberZの開発本部で、期間中は「OPENREC.tv」のサーバーチームへ参画させていただいていました。
CyberZはプランナーという役職がないことが特徴のひとつであり、エンジニアが機能提案できるという開発者にとって嬉しい文化があります。
プランナーがガッツリいるところだと、なかなかエンジニアが意見することは難しいかと思うので、ここはかなり魅力的なポイントだと思います。
フルリモートでの参加ということもあり、サーバーチーム以外のチームの雰囲気はわからないのですが、サーバーチームは上下関係があまり見えず、皆フラットな関係という印象でした(ドライって表現をしていたような気もする)。
自分にとってはちょうどいい雰囲気でしたね。
業務内容
自分自身、今までサーバーサイドの実務経験がなく、部署の受け入れ面談の際に「サーバーサイドエンジニアとしての業務のフローを一通り経験したい」という風にだけ伝えていました。
そういった意を汲んでいただき、期間中は幅広い業務を経験させていただきました。
取り組んだ業務内容は主に下記の3つです。
APIの改修や機能拡張に関して、内容こそそこまで複雑ではなかったのですが、ソースコードの規模が大きいと言うこともあり、最初はどこに何があるのか全く理解できずに焦っていたことを今でも覚えています。
時間をかけて後から理解できたのですが、自分が関わった全てのプロジェクトには「クリーンアーキテクチャ」と「ドメイン駆動設計」が採用されており、とても整理されたものでした。
しかしそれを知ったところで自分が実装できるかは別問題なわけで、SlackやPRレビューの中で何度もご指摘いただきながら、アーキテクチャのルールやアンチパターンについて学習したと言うのが正直なところです。
やはり、この辺は座学で学ぶだけじゃなく実践と並行して学ぶことが最も効果的ではないかと感じています。
そして、後半はマイクロサービスの設計から実装までを担当させていただきました(実装は途中で引き継ぎ)。
自分が担当したマイクロサービスの設計は、ほとんど白紙に近い状態でアサインしていただいたため、とてもやりがいのある内容でした。
とは言ったものの、やはり難しい。
具体的には下記の4項目を考え、設計書に落とし込むと言う内容でしたが、まあ難しい。
- 処理のシーケンス
- DBテーブル
- リソース
- APIエンドポイント
DBのテーブル設計はお遊び程度でしかやったことがなく、実際のプロダクトだと本当に考慮することが多いんだなぁと実感しました。
一部を紹介すると、「処理を追従するためのステータスが必要かどうか」だとか、「ログはどこまで細かく辿れるようにすべきか」、「どのようにテーブルロックをかけるのか」、「途中で処理が失敗した場合のロールバックはどう実現するのか」などといった今まであまり考えたことのないような細かなところまで考慮する必要がありました。
設計はレビューの中でも「わかりづらいね」と言うご指摘を何度もいただき、「ヤベェ、これ爆弾を残してしまうのでは…?」と何度も思いましたね…
エンドポイントに関しては、アドミン用と一般ユーザー用で分けて考えており、「アドミンで〜な操作ができた方がビジネス側に優しいよね」と言った観点で適宜エンドポイントを追加したり削除したりということを繰り返していました。
兎にも角にも、この設計が最も難しかったです。
設計の大枠がフィックスされたタイミングで実装も並行して進めていました。
実装は、既存のマイクロサービスを参考に雛形を作成、エンドポイントごとにインターフェース、ロジックを順次追加してPRを出すといった形で進めており、途中で引き継ぎという形になりました。
実装の大半が完了せずに終わってしまったことだけが心残りですね。
学んだこと
正直、この3ヶ月間で経験できた全てが学びだと感じています。
と言うのも、やはり業務未経験で参加したこともあり、とにかく初めて経験することが多く、アウトプット以上に圧倒的にインプットが多かったからです。
クリーンアーキテクチャやドメイン駆動設計など、アルバイト開始前からちょっとだけ調べていたこともあったのですが、やはり実際のプロダクトのソースコードを触ることでより理解が深まった実感があります。
また、サーバーサイドの一連のフローどころか、まさか設計フェーズを経験できるとは考えてもいなかったので、実践的な業務も経験でき大変満足しています。
まとめ
いろいろ書きましたが、初歩的なところから実践的なところまで経験することができたので、とても充実かつ満足した3ヶ月間でした。
この期間でサーバーサイドの業務の全体像を把握できたため、次の部署ではより具体的な目標設定ができそうです。
次の部署はまだ決まっていないのですが、ここでの経験を活かして活躍できるように頑張ります!!
では体験記はこの辺で締めさせていただきます👋👋👋