プロフィール

2013/4〜 社会人スタート

受託とSESをやっている会社に入社 SESの比率が高い。受託は大手のIT企業の二次請け、小規模だが一次請けもあった。

新人研修

入社してすぐに蓼科に2泊3日の研修合宿へ
マナー講習や電話対応の練習を行い、2日の夜は徹夜で電話対応の練習するハメになった。。(´·ω·`)

研修後はJavaでのプログラミング研修を受ける
やったことは、以下のこと

※Javaは一切使用しなかった(´·ω·`) 同期に絵を描くのが得意な人がいたのでフロントもそれなりのものを作ることができた。
(自分は絵を描きたくなかったのでひたすらプログラム担当)
加えて、WebSocketによる双方向通信とか比較的新しい技術に触れることができた。

技術的に触れたもの

2013/5〜 初めての客先

情報系の学校出身だが、入社時点で業務未経験
なので、入社前はインターンとして所属する企業で簡単な実装、テストの工程を経験済みという設定を盛り込んで客先の面談を受ける。
結果、合格してなんとか潜り込むことができた。(笑
初めてだったので合格という結果に自分でも喜び、上司からも褒められたので٩(ˊᗜˋ*)و←この時はこんな感じだった

テストコード作成

配属された部署はR&Dでなんらかのシステムを作成するのではなく、
既存のApache Wicketというフレームワークをベースにその会社独自のフレームワークを作成していた。
自分の最初の仕事は、そのフレームワークのテストコードを書くことだった。

だったのだが、業務未経験なのでテストコードって何?
そもそもJavaの知識も入門書レベルでフレームワークのコードを読んでもちんぷんかんぷん。
テストの観点作成=>レビュー=>テストコード作成=>レビューのフローで進めていたが、

等の問題が色々あり、初めて夜眠れないということを経験しました。(´д`;)
加えて、自社からも客先での仕事が終わったら、自社に顔を出せと言われていた(帰属意識がどうのこうのが理由)のでめんどくさかったです。
でも、なんだかんだテストコードを書くという自分のタスクは完了することができました。

VMWareでのCI環境の構築

次にやったのがVMWareでのCI環境の構築でした。
自分のタスクとしては下記のインストールや設定でした。

OSはCentOSでLinux系を触ったことない自分にとっては、色々勉強しながらの作業でした。
ただ、今回は作るというよりかは設定だったのでテストコード書くよりかはスムーズだった記憶です。
CI周りの仕組みは難しくなく、下記のような感じです。

そんなこんなで、初めての客先は1年近く常駐することになりました。
途中、SESの契約が解除されず、契約の継続がされていたことは謎ですね。(明らかに未経験者丸出しだったのに・・

技術的に触れたもの

2014/4〜 社内に戻り受注管理システムの作成

自社に戻って、稼働中の案件に入って受注管理システムの開発、テスト仕様書作成、実施を行なっていた。
技術的にはVB.net、SqlServer
詳細設計書もできていたので仕様を確認しつつ、発注確認画面、予算入力画面等の実装を淡々と進めていた。
ループ中にINSERTやUPDATEなどSQLを連続して発行するとパフォーマンスが悪くなるということを知る。

技術的に触れたもの

2014/9〜 商品管理システムの開発

RFIDタグを用いた商品の個品管理システムの案件に入りました。
自分の担当はBHT、POSから送信された、商品の情報(売上、入出庫、棚卸)をもとにデータを更新する処理の設計と実装、テストでした。
技術的にはC#.net、SqlServer

別の案件ですでに同様のシステムを作成しているということで、それをコピーする前提で始まったのでメンバーは2年目だった自分と新人3~4人とプロマネでした。
結合試験までは細かいバグ等ありましたが、意外とあっさり終わりました。(この時点で一旦チーム解散)
ただ、パイロット店で導入、運用を始めるとパフォーマンスが悪い、デッドロックが発生するなど問題が出てきたので、それの対応も行いました。

システム構成は下記の通りです。

※上記二つは別サーバ(DBも別)

パフォーマンス対応

パフォーマンスが悪くなっていたのは、1のシステムが2のシステムのDBに商品情報を登録する箇所でした。
別DBなので、分散トランザクションを張り、リンクサーバー経由で登録、更新処理を行なっていましたがその部分のパフォーマンスが悪くなっていたので1のシステムが2のシステムに登録するのではなく、1のシステムに登録した情報を2のシステムが参照するという構成に変更しました。
これにより、トランザクションが1のシステム内で完結するので分散トランザクションやリンクサーバ関連部分がなくなりパフォーマンスが良くなりました。

デッドロック対応

デッドロックの方はパフォーマンスを犠牲に排他制御を設けることにより処理を直列化し発生しないようにしました。
それでも、修正前よりはエラーがなくなった分パフォーマンスが少し良くなったみたいで、この対応後、自分のところに問い合わせが来ることはありませんでした。
※処理を直列化するのは最終手段!!!

技術的に触れたもの

2015/3〜 会員数40万人規模の自社ECの改修対応

某アパレル会社の自社ECの改修対応の案件に入りました。
自分は、ECサイトより実行される各種会員情報、ポイントの参照、登録、更新のAPIの詳細設計からリリースまでを担当しました。

この案件では、サーバー側で夜間バッチを実行するにあたり色々考慮しました。
夜間バッチ実行中はECサイトからのAPIリクエストされるとまずい(データのロックとかデータの集計に影響が出る)ので、EC向けの参照用DBを作成し、EC向けのAPIはそちらのDB(サブDB)を参照する設計をしていました。(各種マスタはレプリケーションでメインDBと同期)
ただ、ECサイトでは、会員情報の登録or更新、商品の購入に伴うポイントの利用でデータの変更が24時間発生するので、その場合に備えてサブDBには会員情報やポイント情報を保持するトランザクションテーブルを作成しておき、レプリケートされたマスタデータと比較して、情報の参照を行うような設計にしていました。
蓄えられたトランザクションデータは、サブDBに作成した同期用のストアドプロシージャーにより、メインDBに発生した順番に反映させるようにしていました。

自分がリリースまで担当した初めての案件になりました。
リリースはWindows Serverに立てたIISにデプロイしました。

技術的に触れたもの

2015/8〜 会員数270万人規模の自社ECの刷新及びCRMシステムの改修

某アパレル会社の自社ECの刷新とCRMシステムの改修案件に入りました。
この案件で自分は開発リーダーのポジションで参加し、3人の後輩のスケジュール管理も合わせて行いました。 自分の担当は以下のものでした。


エンドユーザー(フロントの担当会社)との打ち合わせ

この案件では、案件を受注している上の会社とのやりとりだけでなく、システムを発注しているエンドユーザーとの仕様検討の打ち合わせにも入りました。
加えて、フロントは別会社が作成しているのでお互いにAPI仕様の検討、相互レビューの機会もあったので、やりがいのある案件になりました。(普段はエンドユーザーとのやりとりはないので)

メンバーのコードレビューと進捗管理

今までは、自分で設計して自分で実装、テストが多かったのですが、ここにきて自分の設計した機能の実装をメンバーに振る機会に恵まれました。
設計書の記載ミスや、メンバーが新人だったこともあり、進捗が悪く、スケジュールに合わせるため自分が実装を代わりにすることもあり、そこそこ苦労しました。
また、結構きつめのスケジュールだったこともあり、開発終盤では土日出社、会社への泊まり込みで作業をすることになってしまい、メンバーにも苦労をかけました。

この案件では残業もかなりの時間になるし、別の割り込みの案件対応をするなど、とても大変な状況でしたがでしたがリーダーとして動けた案件だったのでとてもいい経験になりました。

技術的に触れたもの

2016/9〜 会員数500万人規模の自社ECの刷新及びCRMシステムの改修

某アパレル会社の自社ECの刷新とCRMシステムの改修案件に入りました。
引き続き、開発リーダーのポジションで参加し、新人や協力会社の人に作業を振ることもありました。 自分の担当は以下のものでした。

ユーザーの規模感は大きいものの基本的に今までやってきたことなので問題なく作業を進めていました。
この案件では、WEBオフィスの検索結果のページングのために1回目の検索結果をテーブルを作成して、保持しておきデータが変わらないようにする設計方針を取っていました。
これにより、ページング中にデータの変更があった場合でも影響を受けないようにしていました。
この案件がこの会社での最後の案件になりました。。(T∩T)

技術的に触れたもの

2018/1〜 初めての転職と2社目

WEB系の企業に転職しました。

転職理由

1社目ではリーダーポジションになり、自分の裁量も大きくなってきていたのですが、
後輩がなかなか育たない(育つ前にやめちゃう)ことや、スケジュールがきつい案件がほとんどだったことが色々考える要因になりました。
あとは、流行り?のRailsを使用してみたいということもあり、Railsを使用しているWEB系の企業への転職を決めました。

転職後の初めての作業は、JWTを使用した認証部分の作成でした。
Ruby初めて、Dockerも初めてだったので勉強しながら進めましたが、ある程度の下地はあったのでそこまで苦労はありませんでした。

技術的に触れたもの

2018/4〜 電子教材販売会社向け業務システム開発

新規システム開発案件で要件定義の段階から参加しました。
チームは10人ほどで、その中での自分の担当は以下のものでした。

上流から担当しつつ、Railsでの実装、AWSでのインフラの設定などシステム構築の大部分に関わることができて、とてもいい経験になりました。
Rubyライクな構文などコードレビューで色々ツッコミをもらったのでそれもまたいい勉強になりました。

そして、この案件が2社目での最後の案件になりました。

技術的に触れたもの

2019/4〜 2社目を退職してフリーランスへ

1年とちょっとWEB系の企業で働いてみて色々思うところがあったのでフリーランスになりました。
当然コネなんて持っていないのでエージェント経由で案件を探し、3つ4つ面談して1社決まりました。

記念すべき1社目では、自社内で使用するマイクロサービス化されたシステムの改修案件に参加しました。
フロントはVue.jsでサーバー側はRails
SPAで作成していてフロントとサーバ側のやりとりはAPI経由で行う作りになっており、開発環境もDockerを使用していてモダンな構成になっていました。

そして、この案件が2社目での最後の案件になりました。

技術的に触れたもの

2020/4〜 給与計算システムの案件

現在、給与計算システムの機能追加、バグ修正をメインとする案件に参加しています。
こちらは自社サービスで、自分が参画した時点でリリース後1年以上経過した段階なので、ベースとなる機能の実装はある程度終わっています。
利用者数も増えているみたいで、問い合わせ対応が大変だがやりがいのある案件です。

システムはフロントがReact、サーバーがRailsになっており、フロントとサーバーのコードの分離はされていない。
Reactは今回初だが、Vue.jsと似たような感覚でいけるでしょと軽い気持ちでなんとかやっている。(笑)
基本は給与システムだが、たまに別サービスの改修も行ったりしていて、そちらでは、GraphQLを採用しているなどいい勉強になる環境。

そして、この案件が2社目での最後の案件になりました。

技術的に触れたもの