Enviar pesquisa
Carregar
CakePHP3.x での各種実装例 ~| PHP Tech Bash 20171121 ~
•
3 gostaram
•
2,285 visualizações
諒一 上野
Seguir
LancersTopの開発現場からCakePHP3.xでの開発で得たTipsを喋り倒す
Leia menos
Leia mais
Engenharia
Denunciar
Compartilhar
Denunciar
Compartilhar
1 de 74
Baixar agora
Baixar para ler offline
Recomendados
ECMAScript没proposal追悼式
ECMAScript没proposal追悼式
京大 マイコンクラブ
なぜ、PHPのmbstring.func_overloadをdeprecatedにするのに5年かかったのか? - 慢心、環境の違い
なぜ、PHPのmbstring.func_overloadをdeprecatedにするのに5年かかったのか? - 慢心、環境の違い
sasezaki
PHP、おまえだったのか。 いつもHTTPメッセージを 運んでくれたのは。
PHP、おまえだったのか。 いつもHTTPメッセージを 運んでくれたのは。
sasezaki
PHPerに覚えて欲しい日本語の重要性
PHPerに覚えて欲しい日本語の重要性
Rina Fukuda
PHP 8 で Web 以外の世界の扉を叩く
PHP 8 で Web 以外の世界の扉を叩く
shinjiigarashi
PHP で実行中のスクリプトの動作を下から覗き見る
PHP で実行中のスクリプトの動作を下から覗き見る
shinjiigarashi
YAPC::Asia 2014 - 半端なPHPDisでPHPerに陰で笑われないためのPerl Monger向け最新PHP事情
YAPC::Asia 2014 - 半端なPHPDisでPHPerに陰で笑われないためのPerl Monger向け最新PHP事情
Junichi Ishida
H2O and php
H2O and php
Junichi Ishida
Mais conteúdo relacionado
Mais procurados
今すぐ使えるPHP開発のあれこれ
今すぐ使えるPHP開発のあれこれ
Yuya Kikukawa
Laravel5.5から6.4にアップグレードしたときに必要だった7つのこと
Laravel5.5から6.4にアップグレードしたときに必要だった7つのこと
Yuta Ohashi
PHPの今とこれから2015
PHPの今とこれから2015
Rui Hirokawa
Drupal 8 - モダンなアーキテクチャのPHPベースOSS CMS
Drupal 8 - モダンなアーキテクチャのPHPベースOSS CMS
Tomoki Hasegawa
モダン PHP テクニック 12 選 ―PsalmとPHP 8.1で今はこんなこともできる!―
モダン PHP テクニック 12 選 ―PsalmとPHP 8.1で今はこんなこともできる!―
shinjiigarashi
第21回関西PHP勉強会 ReactPHPは もっと流行って欲しい #phpkansai
第21回関西PHP勉強会 ReactPHPは もっと流行って欲しい #phpkansai
Hisateru Tanaka
レガシーなWebアプリケーションと向き合う
レガシーなWebアプリケーションと向き合う
Yuta Ohashi
Linux debug
Linux debug
Masami Ichikawa
三項演算子を見ると「ウッ」てなる人のはなし
三項演算子を見ると「ウッ」てなる人のはなし
Yuta Ohashi
JIT のコードを読んでみた
JIT のコードを読んでみた
y-uti
Behat Driven Development
Behat Driven Development
Ryo Tomidokoro
FukuokaPHP 3
FukuokaPHP 3
ichikaway
anything-php-funcref-perl.el
anything-php-funcref-perl.el
Kenichirou Oyama
PECL を数えてみた
PECL を数えてみた
y-uti
Introduction of Programming language
Introduction of Programming language
nasa9084
いまどきのPHP開発現場 -2015年秋-
いまどきのPHP開発現場 -2015年秋-
Masashi Shinbara
PHPデプロイツールの世界
PHPデプロイツールの世界
Yuuki Takezawa
Rust-DPDK
Rust-DPDK
Masaru Oki
20130228 Goノススメ(BPStudy #66)
20130228 Goノススメ(BPStudy #66)
Yoshifumi Yamaguchi
Power shell で DSL
Power shell で DSL
urasandesu
Mais procurados
(20)
今すぐ使えるPHP開発のあれこれ
今すぐ使えるPHP開発のあれこれ
Laravel5.5から6.4にアップグレードしたときに必要だった7つのこと
Laravel5.5から6.4にアップグレードしたときに必要だった7つのこと
PHPの今とこれから2015
PHPの今とこれから2015
Drupal 8 - モダンなアーキテクチャのPHPベースOSS CMS
Drupal 8 - モダンなアーキテクチャのPHPベースOSS CMS
モダン PHP テクニック 12 選 ―PsalmとPHP 8.1で今はこんなこともできる!―
モダン PHP テクニック 12 選 ―PsalmとPHP 8.1で今はこんなこともできる!―
第21回関西PHP勉強会 ReactPHPは もっと流行って欲しい #phpkansai
第21回関西PHP勉強会 ReactPHPは もっと流行って欲しい #phpkansai
レガシーなWebアプリケーションと向き合う
レガシーなWebアプリケーションと向き合う
Linux debug
Linux debug
三項演算子を見ると「ウッ」てなる人のはなし
三項演算子を見ると「ウッ」てなる人のはなし
JIT のコードを読んでみた
JIT のコードを読んでみた
Behat Driven Development
Behat Driven Development
FukuokaPHP 3
FukuokaPHP 3
anything-php-funcref-perl.el
anything-php-funcref-perl.el
PECL を数えてみた
PECL を数えてみた
Introduction of Programming language
Introduction of Programming language
いまどきのPHP開発現場 -2015年秋-
いまどきのPHP開発現場 -2015年秋-
PHPデプロイツールの世界
PHPデプロイツールの世界
Rust-DPDK
Rust-DPDK
20130228 Goノススメ(BPStudy #66)
20130228 Goノススメ(BPStudy #66)
Power shell で DSL
Power shell で DSL
Semelhante a CakePHP3.x での各種実装例 ~| PHP Tech Bash 20171121 ~
【PHPカンファレンス福岡】PHP 5.3 + CakePHP 1.3 → PHP 7 + CakePHP 3 移行を決めた話
【PHPカンファレンス福岡】PHP 5.3 + CakePHP 1.3 → PHP 7 + CakePHP 3 移行を決めた話
Yuki Kanazawa
FuelPHP活用事例
FuelPHP活用事例
Yusuke Naka
PHPerのためのpostgresqlチューニングmini
PHPerのためのpostgresqlチューニングmini
Takhisa Hirokawa
デザイナーのためのはじめてPHP ~Codex、どう使いこなす?~
デザイナーのためのはじめてPHP ~Codex、どう使いこなす?~
takenao
Web デザイナーが身に付けておきたい定番スキル ーPHP 初級編ー
Web デザイナーが身に付けておきたい定番スキル ーPHP 初級編ー
Kite Koga
Hashicorpツールズ
Hashicorpツールズ
Uchio Kondo
20110910 闇鍋的php魔改造
20110910 闇鍋的php魔改造
do_aki
PhpStormを使おう --高槻からは快速急行が早くなります #jbugj
PhpStormを使おう --高槻からは快速急行が早くなります #jbugj
Hisateru Tanaka
Phpでアプリケーションサーバー
Phpでアプリケーションサーバー
k-motoyan
PHPの今とこれから2020
PHPの今とこれから2020
Rui Hirokawa
PHPの今とこれから2022
PHPの今とこれから2022
Rui Hirokawa
ゼロからのプログラミングRails講座 Codeanywhere版
ゼロからのプログラミングRails講座 Codeanywhere版
DIVE INTO CODE Corp.
Responsableを使ったadr実装
Responsableを使ったadr実装
Kenjiro Kubota
スクリプト言語PHP攻略法
スクリプト言語PHP攻略法
Rui Hirokawa
PHPとJavaScriptの噺
PHPとJavaScriptの噺
Shogo Kawahara
php-buildがいかに便利かを力説する
php-buildがいかに便利かを力説する
Yoshio Hanawa
anyenv + phpenv + php-build が便利すぎる件
anyenv + phpenv + php-build が便利すぎる件
y-uti
NanoA
NanoA
Kazuho Oku
Heroku で作る スケーラブルな PHP アプリケーション
Heroku で作る スケーラブルな PHP アプリケーション
Masashi Shinbara
Webエンジニアがスタートダッシュをキメるためのローカル開発環境の勘所
Webエンジニアがスタートダッシュをキメるためのローカル開発環境の勘所
Y Watanabe
Semelhante a CakePHP3.x での各種実装例 ~| PHP Tech Bash 20171121 ~
(20)
【PHPカンファレンス福岡】PHP 5.3 + CakePHP 1.3 → PHP 7 + CakePHP 3 移行を決めた話
【PHPカンファレンス福岡】PHP 5.3 + CakePHP 1.3 → PHP 7 + CakePHP 3 移行を決めた話
FuelPHP活用事例
FuelPHP活用事例
PHPerのためのpostgresqlチューニングmini
PHPerのためのpostgresqlチューニングmini
デザイナーのためのはじめてPHP ~Codex、どう使いこなす?~
デザイナーのためのはじめてPHP ~Codex、どう使いこなす?~
Web デザイナーが身に付けておきたい定番スキル ーPHP 初級編ー
Web デザイナーが身に付けておきたい定番スキル ーPHP 初級編ー
Hashicorpツールズ
Hashicorpツールズ
20110910 闇鍋的php魔改造
20110910 闇鍋的php魔改造
PhpStormを使おう --高槻からは快速急行が早くなります #jbugj
PhpStormを使おう --高槻からは快速急行が早くなります #jbugj
Phpでアプリケーションサーバー
Phpでアプリケーションサーバー
PHPの今とこれから2020
PHPの今とこれから2020
PHPの今とこれから2022
PHPの今とこれから2022
ゼロからのプログラミングRails講座 Codeanywhere版
ゼロからのプログラミングRails講座 Codeanywhere版
Responsableを使ったadr実装
Responsableを使ったadr実装
スクリプト言語PHP攻略法
スクリプト言語PHP攻略法
PHPとJavaScriptの噺
PHPとJavaScriptの噺
php-buildがいかに便利かを力説する
php-buildがいかに便利かを力説する
anyenv + phpenv + php-build が便利すぎる件
anyenv + phpenv + php-build が便利すぎる件
NanoA
NanoA
Heroku で作る スケーラブルな PHP アプリケーション
Heroku で作る スケーラブルな PHP アプリケーション
Webエンジニアがスタートダッシュをキメるためのローカル開発環境の勘所
Webエンジニアがスタートダッシュをキメるためのローカル開発環境の勘所
CakePHP3.x での各種実装例 ~| PHP Tech Bash 20171121 ~
1.
PHP Tech Bash!!!
2017/11/21 #tech_eight_ #ランサーズ ランサーズ株式会社 エンジニア / 上野諒一 CakePHP3.5における各種実装例 〜 LancersTopの開発現場からTipsを喋り倒す 〜
2.
PHP Tech Bash!!!
2017/11/21 #tech_eight_ #ランサーズ 自己紹介
3.
PHP Tech Bash!!!
2017/11/21 #tech_eight_ #ランサーズ 自己紹介 3 上野諒一 Github: ryoichi-u Twitter: @waldo0515 略歴 大学時代は北海道で機械/触媒 ランサーズには2014年に新卒入社 2016年 ランサーズストア 立ち上げ 2017年 Lancers Top 立ち上げ
4.
PHP Tech Bash!!!
2017/11/21 #tech_eight_ #ランサーズ 目次 4 はじめに CakePHPについて 実装例を交えた各種知見の紹介 ① 初期開発時はDBを簡単にリセットする手段を作ると楽ちん ② FixtureとSeedは共通化できる ③ Sessionは3箇所の設定値を注意する ④ emailバリデーションはひらがな通るので差し替えとくのが無難 ⑤ 設定値は.envに寄せてapp.phpをgit管理にすると楽になった ⑥ CIにPHPMD, PHPCS, phpunit載せるときの設定 今日のTipsたち ちなみに喋りきれなかったAppendixも6つあります
5.
PHP Tech Bash!!!
2017/11/21 #tech_eight_ #ランサーズ Lancersのサービスについて
6.
PHP Tech Bash!!!
2017/11/21 #tech_eight_ #ランサーズ はじめに ランサーズとは 6
7.
PHP Tech Bash!!!
2017/11/21 #tech_eight_ #ランサーズ 提供しているサービス(一部抜粋) 7 デジタルマーケティングクラウドソーシング シェアリングエコノミー スキルマーケット エンジニア向け案件紹介
8.
PHP Tech Bash!!!
2017/11/21 #tech_eight_ #ランサーズ LancersTopのちょっと宣伝 8
9.
PHP Tech Bash!!!
2017/11/21 #tech_eight_ #ランサーズ LancersTop について 9 実力を可視化するLancers Topのスキルテストについて トップタレント 三次審査:スキルテスト(3段階) 二次審査:面談 一次審査:レジュメ タレント ■応用/プログラムテスト合格者: 最低保証額700,000円〜 ■実践/記述式テスト合格者: 最低保証額600,000円〜 ■知識/選択式テスト合格者: 最低保証額500,000円〜
10.
PHP Tech Bash!!!
2017/11/21 #tech_eight_ #ランサーズ Lancers Top プロジェクト概要
11.
PHP Tech Bash!!!
2017/11/21 #tech_eight_ #ランサーズ プロジェクトメンバー 11 企画戦略段階(上野 + 取締役) 立ち上げ開発(eng x3人 + des x1人 + テスト作成 x1人) 事業開始(eng x2人 + des x1人 + 営業 x3人) 2017 / 2 2017 / 6 開発開始 2017 / 8 closed βリリース 2017 / 10 一般リリース
12.
PHP Tech Bash!!!
2017/11/21 #tech_eight_ #ランサーズ Lancers Top サーバー構成 12 skill test EC2 App S3 ELB Route53 ErastiCache Memcached Aurora Reader Aurora Writer EC2 instance Batch EC2 instance Log SES S3
13.
PHP Tech Bash!!!
2017/11/21 #tech_eight_ #ランサーズ Lancers Top を支える技術 13
14.
PHP Tech Bash!!!
2017/11/21 #tech_eight_ #ランサーズ CakePHP について
15.
PHP Tech Bash!!!
2017/11/21 #tech_eight_ #ランサーズ CakePHP3系について 15 2015 に3.0がリリース、クラウドソーシングランサーズでは1.3系をサービス初期から利用 半年に一度程のペースでマイナーバージョンアップを重ねて 2017/11/20 現在で最新は 3.5.6 3.x 系はORM周りが大きく変化 Model => Entity, Tableの分離(+ Query, CollectionTraitによる各種インターフェイス変更) https://cakephp.org
16.
PHP Tech Bash!!!
2017/11/21 #tech_eight_ #ランサーズ ディレクトリ構成 16
17.
PHP Tech Bash!!!
2017/11/21 #tech_eight_ #ランサーズ CakePHP3 導入の背景 17 LancersのCakePHPバージョンアップ施策について PHP 5.3 + CakePHP 1.3 → PHP 7 + CakePHP 3 移行を決めた話 PJ推進する自分自身が慣れていてスピードを出せる 別途進行中のバージョンアップ対応への橋頭堡を担う 業務レベルで使った経験あるメンバーなし javascript, css, imageファイルの管理どうしよう レンダリングページとwebAPI呼び出しのエラー表示 routing / counroller構成どうしよう etc... とは言え導入にあたり悩みはつきない 今日はLancers Top 開発でのTips話します なのでカッコイイ解決というより一つでも活かせる実装があれば嬉しいです
18.
PHP Tech Bash!!!
2017/11/21 #tech_eight_ #ランサーズ 実装例を交えて各種知見を紹介 ~ 時間ある限りTips 話します ~
19.
PHP Tech Bash!!!
2017/11/21 #tech_eight_ #ランサーズ 目次 19 はじめに CakePHPについて 実装例を交えた各種知見の紹介 ① 初期開発時はDBを簡単にリセットする手段を作ると楽ちん ② FixtureとSeedは共通化できる ③ Sessionは3箇所の設定値を注意する ④ emailバリデーションはひらがな通るので差し替えとくのが無難 ⑤ 設定値は.envに寄せてapp.phpをgit管理にすると楽になった ⑥ CIにPHPMD, PHPCS, phpunit載せるときの設定 今日のTipsたち
20.
PHP Tech Bash!!!
2017/11/21 #tech_eight_ #ランサーズ ① 初期開発時はDBを簡単にリセット ② seedsとtests/fixturesの共通化 migrationでの工夫
21.
PHP Tech Bash!!!
2017/11/21 #tech_eight_ #ランサーズ CakePHPにはmigrationツールが付属されています 21 実行時間を管理してくれてSQLの実行順が… と行ったことから解放され migrationの状態確認や巻き戻しなどが楽にできます。 CakeにはPhinxをラップしたプラグインを標準装備 ( https://phinx.org/ )
22.
PHP Tech Bash!!!
2017/11/21 #tech_eight_ #ランサーズ migrationの工夫 その① ~ 環境リセット ~ 22 • 常に同一のDB環境で開発したい • dockerのmysqlコンテナは他のプロジェクトとも共用 背景 新しいブランチ取り込んだら DBでエラーになります デザイナー なんかエラーになりました データ変になっている... エンジニア 表示が変になります 毎回毎回対応するの大変だな エンジニア
23.
PHP Tech Bash!!!
2017/11/21 #tech_eight_ #ランサーズ migrationの工夫 その① ~ 環境リセット ~ 23 とりあえずこのコマンド打っ てください 新しいブランチ取り込んだら DBでエラーになります デザイナー エンジニア 泥臭いですが、数行で幸せに 実際のコード例
24.
PHP Tech Bash!!!
2017/11/21 #tech_eight_ #ランサーズ migrationの工夫 その① ~ 環境リセット ~ 24 他のアプローチ まともにmigrationに乗っかると • 201706200001_CreateUsers.php • 201706230001_ChangeUsers.php • 201706270001_ChangeUsers.php • … リリース後はこれでいい。 初期開発には向かない rollbackの仕組み使うと • 同じファイル内容でrollbackしないとエラーになる • developmentでrollback => 開発ブランチでmigration めんどくさい dockerコンテナの再作成 • 別プロジェクトのデータリセットしたくない DBコンテナ独立してたら楽
25.
PHP Tech Bash!!!
2017/11/21 #tech_eight_ #ランサーズ ① 初期開発時はDBを簡単にリセット ② seedsとtests/fixturesの共通化 migrationでの工夫
26.
PHP Tech Bash!!!
2017/11/21 #tech_eight_ #ランサーズ migrationの工夫 その② ~ tests/fixturesとの共通化 ~ 26 • phpunitでテストを作っているとfixtureとしてほしいデータが同一 • メンテナンスがめんどくさい 背景 調べてみると… • fixture と seed で使っているテーブルの配列が一緒 • fixtureのスキーマはmigration => bakeにより一致を保証 エンジニア 新しいテーブル作る
27.
PHP Tech Bash!!!
2017/11/21 #tech_eight_ #ランサーズ migrationの工夫 その② ~ tests/fixturesとの共通化 ~ 27 背景 エンジニア 新しいテーブル作るから開 発環境用にseed作る 新しいテーブルに関係する テスト作ろう スキーマ変更したから seed作り変えよう エンジニア fixtureも変えなきゃだよ。もはや同じ ような記述何回もしてる。 なんとかならんかね CIが落ちています !!!!!
28.
PHP Tech Bash!!!
2017/11/21 #tech_eight_ #ランサーズ migrationの工夫 その② ~ tests/fixturesとの共通化 ~ 28 実際のコード例 Seed側 insertが要求する配列が同じことを利用 調べてみると… • fixture と seed で使っているテーブルの配列が一緒 • fixtureのスキーマはmigration => bakeにより一致を保証
29.
PHP Tech Bash!!!
2017/11/21 #tech_eight_ #ランサーズ migrationの工夫 その② ~ tests/fixturesとの共通化 ~ 29 実際のコード例 Fixture側
30.
PHP Tech Bash!!!
2017/11/21 #tech_eight_ #ランサーズ ③ Session(memcached)のexpire設定 ④ app.php はgit管理に入れて .envを活用 設定値に関わるTips
31.
PHP Tech Bash!!!
2017/11/21 #tech_eight_ #ランサーズ Session(memcached)のexpire設定 31 Lancers Top ではsessionストレージとしてmemcachedを採用 しかし、意図しないタイミングでログインが切れてしまう なんかセッション切れる… cookie, memcache両方ともexpire は想定通り入っている それが数十分で突然消えます ね
32.
PHP Tech Bash!!!
2017/11/21 #tech_eight_ #ランサーズ Session(memcached)のexpire設定 32 app.phpのSession設定でストレージとcookieのexpireを設定 app.phpのCache設定でmemcachedのexpireを設定 php.iniのsession.gc_maxlifetime (アプリケーション全体影響あり)
33.
PHP Tech Bash!!!
2017/11/21 #tech_eight_ #ランサーズ ③ Session(memcached)のexpire設定 ④ app.php はgit管理に入れて .envを活用 設定値に関わるTips
34.
PHP Tech Bash!!!
2017/11/21 #tech_eight_ #ランサーズ config/app.php はgit管理に入れて .envを活用 34 こことあそこと… ん〜うまく動かない 設定ファイル変えました 差分はxxxxです ごめん、yyyyの配列構造を少 し変更しています config/app.php のみで管理していた時代 ようやく動いた 私の環境動かないです それ、app.php.20171002の変 更取り込んでる? 取り込んでませんでした
35.
PHP Tech Bash!!!
2017/11/21 #tech_eight_ #ランサーズ app.php はgit管理に入れて .envを活用 35 Cakephp3.5から.envはスケルトンにも導入された CircleCI でも環境変数設定ができるので管理がしやすい git管理外の情報は必要最低限にしたい(差分がわかりにくい!) 背景 Cakeデフォルトのapp.phpの役割 構成設定の配列構造 + 設定値 分離後の役割 config/app.php : 構成設定の配列構造 => git管理可能な情報 config/.env : 設定値
36.
PHP Tech Bash!!!
2017/11/21 #tech_eight_ #ランサーズ app.php はgit管理に入れて .envを活用 36 実際のコード例 config/bootstrap.php 実際のコード例 config/.env
37.
PHP Tech Bash!!!
2017/11/21 #tech_eight_ #ランサーズ app.php はgit管理に入れて .envを活用 37 実際のコード例 config/app.php 環境によって異なるもの gitで管理されてはまずいもの
38.
PHP Tech Bash!!!
2017/11/21 #tech_eight_ #ランサーズ ⑤ ひらがなメールアドレスは true バリデーションここは注意!
39.
PHP Tech Bash!!!
2017/11/21 #tech_eight_ #ランサーズ ひらがなメールアドレスは true 39 さらっとメールアドレスのエラーテストしようとしました なんとこれが通らない。。。エラーにならない? どういうこと?
40.
PHP Tech Bash!!!
2017/11/21 #tech_eight_ #ランサーズ ひらがなメールアドレスは true 40 PHP標準のemailフィルターを使用 (Laravelに合わせています) cakephp/tests/TestCase/Validation/ValidationTest.php Unicodeなら行けそうな雰囲気のテストになっている
41.
PHP Tech Bash!!!
2017/11/21 #tech_eight_ #ランサーズ ⑥ CI によるコード品質の担保 ~ CakePHPバージョン追従に向けて ~
42.
PHP Tech Bash!!!
2017/11/21 #tech_eight_ #ランサーズ CircleCI によるコード品質の担保 42 phpunitによる単体テスト ~ 簡単なコントローラーの振る舞いチェック PHPMDによるコードの複雑度や規約違反の警告 php_cs_fixerによるインデント等の自動修正 LancersTopではCircleCIを用いています
43.
PHP Tech Bash!!!
2017/11/21 #tech_eight_ #ランサーズ CircleCI によるコード品質の担保 43 php_cs_fixer.sh phpmd.sh
44.
PHP Tech Bash!!!
2017/11/21 #tech_eight_ #ランサーズ CircleCI によるコード品質の担保 44 この他、TestCafeによるE2Eテストを主要フローにおいて記述 バージョンアップ時の検証は以下2つで今のところ問題なく非常にスムーズ 変更箇所を翻訳して調査 githubにpush して各種ビルドとテストが通過しているか 手元でTestCafe実行してエラーにならないか 3.4.6 3.4.11 3.5.2 3.5.6 <= ブランチで動作確認ずみ サービスリリース 3.4.9 3.4.8 プロトタイプ作成
45.
PHP Tech Bash!!!
2017/11/21 #tech_eight_ #ランサーズ まとめ
46.
PHP Tech Bash!!!
2017/11/21 #tech_eight_ #ランサーズ まとめ 46 ① 初期開発時はDBを簡単にリセットする手段を作ると楽ちん ② FixtureとSeedは共通化できる ③ Sessionは3箇所の設定値を注意する ④ 設定値は.envに寄せてapp.phpをgit管理にすると楽になった ⑤ emailバリデーションはひらがな通るので差し替えとくのが無難 ⑥ CIにPHPMD, PHPCS, phpunit載せるときの設定 今日のTipsたち 話しきれなかったものはAppendixつけました。 この他、ここでは話しきれませんでしたが、 docs系の管理 jsの管理 cssの管理 プロジェクト推進など 色々と工夫してきた点あるので懇親会などで話しましょう!
47.
PHP Tech Bash!!!
2017/11/21 #tech_eight_ #ランサーズ で、いつもの
48.
PHP Tech Bash!!!
2017/11/21 #tech_eight_ #ランサーズ 絶賛、募集中 ランサーズではエンジニアを募集中です が ● 弊社HP、Wantedly等 ご応募お待ちしてます 48
49.
PHP Tech Bash!!!
2017/11/21 #tech_eight_ #ランサーズ CakePHP3.x のクックブックリーディグ来ませんか 毎週木曜日にCakePHP3.xの クックブックリーディングを行っています 49 https://lancers-engineer.connpass.com/お気軽に遊びに来てください!!
50.
PHP Tech Bash!!!
2017/11/21 #tech_eight_ #ランサーズ ご清聴ありがとうございました!
51.
PHP Tech Bash!!!
2017/11/21 #tech_eight_ #ランサーズ Appendix
52.
PHP Tech Bash!!!
2017/11/21 #tech_eight_ #ランサーズ Appemdix目次 52 ① 静的ファイルのバージョン付与 ② エラー表示 viewとapiで共通化 ③ Elementのcacheでハマった話 ④ PHP7.0の型指定は使っていったほうがいいよ ⑤ utf8mb4でのmigration (未解決) ⑥ その他作った便利クラス/便利メソッドたち 時間なくて省略したスライドたち
53.
PHP Tech Bash!!!
2017/11/21 #tech_eight_ #ランサーズ 静的ファイルのバージョン付与
54.
PHP Tech Bash!!!
2017/11/21 #tech_eight_ #ランサーズ 静的ファイルのバージョン付与 54 • よくある話ですが、、、 • リリース時ブラウザキャッシュによってcssやjsが正常に動作しない • => リリース毎にキャッシュをクリアしたい 背景 外部CDNからの読み込みはなくパッケージ管理済み • js => webpackで管理 • css => gulpで管理 • それぞれHtmlHelper経由でタグ出力
55.
PHP Tech Bash!!!
2017/11/21 #tech_eight_ #ランサーズ 静的ファイルのバージョン付与 55 実際のコード例 オーバーライド箇所 バージョン文字列を後ろに付与
56.
PHP Tech Bash!!!
2017/11/21 #tech_eight_ #ランサーズ 静的ファイルのバージョン付与 56 実際のコード例 出力
57.
PHP Tech Bash!!!
2017/11/21 #tech_eight_ #ランサーズ エラー表示 viewとapiで共通化
58.
PHP Tech Bash!!!
2017/11/21 #tech_eight_ #ランサーズ エラー表示 viewとapiで共通化 58 • Apiによる非同期処理が多くなりそうだった • エラーフィールド出力のルール理解が厄介 背景 どのように解決しているか • 配列のルールを決め、エラー解析用javascriptモジュールを用意しておく • 形式はCakePHPの Validator::_errors の形式に揃える • => APIでもレンダリングでも同じ形の配列を返すようにする • => document.ready() と APIリクエストのコールバックで実行 FormHelperのエラー表示は非常に強力ですが、Lancers Topでは未使用です
59.
PHP Tech Bash!!!
2017/11/21 #tech_eight_ #ランサーズ エラー表示 viewとapiで共通化 59 errorMessages (常にconfigより出力) errors (ControllerでSet) テンプレートレンダリング時の処理 => それぞれjson_encode()してjsに渡す API呼び出し時の処理 errorMessages (すでに定数に存在) errors (Response Bodyで受け取る) errorListとしてエラー表示用に変換 {field: name, message: 入力してください} エラー表示各種モジュール エラー項目表示 エラーがあったら上部にアラート表示など
60.
PHP Tech Bash!!!
2017/11/21 #tech_eight_ #ランサーズ エラー表示 viewとapiで共通化 60 実際のコード例 webAPIとしてControllerで返すレスポンス error はエラー配列が入っていることを示す識別子 table_nameはcontrollerで指定 Entity::getErrors()で出力される配列
61.
PHP Tech Bash!!!
2017/11/21 #tech_eight_ #ランサーズ エラー表示 viewとapiで共通化 61 実際のコード例 config/validation.phpでの設定 ネストされていないのはdefault設定値(table, field関係なくerrorのキーのみ) controllerでsetしたものと同様の形式(優先)
62.
PHP Tech Bash!!!
2017/11/21 #tech_eight_ #ランサーズ エラー表示 viewとapiで共通化 62 実際のコード例 jsの処理の一つ
63.
PHP Tech Bash!!!
2017/11/21 #tech_eight_ #ランサーズ Element の cache設定 ~ ハマったのが恥ずかしい落とし穴 ~
64.
PHP Tech Bash!!!
2017/11/21 #tech_eight_ #ランサーズ Element の cache設定 64 Element は キャッシュできます。 最初はこのようにcacheしていました 動的な処理が入ってきたのでcacheを無効にしました (したつもりでした) 中身変更しても消えない 。。。
65.
PHP Tech Bash!!!
2017/11/21 #tech_eight_ #ランサーズ Element の cache設定 65 正解はキー指定そのものを消すこと 早くソースコード見ればよかった View::element()
66.
PHP Tech Bash!!!
2017/11/21 #tech_eight_ #ランサーズ PHP7系の型指定はできるだけ使う ~ 考えられる可能性を減らす ~
67.
PHP Tech Bash!!!
2017/11/21 #tech_eight_ #ランサーズ PHP7系の型指定はできるだけ使う 67 PHP7.0から型宣言が大幅に増えました。戻り値の指定も可能です LancersTopの開発でも基本的につけるようにしています falseと配列を返すのではなく何も ないときは空配列返そう 効果 実装者が型を統一するようになる 関数の中で型チェックやキャストしないですむ 間違ったら瞬時にエラーになるので気づきやすい フレームワークの関数の返り値を意識するようになり理解が深まる find()のときってどんな型で返って くる可能性があるんだ? http://sssslide.com/speakerdeck.com/twada/php-conference-2016 このあたりは@t_wadaさんのスライドのほうが説得力があるのでそちらを
68.
PHP Tech Bash!!!
2017/11/21 #tech_eight_ #ランサーズ utf8mb4でのmigration (未解決) ~ どこかでPhnix側にPR出したい ~
69.
PHP Tech Bash!!!
2017/11/21 #tech_eight_ #ランサーズ utf8mb4でのmigration (未解決) 69 MySQLで4バイト文字(絵文字など)を取り扱えるようにutf8mb4にしたい この場合varchar, textなどでindexを作成しようとすると カラムのキープレフィックス上限の最大値767byteに達しエラーになる この解決法はfile_formatを変更して圧縮すること
70.
PHP Tech Bash!!!
2017/11/21 #tech_eight_ #ランサーズ utf8mb4でのmigration (未解決) 70 PhnixではROW_FORMATの指定が未対応 オプションの充実はこれから MysqlAdapter::createTable()
71.
PHP Tech Bash!!!
2017/11/21 #tech_eight_ #ランサーズ その他Tips ~ 作った便利クラス/メソッドたち ~
72.
PHP Tech Bash!!!
2017/11/21 #tech_eight_ #ランサーズ loadModels ~ 複数のTableをloadする ~ 72
73.
PHP Tech Bash!!!
2017/11/21 #tech_eight_ #ランサーズ nginxのログにUserIdを出力する 73
74.
PHP Tech Bash!!!
2017/11/21 #tech_eight_ #ランサーズ Controllerテストでは常にCSRFトークンONにする 74
Notas do Editor
いつでも、どこでも、個人と企業がマッチング。 クラウドソーシングで「働く」を変える。
2年ぐらい前に? 2年ぐらいはかかるからリソースは割けない
Baixar agora