職務経歴詳細¶
2020/01 - 現在 : 株式会社デジタルバリュー¶
役職: エグゼクティブシニアディベロッパー
職種・役割: アプリケーションアーキテクト
インターネットバンキング開発¶
石川県の地銀にて開発チームの立ち上げから個人事業主として参画。
途中子会社が立ち上がったのでその子会社に join。
最初のうちはモダンな開発に慣れていない人たちにイマドキの開発に慣れてもらうところからはじめ、
スクラム風に1週間スプリントを設定し、アジャイル開発のマインドを重視したチームとして立ち上げ。
会社の方針で紆余曲折があったが、半年後に自分達だけで個人向けインターネットバンキングの追加開発から着手。
事情により既存で動いているシステムから独立したアプリケーションとして一からアーキテクチャの検討をし、リリースまでこぎつけ。
その後も継続して個人向けインターネットバンキングの新機能をリリースし続け、現在は主に法人向けインターネットバンキングの開発中。
最初の頃は開発チームの人数も少なく (10数名) すべてを見ることが出来ていたが、現在は50名ほどの人数がおりすべてを見ることが出来ていない。
やりたがりなので出来る限り自分の目でみたいが、物理的に無理なことと関わる人の成長を促すため積極的に他者に役割を振っているためやることは減っているが、減る以上にやることがどんどん増えており困っている。
本来は アーキテクト/テックリード としての役割を求められているが、プロジェクトの状況的に PM, PO, SM がおらずそちらの比重が大きくなっている。
参考までに PM, PO, SM の役割のうち私がやっていたものにチェックを入れたもの。
- プロジェクトマネージャの役割
- プロジェクト範囲を定義する
- 要件を集める
- 活動、依存関係、順序付け、および見積もり時間を特定します。
- 必要なリソースを特定する
- 予算を管理する
- プロジェクトの進捗状況についてビジネスリーダーに報告
- プロセスに焦点を当てる
- タスクを割り当てます
- 機能を優先する
- 品質を確保する
- ベンダーを管理する
- リスクを管理
- プロダクトオーナーの役割
- プロジェクトの明確なビジョンを伝える
- 製品バックログの管理と優先順位付け
- 開発チームがタスクを理解し、優先順位に従って適切な機能に取り組むようにする
- フィードバックを提供し、作業結果を承認します
- スクラムマスターの役割
- リードスプリント計画
- 毎日のスクラム会議を主催/組織する
- 製品の所有者を指導します
- スプリントの進行状況を監視する
- チームの見積もりと速度の向上に役立ちます
- 継続的なコミュニケーションを促進する
- チームの混乱を減らす
- チームのダイナミクスを監視および改善する
- レポート作成を支援
- チームのやる気を引き出す
- チームをまとめる接着剤としての役割
根は技術者であるが、経営者的な視点も重視するが故に得意でないこともやらなければいけない、と思っている。
PM のような役割は正直得意ではない。
アーキテクチャ設計やコードを書くこと自体は得意だが、上位1%未満の物凄く優れた人たちほどではない。
一番得意なところはおそらく要求/要件定義で、システムをよく知らない人達からあがる要求から、本来やりたいことを汲み取り、システム的な難度を抑えお互いに winwin になるような形に落とし込むことが一番嬉しい。
ソースコード自体にも物凄くこだわりがある方だが、ビジネスのことを考えるとそこだけ追及できるものではないため、コードに特化したものは趣味でやれればいいと思っている。
お堅い業界だと思われがちだが開発の内容的にはイマドキで、当たり前のことを当たり前のようにやっていることに驚かれることが多い。
DevOps を意識しており、CI/CD は当たり前のように行っている。
環境的には AzureDevOps を利用しており、Git-flow で開発、PullRequest 上でビルド、Develop ブランチに merge したら Develop 環境に deploy。
main ブランチに merge したら staging 環境に deploy し、タグを打つことで本番環境用の pipeline を動作させ、承認することで実際に deploy されようなところまで検討し実現した。
ソースコードだけでなくインフラ構築 (Azure) も ArmTemplate を利用してコード化、pipeline を利用して自動構築するような仕組みで動かしている。
インフラは得意ではないのでこういうことをしよう、と口を出しただけで ArmTemplate のまわりはインフラ担当にお任せしていたためあまり詳しくはない。
ソースコード的には一時期まですべての PullRequest (1日100件以上) をレビューしていたが、途中でパンクしたため現在は基本的に各チームに任せ重要な部分や難しい部分と、気になったところだけを見るようにしている。
設計としては ユースケース図、ユースケース記述、ドメインモデル、ロバストネス図、シーケンス図を作成しており、主にロバストネス図とシーケンス図のレビューを重点的に行っている。
プロジェクトの規模が大きく、お客様へ与えるインパクトも大きいためこの部分を一番大事にしている。
技術者としてはソースコードが一番大事だという思いがあるが、ビジネス的には設計が崩れるとそのあとのすべてが崩れると思っているため、そちらを重視しているが、本音でいうとすべてを妥協せず理想的な状態にしたいが物理的に難しい。
2007/04 - 2019/12 : 個人事業主¶
法人向けインターネットバンキング開発 - 2018年頃¶
法人向けクラウドバンキングの技術検証とアーキテクチャ選定、開発プロセスの検討や教育などを担当。
個人向けインターネットバンキング開発 - 2018年頃¶
個人向けクラウドバンキングの開発フェーズの末期に参画、主にMVCのサーバー側を担当、初めの2か月は機能(主に画面)追加を実施。
それ以降は基盤部分の課題の洗い出しと修正、その他全体の不具合/仕様齟齬/未実装機能の検出と調整を担当。
大規模プロジェクト(設計/サーバー側実装/クライアント側実装/マークアップ/テスターがチーム分けされている)の中の末端のPGとして参画していたので、基本的には余計なこと(明確に自分に割り当てられている責務以外)はなるべく手を出さないよう行動。
正直なところあまり品質状態でしたが開発フェーズの末期に末端のPGとして参画している関係上、プロジェクトとしての貢献はあまりできていません。
⇒何故か評価されましたが技術者としてはとても悔いが残るような状態
問題点が多々ある状態だったが、次の法人向けではすべて解消するよう行動。
Angularを利用したSPA開発 - 2018年頃¶
趣味でのwebアプリ開発。
クライアント側は angular2/4 での SPA。
サーバー側はASP.NET(C#)で作成しMicrosoft AzureのApp Serviceで公開。
これとは別にもう1本作成し月30万PVになるまで運用していたが、マネタイズが思うようにいかなかったので閉鎖。
WindowsストアアプリでのタブレットPOSアプリケーション開発 - 2018年頃¶
以前行ったタブレットPOSアプリのカスタマイズで行った再設計をもとに標準版を一から作成しなおし、バージョン2として作成。
2017年1月まではほぼ1人で開発を行っていたが、それ以降は実装でなくプロジェクト管理を主に健全なプロジェクトとしてのルール策定と新人/中堅メンバーの教育を行う。
具体的には短期(1週間)、中期(1か月)、長期(3か月)のイテレーションを区切り、それぞれでの目標とやるべきことを定義。
短期(1週間)のイテレーションでの開発面では細かい単位での機能追加を行い、どういう形であれ1日の終わりに成果物をpushさせることで進捗を管理し、毎日の朝会(15分)で課題の把握と必要であればペアプロでのフォローでモチベーションを最優先に進め、完了時にテスターに向けて機能説明を行い中途半端なバージョンでテストが行われないよう管理。
中期(1か月)のイテレーションでは顧客に公開可能な品質を担保し、完了時に営業へ向けたお披露目を行うことで営業と意思疎通ができるようにし、低品質な製品が顧客に流れないよう注意。
長期(3か月)のイテレーションでは完了時にKPT法を用いた振り返りを行い、モチベーションの維持とスキルアップを目指すように。
Windowsストアアプリでの御用聞きアプリケーション開発 - 2015年頃¶
御用聞き端末向けアプリ2本の内の1本と、アプリで利用する商品データの加工&登録バッチ、配信用WebAPIを主に担当。
仕様面ではお年寄りにも容易に使えるようにという要求からUXを考慮したデザイン&操作性の提案とお客様本位での仕様を提案&調整。
開発面では.netのノウハウがないメンバーに対する教育と、Merge Requestを利用した全てのコードレビューを実施。
GitLabを利用したチケット駆動型開発と、バッチ処理に関してはテスト駆動型開発で行い品質を担保。
WindowsストアアプリでのタブレットPOSアプリケーション開発 - 2015年頃¶
既に作成済みのタブレットPOSアプリに対する機能追加&保守と、特定企業向けのカスタマイズを2案件対応。
特定企業向けに関しては既存のアプリの品質が悪いかつ大幅な変更が必要だったため、一から設計をしなおしての作り直しを実施。
また、既存開発メンバーに対して設計指針を主とした開発手法の教育を行いスキルの底上げを実施。
量販店向け社内利用webアプリケーション開発 - 2013年頃¶
SharePoint上で動作するwebアプリケーションを主に担当。
ASP.NET Web Formでの開発だが、ポストバックは性能とユーザビリティに難があるのでjQueryとWCF WEBサービスのajaxで実装。
UI部分はKnockout.jsを使用しMVVMパターンで実装、またsammy.jsを利用しブラウザの履歴とお気に入り登録にも対応。
pushStateとajaxを利用したpjaxで実装したかったが、.netでの実装は大変そうだったのでこれは断念。
TDDで開発しUI部以外は自動単体テストを行い、カバレッジはUI部分と自動生成コード以外は100%で納品し仕様に対する品質を担保。
命名規則はMS標準に準拠、VisualStudioのコード分析でソースコードに対する品質を担保。
※Microsoft マネージ推奨規則は全て対応、 Microsoft の全ての規則は対応すると問題がでるもの以外は対応。
SharePoint上での開発だが、SharePointの機能は認証にしか使用していないのでSharePointのことは基本的にわからない。
個人向け販売管理ソフト開発/個人向けオンライン会計システム開発 - 2012年頃¶
見積・納品・請求書を作成する製品を中核メンバーとして一から開発。
開発初期(3か月程度)は2人で、それ以降は開発メンバーとしては10人程度。
完成後はオンライン会計管理システムのチームメンバーとしてSilverlightで開発していたが、こちらは既にサービス終了。