AFTER★SE7EN このページをアンテナに追加 RSSフィード

2016-05-17 CakePHP3のBakeを使う上でのTips

CakePHP3のBakeを使う上でのTips

| 12:27 | CakePHP3のBakeを使う上でのTipsを含むブックマーク CakePHP3のBakeを使う上でのTipsのブックマークコメント


CakePHPには元来、Bakeという便利な機能がある。一言でいうと、基本的コードは0から書かなくても自動生成してくれる。

例えば、Modelや、View、Controllerの最低限の機能は、コマンド1行で勝手に出来上がる仕組みだ。


例えばお問合せフォームを作ろうと考えたとする。

パターンはまず3通りある


  1.完全に素のPHPスクラッチ開発

  2.CakePHPを入れて、セキュリティなどの部分だけを利用し、スクラッチ開発

  3.CakePHPでBakeコマンド


1だと、開発期間は1週間見積もるべきだろう。開発が2日で終わっても、二日間検証してみて、出てきたバグfixさらに2日費やす可能性がある。

以下のような対応自力実装する必要がある。


  ・プルダウンやチェックボックスのvalue値を送信前に改ざんされた場合エラー

  ・「入力」→「確認」→「送信」の画面遷移でのセッション管理

  ・完全に同時アクセスされた場合の、ログファイルなどの排他制御

  ・メール通知があればヘッダインジェクション、DBであればSQLインジェクションファイル書き出しであればその排他制御

  ・入力項目に応じた値のバリデーション


2の場合、上記の5つはCakePHP機能を利用できる。工期は半分ぐらいになるかもしれない。

3であれば、DBカラムに応じて、MVC勝手に作ってくれる上に、一覧、詳細、追加、削除の4画面を勝手に用意してくれる。

さらにそのために必要な所要時間は、1分もいらないのだ。


3のパターン作業するとすると、要件フィットしない細部を微調整する作業がすべてだ。

例えばDB上にカラムは用意するもののフォームから入力ではない情報を入れたいとなると、自動生成されたソースに手をいれる必要がある。

仮に申請系のシステムフォームだと仮定する。その申請ステータスフォームから手入力させる必要はないだろう。システム状態を判定してDBカラム勝手更新すればいい。

が、BakeだとDBカラムがあると勝手入力フォームになってしまうので、それをviewから削除したりする必要がある。

ついでにその値が必須項目かどうかも自動で判定しているので、viewを消しただけだと未入力エラーになる可能性もある(そうであればModel/Tableの中にあるモデルソースを見て調整する)。

テキストフィールドではなくラジオボタンで、値はテキストではなくフラグで持ちたいような場合にはなかなかだるい作業がある。値に応じてラベルを切り替えるようにviewを書き換えていく。

その上で、例えばラジオボタンで”その他”が選択された場合のみ、その下の「その他」のテキストフィールドに入力必須エラーの判定を行う、みたいなありがちな対応などを調整すればいい。


パターン3で対応できるならパターン3を選ぶべきだと思う。

重要なことは毎回ゼロから作り直さないほうがいいということだ。なぜなら、既存コードなり自動生成されたコードは、

既にテストケースを通ったコードだということだ。無から作り直す場合、すべてをテストしなければならないということである(もちろん既存コードは二度とテストしなくていいという意味ではない)。

もちろん、枯れたはずのソースにもバグが残っているだろうが、それよりも車輪の再開発によって新しいバグが作りこまれる可能性のほうがしょうもない時間無駄となる。

2016-04-28 CakePHP3.xの開発環境をXAMPPにインストール

CakePHP3.xの開発環境をXAMPPにインストール

| 16:57 | CakePHP3.xの開発環境をXAMPPにインストールを含むブックマーク CakePHP3.xの開発環境をXAMPPにインストールのブックマークコメント


CakePHPもいつの間にか3.x系になっていたようだ。2系までと比べるとComposerを使えるので設置は簡単になった。

Composerというのはパッケージ管理ツールだと説明しているサイトもあれば、パッケージ管理ツールではないと説明しているサイトもある。

いずれにしてもライブラリ同士の依存関係うまいことやってくれるツールみたいだ。


