ITエンジニア

よく使う技術

大事にしていること

  • 開発を通してプロダクトに関わる全員を幸せにすること
    自分、チーム、自社(組織)、ユーザー(お客様)、協力会社、それぞれの家族などを、
    私が持てる技術でプロダクトを通して幸せにしたい。
  • もっとうまく開発するやり方を探し求め、分かちあい、見出していくこと
    でも深刻にならず楽しみながらやっていく。
  • ITエンジニアの楽しさを共有すること
    楽しく開発している人がいることを発信していきたい。

作ったもの

Portfolio
URL
ソースコード
https://github.com/fortegp05/portfolio_react
説明
このサイトです。Reactで作られています。
スキル
Podcast配信サイト
URL
ソースコード
https://github.com/fortegp05/aozorafm
説明
テンプレートyattecastを改造。チャプター、スクロール時の再生バー固定表示、再生位置保存、告知欄の追加など。
スキル
Androidサンプルアプリ
URL
ソースコード
https://github.com/fortegp05/SampleAndroidApps
説明
JavaによるRxJava(RxAndroid) + RxBus + Data Binding + roomのサンプルアプリ。
スキル

職務経歴の概要

2023年08月現在

ソフトウェア開発

  • Webアプリケーションの開発
    • Java9年、PHP2年、Rails3年、Python9ヶ月
  • Androidアプリの開発
    • 1年
  • 受託開発として案件契約から開発、保守運用までシステム開発業務における一通りの経験
    • 見積、要件定義、設計、開発、テスト、リリース、保守運用を8年
  • インフラ
    • オンプレミスにてLinux、Windows Server、Solarisの、
      Webサーバー、DBサーバー構築、運用経験を8年。
    • AWS Lambda、CloudFront、CloudFormation、S3、CodeCommit、CodeBuild、CodePipeline、SES、SNS、CloudWatch。
    • TerraformによるAWSインフラの構築、運用保守経験
  • OS、DB、ミドルウェア使用経験
    • OS:
      WindowsServer2010、
      Linux(RedHat5、CentOS5、SUSE)、Solaris(9、10)
      それぞれサーバー構築経験あり(インストール、初期設定、ミドルウェア設定など)
      趣味でFreeBSDを使用している(構築経験はなし)
    • DB:
      PostgreSQL8年、MySQL7年、SQLServer1年
      マルチバリューDBとして4D DAM(現在はAIDAM)3年、MySQLは趣味でも使用中2年。
    • ミドルウェア他ライブラリ:
      VMWare、Apache(2系まで)、Tomcat(6系まで)、
      chasen(形態素解析)、Imagix4d(リバースエンジニアリングツール)
  • マネジメント
    • 2人~5人までのチームマネジメント経験
      PLとして案件開発の担当、顧客との打ち合わせや折衝の経験あり10年
  • スクラム
    • 2019年4月にCSMを取得。
      スクラム開発の経験はないが、社内にスクラムについての教育を実施(予定)
  • その他の経験
    • C/C++による組み込み開発1年
    • Windowsサーバー構築(VMwareESXiによる仮想化、NW設定、バックアップ設定など)半年
    • CLIツール開発(Linux/Shell、Windows/バッチ)
    • その他言語経験(Perl、Tcl/Tk、basic、VB、AS3)
    • 物流システム開発4年
    • 趣味でサーバーサイドKotlinを勉強して160ページの技術同人誌を執筆。
    • 趣味でamp、レスポンシブデザインのサイト開発の経験あり。

プログラミングスキル

  • Java
    • 2007年から2016年までバージョン1.4~1.7を使用しServlet、JSPにてWeb開発を実施。
      2018年9月から1年間Androidアプリ開発にて使用していた。
      また静的構造解析の対象として解析の経験もあり。
  • Kotlin
    • 業務では3ヶ月程度Android開発とサーバーサイドKotlinで使用
      趣味でサーバーサイドKotlinの技術同人誌を執筆
  • PHP
    • 2016年から2年間使用。
      業務でPHP5系を、趣味でPHP7系を使用していた。
  • Ruby(Rails)
    • 2019年9月から3年間業務で利用していた。
  • Python
    • 3系を2023年11月から業務で使用している。
  • JavaScript
    • 12年ほど業務のフロントエンド開発にて使用。
  • TypeScript
    • 2019年9月から現在業務で利用している。
      本サイトでも使用している。
  • React
    • 2019年9月から3年間業務で利用していた。
      本サイトでも使用している。
  • Vue.js
    • 3系を2023年11月から9ヶ月間業務で使用していた。
  • jQuery
    • 2016年から2年間1.4系、または1.7系でフロントエンド開発に使用。
      jQuery Mobileの開発経験もあり。2016年まではJavaScriptにてフロントエンド開発を実施。
  • C/C++
    • 組み込み開発で1年経験あり。
      静的構造解析の対象として5年間分析の経験あり。
      関数呼び出しの可視化やC++クラス継承関係の可視化などを実施。
  • Terraform
    • AWSの構築、運用保守にて使用。バージョンは1.5。

