プロジェクトの背景と開発方針
稼働中の求人サイトに対して、長期にわたり継続的に機能追加や性能改善など技術支援を行いました。
行った技術支援は以下になります。
- コード整理とフレームワークの導入
- 性能改善
- スロークエリの解消
- 画像サイズの最適化
- 描画キャッシュ
- 掲示板機能の追加
開発のポイント
PHPコードのリファクタリング(共通化)、フレームワーク導入
対象サイトはSEO施策として各エリアごとにドメインを分けていました。しかしドメイン毎にソースコードをコピペしていたためドメイン毎にソースコードが分散してしまっていました。ドメイン数は数十個以上にのぼり、ある箇所の文言を変更するだけでも、対象箇所を特定する作業に数日を要するような状態でした。
クライアント様にはこの状況と問題点をご説明し、機能改善や機能追加を行う前に、まずは同じコードを共通化するためのリファクタリングを行う必要があることをご理解いただきました。また大きな変更となるためこの機会に同時にフレームワークを導入することとなりました。フレームワークは表示速度を重視し軽量のものを選びました。
実際の作業はまずはソースコードを読んで全体像をざっくりと理解したのち、どこを共通化できるのかを把握しました。その後フレームワークで新規作成したアプリケーションに共通化を行いながら既存のコードを移行していきました。既存のアプリと見比べ、抜け落としがないかを確認しながら一つ一つ移行していく根気のいる作業となりました。
この施策により5万行規模のPHPコードを1万行程度に整理縮小し、重複コードを無くすことができました。
掲示板機能の追加
サイト内に掲示板機能を作りたいとのご依頼を受けました。
やりたいこととしては、
- ユーザーはジャンルを指定し新しいスレッドを立てられる
- スレッドはジャンルごとに分けて表示される
- 投稿はニックネーム、メッセージのシンプルなもの(HTML不可)
- 投稿内容変更削除できない
- 特定のホストからの投稿を制限できる(ブラックリスト)
- スレッドは返信数、アクセス数でランキング表示できる
- 新着スレッド一覧を表示できる
- 投稿は新しいコメントが先に表示される形
というものでした。
性能面に配慮しながらDBテーブルの設計を行い、問題なく実装することができました。
振り返り
クライアント様は専門知識のある技術者がおらず困っておられましたが、細かなアドバイスやスロークエリの解消などでお役に立てたようでした。
こちらとしても事業立ち上げ後初めてのクライアント様となり、サービスを提供してお役に立ち喜んでもらえるという基本的な事を経験することができました。今後もお客様に喜んでもらえるような仕事をしていきたいと強く心に感じた案件となりました。
プロジェクトデータ
- 開発期間
- -
- 開発人数
- 2人
使用技術
- 言語
- PHP
- Framework
- CodeIgniter
- データベース
- MySQL
- 画像アップロード
- AWS S3
- ホスティング
- VPS
- メール送信
- SendGrid