Business social network with 4M professionals
現在大阪の制作会社で業務用アプリケーションの開発を行なっております。 クライアントは人材派遣会社様が多く、人的資源管理を行う為のものが主力です。 私は主に改修から保守、運用のフェーズを担当しています。
◯モダンな技術にキャッチアップしていきたい
主にJavaを用いたSaasアプリケーションの開発を行っています。 フレームワークはSeaser2です。 DBはOracleです。 インフラはAWSです。
①どのようなチームで 【チーム構成(人数)】 ・ディレクター(1) ・バックエンド(1) 【チーム内の自身の役割】 ・バックエンド 私は設計→コーディングを行なっていくフェーズをメインに担当しました。 ②どのような機能を 【機能概要】 人材派遣会社のホームページの保守、運用を行いました。 私は設計→コーディングを行なっていくフェーズを担当しました。 【課題とその背景】 こちらのクライアントはほとんど機能の改修はありませんでしたが、 本番環境の更新を任されていました。 毎月そのホームページにフリーで提供している壁紙があり、 それをメールで受け取り、要望があった日に壁紙を張り替えて私が本番公開を行なっていました。 ③どのような技術を用いて ◯言語:Java バージョンは6です。 ◯インフラ:AWS ・EC2 ・RDS ・S3 ・Route53 ・ACM 基本的にAWSで出来る事はAWSで行う様に統一されていました。 EC2二台をALBで冗長化し、 JenkinsでCI/CDを行い、 warをデプロイしていました。 ◯DB:Oracle ◯バージョン管理:GitLab EclipseのパースペクティブにあるEGitを使ってGUIで使っていました。 ④どのような工夫をして 【着目点】 開発手順としては、 メールで受け取った壁紙を受け取る ↓ HTMLを触って張り替え ↓ 指定された日に本番公開 ↓ メールでクライアントの担当者に張り替え完了した旨を伝える といった流れでした。 何か不具合があると、クライアントからメールや電話が来るので、 その対応から単にプログラムを書くだけでは無い、 クライアントとのコミュニケーション能力も養う事が出来ました。 【該当技術使用や行動の背景】 技術に関しては特に高度な事が要求される訳では無く、 機械的な作業ではありました。 その中で、本番公開時にJenkinsを回してCI/CDで生成したwarをEC2にscpするのですが、 その際に社内規則的に本番公開の度に、 SSHして入力するコマンドの手順書をExcelで作る必要がありました。 それ程時間を要する作業は無いですが、 業務効率化の為そのコマンドを生成するマクロを組んでExcelを作成していました。 ⑤どのような成果に繋がったのか そのホームページを訪れ周遊するユーザーに壁紙を毎月違う壁紙を提供する事が出来ました。 本番環境を触る事が要求されたので、 責任感とプレッシャーは大きかったです。 やるべき事はそれほど難しい事では無く機械的な作業ではありますが、 ミスが無いようにしっかりと確認を怠らず、 気を抜かない様に作業を行う事を意識していました。
①どのようなチームで 【チーム構成(人数)】 ・ディレクター(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の操作を行う事が要求され、 改修時の工数が余計に掛かってしまう事が幾度とありました。 大元の親会社が昔ながらの大企業で、 新しい技術の導入に乗り気では無い+複数の会社との共同運営になっているので、 状況改善が困難な状況下にありました。 その中で、 末端のプログラマーの自分に何が出来るのかを考えた時に、 少しでも状況の改善を出来たらと思い、 ライブラリの導入や、 せめて自分の関わったページのコードのリファクタリングはしていこうと、 後から見た人が見やすい様に変数を作ったり、 不要なコードの削除やインデントの修正等細かい所ではありますが、 意識して行なっていました。
①どのようなチームで 【チーム構成(人数)】 ・ディレクター(状況による) ・バックエンド(状況による) ・デザイナー(状況による) 【チーム内の自身の役割】 ・バックエンド 私は設計→コーディングを行なっていくフェーズをメインに担当しました。 ②どのような機能を 【機能概要】 主に人材派遣会社の人事部の方が利用する人材管理システムになります。 派遣会社に常駐するスタッフの方々の情報管理や派遣先のクライアントの情報管理、 給与計算や勤怠の管理等の人材管理システムにある基本的な機能を持つ自社のシステムがあり、 それをクライアントに合わせて各々要望があれば必要なシステムを随時追加で改修を行っていました。 【課題とその背景】 クライアントのニーズを上流の担当者であるディレクターがヒアリングを行い、 都度それを元に改修を行なっていくので柔軟に多様な課題に対応していく力が求められました。 具体的には、 人事部の方が従業員のシフトをシステムに登録する際に、 月の労働時間が80時間を超えた際にはエラーメッセージを出力して欲しいといった要望や、 法律改正に伴い、 派遣会社に登録されている派遣の方の仕事が決まった際に、 その派遣先に送付する雇用条件が明記された書類があり、 そこに書かれた文言を厚生労働省が掲示する、 新たな法律に沿った形に加筆・修正して欲しいといった要望などがあり、 対応を行いました。 システムを利用するクライアントの方達の業務の内容とその要望に合わせて、 ニーズを適切に理解しバリューのあるものを勘案していくので、 フィットギャップが無いかを常に意識しながら作業を行なっていました。 ③どのような技術を用いて ◯言語:Java バージョンはクライアントによって違いますが、6、7、8が多かったです。 ◯フレームワーク:Seaser2 多くは自社独自のフレームワークを使って開発を行なっていました。 MVCのフレームワークはSeaser2が選定されていました。 ◯インフラ:AWS ・EC2 ・RDS ・S3 ・Route53 ・ACM 基本的にAWSで出来る事はAWSで行う様に統一されていました。 EC2二台をALBで冗長化し、 JenkinsでCI/CDを行い、 warをデプロイしていました。 私が行なっていた作業としては、 複数の利用者の方々が同時にシステム内でPDFを大量出力する様な作業を行なった際等で、 EC2のCPU利用率が上がって画面の表示がされなくなってしまった時には、 EC2の再起動やTomcatの再起動を行いCPUの利用率を下げるといった運用を行なっていました。 ◯DB:Oracle ◯バージョン管理:GitLab EclipseのパースペクティブにあるEGitを使ってGUIで使っていました。 ④どのような工夫をして 【着目点】 基本的に開発はディレクターからのトップダウン形式で、 クライアントからディレクターがヒアリングしたニーズを聞き、 それを元に作業を行なっていました。 【該当技術使用や行動の背景】 技術に関しては自社で過去に使用経験のある様な技術が選定されていました。 対クライアントとのやり取りが要件定義から運用まで長期で永続的に続くので、 運用中に何か問題が起きた際に対応できるナレッジを持つ人材が必要となる為、 再現利用性の高い技術を使い、 安定運用に重きを置いて保守を行なっていくといったスタンスでした。 ⑤どのような成果に繋がったのか クライアントのニーズを元に開発を行い、 常に最良、最低限のコストでスケールしていくので、 改修を行えば行う程、そのクライアントにとって価値の大きいシステムに成長させる事が出来、 バリューのある機能を提供し続ける事が出来ました。 開発を行なっていく中で、 その機能は本当に必要なのか?UIとして使いにくくないか? 等の疑問が出てきた際はディレクターと相談を行い、 設計の改善を行う必要があるかのコミュニケーションをクライアントと取る様に促していました。 例えば、 あるプロジェクトで一ページに50枚の画像を表示するページを作る作業を行った際、 スマートフォンでレスポンシブした時にも同様に50枚の画像を表示する様な仕様になっていました。 そのページ内では画像を検索するボックスがその50枚の画像の表示の更に下にあった為、 ユーザーが検索を行おうとした時にPCでは問題無いですが、 スマートフォンで表示した際に指でスクロールを何度もする必要があり、 UIとしてこれはどうなのか?と疑問に思いディレクターと相談する事になりました。 結果として、 ディレクターとの話し合いの末PCでは画像50枚を、 スマートフォンではユーザーエージェントによる制御を入れて、 レスポンシブした際には画像20枚を表示する機能に変更になりました。 私が担当しているフェーズは下流がほとんどですが、 おかしいと感じた実装をおかしいとディレクターにボトムアップ出来ない様なプログラマーにはなりたくないと考えています。 例え的外れであっても自分が疑問に思った点はクリアにして納得のいく開発が出来る様、 常に疑問を持つ様に心がけて業務を行なっています。
所属部署は融資部でした。 主に企業の方々への融資業務における稟議書の作成や、 個人のお客様への消費者ローンの実行を行っておりました。
学生時代は学校に通いながらアルバイトに力を入れました。 コンビニエンスストアとイタリア料理店でアルバイトをしていました。 お金を稼ぐ事の大変さと喜びを知る事が出来ました。
View Shinya Matsumoto's
Full Profile
This information is visible only to Wantedly users or the user’s connections
View past posts
View mutual connections
View Shinya Matsumoto's full profile
Java
Oracle
Seaser2
AWS
Eclipse
Receive Scouts from companies