職務経歴の詳細

業務委託:副業としてサーバーサイドKotlinによるバックエンド開発(2024年10月〜)

通信教育WebサービスのAPI改修(2024年10月〜)
  • Webサービスで通信教育を受けられるシステムのAPI改修
    言語はKotlin。
    業務委託の詳細はこちらから。
    • 開発
    • 単体テスト(Kotest)

現職:成果報酬型の準委任契約でWebシステム開発・インフラ構築(2022年11月〜)

ビデオカメラ管理・監視システムの構築(2022年11月〜2023年7月)
  • お客様の販売するビデオカメラを購入、設置後の管理、映像の監視を行うWebシステムの構築
    言語はPython(3系)、Vue.js(3系)
    • 詳細設計
    • 開発
    • テスト(pytest)
    • インフラ構築(AWS CloudFormation、CloudFront)
業務用エアコン管理・操作システムの改修(2023年8月〜2024年2月)
  • お客様の販売する業務用エアコンを購入、設置後の管理を行うWebシステムの改修
    バックエンド(API部分)は担当し言語はPython(3系)、一部インフラも担当
    • 詳細設計
    • 開発
    • テスト(pytest)
    • E2Eテスト(Tavern)
    • AWSインフラ構築(CloudFormation、CloudFront、S3、Route53、ACM、WAF)
大規模ECサイト・店舗管理システムのインフラ構築運用保守(2024年3月〜)
  • 世界規模の通販サイト、店舗の管理システムのインフラの構築運用保守
    インフラはTerraformでAWSの構築、管理
    • インフラ構築(AWS Terraform)
    • デプロイ(Jenkins)
メンバー管理
  • メンバー管理
    受託開発として請け負った開発のチームリーダーを担当(プロジェクトリーダーは別にいて社内のリーダーを担当)
    主に評価、工数管理、技術的相談、メンバー育成、顧客折衝などを担当した。
    並行して開発員として開発も行っていた。

前職:自社SaaSアプリのWebエンジニア(2019年09月~2022年10月)

