スマレジの テックファーム(SES 部門) でWebエンジニアとして働いている やまて(@r_yamate) と申します。
実務では、2023 年 3 月末で SES の派遣先で、テーブルオーダーシステムの機能改修業務の設計などを担当していた業務を終えたところです。
4月からは、スマレジの関連アプリの開発業務を担当しています。触ったことのなかった Flutter での開発で、日々奮闘中です。
はじめに
今回は、 SES の初めての現場での経験を振り返り、そこで学んだことや感じたことを書きたいと思います。
期間としては 2022 年 3 月から 2023 年 3 月までの約1年間、担当はテーブルオーダーシステムの機能改修の調査、設計の業務でした。
記事を書く目的
経験を振り返ることで、今後キャリアを考えるための材料として整理しておきたいと思います。
また、これからエンジニアとしてキャリアをスタートさせる方々の参考になれば幸いです。
目次
1. 仕事内容の概要を振り返る。
ざっくりですが、仕事内容の概要です。
1-1. システムの概要
システムは、飲食店で利用されているテーブルオーダーシステムで、 iOS アプリと管理画面がありました。
- iOS アプリは、実際に店舗で注文用にテーブルに設置する iPad にインストールするアプリで、プログラミング言語は Objective-C です。
- 管理画面の言語は PHP で、 ZendFramework という言語フレームワークで作成されていました。サーバーは AWS(EC2)にあり、データベースは RDBMS などではなく、 CSV ファイル、 JSON ファイルを zip ファイルに圧縮して持っておく構成でした。
MySQL などの RDBMS を利用することしかイメージを持っていなかった私にとっては、そんなやり方もあるんだと、実際に稼働しているアプリケーションの構成を知れることもとても勉強になりました。
1-2. 機能改修の内容
具体的な機能改修の内容は、 iOS アプリと管理画面の両方で利用しているスマレジの API に関連する機能改修でした。
アプリのメニュー注文などの各機能はそのままで、これまで同様の処理を実行できるように、スマレジ API を差し替えるのみです。
…と、ざっくり言うと簡単そうですが、新しい API はアクセストークン発行が必要になったことによりインフラ構成の変更を必要としたり、 API のデータの構成に変更があることにより、イメージしていたよりも大きな改修でした。
参考. スマレジ・プラットフォーム API とは
1-3. 担当した業務の概要
自分が担当した業務は、調査と設計書の作成でした。
調査
調査は、例えば、各機能で利用されているスマレジ API について、新旧でどのように置き換えられるかの調査がありました。
もちろん私がスマレジの社員であるため開発部に確認できる、というアドバンテージもあって実務未経験でも受け入れていただいているため、その点も活かしつつ調査は進めました。
スマレジの API の調査の他には、 AWS のマネージド・データベースの各種サービスの特徴や、排他制御(処理フローの整理)などの調査をしました。
設計書の作成
設計書の作成については、 API を切り替えても問題なく機能するように考慮された設計をする、というのが主な業務内容でした。
調査した内容をもとに、現場リーダーの方が設計の方向性は概ね考えてくださっています。そして「このような点に考慮して作成してほしい」という作業依頼に応じて、設計書を作成します。完了したらチェックしていただく、という流れで業務を進めました。
派遣先の開発体制として、実装についてはオフショアに委託していたので、実装業務は担当することはありませんでした。
業務時間の作業内容の割合としては、機能改修についての設計資料を作成する時間が多かったです。
初めての現場ということもあり、基本的なことでも分からないことが多くありましたが、現場の方はとても話しかけやすく対応いただいていたため、相談があるときは迷わず話しかけさせていただいていました。
2. 日々の業務を振り返る。
続いて、必要とした知識やスキル、期間ごとに何をやっていたかなどをざっくり書き出してみます。
2-1. 業務で必要とした知識・スキル
- ドメイン知識
- テーブルオーダーシステムの理解、システム構成や機能を把握するスキル
- 税計算の理解(消費税の内税、外税など)
- 設計書作成スキル
- オフショアで外国人が翻訳して読むことを想定した文面で設計書を作成するスキル
- この点は細心の注意を求められました。抜け漏れなく書かないと当たり前のことも考慮されていない実装に繋がるとのことで、翻訳したときに誤訳が生まれないような簡潔な日本語の文面を心がける必要がありました。
- HTTP 通信での必要な処理の流れを把握して、要件を詳細設計書に落とし込むスキル
- オフショアで外国人が翻訳して読むことを想定した文面で設計書を作成するスキル
- スマレジの API についての理解
- PHP(言語フレームワークは、ZendFramework) の読解スキル
- Objective-C の読解スキル
- Objective-C で書かれたソースコードを読解するスキル
- Xcode でデバッグするスキル
- Redis の基本的な機能の理解
- Docker の理解、コンテナの構築スキル
- 要望の環境の Docker 関連ファイルを作成するスキル
- AmazonLinux, Apache, PHP5 という構成で、Docker イメージをもとに環境構築して、Docker Compose で開発環境を共有できるようにしました。
- 要望の環境の Docker 関連ファイルを作成するスキル
- AWSのマネージド・データベースの知識
2-2. 日々の仕事の流れ(とある一日)
ちなみに、日々の仕事の流れは以下のような感じでした。
9:40 出社
9:40〜13:00 設計書の作成、不明点は現場のリーダーに質問
13:00〜14:20 昼休憩
14:20〜18:20 設計書の作成、進捗を報告
18:20 退社
昼休憩が長かったため、自主学習やブログ書く時間に充てていました。 残業もほとんどなく、業務外の自習は捗りました。
2-3. 四半期ごとの作業内容
かなりざっくりですが、作業内容は四半期ごとだと以下の作業をしました。
2022年3月〜6月の3ヶ月半
- PC の開発環境、各種ツールの設定
- Docker のローカル開発環境の導入
- テーブルオーダーシステムの各機能、ソースコード確認
- スマレジ・プラットフォームAPI、スマレジ・プラットフォームアプリ化の調査
- 基本設計書の作成
2022年7月〜 9月の3ヶ月
- スマレジ・プラットフォームAPI、スマレジ・プラットフォームアプリ化の調査
- AWS の マネージド・データベースの洗い出し、比較調査
- 排他制御、ElastiCache for Redis の調査
- 基本設計書の作成
- 詳細設計書の作成
2022年10月〜12月の3ヶ月
- 詳細設計書の作成
- AWS のローカル開発環境 LocalStack の調査
2023年1月〜3月の3ヶ月
- 詳細設計書の作成
3. 感想、成長、評価について振り返る。
3-1. これまでの学習が役立った点、力不足を感じた点
これまでの学習が役立ったと感じた点
私は実務未経験で技術力ではスキル不足であるという自覚は常にありましたが、基礎学習にはかなりの時間をかけたり(教材は『独学エンジニア』)、ポートフォリオとしての Web アプリケーションを作成した経験があったことで、業務での会話や依頼の内容が全然わからない、ということは少なかったかなと思います。
作成した経験がなければ、話についていけないタイミングはもっと多かったと思います。
力不足を感じた点
全部です!…と言いたいくらい、経験不足を痛感しました。(当然ですが)
特に、実務で実装したことがない状態で、詳細設計書(これを見れば実装できる、という実装の一歩手前までの資料)を、実装しないで作成するのは難しかったです。
設計を経験するタイミングの理想としては、実装したことがある状態で次のステップとして設計を経験するのが良いと感じました。
ただ、ベストではなかったにしろ、とても良い経験ができたと思います。
3-2. 成長できた点、できなかった点
成長できた点
基本設計書や詳細設計書の書き方、設計する上で考慮すべきこと(エラーハンドリングやトランザクション、ログの設計など)について、考えることができたのはとても勉強になり、成長できた点かと思っています。
また、外部サービスからスマレジAPIを利用する関係性で実務的に学べたことは良かったです。
スマレジについてのドメイン知識の理解が間接的に深まり、スマレジの開発に携わる日が来たときには役立てることができるため、スマレジで今後活躍するためにはとても良かったと思っています。
あまり成長できなかった点
実装スキルです。実際にサービスを提供しているシステムのソースコードを見ることができたのはとても参考になりましたが、やはり実際にコードを書かないことにはそれほどの成長はないかと思います。
ただ、詳細設計書は、 Excel で処理の流れをプログラミング言語ではなく、日本語で書き出していく作業ではありますが、ちゃんと実装できる内容で書かなければいけないため、実装しているつもりで詳細設計書も書き出していく必要がありました。
そのため、実装業務をしていない=実装スキルが全く付いていない、とは一概には言えないとは思っています。
3-3. 評価いただけた点、そうでなかった点
評価いただけた点
派遣先からいただいた評価シートによると、設計の精度や可読性、作業スピード、報告のタイミングなどで良い評価をいただき、また、傾聴力、理解力、協調性の項目でも良い評価をいただけました。
そうでなかった点
ただし、知識力や知識に基づいた提案力については、今後エンジニア経験を積んでいくと自然と知識が身に付き、様々な観点から提案していけるようになる、とのアドバイスをいただきました。
こればかりは経験を積んでいくしかありません。
おわりに
初めてのSESの現場での約1年の経験は、自分のキャリアにとって大切な一歩だったと思います。
未経験からエンジニアとしてのキャリアをスタートさせて、いきなりうまいこと全てをこなすのは難しいということを痛感しました。
Twitterなどでよく見る、一年で驚くほど成長している人のようにはなかなかいきません。
また、実装のスキルアップが最も重要な課題の一つとは考えていましたが、今回の経験を通じて設計を学ぶことができ、これはこれでとても良かったと今は考えています。
これからしっかり経験を積み上げて、40歳になるまでの3年間で、年相応のスキルを持っている人材になれるよう励んでいきます。
もう一点だけ...
ここまでの内容で書かなかったことですが、今回のSESの派遣期間中で経験できて良かったことが一つあります。
たまたま利用した飲食店が、派遣先のテーブルオーダーシステムを導入しているお店だったことがありました。
当然、自分が開発に携わった!と言えるサービスではないのですが、関わっているサービスが世の中の人の役に立っている、というのはとても嬉しい体験でした。
転職前からも想像はしていましたが、この点はものづくりを仕事にする醍醐味かと考えています。
もし自分が開発に大きく関われたサービスが街中で利用されているのを見られたら、すごく喜びを感じられるだろうな、と今から想像しています。
そんな日が来るのを待ち侘びながら、目の前の業務に懸命に取り組んでいきます。
昨日で1年間携わったSESの初案件最終日でした。業務後に激励会までしていただいて、ほんまに有り難かったです。ほんまに。良いご縁に感謝です。 pic.twitter.com/7FpvumVyBd
— やまて|ソフトウェアエンジニア2年目 (@r_yamate) 2023年4月1日
有り難さも振り返ることができました。励みます。