CodeIgniter

CodeIgniter3で複雑化するMVCを救う!HMVC導入で開発効率を大幅にアップ!!

この記事は約4分で読めます。
スポンサーリンク

CodeIgniter3を使い続ける中で、複雑化するMVC構成に頭を抱えていませんか?私もその一人でした。しかし、HMVCという救世主に出会い、既存のModelを活かしながら効率的な開発環境を手に入れました。このブログでは、その導入の背景と手順を詳しく解説します。

スポンサーリンク

背景

現在、私が運用しているプロジェクトは、CodeIgniter3をベースにした中規模なウェブアプリケーションです。初期の頃はMVC構成で十分だったものの、機能追加やページ数の増加とともに、コントローラーやビューが肥大化し、保守性が低下していきました。

特に、ある機能を別の機能でも使い回したいとき、毎回コピペやincludeを駆使するのは面倒で非効率。そんなときに目を付けたのが「HMVCパターン」でした。

しかし、既存のModelはかなり作り込まれており、ゼロから作り直すのは現実的ではありません。そこで、Modelは既存のものをそのまま使用しつつ、HMVCを導入することでコントローラーとビューをモジュール化し、効率的な開発環境を目指すことにしました。

HMVCとは?

HMVC(Hierarchical Model-View-Controller)は、MVCの各要素をモジュール単位で管理するアーキテクチャです。従来のMVCでは、コントローラー、モデル、ビューがそれぞれ一つのディレクトリに配置されますが、HMVCでは「モジュール」ごとにそれらをグループ化できます。

例えば、application/modulesディレクトリ内に以下のような構造でモジュールを配置します。

application/modules/
  blog/
    controllers/
    views/
    models/
  shop/
    controllers/
    views/
    models/

これにより、特定の機能を独立して管理・再利用できるようになります。

導入手順

ライブラリのダウンロード

wiredesignzのcodeigniter-modular-extensions-hmvcGitHubからダウンロードします。

GitHub - codinghamster/codeigniter-modular-extensions-hmvc
Contribute to codinghamster/codeigniter-modular-extensions-hmvc development by creating an account on GitHub.

CodeIgniterへの組み込み

ダウンロードしたMXディレクトリをapplication/third_partyに配置します。

次にcoreディレクトリにあるMY_Controller.phpとMY_Router.phpを自プロジェクトのapplication/coreにコピーします。

config.phpを修正

application/config/config.phpを次のように修正します。

$config['modules_locations'] = array(
    APPPATH.'modules/' => '../modules/',
);

モジュールの作成

例えば、ブログ機能をモジュールとして作成する場合

application/modules/blog/controllers/Blog.php
application/modules/blog/views/index.php

※Modelは既存のapplication/models内のものを使用

モジュールの利用

モジュールから別のモジュールを呼び出す際もシンプルです。

$this->load->module('shop/cart');
$this->cart->add_item($item_id);

実装のポイント

  • Modelは既存のものをそのまま使用
    新たにModelを作る必要がないため、導入コストを抑えられる。
  • 共通機能のモジュール化
    例えば、ログイン処理やフォームバリデーションなど、複数ページで使う機能をモジュール化することで、DRY(Don’t Repeat Yourself)を徹底。
  • チーム開発でのメリット
    複数人で開発する場合も、モジュールごとに担当を分けることでコンフリクトを減らせる。

まとめ

CodeIgniter3にHMVCパターンを導入することで、コードの可読性や保守性が劇的に向上しました。特に、既存のModelを活かしつつ導入できたことで、スムーズに移行できたのが大きなポイントです。

「CodeIgniterのMVCが限界かも…」と感じている方は、ぜひHMVCの導入を検討してみてください。

スポンサーリンク
CodeIgniter
フォローしてね
スポンサーリンク

コメント

タイトルとURLをコピーしました