別会社の担当しているEラーニングシステムのゲーミフィケーション部分を受託しており、その運用を担当した。
基本的なチーム構成としては、ディレクター1名、デザイナー1名、コーダー1名、サーバーエンジニア1名(自分)、インフラ1名の計5名。
サーバーサイドだけでなく、フロントエンドも担当し、SVN, PHP, Yii, Javascrpt, HTML5, CSS3, grant, fabric, mackerelを使った。
主に機能追加やバグ対応を行っていたが、特に印象に残っている案件が3つある。
1. バトル機能追加
リリースから半年ほど経ち、新規ユーザーを獲得するために機能追加を行いたいと先方から話が上がった。
自分も企画提案から参加し、リリース時にも案に上がっていたバトル機能を再提案した。
バトル機能は既に雛型があり、制作側の工数を最小限に、ユーザー側にとってインパクトの大きいものが欲しいという先方の要望を満たすと考えたからである。
そして実際にバトル機能が追加されることになった。
自分は要件定義、設計を担当し、実装は後輩のエンジニアがアサインされた。
後輩が少し仕様と違うように実装してしまったこともあったが、その反省を生かして、仕様を出来る限り具体的に分かりやすく伝えるようにした。
また、ディレクターの行う手動テストが大変という課題が上がり、それを楽にするような管理機能も追加した。
2. DDOS攻撃
自分たちの使用していたホスティングサービスがDDOS攻撃を受け、サービスへアクセスしづらくなってしまった。
その際に先方とのやり取りから対応までほぼ全てを担当していたのだが、原因究明や対策に追われ先方への返信が遅くなり、先方からの心証を悪くしてしまったことがあった。
このことをきっかけに、仕事において相手の心証は大事で、それを保つためにレスポンスは早くなければならないと再確認した。
サービスが緊急事態に入っている中では、まず逐一報告し、現状を見極め、一時対応を行った後、原因や恒久対応を行う。緊張感の中で、その一連の作業を行う経験を積むことができた。
3. 大規模なシステム置き換え
先方のサービスが外部サービスと置き換わることになり、こちらのシステムとの連携部分やデータ構造も変わることになった。
その際の先方とのやり取り、スケジュール決め、仕様決め、設計、実装まで担当した。
具体的には連携部分をjwtに置き換え、データ移行を手順を文書に残し、きちんとリハーサルを行い準備した。
大規模なシステム移行の方法を学ぶことができた。
このように、多くの工程をエンジニア一人で担当させて頂くことで、幅広い経験を積めるプロジェクトであった。