KAILO

Codeigniterでブログをつくった

技術関係のメモや旅行の思い出などを書き留めておくためにブログをはじめた。

簡単にやるならはてなブログやWordPressを使えば良いんだけど、せっかくなので自分でシンプルなブログシステムをつくってみた。現在は管理画面さえ無く、DBに直接入力した記事データを表示するだけ。何か機能が欲しくなったらその都度つくっていけばいいので気楽だし、何もかも好きにできて快適です。

サイト公開までにやったことを書く。

環境の準備

サーバ

MySQLが使えて安いものを、ということでさくらのレンタルサーバ スタンダードプランを借りた。サーバコントロールパネルでPHPを最新(現時点で7.2.7)に設定。DBはMySQL 5.7。無料SSLも設定した。

ドメイン

kailo.comは当然ながら既に取得されていたため、kailo.jpに決めた。レジストラは、管理画面のUIが良い感じだったのでhoverを使いかったけど、.jpは取り扱っていなかった。というわけでドメインもさくらで取得した。

PHPフレームワーク

シンプルで軽量なCodeigniterを採用した。Composerで最新バージョンをインストール。

URL設計

URLをどうするかはちょっと悩む。例えば2018年に投稿された記事の一覧を表示するアーカイブページがあるとして、

https://kailo.jp/search?year=2018

このようにGETパラメータを使ったURLにすることも考えられるし、

https://kailo.jp/2018

静的URLにすることもできる。

しかし、この場合は「最初のセグメントが数字の場合はアーカイブページ」という条件でルーティングをすることになるので、他のページで数字を使うことは基本的にできなくなる。idが123の記事ページのURLをhttps://kailo.jp/123にしたくても、それは123年に投稿された記事の一覧ページのURLということになる。

https://kailo.jp/archive-2018

そのため、このような接頭辞をつけて、ルーティングにおける条件判定をしやすくすることも考えられる。

結局こうした

//ホーム
https://kailo.jp

//記事
https://kailo.jp/post/{post_id}

//アーカイブ
https://kailo.jp/archive/{Y}
https://kailo.jp/archive/{Y}/{page}

//タグ
https://kailo.jp/tag/{tag_id}
https://kailo.jp/tag/{tag_id}/{page}

post、archive、tagというディレクトリで区切って、その下層にidなどがある形にした。最も基本的で良いんじゃないでしょうか。

アーカイブページとタグページはページネーションがあることを想定して、2ページ目以降は第3セグメントをページ数とした。

データベース

  • 記事テーブル
  • タグテーブル
  • 記事とタグの関連付けテーブル

しか作っていない。記事テーブルには、OGP用のアイキャッチ画像を設定するカラムを用意した。

Codeigniterで開発

基礎の基礎しかやっていないので特に書くことが無い。日本語ドキュメントにはお世話になっております。

フロントエンド

デザイン

すっきりと必要な情報だけを伝えられるデザインを目指した。そのため、PCモニターで表示しても1カラムになるようにした。背景色は#ffffffだとコントラストが強くて目が疲れる感があるので#fafafaとした。

CSS

SassでBEMった。記事の本文に関しては毎回classをつけるのもどうかという思いがあり、例外でタグ要素に直接スタイルを指定した。

シンタックスハイライト

highlight.jsを利用。等幅フォントとしてGoogle FontsのRoboto Monoを使った。

OGP

公式ドキュメントを参考に必要最低限の記述をした。SNS独自のものはTwitterのみ対応。Facebookはそもそも自分がまともにやっていないのでまあ今はいいかな…という感じ。仕事だったら許されない判断である。

これからやること

Googleタグマネージャでアナリティクスを導入するのと、サーチコンソールへの登録はやっておきたい。

それと、記事を書く際は投稿用の画面がないと非常に面倒くさいと感じたので、そのあたりをつくっていきたい。