今まではCakePHPXAMPPに設置する場合、httpd.confやLoadModuleの調整、ドキュメントルート以下の.htaccessの調整、

Security.saltの設定、database.phpの設定、各種フォルダへの書き込み権限付与などなど

面倒があった。あれ?なんで動かないのという事の繰り返しであった。(ちなみに、今確認すると実は2.x系でもComposerを使ってインストールする方法解説しているところもあるようだ)


だがCakePHP3.x系はもうComposerを使ってインストールするしかないようである

そしてそれは今までに比べると圧倒的に簡単な手順で済む。


1.https://github.com/composer/windows-setup/releases/からComposerの実行ファイルダウンロードしてインストーラインストール

2.XAMPPドキュメントルート下あたりにCakephp3プロジェクト用のフォルダを作り、コマンドプロンプトでそこへ移動。

3.下のコマンドの[app_name]を任意プロジェクト名に置き換えてコマンド実行。

composer create-project --prefer-dist cakephp/app [app_name]

4.Cakephp3プロジェクト用のフォルダの中身が生成されているので、configの下のapp.phpの中のDB接続情報自分環境に合わせる。


たったこれだけだ。

ちなみにフォルダ構成は2.x系までとはまた変化していて、controller、modelviewなどはsrcの下にあるようだ。

トラックバック - http://d.hatena.ne.jp/Kow/20160428

2016-04-24 Phalconの開発環境をXAMPPに構築する

Phalconの開発環境をXAMPPに構築する

| 16:13 | Phalconの開発環境をXAMPPに構築するを含むブックマーク Phalconの開発環境をXAMPPに構築するのブックマークコメント

 Phalconの名前を初めて聞いたのは、一年半ほど前のことになる。

シューティングゲーム世界で有名な某社では、CakePHPからPhalconへの移行の試みが始まっているとのことだった。

C言語で書かれている為に、ほかのフレームワークと比べて高速で動作するとのことだった。

Phalconは2.0系になり、今はCではなくZephirというPHP拡張するための言語で書かれているようだ。

やはりC言語では、メモリ関連のエラーを捌き切れなくなったのであろうか。


 いずれにしても、聞きかじった話を垂れ流してもショウガナイところがあるので

実際に触ってみるのが良いと思う。

とは言え、CakePHPに比べると情報が少なく、あちこちに散らばっている情報を参照しながらだと面倒でやる気もでないだろうから

ここに一連の情報をまとめておく。


 XAMPPは既に入っているかもしれないが、そうでなければ下記を参照。


 XAMPPを入れるだけなら、インストーラーをポチポチクリックするだけの簡単な作業だ。

(ちなみにCakePHPをそのXAMPPで動くようにする時は、意外と面倒なことがある。Phalconはむしろ簡単だ)。


1. Windows版PhalconのDLLを、XAMPPPHPエクステンションフォルダに入れ、PHPからこれを読むように設定する

 これだけで終わりである

<?php
   phpinfo();
?>

などと書いてみて、例えばtest.phpみたいに保存し、

php test.php | findstr -i phalcon

でphalconがenabledになっていればOK。


2. 土台を用意する

 CakePHP場合、設置した時点でフォルダ構成が出来上がった状態になるが、Phalconは導入しただけでは

何もない状態のままである。ほかのフレームワークでいうところのBakeやScaffoldのようなひな形の生成をやってくれるPhalconDevToolsというのを入れると

よさそうだ。


 下記のページの後半が参考になる。

 ちなみに上のページの

set PTOOLSPATH=C:\xampp\phalcon-devtools-master
C:\xampp\php\php %PTOOLSPATH%\phalcon.php %*

は、二行目のphalcon.phpの前にもさり気なく\が必要説明文だけでは気づかないのでよく見る事。

うまくいっているとPhalconDevToolsを設置したフォルダでPhalcon.batが使えるようになる。これを使って諸々のひな型を生成できる。


 もう少し普通CakePHPっぽいやり方のほうが良ければ、Phalcon Sterterkitというのもある。

 ほかのサイトローカルXAMPPで開発中だよという場合は、バーチャルホストを設定すればどちらも動作確認できる。

