CakePHPでこのブログを作った話
はじめに
このブログは CakePHP でイチから作りました。もっと掘り下げると VPS を契約して CentOS 7のインストールから始めました。 本記事には CakePHP でブログを作ってよかったことについて自分自身に問いかけながら書き記しておきます。
ブログをなんでわざわざつくったの?
モチベーションはいくつかありますが、車輪の再発明をすることで知見を得たい欲が大きかったことです。
技術ブログを書くだけが目的なら Zenn であったり、Qiita であったりはてなブログなど優秀なプラットフォームがありますよね。それらのプラットフォームは他の方の技術ブログを見ることができますし、技術者の方と繋がれる可能性だったあるのでとても魅力的ではありました。しかし、私はブログを作ることで得られる知見は何があるのか考えたときにワクワクしていました。
CakePHP を選んだ理由は?
いくつか理由があって、
一つ目は片思いしていた企業の求人に CakePHP があったことです。
PHP フレームワークは Laravel がとても人気があって私自身の学習経験があったのためそっちにしようと思ったのですけど、設計思想がビジネスにマッチするからなのか 働いてみたいなあと思いを寄せていた企業が CakePHP を採用されていましたし、他の多くの企業でも社内ツールなどに Cake が使われていました。
二つ目は MVC の知見を深めたかったことです。
普段私はレガシーなシステムのリプレイスや改善したり、フレームワークを触るといっても自社フレームワークで、MVC フレームワークを触る機会がありませんでした。しかし自分に機会がないということが学習しない理由にはなりませんし、待っていても技術は身につかない。何より知りたかったので学習の目的を含めて CakePHP にしました。
三つ目は CakePHP の開発の速さと設計思想がマッチしたことです。
CakePHP は Ruby on Rails の影響を受けており、短期間での開発をサポートする機能がいっぱい備わっています。私の日常は帰宅してから寝るまでの時間が人並よりも少なく、学習時間はちょっと欲張って睡眠時間を削って 0:00~3:00 毎日この時間に 3 時間ずつ作業するため、CakePHP の恩恵を受けようと思っていました。そして設計思想である CoC(Convention over Configuration)-「設定より規約」これは規約に沿って開発することで余計で手間なプログラミングや設定をせずに済むため都合が良かったのです。
工夫したところは?
「サクサク読めるようブログ」を実現するために表示速度を意識して実装したことです。
目標は阿部寛さんの公式 HP。
ユーザーインターフェースは思い切って CSS フレームワークに Bootstrap を採用してみました。いわゆる「Bootstrap 臭さ」を毛嫌いして今まであまり使わなかったのですがやはり彼は効率が良かったです。
そしてあえて JS でアニメーションなどは一切つけておりません。これは想定している読者の目的が問題解決とかそういうのだと思うからです。ググる時ってまずそのブログが自分の求める情報かどうかを判断しますよね。そんなときにふんわりアニメーションで時間を奪うことは善ではないと思います。たとえ私のブログが訪問者様のお役に立てなくても訪問者様がコンマ1秒でも早く情報の判断ができる速度でありたいと思っています。
やってみてどうだった?
想定していたよりも得た学びが多かったです。
開発面では前述のとおり私がレガシーに関わっているからこそ感じる MVC の恩恵の大きさがありました。
また、開発だけでなく SEO の知見を得ることもできました。
サイトマップ XML やら RSS フィードやら、パンくずリストを作ってみたり、構造化データを作ってみたり、「このページはこういう理由で noindex にする」などやることは多かったもののとても勉強になりました。何もなかったところから始めたので毎日 Google Serch Console を見るのが2倍楽しく感じられました。しかし後日 WordPress で友人の HP を制作したら SEO 対策のそれらがデフォルトまたはプラグインで最初から備わっていてなんというか、ガッカリというか WordPress 強いなぁと思いました。作ってみてわかる CMS の凄さですね。
さいごに
ブログ構築自体は学習の題材として多く使われてますが運用するところまでは想定されていないのがほとんどだと思います。運用まで想定して作ることで改めて開発に終わりはないんだなとも感じます。このブログもまだまだ途中で、もっと足す引くできると思っています。
そして、ブログを書くことが目的の場合は潔くプラットフォームを使うことを強くおススメします。気合い入れて開発するぞお!!ってなって途中で燃え尽きてしまっては本来の目的を達成できませんからね。
使用した技術たち
-
CakePHP4(PHP 8)
-
Bootsrap 5
-
MySQL
-
Cloudflare(プロキシ)
-
Docker(ローカル環境)