2年間いた現場でやってきたことの話

この度2019/11/29をもって2年間お世話になった現場を離れることになったので、 やっていたことを備忘も兼ねてメモ。

目次

プロジェクト概要

ざっくり言うとPOSシステム+基幹システム+情報系システムの保守

開発

Java

SpringFramework + MyBatis

既存システムのエンハンス。後はpdf・xls出力とか。 折角SpringなのでDIを上手く使ったテストとか試せばよかった。

JavaScript

ES5 + jQuery

Springで吐いたhtmlで、タブフォーカス・色付け・AjaxでDB取得など。 AjaxDWRを使用。 jqGridにビジネスロジックを組み込んだスパゲッティコードがつらかった。

PHP

BFF用API改修

API実装での終了コードの設計は興味深かった

Objective-C

POSレジアプリの改修
年に一度iOSXcodeのバージョンアップ対応

業務で言語初挑戦
iOS開発は初めてだったので楽しかった。 クロージャメモリリークに最初戸惑った。

PL/SQL

バッチ処理を開発
PJ全体で多く使われており、調査系タスクで既存のコードを読む場面が多々あった。

業務で言語初挑戦
SQL自体は苦手な部類だったけどかなり成長できたと思う。

Asteria Flow Designer

Javaベースのビジュアルプログラミング環境
ブラウザからバッチをキックする際の中間層に使用。

エラーハンドリングがプロパティで設定する必要があったり、 複雑なSELECTの場合にクエリをプロパティに持たせたり、 見えない部分が多くなってくるとやりづらい部分があった。

データフローの処理の実装に集中できるのは良かった。

JDEdwards

パッケージに食べさせるためのデータの改修を担当
テーブル名とカラム名がアルファベット+連番とかで処理を追うのが大変だった。

Essbase

OLAPの為のビューのSQLを書いたり、 ユーザー利用のビューのSQLを書いたり。

テスト

温かみのある手動テストとスクリーンショットExcel職人。 気持ちをこめて実施する。

JUnitXDebug、SQLLoader
あたりのテストツールについてキャッチアップできなかったのが残念。

手動テストがつらすぎてSeleniumを学んだりした。(現場では使ってないけど)

リリース

温かみのある手動デプロイ
手動なので基本早朝に出勤して実施する。
マスタ追加やテーブル操作も手動で行う。
早朝の各作業の目視確認はなかなかつらかった。

定型保守

データメンテ

業務の中での多くの割合を占めてた作業。 リリースの不要なマスタ登録や、エラー時の対応などで データメンテを実施する。 基本的にジョブを再実行したり、データメンテのSQLを書いて実行したり。

サーバメンテ

Webサーバログ退避

Webサーバのログファイルが溜まってディスクが逼迫したりするため アラートを目視で監視して手動で退避する。 dfコマンドとにらめっこ。

DBデータ退避

テーブルスペースが逼迫していく度にバックアップ用スキーマに手動退避。

DB断片化解消

表の断片化を解消するため定期的に手動でALTER TABLE SHRINKを実施。

レビュー

後半は自分が設計レビュー・ソースレビューを行う機会がちらほらあった。

特に方針などはチームで定まっていなかったため、 レビュー者は各々のレビュー観点で行っていたと思う。

自分が気を付けていたこと

設計

  • 仕様が満たせているか
  • 対応の経緯が記載されているか

UT

  • 仕様が満たせているか
  • 境界値のパターン網羅
  • 例外時のパターン網羅

ソースレビュー

  • コードの書き方にのみ着目して設計についての指摘はしない

ユーザー対応

保守窓口

保守要員だった為、電話・メールで問い合わせを受けて対応をしていた。 エラー調査・データが来てないなどが多かった。

定例会議

準備

月1でユーザーとの保守報告会議みたいなのがあったため、 課題管理表と補足資料をパワポExcelで作成し提出する。 パワポExcelの資料作りを覚えた。

参加

資料を基にユーザーと会議を行う。 主に課題の報告だが、改修要望や相談もここで受ける。 ここで持ち帰った改修要望などをチームで共有し、対応を行う。 自分はPMに伴ってエンジニア目線での判断ということで参加。

システム自体は結構大規模だったため、網羅しきれてない部分については ユーザーから突っ込まれると答えに窮してしまうときもあった。 みんなそういう時どうしてるんだろう。

チーム内での評価

自走できる人という評価を頂いていた。 タスクに対して既存ナレッジを洗ってから臨んでいたからだと思う。 見れる資料があるなら探して見たらいいじゃん、というスタンスだったので、 他のメンバー的にはほったらかしでもアウトプット出してくるのでやりやすかったのではないかと思う。

いつの間にかチーム内で知見のある人みたいな扱いになってしまったせいで、 開発以外の資料作りや調査タスクなどが増えてしまったり、 全体像の見えない改修をそのまま担当することになったりがよかろうわるかろうだった。

自己評価

開発に関して

JavaObjective-CPL/SQLの現場は初だったけど、それなりにパフォーマンスが発揮できていたのではないかと思う。 ウォーターフォール開発だったのでリリーススパンも長く、行き詰っても焼き付くことはなかった。

開発以外に関して

後半、チーム内で知見のある人という立場に収まってしまったために、 全体像の見えない改修であったり、入り組んだ内容の調査であったりを丸投げされることが多く発生してしまってつらい場面が多くあった。もっと上手くやれなかったかな、とは思う。

まとめ

いわゆるSIでの業務は初めてでシステム開発の業務経験は少なかったので、色んなことを吸収できたし学べてよかった。プログラムを書くことよりもSQLの修正や資料作りが多くて物足りなさを感じたが、人生経験にはなったと思う。