PHPでの検索機能付きデータベース系サイト開発記録

スポンサーリンク

2016/4/7の開発記録

AA作成ツールをやめていきなりCakePHPでのフレームワークを使用したサイトを作り始めてみる事にしました。

薄っぺらいサイトで良いので、なんとか検索機能付きデータベース系サイトを1個作ってみます。1個作ればコピーして違う用途でも使えますし。

とりあえず案。

基本機能案

  • 検索一覧ページ
    • ヘッダー
    • 左サイド検索BOX
    • 一覧
    • フッター
  • 商品個別ページ
    • ヘッダー
    • 左サイド検索BOX
    • 商品内容
    • フッター
  • 検索BOX (カテゴリ検索+未定 ドメイン/category/未定

追加機能案1

  • クローラーを作り表示内容をかき集めてデータベースに格納して商品数を一気に拡大。

追加機能案2(やらなくても良いかも

  • ログイン機能
    • 先ずはメールアドレス、その後SNS
  • コメント機能
  • +α(書き込みたくなる何か)

作業

CakePHP(フレームワーク)の立ち上げに着手開始します。

DBは設計がまだシンプルなので随時作成という事で。

デザインもcssがどうしたら良いかわからないレベルなので、難しい事はせずシンプルな案を採用したいです。twitter Bootstrapというのが気になっていますがどうなのでしょうか。

2016/4/9-10の開発記録

CakePHPの初期表示設定に1日苦戦してしまいました。やる事なす事全てエラーになるので挫折しかけましたが、なんとか立ち上げられました。

でも、composerの仕組みやyumの事など少し理解度が増したので良い経験にはなっていると思います。

CakePHPのVirtualBox Vagrantへのインストールと初期表示エラーの解消まとめ
既にこれまでに準備したVagrant仮想環境にCakePHPをインストールしていきます。 Vagrant仮想環境構築まとめはこちら(apa...

2016/4/11の開発記録

ConEmuマクロ設定

CakePHPのブログチュートリアル

  • index 一覧ページ
  • view 詳細ページ

2016/4/14の開発記録

CakePHPのブログチュートリアル

2016/4/18の開発記録

やはりブログチュートリアル。

view 詳細ページの追加機能のバグ修正、編集機能追加、削除昨日追加まで。

あとバージョンアップ。

CakePHPブログチュートリアルError: FlashComponent could not be found.
CakePHPのブログチュートリアルをやっているのですが、フラッシュコンポーネントがないエラーになりました。 Missing Co...

2016/4/19の開発記録

CakePHPのチュートリアル完了。

他規約など読み込む。改めて読むとそうだったのかと思う。

あまりまとまった時間が取れない。

サイトの設計を進める。

2016/5/5の開発記録

だいぶ時間が空いてしまいました。

サイトに表示する項目の洗い出しをしました。

それをもとにDB設計の半分くらいまでやりました。

久しぶりにPCに向かったら目が痛むので中断。

2016/5/12の開発記録

DB設計は出来ました。

twitter bootstrapを導入しました。

2016/5/18の開発記録

twitter bootstrapを実際にCakePHPの実画面に設定

Twitter BootstrapをCakePHPにて使用する
Twitter BootstrapをCakePHPに設定したので記録しておきます。 ※CakePHPは2.X系を使用しています。 ...

config使用方法確認と初期設定

CakePHP configの使用方法メモ
CakePHPにてサイト名などをconfigに持たせて使い回したかったので、config使用方法を確認しました。 ※CakePHP2....

本日は3コミットです。おやすみなさい。

2016/6/1の開発記録

なかなか着手出来ていない・・・。

bootstrapのjsを使うように修正しただけ。

2016/6/16の開発記録

久々に着手。リビルドを聞きながら・・・

bootstrapをベースにテンプレート調整をした。

ヘッダー、ナビバー、左サイドバー、メインコンテンツを準備。

サイドバーとメインコンテンツについてはbootstrapで該当するものがどれかわからなかった為、この本を参考に構成。

一覧ページの項目検討。

詳細ページの項目検討。

サーバサイドを先に作っていくか、view側を先に作っていくか、どっちか迷うシーンが多い。

テンプレート枠は作ったのでがっつり表示項目を出力するところまでサーバ処理に入る事にした。

出し切ったところで画面側のスタイル調整などしていく事に。

cssを変更しても何故か表示が変わらない現象が発生。キャッシュが自動的に使われていると思われ、debugモードを2にしてみたが変わらず、tmpディレクトリのキャッシュファイルを削除しようと思ったが時間になったので終了。

2016/6/19の開発記録

レスポンシブwebデザインのレイアウト修正。

データベース設計。

データベースSQL CREATE文作成完 INSERT文マスタ作成中。

INSERT するデータ調査をしながら設計をしていったが、やっぱりデータを洗い出してみると当初の設計だけでは全部見切れていない。

今後、仮にリリース後だとしても、データ推移とか実際にさわって見てまた気づく事があれば、臆する事なくデータベース移行もしていきたいと改めて感じた。

2016/8/22の開発記録

実に2か月ぶりの更新となってしまったので、どこまで出来ていたか大分忘れていた・・・。

もっとメモ・コメントをとっていくようにしようと思った。

データベースのSQLを全て作成完

routes.phpの勉強

CakePHP2.x系のroutes.phpで好きなURLに変える
CakePHP2.x系の開発でroutes.phpを使用して好きなURLで動かせるよう調べたのでメモしておきます。routes.phpの書き...

2016/9/6の開発記録

一覧と詳細の画面レイアウトを手書きでちゃちゃっと作ろうと思ったが、項目が色々あったので結局エクセルで適当に作ってソースと合わせてgit管理。

詳細データを投入するにあたり、マスタデータの登録フォームが必要になってきたので着手。

2016/9/14の開発記録

データ登録時にマスタの値をセレクトボックスに表示する設定をしますた。

CakePHP2.x系データ入力フォームでマスタの値をセレクトボックスで選択出来るようにする
CakePHP2.x系のデータ入力フォームでマスタの値をセレクトボックスで選択出来るようにしました。 例.User登録ページ ユーザ登録...

2016/9/15の開発記録

データ登録時の項目名に日本語ラベルを付加

2016/9/27の開発記録

画像保存処理に着手。

CakePHPの標準レールになるべく則ってやろうとしています。

これを守らないと、あとあとになって大変になる。という思いで今はフォームから勉強しつつやってます。

2016/9/30の開発記録

画像保存処理とフォームを引き続き。

ファイルで保存するかDBに保存するかでうろうろしていたが、あとでクローリングしたファイルをがっつり保存したいので、ファイルにしました。

2016/10/3の開発記録

画像保存処理と入力チェックが完成。

入力チェックはmodelのvalidateを記載。

なるべくコントローラーに書きたくない思いで色々調べました。

あとgulp導入中

2016/10/7-11の開発記録

gulp忘れてたことに今気づく。保留中。

viewの詳細項目をbootstrapのgridを使用して表示するようにした。

見た目のdetailにこだわり始めると時間があっという間になくなる。

先ずは機能を先に作ろうと改めて思った。

見た目はデータ入れ終わってからにしよう。

課題:gulp

2016/10/14の開発記録

前回、見た目はあとでって言ったのに・・・

気になってすぐいじれそうなところから、ちょこちょこやってたら2時間くらい経ってた。

bootstrapを入れているのでbootstrapでやるかやらないか、gridかtableかulかdlかなど基本的なところでうだうだ迷ってしまい、しかも結局全部試してしまい、gridとtableの組み合わせになりました。

しかも詳細項目ページがだいたい終わってからbootstrapのテーマで見てたら使ってみたいのが色々出てきたという・・・。

デザインは手を付け始めると終わりが見えない。本当にもうこれ以上さわらないようにしたい。明日からこそはクローラー開発してデータひっぱってくる為の環境を整えていきます。

課題:gulp

2016/10/17の開発記録

またデザイン調整をしてしまいました・・・。

素人ながらレスポンシブデザインにしたかったので、bootstrapなら簡単に出来るはずと思い、良く理解していなかったgridの調整。12分割するだけであとはcol-lg6とかmd sm xsとか使いわけてなかったのですが、全部のブレイクポイントを設定してみたらスムーズにレスポンシブwebデザインに。それだけだったのか!という感じで度肝を抜かされました。

可変にする箇所はこのクラス(col-md-6など)をつける必要はありますが、そんなにページの種類がないのでこれ(grid)機能を使った方が今後も簡単に出来そうな手ごたえを感じました。

bootstrapのテーマはやっぱりデフォルトベースで行きたいと思います。機能的に動けばあとはありきたりなデザインでも良いかと思いました。スキル不足過ぎるし。

なんだか光が見えてきた気がします・・・。これで今度こそクローラー開発に移行したいです。

課題:gulp

2016/10/18の開発記録

bootstrapで作られたサイトを見たヒントを遣い、またbootstrapの調整をしてしまった・・・

良くはなってきているもののデザイン意外進んでないという。もう本当に本当にやめよう。

明日からこそはクローラー開発に着手する!

課題:gulp、クローラー

2016/10/25の開発記録

クローラー開発に入りました。

クローラー開発の記録はこちらに記載していきます。

Rubyでのスクレイピング・クローラー開発記録(データベース系サイトのデータ収集用)
データベース系サイト用にデータ収集クローラーを開発してみることにしました。その記録をこちらに記載していきます。 この記事は随時追記して...

という事でしばらくこのページは更新しない・・・はず!

2017/2/26の開発記録

ようやくRubyでのクローリング・データ収集が終わりこちらに戻ってきました。他にもデータ収集したいところは山ほどありますが先ずは基本的なところが終えたというだけです。

Rubyでのスクレイピング・クローラー開発記録(データベース系サイトのデータ収集用)
データベース系サイト用にデータ収集クローラーを開発してみることにしました。その記録をこちらに記載していきます。 この記事は随時追記して...

それでまたこちらの開発記録に戻ってきました。

今日は収集したデータの投入になるのですが、10月までやってたことの思い出しを兼ねてDBのER図を作ってみました。

投入データの作成中です。投入データを見てからわかったのですがDB構造をちょっと変えた方が良さそうになってきました。ビジネス観点からだったら進めちゃって良いのですが勉強を兼ねているので最善の構造にしてみる事にしました。やっぱりデータは本番のデータを使わってみないとわからない事があるという事でした。

2017/2/27-3/1の開発記録

データ投入のSQLを作りました。エクセル上での整形作業に時間がかかりましたが、データインポートで一気に入ったときは達成感がありました。

次からはデータ投入時に発生したデータベース変更などの仕様変更を画面側に修正します。

2017/3/4-13の開発記録

データベースの仕様変更をがっつりとして落ち着いたところで、viewまわりを修正しつつ、SEO向けにURLを量産しようと思い、多方面からの一覧を作りました。○○一覧、××一覧、など。それぞれパラメータがあるので一気にURL数が増やせました。また、詳細ページから増えた一覧への内部リンクを設置して、クローリングしてもらえないかなと試みてみました。

SEOタグ(title, description, keywords, h1)の仕様決めもしました。

スマホアクセスが多いと思うので、レスポンシブwebにしたく、bootstrapを使用しています。スマホ用の下段メニューを作りました。右上にも一応全メニューを設置しておこうかと思います。

もうそろそろリリース出来そうです。その後はこのテンプレートを使ってサイトを量産してみたいです。

2017/3/26-2017/4/21の開発記録

どっぷりはまってしばらく書く事がありませんでした。

何をやっていたかと言うと、開発環境vagrantのboxバックアップを取らずに、えいや!!とCentOSのバージョンアップ、Apacheのバージョンアップ、PHPのバージョンアップ、DBのバージョンアップを一気にやってました。仕事で使う必要が出てきたのでどうせなら先回りしてやろうと思い、自宅で先行して頑張ってました。

残業は出ませんが・・・しくしくしく(ノД`)・゜・。

で、ようやく元のところに戻ってきました。見た目は何も変わってません。インフラのバージョンが変わったのと自分の経験が増えただけです。最近では寝不足がたたって体調が悪化していたので着手出来る日が減りました。というか夜間自宅稼働を減らしました。

が、だれてきてるのもあるような気がするので、きちんとメリハリをつけてやる時はやろうと思います。でないとこれだけのシステムに1年とかかかっちゃってますので。この遅さはやばいです。勉強がてらとは言え。

次回は全体概要スケジュールをもう一度見直して何をするか決めます。いや決めたはずなのに書いてないから良くわからなくなってます。自分だけだから覚えてるでしょ。という感じだとすぐ忘れます。仕事だと覚えていられるような気がするのに。なんでだろう。

2017/4/25-2017/4/27の開発記録

Macでも開発が出来るように最新のバージョンで同じ環境を作ったりした。

同じ事やるにしても忘れていたりして色々手順が残せたので良かった。汎用的な環境構築スキルもだんだんと身についてきているような気がする。

環境構築記録Vagrant CentOS7 Apache2.4 PHP7 CakePHP2.7 MariaDB
Vagrant CentOS7 Apache MariaDBの環境構築をしたので手順を記録しておきます。何かの参考になれば何よりです。 ...

本線に戻って方針・やる事を決めよう。

2017/6/25-2017/6/27の開発記録

やっべ。また日にちたっちゃった。

やらなきゃいけないのわかってるんだけど、日次で発生する細かいタスクこなしているとどうしてもこの自己開発に着手するのが優先度低くなってる。いかんなぁと思いbacklogというのに手を出してみました。

無料版なんですが、これ使ってみた感じ良いです。1人プロジェクトなら無料版で事足ります。プラン一覧の右下に無料リンクがあるのに気付ければ無料で使えます。

という事で自己管理・スケジュール管理・優先度管理をして再びこの開発記録に帰ってきました。

で、またこのデータベース系サイトの着手再開したのですが、bootstrapのデザイン見てたらなんかださく感じてきてしまい、こだわらないと言ったのにcssのフレームワーク変更をする事にしました(爆)何にしたかと言うとmaterial design liteというgoogleのマテリアルデザインのcssフレームワークです。bootstrapと同じようにgrid機能もあるし、

あと、スマホとPCとでレスポンシブwebデザインにしていたのですが、今回を機にスマホファーストだし、スマホデザインを主としてPCはそれを広げる程度という感じにしたいです。余計な工数をさくよりちゃちゃっと開発して楽に横展開。そういうスタンスで挑みたいと思います。今度こそ・・・。material design liteの導入は簡単でした。headに指定するだけ。

あとはこれまで作ってきたviewにcssをあてていったりhtmlを組み直したりしているところです。

2017/6/28の開発記録

マテリアル対応を引き続き。このフレームワークもこつが掴めてきた。もう少しで取り戻せそう。

2017/7の開発記録

マテリアル対応をした。今月は3時間しか開発出来なかった。

2017/8/7-2017/8/9の開発記録

マテリアル対応が終わった。

ついにデプロイをして公開をした!

サーバにgitの設定、初期DBのインポートなどをした。

まだレンタルサーバだけど落ち着いたら高いけど勉強も兼ねてAWSに移行したい。

機能が全然途中なのでこれから開発環境で作ったら本番にデプロイをしてという形でやっていきたい。

公開すると気持ちが変わる。早く更新したい。頑張ろう!

2017/8/10-2017/8/11の開発記録

本番公開出来たからかテンションが上がり11コミット!!

たいした修正ではないのですがaタグのcakeヘルパー使用、パンクズ、h1タグ、一覧ページ新規作成しました。これから出かけますがパソコンを持って仮想環境で開発後リモートpush・本番デプロイしていこうと思います。すごいやる気が出てきている。

2017/8/12-2017/8/15の開発記録

お盆の帰省中新幹線の中、往復で5時間ほどコーディング。

GoogleMaterialDesignの使い方の修正やキーワード検索機能を実装。

POSTで検索してしまったので、次はGETにしてURLを量産してみたいです。

2017/8/19の開発記録

検索結果一覧を静的URLにしました。

パンクズ・h1を設定しました。

2017/8/22-2017/8/27の開発記録

2時間だけ。

404ページや検索結果0件のページ。

MySQL外部キー制約実装。

2017/8/29-2017/8/30の開発記録

2日で計6時間。

久々にファミレスにこもってコミット。というかほぼページャー・ルーター調査という・・・。色々調べてやってみても中々うまくいかない。

明日からはルーターのデバッグをして動作を研究する予定です。

勉強を兼ねているので打開策を使用せずガチでフレームワークと向き合う事にしました。

今日はCakePHP2.xのマニュアル和訳ページのプルリクを何件か送ってみました。初めてだったので迷惑をかけてしまいましたが、一連の流れが見えてきてOSSにコミットする(マージしてもらえる)楽しさがわかってきだしました。

いずれは翻訳だけでなくコードもコミットしてみたいです。

あとCakePHPのバージョンアップをしました。

2.7.9から2.10.2の最新へバージョンアップ!

手順は普通に上書きしただけで簡単に出来ました。

もちろん修正した分はコミットする際に差分を更新しないように破棄をしました。

注意点は.gitignoreに気を付けながらやる事でした。

何も不具合なく、20分くらいでバージョンアップ出来ました。

明日からも頑張るぞ!

2017/8/31の開発記録

5時間。平日でこの稼働量。眠い・・・

問題になっていたCakePHP2.x系のpaginatorとrouter関連の辺りでページャーからのリンクが意図しないURLになってしまった問題。

これが昨日から引き続き最大の課題でした。

なんとかトータル10時間ほどかかりましたが、routerとpaginatorのあたりはデバッグしまくってうまくいきました。(詳しくは今度記事書きます

どうしても静的URLにしたかったのですね。なんとかSEO効果ありそうな気がしているので。

「/index/?page=2」 とかのURLではなく 「/2」 みたいにシンプルかつパラメータではないようなURLにしたかったのです。

フレームワークに頼らずにごりごりURLを整形すればやりたい事はすぐ出来たのですが、フレームワークを使ってしあげたかったのです。これで覚えた事は今後も使えるしフレームワークが変わってもあの時はこうだったという感覚がつかめたのではないかと思います。

たぶん・・・そうであってほしい

昨日CakePHPのバージョンアップ(2.7⇒2.10)した影響が出ていました。

バージョンアップした事により非推奨になる書き方にCakePHPからメッセージが表示されました。

CakePHP2.10系にしたらFormヘルパーでaction非推奨と言われた
CakePHP2.10系にしたらFormヘルパーでaction非推奨と言われました。 画面に表示されたメッセージ。 Deprecated...

2017/9/4-2017/9/8の開発記録

10時間。

ページャー実装の不具合の修正。2ページ目以降のSEOタグ設定。

ユーザ登録実装の調査・開発中。

やはりフレームワークの使い方がわからない部分を使いこなせるようにする、というところが一番調査したり実験したり時間がかかってしまいます。

フレームワークのコードをもっとすらすら読めれば良いのですが・・・。

英語力をつけようとしつつ頑張ります。Google翻訳がお友達です。

また、せっかくなので書ける事はどんどん書いておこうと思ってます。小ネタばかりですが。

CakePHP2.x系のメソッド名先頭に付加するアンダースコアまとめ
CakePHP2.x系のメソッド名先頭に付加するアンダースコアについてまとめました。 確認バージョン CakePHP2.10.2 ...
CakePHP2.x系で共通constを定義する
CakePHP2.x系で共通constを定義してみました。 確認バージョン CakePHP2.10.2 bootstrapに直接記載...
CakePHP2.x系のページャー機能(paginator)を使うとルーティング(Router, routes)がうまく動かず意図しないURLになる問題
CakePHP2.x系のページャー機能(paginator)を使うとルーティング(Router, routes)がうまく動かず意図しないUR...
CakePHP2.x系のバージョンアップ手順
CakePHP2.x系のバージョンアップをしたのでまとめておきます。 やってみたら20分ほどで想像していた通りに簡単に出来ました。 ...
CakePHP2.x系ログインユーザをviewに表示する
CakePHP2.x系ログインユーザをviewに表示しました。 確認バージョン CakePHP2.10.2 普通にユーザ...
CakePHP2.xからGmailでメールを送る設定
CakePHP2.xからGmailでメールを送る設定にてこずったので記録しておきます。 確認バージョン CakePHP2.10.2 ...
CakePHP2.xからレンタルサーバドメインメールを送る設定
CakePHP2.xからレンタルサーバドメインメールを送る設定をしました。 確認バージョン CakePHP2.10.2 ...

対応したチケット

aタグcake書式にする
imgタグcake書式にする
キーワード検索機能
検索結果を静的ページにする
パンクズ階層 TOP>クラス>マスタークラス
viewにシリーズ名とリンク実装
ヘッダーメニューのリンク実装
スマホ時のタイトルが真ん中に来ているので左端にする ※ハンバーガーメニューのロード待ちで左にボタンが表示されたため真ん中にタイトルがあるように見えただけ
日本語のページではありませんになってしまう場合がある ⇒ならない
SEOタグ付加(title、description、keywords)をヘルパーかappcontrollerなどで共通的に設定する。 →コントローラーで出力したものを使用するので、集約して設定するのは無理(ヘルパーに集約すると各コントローラーから引数をもらう必要が出てくるし、appcontrollerに集約すると各コントローラーで算出している処理を先にすることできないので無理。そうなると現状通り各viewファイルにかくしかないということにたどり着いた
HTML5のタグを使用する body配下にheader main
footer
header nav
.htmlを廃止して自然体にする
外部キー制約やってみる
php docs用メソッドコメント ついでにprivate publicを明記
404ページ、検索0ページ、メッセージはconfig
検索結果が0件だったときのページ
1ページに表示させる最大個数を決めてページに分割する
ページャーの2ページ目以降のURLが変わってしまう Router.phpでうまく変換されていないかデバッグしてみる
m一覧のページでaとjoinしていないので存在しないモンスターリンクができてしまっている
2.10.2にバージョンアップしてみる
デバッグキットもバージョンアップ
constクラス作ってpage limit30を定義する
スマホのサイドメニューの下段検索BOXが下段メニューとかぶるので下に余白入れれば良いかも
2ページ目以降のデスクリプションとう