この記事は、BBSakura Networks アドベントカレンダー 8日目の記事となります。
こんにちは、BBSakura Networks株式会社 の清水です。普段はモバイルコアの開発などを担当しています。
先日、CNTOM2023のスポンサーセッションにBBIX株式会社として登壇させていただきました。
今回は、登壇発表の内容紹介と振り返りをテーマにしてお伝えさせていただきたいと思います。
発表内容について
モバイル未経験から新卒配属5か月でモバイルコアとSIMの開発運用で活躍してる話、というタイトルでモバイルコアの開発という自分にとっては未知の領域である業務内容について、どのように勉強をしながら進めていったのかについてお話ししました(自分で活躍って言ってるのは少し面映ゆい気持ちになりますw)。
なお、発表時の資料につきましては、上記リンクのCNTOMのページ内にて後日公開予定です。あわせてご覧いただけたらと思います。
初めてのタスクは、HSSにおけるUpdate Locationの処理の実装でした。 簡単に説明すると、これは、ユーザーのデバイス(スマホなど)が新しいエリアに移動した際に、HSSに記録されている位置情報を更新する、という処理です。このような処理を行うことによって、移動中でも接続が途切れることなく通信を行うことができます。
配属当初、自分は
- モバイルという未知の分野についてどのように勉強を進めていくか
- フルリモートという環境でどのようにメンバーとコミュニケーションを行えばいいのか
という2点について課題に感じていました。
以前のブログでは、どのようにオンボーディングを行ったのかというテーマの中で、リモートワークにおけるコミュニケーションの方法についてご紹介させていただきましたが、CNTOMではどのように勉強や開発を進めていったのかという内容を中心にお話させていただきました。
どうやって勉強したか
自分は、開発に使用しているGo言語にそもそも触ったことがない、という状態からのスタートだったので、まずは A Tour of Go*1で基本的な文法から学び始めました。
また、Update Locationの処理ではDiameter*2というプロトコルを使用するのですが、Diameterも配属してから初めて知った、という状態だったのでこれも1から勉強しました。
加えて、LTEのアーキテクチャや、Update Locationを含むInitial Attatch*3 についてチームの方に教えていただいた上で、実装を始めました。
Update Locationが具体的にどのような処理を行っているかは、3GPPを読むと書いてあります。 しかし、じゃあそれを読んでその通りに実装しよう、というのは初学者である自分にとっては難しいことだったので、実装は過去に書かれたモバイルコアのコードも参考にしながら進めていました。過去のコードと3GPPの記述を比較することで、3GPPに書かれている内容がどのように実装すればいいのかを把握しやすくなりました。
開発を進める際に意識したこと
1つの処理 → 1つのテストパターンという順番で開発
これは習熟度によって様々な方法がありそうですが、自分は不慣れな言語で一気に実装を進めた場合、エラーが発生したら原因の切り分けが大変そうだなと考えていたのでこの手順で実装を進めました。
コードをきれいにする工夫は後回し
これもエラー時の原因をわかりやすくするという目的です。長い処理を関数として切り出すなどは、最終的に保守性の高いコードを作るためには必要なことですが、一旦後回しにして開発をすすめ、後から関数として分けられそうなところは分ける、という手順で進めていました。
Working Out Loudで進捗を見える化
以前の記事でも紹介させていただいた、仕事の進め方に関する方法です。 Working Out Loudとは、自分の作業・学習内容・疑問点を共有しながら仕事を進めていくという手法で、自分はSlackに自分用のTimesチャンネルを作成し、そこで業務の進捗を共有していました。
進捗を共有することで、悩んでいる際などはチームメンバーからもアドバイスをもらいやすくなり、スムーズに仕事を進めることができました。
これまでの成果
HSSの機能を完成させた
配属から2ヶ月目で完成させました。初めてのタスクながらテストコードを含めて1000行を超えるコードを完成させたので非常に達成感がありました。
ソフトウェアにもハードウェアにも携わることができた
HSSの開発以外にも、SIMカードのプロファイル検討や、モバイル通信の検証環境の構築のために物理機器(サーバーなど)にもさわる機会があり、幅広い分野の業務に携わることができています。
いざ、登壇
上記で紹介させていただいたような内容を発表させていただきました。
CNTOMの参加は初めてでしたが、昨年度や今年のプログラムを見ていて、他のセッションの内容と比較するとかなり異なる雰囲気の発表になるだろうなという予感は前日から感じていました。 その予感は、当日に他の方々の発表を見ていて確信に変わり、発表前は非常に緊張していました。
そんな緊張の中で迎えた発表ですが、結果としては反省点を残しつつも無事に終了し、業界の諸先輩方にも温かく見守っていただけてとてもよかったです。また、セッション終了後に行われた懇親会でも、多くの方から良かったよとお声をかけていただきとても嬉しかったです。
余談ですが、この発表はチームのメンバーの方々も現地で見てくださっていたのですが、発表を終えた後、「実は見ている側も緊張していた」という旨のことを言っており、まるで子供の発表会を見守る親みたいなコメントだったので面白かったです。
登壇を振り返って
このように、無事発表を終えることができましたが、今振り返ってみると、
- 緊張のあまり話す内容を飛ばしてしまい、想定より早く終わってしまった
- 話の内容・資料の構成に改善の余地があった
など反省点は色々あったと感じています。 特に発表内容の構成などは、このブログを書いている最中でも「こういうことも話したほうが内容が伝わりやすいよな」みたいな点は結構出てきているので、資料作成の段階からもっと入念な準備が必要だったと思います。
また、今回このような登壇のチャンスをもらえたのはとても恵まれていたとも感じています。 IT系の分野ではこのようなカンファレンスが多く開催されていることは知っており、自分もいずれは登壇したいという気持ちはあったのですが、まさか新社会人1年目にしてそのような機会が巡ってくるとは思っていなかったので、話が来たときにはとてもびっくりしたのを覚えています。
自分にとってもチャレンジングな機会でしたが、スポンサーセッションに新卒を送り出すという判断をした弊社もとてもチャレンジングな会社だなと感じました。
30点で打席に立つ
最近、弊社のSlackでシェアされて、チーム内でも度々話題に上がるスライドです(とても素晴らしい内容なので是非読んでみてください!)。
登壇の話が上がった当初は、新卒である自分に発表が務まるのかという不安もあったのですが、このスライドの
その時の自分にとっての80点を目指しながら、「他のすごい人から見たら30点位だろうし不安だな」くらいの状態で踏み出すのが大事
という内容に勇気づけられました。
これからも、30点で打席に立つというマインドを大事にしながらチャレンジを続けていき、新卒というカードがなくても評価されるつよいエンジニアを目指して頑張りたいと思います。
ここまでお読みいただきありがとうございました。
*1:Go言語の公式チュートリアル https://go-tour-jp.appspot.com/
*2:主にモバイルデバイスで使用される次世代の認証・認可・課金情報管理のプロトコル
*3:ユーザーのデバイス(スマホなど)がモバイルネットワークに自身を認識させ、必要な設定を行い、通信が可能な状態になるまでの一連の手順のこと。Update LocationとはこのInitial Attachの中で行われる処理の1つであり、スマホがネットワークに接続されるまでにはそれ以外にも多くの処理が行われている。