| フレームワーク | CakePHP 3.5 |
|---|---|
| 使用言語 | PHP 7.1 |
| 使用RDBMS | MySQL 5.6 |
| 文字コード | UTF-8 |
| 主な利用ライブラリ | Twitter Bootstrap Composer |
| 工数 | トップページのみ公開まで約3時間 |
僕の流儀として、工数をカットする場合は必ず
上記の3つの上から順に削っていきます。
画像量。
これはWebサイトを制作したことのある方であれば直感的におわかり頂けると思いますが、画像を準備するというのは、例え百戦錬磨のWebデザイナーであっても一定以上の工数を必要とします。
また、画像自体を準備することはもちろん、それを埋め込むための設計にも必ず時間がかかります。そのため、基本的に初期リリース時の画像量は極小として、工数とリリース納期を最優先としています。
コード変更量。
直感的にお分かり頂ける入力の工数ももちろんですが、入力したものは必ずチェックがかかります。そのチェック工数も増加するため、コード変更量が2倍になれば、工数は間違いなく2倍以上となってしまいます。
この工数インフレーションを抑えるため、今回本サイトではCakePHPとBootstrapを用いてシステム・デザイン共にコーディング量を大幅に圧縮し、結果として初期リリース分のコーディング時間を約1時間に圧縮することができました。
インフラへの投資。
サーバ費用やSSLの費用については、本サイトは月額500円のロリポップサーバースタンダードプランを用いることで、大幅に押さえ込んでいます。
今回本サイトについては、設計段階でセキュリティ上の危険因子となりうる入力フォーム等を最初から極力実装しないようにしました。これによりセキュリティへの投資が押さえられ、結果としてインフラへの投資が押さえられたという工夫となっています。
環境依存性は、大きく分けると『開発環境依存性』と『商用環境依存性』の2つにフォーカスして工夫を行っています。
開発環境依存性については、アプリケーション中心の考えのもとアプリケーションが必要とする環境を満たしつつ、自分自身の開発環境2つ(持ち運び用のMacBookProと自宅のWindows)のどちらでも同じように動くよう、設計段階で考慮を重ねました。
結果としてWindowsのXampp環境でもMamp環境でもLinux環境でも特に不自由なく同じ動きを取る構造となり、誰でもどこでもいつでも開発できる開発環境依存性の大幅カットを実現しました。
商用環境依存性については、CakePHP1系時代から頭を悩ませていた積年の課題でもあり、今回最もこだわった点の1つでもあります。開発環境依存性の解消の延長として、『クラウドに自分で構築した仮想ホストでもレンタルサーバでも同じように動く』を念頭に設計を行いました。
結果として、本サイトはレンタルサーバであるロリポップのスタンダードプランでも稼働しますが、Windows SubsystemやMacやLinuxのどの環境でもほぼ特別な設定を必要とせずに動かせるようになりました。
これら2つの工夫により環境依存考慮による開発・テスト工数が大幅に削減され、また開発のオーバヘッドも減り、時間的コストが大幅に削減されました。
僕は今でもエンジニアであるため、デザインに関してはほとんど素人の延長レベルです。
そんな僕ではありますが、最低限の工数で最低限の体裁で最大限の情報を表現する・・・そのための工夫として、TwitterBootstrapを利用しました。
Composerを利用してCakePHP3にコマンドベースでインストールが可能なため、導入工数はものの数十秒です。CSSへの追記は一切行わず、原則として全て出来合いのClassを付与し、それでいてレスポンシブ対応を実現しました。
フロントエンドを開発するために要した工数は、実測値で約20分。そのうち15分前後は調べ物やデバッグに要した時間で、HTMLやHTMLに近い部分のPHPのコードを書いた時間はおそらく5分にも満たなかったのではないかと思われます。
例えば、以下のような追加対応をする場合、どのくらいの工数がかかり、どのような工夫や方針で対応をするのかを紹介させて頂きます。
フォームページ + 問い合わせ履歴管理ページ の構成でだいたい工数16時間と言ったところです。
各ページデザインとフォームの項目数、送信先アドレス数によって工数はかなり増減しますが、数日もあれば追加は可能です。
これを実現するのであれば、真っ先にWordpressでの再設計を行います。
仮にオリジナルのCMSを1から作るとなると、デザインからテストまで念入りに考慮する必要があるため、これまで工数200時間以下で対応したことはありません。
Wordpressの代替であれば、本サイトからの移行であれば大体10時間もあれば終わります。
これは、要求の複雑さ次第ですが、本当に簡単なログイン機能+テキストベースのチャットで問題がないのであれば、40時間〜60時間ほどで完成します。
構成としては、ログイン系処理・メッセージ系処理共にRestAPIをCakePHPに準備し、それに対してフロントエンドからアクセスするという形を想定しています。
CakePHPはスケーリングにも対応が可能なため、例えば将来的に利用者やメッセージ数が増えることも想定するという場合も基本的には可能です。