## プロジェクト概要
株主管理業務のWebアプリです。
https://sharemanager.jp/
煩雑な業務をWeb上で行うことで、株主管理の手間を省くことができるサービスです。
現在数十社に導入いただいています。
## 所属会社
株式会社Qureテクノロジーズ
https://qure-technologies.co.jp/
## 開発体制
開発体制は以下の3名体制です。
- プロダクトマネージャー(社長)
- 開発者(私)
- テスター
それぞれの役割は以下の通りです。
プロダクトマネージャーが、仕様変更や追加機能のアイデアを提示する。
私が、プロダクトマネージャーと対話を重ねて要件や仕様をまとめ、実装する。
テスターが、テストを行う。
## 業務内容
以下の業務を経験しました。
- 起業(発起人の1人)
- 開発
- リリース
- 運用
- テスト
- 顧客対応
- 商談
プロダクトのアイデアを練り、開発してリリースし、商談して使っていただく、というところまで一通り経験しました。
顧客目線でプロダクトを見る力が身についたと感じています。
業務レベルでの開発経験者は私1人だけという状況だったので、開発環境の整備や技術的な知識の共有なども行いました。
最後まで責任を持ってやりきることの大変さと、達成感を学びました。
### 実際の開発の流れ
実際にどのように開発を行なってきたかを例示します。
#### 1. 作りたい機能の概要をまとめる
プロダクトマネージャーに対しヒアリングを実施し、以下のように大まかに機能の概要を明文化します。
今回解決したい課題として「持株会管理業務の煩雑さ」がありました。
持株会管理業務は、「毎月の積立金の算出」「会員の登録・退会」「会員の情報変更」など、手間のかかる業務です。
多くの企業では、上記の業務をエクセルなどで行なっており、工数がかかっている上に人的ミスも発生しやすいという課題がありました。
そこで、持株会管理業務をスムーズに行うための機能として以下の機能を開発しました。
- 機能名称
- 持株会オプション機能
- 機能概要
- 持株会運営の業務を支援するための機能です
- (詳細はこちらをご参照ください)
- https://sharemanager.jp/news/update_20240227
- 機能詳細
- 持株会会員登録
- 積立金の拠出機能
- 株主名簿との連携機能
- など
積立金の計算などはシステム化することで自動化でき、登録や情報変更などをCSVで一括登録できるようにするなど、とにかくユーザーの業務負担を減らすことを考えた機能にしました。
#### 2. 要件定義
誰がどのような操作を行うかを考えながら、作るべき機能を洗い出しました。
この時点ではあまり詳細に踏み込まず、「要件は後から変わっていくもの」という前提で進めています。
#### 3. 設計
要件を満たすために何が必要かを考え、リストアップします。
大まかにタスク化し、タスク管理ツールに登録します。
デザインツールでモックを作り、プロダクトマネージャーとモックを見ながら動きを確認します。
要件を変える必要がある場合は2. の要件定義の内容を更新します。
クラス名やテーブル名などを考えます。
#### 4. 実装
ここからコードを書いていきます。
以下のような環境で実装を行なっています。
- プログラム動作環境
- Docker
- 言語など
- PHP, JavaScript, CSS, HTML, SQL
- エディタ
- Visual Studio Code(VS Code)
VS Codeには以下のような拡張機能を入れています。
https://qiita.com/Yajima_t/items/1bb71fe5dd112231cb62
実装時は以下の点に気をつけています。
- 処理は細かくメソッド化する(処理が3行以上になったらメソッド化を検討)
- 処理は宣言的な記述を心がける(極力、副作用がないようにする)
- 変数名、メソッド名はわかりやすく(書籍「リーダブルコード」の内容を意識する)
- MVCの責任境界を意識する
- ロジックは極力モデルに閉じ込める
- ビューにロジックは入れない
- コントローラーにロジックは入れない
- できるだけ処理を共通化し、使いまわす
- マジックナンバーを入れない。定数化する。
- 極力SQLは使わず、ORMを活用する(セキュリティ強化、RDBMSのバージョンアップ時の対応箇所を減らすため)
#### 5. テスト
ローカル環境で動作を確認し、問題なければテスト環境にデプロイします。
次にテストケースおよびテストプランを作成します。
テストケース管理アプリとして「Qase」を使用しています。
テスターにテストを依頼します。
テストがOKであれば6.に進みます。
テストがNGであれば4.に戻ります。
#### 6. 機能レビュー
プロダクトマネージャーに機能をレビューしてもらい、フィードバックを得ます。
得たフィードバックをもとに、仕様の変更や設計見直しを行い、実装します。
フィードバックがなくなったら7.に進みます。
#### 7. リリース
本番環境にリリースします。
今回は大型の機能リリースだったためユーザーへの通知を行いました。
---------
実際の開発の流れの例は以上です。
同様に、以下のような機能を開発しリリースしました。
- 自己株式機能
- 自社が保有する株式(自己株式)について、会社法の要件を適用する機能
- 支払調書出力機能
- 配当実施時に税務署に提出する帳票のPDF出力機能
- セキュリティオプション機能
- システム内の特定アクションを検知し、ログを保存してユーザーに表示する機能
- 例えば、誰がいつどのIPアドレスでログインしたか、など
## 成果
自身が達成した成果は以下の通りです。
- プロダクトを作ってリリースした
- 顧客から直接フィードバックを得てプロダクトをブラッシュアップした
- 頻繁に機能を追加し続けたことで、プロダクトの価値を高めた
特に、支払調書や全銀フォーマットデータなどを自動生成してダウンロードできる機能はユーザーの方から感謝のお声を多くいただいています。