Web帳票システム

OVERVIEW

B2B向けWeb帳票システム

YEAR 2016

概要

請求書・請求明細を、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 による構成定義管理を導入した。