プログラム上からメールを送信する際の文字コードはUTF-8だと逆にダメでむしろISO-2022-JPだという話

| 18:56 | プログラム上からメールを送信する際の文字コードはUTF-8だと逆にダメでむしろISO-2022-JPだという話を含むブックマーク プログラム上からメールを送信する際の文字コードはUTF-8だと逆にダメでむしろISO-2022-JPだという話のブックマークコメント


 UnicodeこそがこれからWeb用のエンコードだ、と昔言われたことがあった。

だが、メールに関してはそれは完全にNOなのかもしれない。

プログラムからメールを送る際、UTF-8エンコードしてあると、例えばThunderbirdではゴミみたいに文字化けてしまう。

 Thunderbirdを使うななどと誰も言えない。

誰かが使っていれば、あるいは同じような動作をするものを使う人々がいるのであれば、そちらでも不具合のないように対応しなければならない。

......のだとしたら、永遠にメールISO-2022-JPエンコードされなければならないということになる。

 なぜなのかは意外と根深い問題が絡む。現状、メールに限っていうなら、すべてのクライアント対応できるのは、むしろISO-2022-JPなのである

2016-04-17 小説を引っ越しました このエントリーを含むブックマーク このエントリーのブックマークコメント

しばらく前から書いていたサイコキネティックなんとかかんとかという小説

改題し、http://kdp.url.ph/引っ越しました


普通ブログ小説を書くと、日付の降順、同一日の昇順に並ぶので

から読むことも下から読むこともできない為、上記URLでは日付の昇順で記事の中身だけ表示させています


縦書きJSや、サイドナビでのアンカーリンク(目次の)などもそのうち対応するかもしれない。

いずれにしても向こうのほうで更新していきます

で、向こうでは新着は末尾に追加されていくことになります


読んでる人がいましたらそうなりましたのでよろしくお願いいたします

トラックバック - http://d.hatena.ne.jp/Kow/20160417

2016-04-16 その114:サイコキネティック痴漢技術総合研究所

 小僧はほどほどに賢く、自分被害者だという風に自分に言い聞かせてそういう演技を貫こうという構えであった。

ゆきにもそれは分かっていたが、そんなことでなんとかなると思っている小僧がどこか心配だった。

このままで彼は、生きていけるだろうか。


「ねえゆき、とりあえずコイツの家を聞いて、親御さんに説明だけしなよ」ときららが言った。


 しばらく考えていたが、ゆきは首を振ってうつむいた。

それで彼が叱られるのか、それともそうでもないのか、それはよくわからない。そしてその両親が納得するのかどうかもよくわからない。

パンツを弁償しますといわれてお金を渡されて終わりになるだけなのかもしれない。

あるいは、うちの子はそんなことしないと言われて激怒されヒステリックに追い返されるだけなのかもしれない。


「......ねえどうすんの?」

 きららうつむいている小僧ゆきとを見比べて、肩をすくめる。

「まあ入んなよ。とりあえずゆっくり考えよう。あん時間大丈夫なんでしょ? スリッパ好きなの使ってね」

 小僧は羊のスリッパを履いた。

中は化粧品や衣類、ファッション雑誌などなどが散乱していた。片づけながら、何とか座れる場所を作り、クッションを並べる。

「......ポテチコーラ、買ってくるね」

「あ、だったらイレブンおいなりさんもお願い」

その115:サイコキネティック痴漢技術総合研究所

17:08 | その115:サイコキネティック痴漢技術総合研究所を含むブックマーク その115:サイコキネティック痴漢技術総合研究所のブックマークコメント


「ねえ、おいなりさんなかったよ。きなこドーナツになったけど、いい?」

「どれ? あっいいじゃん」

 ゆきが買い出しから戻ってみると、二人はゲームをしながら待っていた。3DSスマブラだった。

「ねえ、こいつムカつくほどうまいんだけど、なんなん?」

 小僧は殺気立った眼差し3DSに没頭していた。彼にとって、それは恐らくただの遊びではないのかもしれない。

ちょっと変わってよ、ゆき!」

「えっ、だって私このゲームしたことないよ?」