SaaSアプリの開発。
  • 自社SaaSアプリ開発のメンバーとして以下の業務を実施。
    言語はRuby(Rails)。
    • 詳細設計
    • 開発
    • テスト(RSpec)
    • 保守・運用
  • 開発チームのリーダー業務
    3名からなる開発チームのリーダー業務を担当した。
    リーダー業務ではタスクマネジメントを中心に担当した。
    メンバーの望む方向性とチームでやるべき事との整合性を取ったり、
    メンバーのやるべきことが無くならないように調整するなどした。
    またPMやQAとの折衝などを行いチーム開発業務が滞りなく進むように配慮した。
  • システムの監査を行うログを出力する監査ログ出力機能の開発
    監査ログ出力機能の開発ではメインの機能とは無関係なログ出力機能である。
    そのため、メインの機能の性能に影響しないように必要最低限の負荷で済むようなActiveRecordを実装できるように必要最低限のデータ登録処理となるように処理やデータ構造を工夫した。
    データ構造は更新したデータのレコード構造をそのまま出力する形とすることで余計な加工処理コストを省き、また必要最低限で正確なデータを保存できるように工夫した。
    その結果、メインの機能の顕著な性能劣化などは起こさずに改修できた。
  • 検索条件の履歴保存機能の開発
    一覧画面で検索した際の条件を自動で履歴として保存する機能を開発した。
    対象はReactの画面、AngularJSの画面それぞれ1画面ずつ2画面が対象だった。
    React、AngularJSは未経験のまま開発をスタートさせたが、
    AngularJSは元のソースを参考に、Reactはモブプロミングを用いて未経験であることを克服し開発を行った。
    特にモブプログラミングでの開発参加した全メンバーの工数を合わせてもソロで開発したAngularJS版より少ない工数で開発を終えることができた。
    また参加したメンバー全員に機能の詳細やReactの知見を伝えることができた。
  • 大人数化対応
    利用人数拡大のために大人数化対応を行った際、全ての機能一覧に対してデバッグツール、ログから性能調査を行った。
    性能問題が有る箇所に対してSQLのチューニング、ReactやAngulerJS内部で無駄なループ処理やAPI呼び出しの削減、UI/UX変更によって大人数でも問題なく使える画面構成にするなどの工夫を行った。
  • スクラムマスターとしてのアドバイス
    スクラムで開発しているわけではないが、認定スクラムマスターとしてふりかえりや開発プロセスについて助言を行っている。
    助言は自チームだけでなく他チームへも行っており、他チームのふりかえりに参加してアドバイスをしたりファシリテートも行っている。
  • 同SaaSアプリのCSE(Customer Success Engineer)
    CSEとして顧客の成功に貢献。
    領域としてはCSEを超え、システムエンジニアやセールスエンジニアのようなことも実施。
    • 問い合わせ対応
    • 障害切り分け
    • 商談参加・提案
    • API連携開発管理
    • 問い合わせ状況のレポート
      ユーザーと開発が断絶しないように問い合わせ状況について見える化するレポートを定期配信。
      問い合わせが多い分野はどこなのか?
      その問い合わせによって発生した作業時間はどれくらいだったのか?
      問い合わせを少なくするために開発はどうしたら良いのか?
      などを掲載してユーザー体験向上を図るとともに開発に対するユーザーの声を直接フィードバックしていた。
    • 不具合状況のレポート
      開発のサイロ化を防ぐために発生した不具合について開発チームをまたいで定期レポートを作成し配信。
      あるチームが発生させてしまった不具合を他のチームが繰り返さないようにしたり、
      発生した不具合の根本原因とそれを防げた工程がいくつ、どこにあったかを伝達することで全体的な品質向上に貢献した。
  • 同SaaSアプリのAndroid版開発。
    Androidアプリ開発のメンバーとして以下の業務を実施。
    言語はKotlin。
    • 詳細設計
    • 開発
    • テスト
    • リリース
    • 保守・運用
  • 一覧画面の実装
    あるデータを日付ごとに一覧に表示する画面の実装を行った。
    ヘッダーとして日付が表示される外部ライブラリを用いつつ、
    閲覧日から過去のデータも未来のデータの20件ずつページングする実装を行った。
    Androidの特性上過去データのページング処理が非常に難しかったが、
    外部ライブラリやAndroidOSのAPI仕様を調べて実装を行った。
    Androidのリストコンポーネントの特性上、上部方向(過去データ)へのスクロールをきっかけに処理を行うことがスクロール位置の計算などの処理が煩雑で非常に難しい。
    そのため、スクロールきっかけではなく続きを表示するボタンを表示することで、煩雑で非常に難しい処理を回避しつつ過去データを表示するという仕様を満たす実装を行った。
  • 画像ファイル添付機能の実装
    特定のデータに対して画像ファイルを添付できる機能を実装した。
    Amazon S3に対してアップロードする処理をRetrofitというライブラリで実装した。
    標準のカメラ、アルバム機能を利用していない場合、添付できないケースが有ったため、
    カスタムされたカメラ、アルバム機能を利用していても画像添付できるように実装を行った。
  • プロジェクトマネジメント
    先行して開発が進んでいたiOS版と同等の機能を短期間で高速に開発するプロジェクトマネジメントを実施。
    短期間で高速に開発するというチーム開発目標を掲げ判断に迷わない状況を作り出す、
    ステークホルダーとの仕様確認やiOS版との差異確認を入念に行うことで手戻りを少なくする、
    毎週ふりかえりを行うことで改善点を洗い出し常に開発プロセスを改善する、などを実施。
    開発プロセスの改善として開発着手前にアーキテクチャ図を作成して前任者とレビューすることで理解を早めたり、仕様書の作成を行い開発前にレビューすることで手戻り防止を図ったり、発生したバグを分析して原因ごとに対策を行い実装段階からバグの発生を抑止するなどの改善を行った。
    これらにより当初想定の1ヶ月前倒しで機能開発完了を達成。

