株式会社ココロファン - エンジニアリング事業部所属のSassyです。
普段は業務委託で仕事をしながら、自社プロダクトの企画/開発をしています。
最初に
これまで弊社はSESメインでやっておりましたが、8月頃からWordPressを使ったWebサイト制作の受託業務を始めました。
そこで「ブログ」「お知らせ」「募集要項」「社員インタビュー」という要素があり、これらはお客様側で追加、削除、更新をしやすいようにするという要件がありました。
当初、WordPressの投稿機能を使って、「ブログ」「お知らせ」「募集要項」「社員インタビュー」をカテゴリとして記事作成時にカテゴリ付けを行ってもらい、WordPress上では表示したい箇所でPHPを書いてget_posts
関数を使って引数パラメータに特定のカテゴリで絞り込むようにcategory_idを渡して取得して表示するようにしました。
しかしここでいくつかの問題が発生してしまったのです。
表示上は問題ないのですが、これらの記事ページや記事の一覧ページをそれぞれ細かくカスタマイズしようとすると問題が出てきます。
これを実際に製作序盤で気づければよかったのですが、後半になって入ってくる様々な変更により対応できなくなっていきました。
1つのテンプレート内でカテゴリ毎に出しわける分岐を入れて対応しました( ;∀;)
そもそも要件を細かく洗い出せてなかったというところもありますが、制作前に未来を見通すことは結構難しいことなので最初からある程度設計して、後々の変更にも対応できるように投稿機能を使うときはこういうことを考えておくとよいですよという内容の記事になります。
要素を洗い出す
要素という抽象的な表現を使わせていただきますが、今回の案件ですとお客様側で追加、削除、更新ができるようにしたい部分になります。
「ブログ」「お知らせ」「募集要項」「社員インタビュー」ですね。
他にも扱いたい要素があるかを確認します。
可能であれば、さらに細かく洗い出していきます。
例えばですが、「ブログ」には【技術情報】【広報】があるとか、「募集要項」には【正社員】【パート】【技術職】【営業職】【総合職】があるといった具合です。
こういった細かい部分まで一通り洗い出せると良いです。
洗い出したものが多い場合は投稿自体(投稿タイプ)を分けるか、またはカテゴリやタグなどで表現できないかを検討します。
お客さん側である程度決まっているなら、そのカテゴリなどを参考に整理すればよいですが、まとまっていないならこちら側で洗い出して、「ブログのカテゴリとして~で検討していますがいかがでしょうか?」、「募集要項のカテゴリとして~で検討していますがいかがでしょうか?」みたなやり取りは必要になってくるかと思うので、そこは状況を見ながら作業していけばよいと思います。
洗い出した要素の性質を見極める
次に要素の性質を見極めます。
この性質を見極めるというのは例えば「ブログ」「お知らせ」「募集要項」「社員インタビュー」とあった場合、「ブログ」「お知らせ」は外部に共有したいもの、「募集要項」「社員インタビュー」は特に外部に共有するほどではないといった、そのページが持つ特徴などを考えます。
ここでそれぞれが持つ特徴が異なってくるとテンプレートを分けるかどうかの判断が必要になります。
上記の4つの要素をすべて1つのテンプレートで表示する場合、例えば「ブログ」「お知らせ」にSNSボタンを表示したいのに「募集要項」「社員インタビュー」も表示されてしまって変更できないというような状況が発生します。
また、「募集要項」の一覧ページにサムネイルは不要なのにテンプレートがすべてで共有されていることでサムネイルと削除できないとか、そういったことが起こり改修にコストがかかるようになります。
これらの要件が複雑化してくると1つのテンプレートでやり過ごすのは苦しくなるのです。
最悪1つのテンプレート内に分岐がたくさん入りバグの温床になりかねません。
ただですらPHP in HTMLなので非常に可読性が低くなります。
そのためにも各要素の性質を見極めるのは重要だなと感じました。
一通り検討が済んだらテンプレートを分けるかどうかを判断します。
最後に
今までWordPressでサイト制作は何回か経験しましたがWordPress1本でやってきているわけではないので色々調べながらやりました。
納期も迫っている中で今の自分の持っている知識でやりきらなければならないというところと、後々制作を進めていくとその過程で調べて新しく分かったことなどがあり、そこから実装を変えたりしたいなと思ったり…笑
しかし、今回は納期に間に合わせる方が大事であったため、今回得た知見は今後の制作業務に活かせたらと思っております。
株式会社ココロファンでは自社プロダクトの開発も行なっており、やってよかったこと、やってわかったこと、便利なノウハウを皆さんに共有できるように、これからも積極的に技術記事をアップしていきたいと思います!