「いいから


 きららはカチッと音を立ててメンソールタバコフィルターを噛み、火をつけた。

案外本気でムカついているのかもしれない。


 ゆきはそもそもゲームをほとんど遊んだことがないので、キャラクターを動かすだけでもビクビクしていたのだが、

小僧容赦なく攻撃を仕掛けていた。

「......(下手すぎてつまんねー)」

「ナニ?」

雑魚すぎ」

ちょっと貸しなよゆき、今度こそ絶対ボコボコにしとくからな」

 きららタバコを加えながらゆきから3DSを奪い取った。


 きららゲームを夢中でプレイしている姿を見たことはない。

それほどうまいのかどうかは知らない。だが、今度は二人とも黙り込んで、黙々と戦いを始めた。

先ほどまでとは違い、二人のキャラクター執念じみた動きで殴り合っては離れ殴り合っては離れを繰り返している。

その116:サイコキネティック痴漢技術総合研究所

17:31 | その116:サイコキネティック痴漢技術総合研究所を含むブックマーク その116:サイコキネティック痴漢技術総合研究所のブックマークコメント


 チ、という舌打ちやらギリギリした歯ぎしりバンバンテーブルをたたく音などを発しながら

きららは戦いに負け続けた。

 勝ち続けて小僧は退屈しはじめ、適当攻撃しかしてこなくなっていく。


「君、このゲーム得意なんだね」とゆきが話しかけてみたが、返事はない。

 そんなの当たり前だということなのだろう。でもあるいは得意だ得意でない、というような一般的評価

興味がなかったのかもしれない。”へたくそゆき”にそれを判断する資格を与えていないだけなのかもしれない。

彼は、彼が認めたもっと上の何かだけが自分評価できると考えていたのかもしれない。あるいは、その部分については

小僧らしく単になにも考えていなかったのかもしれない。


「あっ、きなこドーナツおいし」

 ゆきは二人を観察するのにも飽き始めてドーナツを食べてみた。


 それにしても、あたしのパンツについては、どうなったのだろう。

「ねえあたしのパンツ

洗濯機の中。いらないなら捨てる」


 小僧は来週も部屋にくることになった。

きららはそれまで技を磨くらしい。


 その小僧こと佐藤祥平は、二人がよく行くスーパー店長の息子で、両親が共働きのため

学校から帰るといつも一人でゲームをしていたらしい。パンツを盗った理由については、よくわからなかった。

彼は図書室の机の下にあったエッチ落書きについて細切れの短い話を打ち明けたが、その意味はよくわからなかった。

 ただ単に、彼にとってはパンツが何か秘密を握っているように思われたのかもしれない。

パンツはただの布だよ。うんこついてる。盗っちゃダメからね」

 と、きららが言った。

その117:サイコキネティック痴漢技術総合研究所

18:54 | その117:サイコキネティック痴漢技術総合研究所を含むブックマーク その117:サイコキネティック痴漢技術総合研究所のブックマークコメント


 この世界には、どこかしらおかしいところがある。


 そうスペッキヲは感じていた。47人もの同姓同名者がおり、千葉から少女達が忽然と消えた。

宇宙法則の乱れでも起きているというのだろうか? と思い立ち、苦笑した。

 いずれにしても集められる情報は集めた。この情報によって、事件は解決に向かうだろうか?

それはよくわからなかった。


「”先方”に報告する。一旦帰宅してくれ、何かあればまた対応必要になるだろうが」

 と総一郎は言った。


 翌朝の8時40分、いつものように唇を半開きにした美女とすれ違う。

スペッキヲは気になっていた。一体、何がそんなに気になるのだろう、まったくの他人しかない。

だが急に気がついたのだった。


 ”自分はこの顔を見たことがある”


 そういう気がした。だがどこで目にしたのか記憶をどれだけ遡っても分からない。やはり知らない顏だ。

誰にも似ていないようで誰にでも似ている。そう思っていた。

だが、スペッキヲはふと突然、思い出した。


 知りもしない、その相手の事を急に思い出したのだ。

それは、LexicaというSNSで互いにフォローし合っている相手プロフィール写真がなにげなく目に入った瞬間に思い出した。

