読者です 読者をやめる 読者になる 読者になる

わざわざ残す必要もないことを整理とか気にせずに吐き出していく。そんな空間。

fuelphpのチートシートを作った時の話

PHP

作業ログ。ものはこちらです。

http://mkkn.info/cheat/fuelphp/db
http://mkkn.info/cheat/fuelphp/base

実装概要

 まぁこういうものを普通に作るのもなんだし,どうしたものかなぁと。フロントのギミックとか凝ってみるのも興味はあったんだけどまぁめんどくさそう。って事で、データの構造化周りを。

 まず最初に考えたのはテンプレート+データの構造は必須ということ。チートシート、ベタ書きで書きたくない。あとデータはDBに入れない。チートシートごときでDBなんか使いたくない。一瞬sqliteも考えたけど,ソレすらやっぱり冗長すぎる。テキストベースで十分だ。

 あとfuelでしっかりレイアウトビューの形を確立したいなぁと。その辺の作業もしときました。

データ作成

 とりあえず,データから作っていく。正規表現とかガリガリ使って極力楽しながら。こういう時2画面有ると便利よなぁとか思う。

f:id:mikakane:20130507182004p:plain

 まずデータを作成する段階ではViewの事は考えない。こういう構成になるべきだよなぁとか思いながら汎用的に設計/作業する。あとからView側で必要なデータを追加する時にスキーマレベルの問題が発生すると勉強になる。だからあえてViewの事は考えない。

 結局やっぱりURLがいるんじゃね?とかtitle使わなくね?とか出てきたけどスキーマレベルの問題は出なかった。良かった良かった。

 YFM形式にしてYFMパーサまで用意したのに結局ドキュメントブロックは使わなかった。後々でデザイン修正する時にはまた使うかも。

デザインというかhtmlコーディング

 デザインいう程大層なもんでもない。まだ二つしかないしとりあえず今は個別テンプレートで。ちょっと前まではDRY!!DRY!!でコピペコードを忌避する傾向があったけど、結局ソレじゃあ無駄にプログラムを複雑化させるだけだって気付いてからは積極的にコピペしてコードの重複もある程度は許すようにしている。

 リスト部分の整形クロージャとかも共通化したい所ではあるんで,データが5つくらい溜まったらまともにViewModelとかで再設計しようかしらと言う感じ目論見です。

 あ、あとhtmlの中にscriptとかstyleとか書くの好き。Viewテンプレートの最初のPHPブロックに細かい処理を書くのも好き。titleとか外部script/cssの指定みたいなテンプレート依存情報はあそこで書くべきだって思ってる。

感想/課題

 テストしなさすぎ。ローカルテストはしてたけどさ。twitterbootstrapのレスポンシブ使ってるのにスマホで最適化されてないし…。いくら趣味開発もステージングテストくらいはするべきだなぁって思いました。あとはまぁ細かい所で時間かかり過ぎ、とかね。変な部分で凝るのはいい加減に辞めたい(でも、最初っからViewModelを使い始めなかったのは評価したい)。

 まずデータの作成、からはじめたのは個人的に良かったなぁと。いっつも枠組みだけ作って結局データの作成が面倒とかで投げること多い。あと利用側(View)を意識せずにデータを記述する事で破綻も少なく,汎用的なデータになる。仕様変更にも耐えるし,多用途展開しやすい。

今後

 とりあえずまたデータをいっぱい作って言ってーみたいな感じかなぁと。