スマホアプリの開発(2018年09月~2019年8月)

自社開発のスマホアプリについてメンバーとして主に開発を担当。
  • 自社アプリのAndroid開発のメンバーとして以下の業務を実施。
    言語はJava。
    • 詳細設計
    • 開発
    • テスト
    • リリース
  • 新規メディアサイトのインフラ構築として、
    AWS + WordPress環境を構築。
    以下のAWSの機能を使用し本番、Staginig環境を構築。
    • EC2
    • VPC
    • CloudFront
    • S3
    • Route53
    • CodeCommit
    • CodeDeploy
    • CodePipeline
    • Certificate Manager
    • Simple Email Service

旅行比較サイトの開発・運営(2016年06月~2018年08月)

プロジェクトリーダー(PL)またはメンバーを担当
開発プロジェクトによってはPLを担当した。
  • 具体的に以下の業務を実施。
    • 他部署(企画設計、営業)や契約先会社との連携(仕様確認、仕様調整など)
    • 設計(要件から機能設計書の作成、詳細設計)
    • 工程管理
    • 工数見積
    • 開発メンバーの管理(1人~2人)
    • 開発
    • テスト
    • 保守運用(障害対応、調査、チューニングなど)
  • PLを担当した具体的な開発プロジェクトの内容については以下の通り。
    • スマホサイトリニューアル
      サイト内の全メニューにおいてスマホサイトのリニューアルを実施した際、
      主要メニューのひとつについてPLを担当。
      デザイン変更、jQuery Mobileの撤廃、HTML5化などを実施。
    • 提携サイトのスマホ対応
      自社システムを利用した提携サイトスマホ対応のPLを担当。
      上記のPL業務の他、スマホ化の要件定義を行い顧客との折衝も実施。
  • その他の業務
    • デグレード確認テストの自動化
      Codeceptionを用いたテストの自動化
    • 契約旅行会社サイトのクローリング(旅行商品情報の取得、在庫情報の更新など)
      PhantomJSを用いたクローリングの実施
    • 予実管理の見える化
      プロジェクトの予算と実績からプロジェクト予実の見える化を半年かけて実施。
      スライドにまとめての成果をシステム部(約50人)に向けて発表。
    • バッチ処理管理の移行(cronからRundeckへ)
      バッチ処理を管理(スケジューラ)をcronからRundeckへ移行。
    • ソース管理システムの移行
      SubversionからGitHubへの移行。

1社目:SIerにてPLまたはメンバーを担当(2007年4月~2016年03月)

