こんにちはt-tomoです!
今回はエンジニアとしての普段の業務内容を記事に書き起こしてみたいと思います!
ただしオークンの中でもプロジェクトやお客様によって進め方は様々ですし、エンジニアによっても細かな進め方は十人十色だと思いますので、あくまで一例として受け取っていただければ幸いです。
目次
案件
オークンには自社開発と受託開発の2種類がありますが、僕は受託開発の案件を担当しています。
その為、多くはお客様と一緒に仕事を進めていくことになります。
ちなみに自社開発と受託開発の違いについては以下の通りです。
自社開発:自分達が望むものを創る
受託開発:お客様が望むものを代わりに創る
開発業務の進め方
要件定義

例えばお客様が独自の通販サイトを創りたいと構想を練っている場合、まずは要件(=システムで何を実現したいか)を一緒に考えます。
事業運営、販売プロモーションをしていくお客様と、システムに詳しい我々との双方からの視点で、必要なステップや考慮すべき事項を洗い出します。
- 利用者がサイトで商品を何度も購入する度に送付先を入力する手間を無くしたい
→利用者情報をサイトのデータベースに保存しておく必要がある
→利用者側にログイン機能が必要 - 利用者に限定セールのプロモーションメールを送りたい
→メールアドレスの登録機能が必要
→メールアドレスの打ち誤りを想定してメールの受信確認の機能を入れると良い - プロモーションを送る時に利用者の性別や年齢ごとに違う商品案内を送りたい
→利用者情報を登録してもらう時に性別と生年月日を入力してもらう必要がある - 長期間サイトを利用してくれる人にはより安い特別価格で提供したい
→利用者ごとに商品の価格表示が切り替わる制御が必要
→利用者ごとにサイト利用期間の管理が必要
→サイトを見る人によって商品の金額が変わるとクレームになりかねないからわかりやすい案内をサイトに表示する方が良いのでは?
→ちなみに利用者が一度退会して、購入を再開したらどう扱いたい?
システム設計
お客様と要件を決めた後は、次にシステムの設計を考えます。
何のデータベースが必要か、データベースではどの項目をどのような形式で管理するか(電話番号はハイフン有り無し?名前は姓と名を分ける?)などを考えます。
システム処理のフローも考えます。(設計で使用するシーケンス図を簡単に作成してみました)

プログラム実装

そしていよいよプログラムコーディングです。
設計を常に意識しながらコーディングを進めます。
時にはコーディングの際に追加で制御が必要なことに気付くこともあります。
プログラミングのWEB学習サービスでは主にこの部分に取り組むことが多いと思います。
テスト

次にテストです。
自分達が絶対の自信を抱いて創り上げたものを、次は絶対の疑いを抱いて確認します。
変に自分に自信がある人ほど要注意です。慎重に進めます。
検収・納品
リリース前に、お客様にシステムが仕様に合致しているかを確認する「検収作業」を行っていただきます。検収作業に問題がなければ、創ったシステムをリリースします。
自分たちが創ったシステムが使われるというのは本当に嬉しく感じます。
運用・保守
納品したら開発終了ではありません。
どんなに緻密に設計したシステムもほぼ100%と言って良いほどエラーが発生します。
それだけ多くのユーザーに多様な使い方をしてもらっている証拠です。
お客様からエラー報告を受けたら徹底的に可能性を挙げて調査する必要があります。
「メニューを買ったら画面にエラーが表示された。」
このような報告を受けたらあらゆる原因を想定して利用者の操作履歴やシステムログを追跡します。
- 商品の在庫が残っていなかった?
- クレジットカードの決済が上手くいかなかった?
- 送り先情報に変な文字が混入していた?
- 同時に2人以上が購入した?
- 利用者が一時的に通信環境の悪いところにいた?
- 購入プロセスは完了しているのに画面にエラーが出た?
1つのエラー調査に半日以上かかることもあります。
自分達からすれば1万人居る利用者のうちの1人かもしれませんが、本当にその商品を求める利用者にとっては重大な問題かもしれません。
一刻も早い解決の為に全力で調査をおこないます。
新たな開発
サービスを継続するとお客様から新しい要望が出てくることもあります。
- 利用者から送付先を複数使い分けたいという問い合わせが多いので1人あたり5個まで送付先を保存可能にしたい
- 商品が届いた後に返品されるケースも多いので、返品案内のフローを自動化したい
そうしてサイトをより良くする為に次の開発に進んでいきます。
チーム開発

以上、システム開発のフローに沿って綴りました。
実際は社内のほとんどの開発はチームでおこなうこともあり、チーム内での進捗共有や技術的な質問や相談なども非常に活発です。
僕たちのチームでは毎朝「昨日の進捗・今日の予定・困りごとや相談事項」という形で口頭での擦り合わせを実施しています。
これによって離れているメンバーとも相互に何をやっているかが常に共有され、ちょっとしたことも相談をしやすいチーム体制になっていると感じています。
開発計画に遅れが生じそうな際に相互フォローができるのもチーム開発ならではだと思います。
業務環境に感謝

普段の業務を振り返ると開発しやすい環境を提供してくれるオークンが自分にとって本当にありがたい存在であると再認識しました。
作業がしやすい大きなデスク、疲れない椅子、高性能のMacBookと外部モニター。
どれもこれも先回りで用意してくれます。もちろん別で必要なものがあれば早急に用意してくれます。
また社内の事務手続きがほとんどないので、紙もペンも全く使いません。(好きで使っている人はいます笑)
こんなに開発業に専念できる環境を整えてくれる代表の山下さんやバックオフィスを支えるFujiさんやSumiさんには、厚く感謝の念につきません。
これからもこの環境を大いに活かして、より多くの人の幸せに繋がる仕事をしたいと強く思います。
コメントを残す