それでは、PHPフレームワークから学ぶワードプレス運用改善です。こちらのセッションでは、寺井両さんにお話いただきます。寺井さんは、PHPカンファレンス関西にて、2013年、2014年は実行委員長として、また2018年はスピーカーとしてご活躍されていらっしゃいます。また、最近では、PHPだけではなく、VRにハマり、ユニティも勉強中と幅広く活動されていらっしゃいます。寺井さんには、PHPフレームワークを使うシステム会社に8年いらしたご経験から、ワードプレス主体の現場に移行して、驚いたことや、気づいたことなどをもとに、運用改善方法などを交えてお話いただきます。それでは、寺井さんよろしくお願いいたします。よろしくお願いいたします。この辺は、ワードプレスの運用改善という、体操な名前を使っているんですけれども、そんなに、そんなにではないんで、ゆっくり聞いてもらえればと思います。まず、ちょっと自己紹介をさせていただきます。寺井病という名前でやっております。Twitterが耳矛盾という名前でやってるんですけれども、こんなアイコンでやってるんですけど、あんまり最近活動せないので、知ってる人は少なくて、ちょっと悲しいなというと思います。で、会社がプライムストラテジーという会社で、どうすもを出してますので、よければ後で見ていただければと思います。で、先ほどありました、関西の方で基本的に活動しておりまして、関西のPHPカンファレンス関西というのが今年6月にありまして、また12月に東京の方でもやるので、濃いPHPの話が期待という方はぜひ言ってもらえるわと思います。で、一応ブース的な紹介として、ブースがあちらにあるので、終わり次第また見に行っていただければと思います。個人的な紹介をちょっとだけ掘り下げ出していただきますと、先ほどありましたように、ウェブシステムエンジニアの会社に8年ほどいて、ここに入る前というのは本当に、ワードプレスを知らなくって、ララベル・ケイク・PHPという、この2つを基本にシステム開発、バックエンドの方ですね、基本的に開発しておりました。なので、この新しい会社に入った時には、ワードプレスってどんなことができるんだろうなっていうふうに、わからないようなレベルで入ってきてて、で、ある日、何これ、何これ、センスあるじゃんみたいなことを会社で言ったら、これはオサポみたいなものですよって普通に、横でボソッと言われて、うわー、何も知らぬバレリアンっていうふうな、そういうレベルで入ってきたような会社の状態なんですね。なので、そんな中で、フレームワークから、見て、こういうふうにしたら、もうちょっとマシになるんじゃないかなっていうところを、今回お話しできればと思っております。はい、で、このセッションの趣旨ですね。HBフレームワークで基本的に種類になっているMVCからはなんで、チーム開発の改善。で、面目規則、基本整図をして、コードレビューの改善という2点を絞ってお話ししていきたいと思います。アジェンダーでございます。コードプレスとHBフレームワーク、MVC、面目規則、コード記憶、で、最後に、という形にあります。で、皆さんちょっとお伺い、あ、これじゃないですね。こういう難しい話もやろうかと思ったんですけど、そんなに短く話せる自信がなかったのでやめました。やりません。で、皆さんに聞きたいんですけども、ページにフェインワークを知っているという方、何個か名前を言えるという方は手を挙げてもらってもいいですか。ほとんどですね。結構います。で、じゃあ実際にこう仕事でもいいですし、遊びでも全然と思わないんですけども、結構最高んだことがあるよという方は、ああ、そうなると減るんですね。はい。パッと思いつく限りで挙げた感じでは、ケークだとかララベルが有名で、フュウエルシンフォニー全動コードイグナイター、ファルコンE2っていうのがあるんですけども、左やら赤い方はですね、もうしか僕も使ったことはないです。実はだから、フレイワークをバリバリやってますよっていう方も、この8個の中で全部やってるっていう方がごみ、あったことはないんですね。結構皆さん、固まってる状態にはなってるんですね。では、それで、ワードプレスとPHPフレーマーク。でも、ワードプレスの2点というのは、皆さんワードプレスでやってる方がほとんどだと思いますので、分かると思います。僕がこの会社に入ってワードプレスというものを知らない時点で認識していたのが、上2つです。設置がなんだっていう。プラグムの方法っていう。で、入ってから、ああ、なるほど。聞いた話でこういうのができるんだなっていうのが理解したのが、簡単な拡張であれば、ファンクションで全部進むよとか。で、フックがいたらコボンにあるんで、アートで入れたらなんか行けるよっていうのをいろいろ聞いて、ああ、なんかこう全然今まで違うなっていうふうに覚えた部分がこの用筆でした。で、対して、PHPフレーマーク。これケークが僕がメインでやってたので、ケークを基本にさせていただきますけれども、PHPフレーマークのケークっていうのは基本的にオブジェクト思考でした。で、RORルビオンレイルズにすごく影響を受けてるので、何も知らなくてもいつの間にかオブジェクト思考を学んでいて、これがオブジェクト思考だってわからないレベルで知ってるっていう人も意外にいるのがケークの使用筆です。で、一番僕はここでワードプレスに入ってて欲しかったなって思ったのが、オーアルマッピングです。オーアルマッピングっていうのは、オブジェクト・リレーショナルマッピング。オブジェクト思考と、リレーショナルデータベースをつなげるときに吉奈にフェイリーを書いてくれる。ワードプレスだと、WPクエリーとかで時間に書いていたものを、ケークだと、ケークPHP、ディス・ファイモンドとかっていう形で、クエリーを書かなくて済むというものがありました。それがすごく便利だったという認識を受けております。で、最後にMVCですね。で、今回はそのMVCをやらさせていただこうと思います。で、MVCというとモデルビューコントローラーというの3つなんですけども、モデルというのがアプリケーションを扱うデータの操作。基本的にはデータベースの操作ですね。そして、表示関連を担当しているのがビュー。で、コントローラーっていうのが入力データの成形なんですけども、これをファンクションPHPにあるとか、シングルPHPとかっていうワードプレスにあるものに当てはめるときにどれがどこなのかっていうのをちょっと考えてもらいたいんですけども、冷静にちゃんと考えると、実はファンクションPHPがすべてに関わってるんですね。で、消えちゃった。あ、そうですね。で、シングルヘタPHPとかブッタPHPっていうのはビューの部分なんですけども、ビューの中にも処理を書いてたりするので、実はファンクションPHPにビューは関わっているという状態なんです。で、その中でファンクションPHPっていうのをずっと開発し続けると、こんなことが起こります。こう…あっ…あっ…あっ…何千五百五十八頃。あっ…これを…これは…この後引き継いで誰か開発してくださいってやつをやりたいと言いますね。フフフフフフ…これちょっと…やりたいじゃないですか?もう黒歴史になるんですけど、で、それはある日こう…上司とかの方にこう歩く人が来ては来られて、ここの部分、ちょっと…新聞PHPの部分だけ延びやしてリファクタリングしてくるかな、お断りします。誰でも言うでしょ?絶対言うでしょ?当たり前なんですよ。そう、やりたくないんですよ。でも、ずーっと…初めから続いて行ってしまうと、やっぱり7千五百とかそういう風に行ってしまうし、まあ、7千五百って言ってよ。あの、うちにどこもっと広いですって思った人いるかもしれないですけど、それはやめましょう。5件だと言ってるでしょ?いるかもしれないんで、やめましょう。そうならないために、これがHKPHPのファイルポーズなんですけども、青色で書か…書くった部分がコントローラーで、赤がモデル、黄色がビューという形になってまして、青の部分の産業名ちょっと小っちゃくて見えないかもしれないですけど、カスタマーコントローラーとか言うのがありまして、それに対してビューっていうのに、カスタマーズっていうフォルターがあって、そうなかにアートカテゴリーだとかインデックスログインっていう…名前からなんとなく認識ができるものが存在しています。で、対してモデルの中には、実はカスタマーコントローラーっていうのがなくて、カスタマー.phpっていうのは存在しています。この3つで1つの関わりが、MVCの勉強ができているわけです。で、それをワードプレイスで実現しようとした時に、こんな形になると僕は考えています。パンクションズ.phpっていうのが1つありまして、ビューっていうのにエレベント.php、で、ヘルパーっていうのはなくてもいいっちゃいいんですけど、あったほうがちょっとかっこいいかなっていうので、ヘルパーって書いてみましたけど、それらのやつが、ヘッダ.phpっていうのは、表にずっと存在して…一番初めからワードプレイスを使った時に存在しているヘッダ.phpではなくて、ヘッダ.phpからゲットテンプレイスパースとかで呼び出す部分も、ヘッダ.phpだと認識してください。またそこにあるのとは別のものです。で、コントローラーっていうのはモデルなんたらコントローラーって先ほどケーキにありませんように、名前をつけて、例えばログインまがりを使うんだったら、ログインコントローラーと全然大丈夫だと思いますし、ユーザーっていうのは大きく囲むんだったら、ユーザーコントローラーみたいなものにしてもらってもいいと思います。で、オートロード.phpみたいなものを入れると、インクルードが制御できるようになるんで、ファンクション.phpにはもうこの一業だけで済むっていう、もうファンクション.phpを開いた今の7,558業がこの一分になって、他の7,500業は全て分割して、先ほどのヘッダ.phpだとか、なんたらコントローラーだとかにっていう分割されている状態、これがすごくいいんです。で、何がいいんだろうなって思うと、やっぱり関連する端数がどこにあるのかっていうのは、すぐに一目当てにできてるわけなんで、コードがまずスッキリしますよね。ファンクション.phpの10業目当たりに書いてあるやつと、2,500業目当たりに書いてあるやつと、実はほとんど同じラインを使うような関数だったときに、それをメンテナンスするのはすごく大変ですけども、分割しておけば、同じ作業をするような部分は、同じところにあるという状態になります。で、快速構造上で対応するコードが判別できるんで、例えばヘッダーの中であった先ほどあった、APPヘルパーみたいなやつがありましたけれども、ヘルパーっていうのは、どこでも使うような関数を人まとめにしとけば、呼び出す関数はそこに全部入ってるよっていうふうに、ふぎでますんで、判別をしやすくなる。で、一番これが大事なのは、複数人開発時の科学生の上昇というのがありまして、普通にやるときにこれ何でしたっけっていうようなことをやり取りする時間っていうのは、非常にもったいなくて、絶対に必要な部分なんですね。それが10時間必要だというのは、3時間に減るだけ作業としては全然効率が上がるんで、それを1からやっておくことができるんだならば、もっと良いものが作れるし、もっと早く作業ができるようになるっていうふうに、MVCを分けていくっていうのは、とても大事なことなので、もし今後ファンクションのPHPを、ファンクションのPHPを新しく作るってことなどのときには、これだけでも良いんで、今みたいにきれいな構造でもなくても良いんで、何だろうファンクション、ログインファンクションみたいな形で分ける形で、少し軍活してやっていくと、家属性っていうのが少しずつ上がっていくと思います。で、ちょっと時間が悪いので急いでいきます。明明基礎とコーディングキャラクということで、あれに突然私のプラグン開発をやってくださいというふうなものが来まして、こんなものが来ました。分かりますか?まずコメントアウトが多すぎなんだなっていう状態ですよね。動いてるコード2行しかないじゃないかっていう領態なんで。しかも元のコードができれいに書いてもらいますけど、元のコード、しかもその後見たら、アンダーバーに行って、どこに作業するものがないの?オプションアンダーバーに行って、何を求めてるんやっていうことになるんですね。まずコメントアウトで変更履歴は残さないでください。コメントアウトで変更履歴を残す労力をするぐらいやったら、もうギット、ギットでお願いします。これはちょっと外れるんでやりますけど。撮影する関数名っていうのはアンダーバー2とかアンダーバー3とか、その当時やってる最中でも気づけるんですけども、これが1年後にもうさらに回収しようとなった時に分からないんですね。2人がどこに行っている?3がどこに行ってるかと分からないくらいなので、関数名から類水できるものにしましょう。で、類水するものを作る際に関数名っていうのもある程度、名名規則っていうのもありまして、今回はキャメルケースっていうのが初めが小文字、あとが大文字ですね。ケースっていうのはアンダーバーでつなぐ。で、パスカケースっていうのもあって、全部が大文字。このゲットメッセージだとゲットのGも大文字っていうのもあるんですけども、基本的にはキャメルケース、スネクケースの2つを考えていただければ、僕は嬉しいです。基本的にはキャメルケースを押します。で、大事なのは関数名を見てる用途が想像できることです。これはものすごく大事です。これは明日からでもできます。とりあえず作りましたっていう関数名をやめて、まずは用途が想像できる関数名をつけましょう。で、記役に関しまして、ワードベースのコーティング契約っていうのは独自でして、KFPHPだとPSR2と4っていう風になっていたりとかっていうのがあるんですけども、ワードプレスのコーティング契約っていうのがまた別でして、ここでちょっとまだ違うんだな、問題です。これがパッと見て、全てがどっちが正しくて、どこが間違ってるかって全て分かる人って、いますかね、多分いないと思いますよ。いたらすごいなと思うんですけども、例えばコード契約でこのナミカッコが開業になって、これは実はPSR0とか1とか2とかっていうのが開業ナミカッコはダウンホンチなんですけども、ワードプレス上では同じ業なんです。で、このここね、実は上、タブなんです。下スペースなんですよ。分かんねーよっていう。分かんねーよなんですけど、実は違うんです。で、ここのスペースがないとか、スペースがないとかって、実は記役してあるのに皆さん知らない、実は気づかずにやってるとかっていう部分がすごく多いんで、こういうところもワードプレスの記役があります。で、そういったものはコーデックスにあります。ワードプレスコーディング記役のこれ。実はキチッ書いてあるんです。なので、こういうのをたまに見ておくだけで遊ればってなるんですね。でも、こんなものをいちいち、毎回毎回チェックしていくのは大変じゃないか。注意してくればお見せしちゃうっていう時は、PHPコードスニッパーがあるじゃん?っていうことで、PHPCSというのをコマンドでつけるようにしておけば、これはテストコードですけども、そのコード、PHPファイルを打てばエラーがどこにありましてっていうのが出ます。で、もう一つ、自動的に修正してくれるコマンドもありますので、ぜひそちらも見てください。で、それでも大変だっていうことは、PHPストーブの、もちろんそのビームだとか、そういうのを使える前提ではあるんですけども、どうしてもそういう能力がなくなってきたって言う方は、こういう新しいIDとかっていうのを補助で使う、補助で使っていくっていうのは、個人的にはすごくありだなと思っております。はい。で、最後まとめです。MVGの考え方を意識すれば、コードの精図がはがどる、面目規則を統一すると関数名もいただけて、処理が分かる。これの2つはとても大事なので、ぜひ頭に入れておいていただけるだけでいいです。今回のお話の中で、少しでも、心に残ったものがあれば、明日の関数とかの作成に逆出すんじゃないかなと思っています。そして、コーディングは常に進化させましょう。1年前のコーディングを自分で見たときに、こいつ誰やなの?めっちゃ下手くさいんだけど、思えるような状態にしましょう。実際、このコード臭いなと思ったら自分のコードだったっていうのは何回もありますので、それでもやりましょう。そして、ギッと辛いということで、圧力を掛けさせていただきます。で、最後にプライムソラテージでエンジニーが募集してますので、今日がある方は、ぜひプースの方へお越しいただければと思います。はやしでしたけれども、ご清聴ありがとうございました。