受託開発案件の見積・契約、設計、開発、保守・運用を担当。
開発プロジェクトによってはPLを担当した。
  • 設計開発支援ツールの受託開発を担当(2007年4月~2012年11月)
    お客様が開発している大規模製品(30年以上、人員200人以上が参加)において、
    システム構造の見える化のためにソースコードの静的解析結果を、
    イントラサイトで公開する設計開発支援ツールの開発を担当していた。
    開発にはメンバーとして参加し開発プロジェクトによってはPLとして、以下の業務を実施。
    • お客様からの要件ヒアリング、要件定義
    • お客様との定例(開発進捗報告など)
    • 設計(要件から機能設計書の作成、詳細設計)
    • 工程管理
    • 工数見積
    • 開発メンバーの工数管理(1人~2人)
    • サーバー構築(OSインストールから設定まで)
    • 開発
    • テスト
    • 保守運用(障害対応、調査、チューニングなど)
    • 現地作業(リリース作業、サーバー構築)
    具体的な実績、取り組みなど。
    • システムの消費メモリ使用量低減と低減に伴う性能対策を実施。
      最大ターンアラウンドタイム3秒を維持しながら、
      2GB~8GB使用していたメモリを1GB以下に低減。
    • 社内未経験のデータベースとプログラム言語の導入を担当。
      有識者が居ない中6ヶ月ほどで機能開発を行いリリースを達成。
  • トラック離発着管理システムの改修と運用(2012年12月~2015年3月)
    大手物流会社様向けにトラックなどの離発着予定と実績の入力・管理を行うシステム。
    離発着予定の他、積載するコンテナの量も入力・管理が可能。
    開発にはメンバーとして参加し、2013年3月からはPLとして以下の業務を実施。
    • お客様からの要件ヒアリング、要件定義
    • お客様との定例(開発進捗報告など)
    • 設計(要件から機能設計書の作成、詳細設計)
    • 工程管理、工数見積
    • 開発メンバーの工数管理(1人~2人)
    • 現地作業(現地テスト、リリース)
    • サーバー増強対応(サーバーやOS、ミドルウェア等の選定と発注)
    • インフラ設計、構築(OS、ミドルウェアのインストールと設定、テスト)
    • システム保守(ハードウェア、ソフトウェアの保守)
    • 開発
    • テスト
    • 保守運用(障害対応、調査、チューニングなど)
    • 現地作業(リリース作業、サーバー構築)
    具体的な実績、取り組みなど。
    • システムの全国展開対応を実施。
      導入拠点数を500前後から全国3,000前後に増やすため、
      サーバー増強と性能対策を実施し全国展開を達成。
      サーバーは当初四台構成から十台まで増加対応を実施。
      サーバーRedhad LinuxのOSインストールからミドルウェア、アプリケーションのインストール、バックアップの設定、物理的なケーブルの結線など全て行った。
      性能対策は日々の業務で使用する直近のデータと、
      分析業務で使用する分析用の長期間のデータを分けることでそれぞれの要件にあった性能を担保した。
      これは使用するデータベースを分けることで分析時に直近データに負荷がかからないようにし、直近データーベースから分析データベースにデータを移すのはバッチ処理で行うようにした。
      特に日々の業務で使用するデータについては性能が求められたため、
      性能を担保するために不要なデータは持たない、検索性能を重視した設計開発を行った。
    • 実績データダウンロード機能の性能対策
      性能対策のため、日々の業務に影響が無い範囲でオンデマンド処理からバッチ処理への変更を実施。
      オンデマンド処理ではタイムアウトしてしまう量であったため、Javaを用いたバッチ処理で事前集計を実施。
      前日以前のデータであれば即座にダウンロードできるようにバッチ処理化を行った。
      実績データは経営層も利用するためデータのため、不具合や間違いの内容に最新の注意を払って開発を行った。
      深夜も使われるシステムであっためデータ集計に時間やサーバーリソースを使いすぎないようにバッチ処理の性能にも気を使い構築した。
  • 大規模システムの障害アラート系とログ機能改修(2015年4月~2016年3月)
    開発メンバーを担当。
    • 詳細設計
    • 開発
    • テスト
    実績、取り組みなど。
    • 製品内に使用する200前後のコマンドに対してログ出力機能の改修を実施。

資格(習得時期)

  • AWS SAP(SAP-C02 2024年3月)
  • AWS SAA(SAA-C03 2023年3月)
  • 認定スクラムマスター(2019年4月)
  • VMware CertifiedProfessional 5 - Data Center Virtualization(VCP5-DCV)
    2013年12月取得(2015年12月更新)
  • 基本情報技術者試験(2007年5月)
  • 第2種電気工事士(2004年10月)
  • 普通自動車免許第一種(2005年8月)

アウトプット

プロダクト

  • Podcast『aozora.fm』の配信サイト改修
    • Yattecastテンプレートに以下の機能を追加
      • chapter機能の追加
      • 再生位置とchapterの背景色連動
      • レジューム再生機能(ページを閉じる際に再生位置を記憶、復元する機能)
      • スクロール時の再生エリア追従
      • 告知内容が目立つようにレイアウト変更(レスポンシブ対応済み)
      • RSSフィードに改修した機能の内容を追記
  • Androidアプリのサンプル開発
    • レガシーなアーキテクチャからの改善を目的に、
      たたき台となるサンプルアプリを開発。
      以下のアーキテクチャ、ライブラリなどを実装。
      • MVVMアーキテクチャ
      • DataBinfding
      • RxJava2
      • RxBus
      • Room
      • okhhtp3
      • RxJavaに対応したユニットテスト
  • ポートフォリオ(本サイト)
    • Reactで作成。

登壇

 Speaker Deckにて資料公開中!

