概要
請求書・請求明細を、Webから閲覧するためのB2B向けWeb帳票システム。サービスを立案し、プロトタイプ作成、アプリケーション開発、サーバ構築など、開発業務全般を担当。
書面の請求書を廃止し、本システムに一本化することで、大幅なコスト削減を実現した。
開発人員・期間
サービス開始時は一人開発だった。開発期間は、プロトタイプの開発に1ヶ月弱、本開発が6か月程度。商用Webサービスの開発は初めてだったが、意外と何とかなった。
現在は別のサーバーエンジニア2名に開発を委譲済み。
- サーバーエンジニア 1名(自分)→2名(自分を除く)
- インフラエンジニア 2名(自分を含む)
- Webデザイン 1名(自分)
構成
- FuelPHP
Webアプリケーションフレームワークとして使用。設計およびコーディングの90%以上(サービス開始時は100%)を担当。請求書はあらかじめPDFを生成しておき、静的ファイルをダウンロードさせる手法とした。PDFの生成は、Twigを使用して帳票レイアウトのhtmlを出力し、htmlをwkhtmltopdfでPDFに変換する手法を取った。また、明細情報をCSVファイルでエクスポートする機能を備えており、各社毎のシステムに取り込みやすい配慮を行った。
認証機構は FuelPHP 標準の Auth パッケージを拡張し、会社のセキュリティ要件に合わせた改修を加えている。(アカウントロック機構の追加実装など)
アカウント情報に権限レベルの概念を持たせており、自分の権限レベルより高い操作は行えない仕様となっている。この機能は PHP のトレイトを用いて実装されており、権限レベルの実装作業を簡素化している。
- MySQL
データベースとして使用。テーブル数は20程度。レコード数は一番大きいテーブルで100万レコード程度。レスポンスタイム要求がそこまで厳しくない(~数秒まで)ことから、テーブルのパーティショニングは行っていない。パフォーマンスチューニングを行った結果、インデックスを張るだけで十分だった。
- nginx
Webフロントとして使用。バックエンドはPHP-FPM。
- Bootstrap3 + jQuery + Font Awesome4
フロントエンド用途で使用。閲覧環境の要求として、メインターゲットはPC、サブターゲットはSP(スマートフォン)が指定されていた。Bootstrap3をメインのCSSフレームワークとして採用することで、なるべく軽い実装で済ませ、PC/SP両対応を実現した。
- Vagrant + Docker
開発環境のみ使用。vagrant up すると、docker-compose を用いた build/up まで自動で実施し、開発環境を自動構築するようにした。Docker コンテナのOSは Debian / Alpine Linux を使用。
- ansible
本番/ステージング環境のみ使用。オンプレミス環境の都合で Docker が使えず、ansible による構成定義管理を導入した。