株式会社とら / プログラマー
建築資材サイト保守運用
①どのようなチームで 【チーム構成(人数)】 ・ディレクター(1) ・バックエンド(2) ・デザイナー(1) 【チーム内の自身の役割】 ・バックエンド 私は設計→コーディングを行なっていくフェーズをメインに担当しました。 ②どのような機能を 【機能概要】 建築資材を提供するクライアントのホームページの保守、運用、改修を行いました。 こちらのサイトは特殊で、 一つの会社が全てを保守するのではなく、 複数の会社が一つのホームページの保守を行なっていました。 (弊社ではこのページとDB、このページは会社A、このページは会社B等) 【課題とその背景】 弊社で20年以上の取引の歴史を持つクライアントで、 技術負債がかなり溜まっていました。 また、建築資材一つ一つの商品情報やそれを使用した施工例等の情報も弊社で管理するDBにあり、 ボリュームが膨大で運用に費やす時間が要するクライアントでした。 ③どのような技術を用いて ◯言語:Java バージョンは7です。 ◯フレームワーク:自社フレームワーク 自社フレームワークで開発やDB操作を行なっていました。 ◯インフラ:オンプレ 他社が構築していましたが、 運用は弊社がメインで行なっていました。 オンプレ環境で弊社の事務所内にWebサーバー、DBサーバーがあったので、 何か不具合が起きた時はSSHで入ってログを確認して調査を行なっていました。 他社がDBにある情報を何かの時に欲しいといった要望があった時には、 SQLを発行してエクセルにまとめて渡したりといった事もしていました。 CUIでログの参照を行なったり、 調査を行う機会もありましたので、 Linuxでコマンドを触る力もここで身に付ける事が出来ました。 ◯DB:Oracle ◯バージョン管理:GitLab EclipseのパースペクティブにあるEGitを使ってGUIで使っていました。 ④どのような工夫をして 【着目点】 基本的に開発はディレクターからのトップダウン形式で、 クライアントからディレクターがヒアリングしたニーズを聞き、 それを元に作業を行なっていました。 プロジェクト1と同様に開発中で疑問が出た際には、 ディレクターにクライアントとコミュニケーションを取る様に促していました。 こちらのプロジェクトは弊社のデザイナーがデザインを作り、 そのデザインをシステム担当の私が受け取って組み込んでいくといった形で行っていました。 こちらのクライアントは要望が要件定義した時とは違う内容に二転三転する事があり、 仕様変更の乱発が恒常化しており、 その都度ディレクターとデザイナーと相談を行い対応していくので、 不足の状態に対応していく胆力も養われました。 私とよく共同で担当していたデザイナーの方が、 仕様変更の乱発で残業が続くと感情的になって周囲への当たりが強くなってくる方でした。 プログラムは適切に書けば動きますが、人はどうしても自分の不足外の行動を起こすので、 チームで開発を行なっている事を忘れず、自分も釣られて感情的にならずに、 出来る限り笑顔を忘れない様にコミュニケーションを取りながら開発に当たる事を意識していました。 【該当技術使用や行動の背景】 クライアントはWebに疎く、 新しい技術を使う事に明るく無かった為、 長きに渡って同じ技術を使用していました。 ( WinSCPで修正のあるファイル一つ一つを確認しながらGUIでscpしていくなど) こちらのクライアントはこのプロジェクト以外にも弊社と別の事業で付き合いがあり、 その事業での売り上げがとても大きく、 あまり状況改善について強く言えない状況にありました。 この業界に属している以上、 改善に努める事は当然最も重要であると考えていますが、 どうしてもそれが出来ない状況もあるという事を学びました。 ⑤どのような成果に繋がったのか トラフィック数の多い力のあるホームページだったので、 そのホームページを訪れ周遊する多くのユーザーに価値のある情報を提供する事が出来ました。 レガシーコードと肥大化・複雑化したDBの操作を行う事が要求され、 改修時の工数が余計に掛かってしまう事が幾度とありました。 大元の親会社が昔ながらの大企業で、 新しい技術の導入に乗り気では無い+複数の会社との共同運営になっているので、 状況改善が困難な状況下にありました。 その中で、 末端のプログラマーの自分に何が出来るのかを考えた時に、 少しでも状況の改善を出来たらと思い、 ライブラリの導入や、 せめて自分の関わったページのコードのリファクタリングはしていこうと、 後から見た人が見やすい様に変数を作ったり、 不要なコードの削除やインデントの修正等細かい所ではありますが、 意識して行なっていました。