技術書

  • Micronautで入門!実践!サーバーサイドKotlin
    MicronautでサーバーサイドKotlinに入門して実践として簡単なAPIを作る本!
    電子版はBOOTHで販売中!
    詳細はこちら
  • アンチパターンから学ぶコミュニケーション
    具体的なアンチパターンからコミュニケーションについて学ぶ技術同人誌!
    電子版はBOOTHで販売中!
    詳細はこちら
  • ITエンジニアとして生きる技術
    ITエンジニアとしての考え方、ライフハックのようなノウハウを紹介する技術同人誌!
    電子版はBOOTHで販売中!
    詳細はこちら
  • 入門!実践!Kotlin Compose Multiplatformでデスクトップアプリ開発!
    Kotlin Compose Multiplatformでデスクトップアプリを開発する流れを紹介する技術同人誌!
    電子版はBOOTHで販売中!
    詳細はこちら
  • いろいろ実践!サーバーサイドKotlin Vol.2
    「入門!実践!サーバーサイドKotlin」、「もっと実践!サーバーサイドKotlin」に続く「実践!サーバーサイドKotlin」シリーズ第三段!
    電子版はBOOTHで販売中!
  • まいにち続ける技術
    毎日なにかを続けるための考え方や事例をお伝えするノウハウ本。
    電子版はBOOTHで販売中!
    詳細はこちら
  • いろいろ実践!サーバーサイドKotlin Vol.01
    Spring BootなサーバーサイドKotlinでいろいろな実践を学べる本。
    電子版はBOOTHで販売中!
    詳細はこちら
  • もっと実践!サーバーサイドKotlin
    Spring BootなサーバーサイドKotlinの実践としてユーザー登録・認証とデプロイを学べる本。
    電子版はBOOTHで販売中!
    詳細はこちら
  • 入門!実践!サーバーサイドKotlin
    Spring BootでサーバーサイドKotlinに入門して実践として簡単なアプリケーションを作る本。
    電子版はBOOTHで販売中!
    詳細はこちら
  • はじめる技術 つづける技術
    何かを始める、続けるための考え方や事例を書いたノウハウ本。電子版のみBOOTHで販売中!
    詳細はこちら
  • 100コミュニケーション―コロナ時代のコミュニケーション100通り
    コロナ時代のコミュニケーションに関するトピックスを100本(目標)集めます。
    私はコミュニティについて書きました。
    購入やサンプルはこちら
  • ギポタル開発記-モブワークで学びながらわいわい作る技術同人誌ポータル‐
    ギポタル|技術同人誌ポータル。この本では、そのポータルサイトの開発の経緯、実装、試行錯誤やトラブル含めて開発の過程のすべてを本に詰め込みました。
    私も開発に参加しています。
    購入やサンプルはこちら
  • ワンストップオンライン生活
    コロナ影響で生活の大部分がオンライン化している今を切り取った合同誌。
    私はオンラインでのチームビルディングについて書きました。
    購入やサンプルはこちら
  • ワンストップ生き方
    この醜くも美しい人生の生き方をこの一冊に!という目的で作成された合同誌。
    私は心や趣味について書きました。
    購入やサンプルはこちら
  • ワンストップアプリ開発(α版)
    アプリケーション開発のすべてをこの一冊に!という目的で作成された合同誌。
    私はアジャイルについて書きました。
    購入やサンプルはこちら
  • ワンストップ目標設定の技術
    目標設定のやり方考え方にに関する技術同人誌。
    私は合計2章の寄稿をしました。
    詳細やサンプルはこちら
  • ゲームセンターを楽しむ技術の合同誌
    ゲームセンターを楽しむための技術をまとめた本。
    私は1章寄稿しいくつかコラムを書きました。
    詳細はこちら
  • ワンストップPodcastを始めよう
    Podcastに関して、聞き方、始め方、続け方を網羅した本。
    私は企画の立ち上げからメインの執筆を担当しました。
    詳細はこちら
  • ワンストップ勉強会
    勉強会に関する本。
    コラムをひとつ寄稿しました。
    詳細はこちら
  • ワンストップ見積もり
    ITエンジニアがよくやるけどとても難しい見積もりについて、著者15人で書いたテクニック網羅本。
    私は第4章、2点見積もりについて書きました。
    詳細はこちら

Podcast

  • パーソナリティ
    • aozora.fm
      aozora.fmは仕事や趣味の楽しさを共有するpodcast。

ブログなど