相手プロフィール投稿写真が、どこかあの美女に似ていた。

その相手は、Ayakaという名前を使っていた。

いつフォローしたのか思い出してみた。かなり初期の頃、よくわからフォローした相手の一人だ。

単にプロフィール写真を見てフォローし、しばらくブログコメントを見ていた。


 その人物とはどういうわけだか生活領域ギリギリのところまで重なることがあった。

互いの職場場所や、参加するイベントなどがタイミングを合わせて隣接したロケーションになる。


 そしてついにはどういうわけだか、互いの通勤経路が交差するようになっていたのだ。


 そのことについて、スペッキヲはいわゆる常識的確率論を使って試算してみた。

天文学的確率の低さだ。どうしてこんなことが起こるようになったのだろう。

その118:サイコキネティック痴漢技術総合研究所

20:27 | その118:サイコキネティック痴漢技術総合研究所を含むブックマーク その118:サイコキネティック痴漢技術総合研究所のブックマークコメント


 倉橋総一郎は、その時、職場健康診断を受けていたのだった。

 健康診断の季節が来るということで、仕事スケジュールは荒れ始めていた。終わった翌日の花見飲み会の出席まで断ってしまうほど

総一郎はどことなナイーブな一面を持つ男だったのだ。彼はむかしからそういうところがある男だった。

注射針が嫌い過ぎたのだ。彼が採血を恐れれば恐れるほど、彼の体は採血困難なカラダになっていくかのようだ。


 健康に悩みがあるということではなかった(彼はストイックすぎて元気がないことを除けば、それなりに健康的な身体だった)。

BMIの値は大抵22で体型は十数年変化していない。診断結果に異常があったこともない。


 会議室や外部向けのセミナールーム医師たちが集まり、従業員たちはあらかじめ連絡があった通り無地のTシャツ姿になって黙々と並ぶ。

尿検査のやり方は医療機関によって未だまちまちであるようだ。

 視力、聴力も特に異常はない(彼の視力は大抵1.0だが時々1.5になることがあった)。

そして採血となる。


 彼は恐れおののいた。

さまざまな光景フラッシュバックしてくるのだった。

 彼の体は白すぎて、かつ静脈も細く、肌の色に溶け込んでまったく血管が見つからない。その為いつも採血はなんどもやり直しになる。

針をさしても血はでない。何度も何度も針を刺され、手の甲から採血するといわれたことまであった。

通常の場所以外から採血は総一郎の体に鈍い痛みをもたらし、しかもそれは身体の深い部分から電撃の様に伝わるピュアビリビリしたショックを伴う。


 が、今回は一発で採血成功した。

彼は放心した。


 頭が真っ白になり、診察で何を質問されたのかも分からない。

ビルの外に出て、レントゲン車の前に並んだ時も、そうだった。


「おい」

 同僚に背中を押され、彼はハッと我に返った。

レントゲン車がどこにいるのか分からずに敷地をぐるぐる回ってしまったよ」と彼は言った。


 総一郎は言う。

 いつも思うんだが、人は採血の瞬間に大地震が発生するかもしれないとは考えていないようだ。針が腕にささるその瞬間に巨大な震災が起き、

針は腕に突き刺さって貫通し先端が腕の反対側へ突き抜けてしまう。その状態で揺れ続ければ腕は縦横無尽に切り裂かれるかもしれない。

......そんな風には想像したことはないか? と彼はいった。

「ない」


 周囲は爆笑の渦に包まれた。

だが、その半日後に、確かに大地震日本を襲ったことだけは事実であった。

そんな時間帯に注射を打たれている奴がいたとしたら、酔っぱらって点滴の針を打たれるアルコール中毒者ぐらいなのかもしれない。

だがあるいはもっと悲惨な、手術中の震災に遭遇している病院もあったかもしれない。

そういうことについて、考えるのはやめるべきだった。


 人間ですらフレーム問題に直面する者がいる。ラプラスの悪魔は、それを克服するために欲動のエンジンを備えている。

思考よりも優先される、思考の舵を握る欲動がプログラムされているのだ。