記事一覧

PHPのORM比較: LaravelのORマッパー(Eloquent)の特徴

2016-08-24 15:09

最近とあるアプリケーションのライブラリを作成するプロジェクトがありまして、スクラッチで書いていたのですが、DB接続やSQLまわりが煩雑になり、やっぱりORMが欲しいなぁと探していたところ、今アツイと言われているPHPフレームワークの”Laravel”のORマッパーである”Eloquent”を見つけました。(こちらの記事で紹介されています)

フレームワークなのに、ORマッパーだけを独立して使うことができるようです。

今回はDoctrine、Idiorm&Paris、EloquentなどのPHP製のORMを比較し、Eloquentの特徴や使用感をご紹介したいと思います。

>>続きを読む

OPcacheとAPCu

2016-08-19 17:54

はじめまして。エンジニアの齋藤です。
先日、深遠なる理由によりPHPをコンパイルする機会があったので、その際に行ったOPcacheの設定とAPCuのインストールをまとめてみます。

OPcache:バイトコードキャッシュ

PHPのconfigure時にopcacheはデフォルトで有効になっているので、コンパイル時に自動的にopcache.soは作成されたのですが、php.iniにopcacheセクションはあるものの、ロードの記述がないので、
zend_extension=opcache.so
と明示的にロードする必要があります。
extensionでロードできないので小一時間悩みました。
php.netのインストール手順のページにzend_extensionでロードしろと書いてありますね。マニュアルはちゃんと見ましょう。

設定については同じページに推奨設定があります。引用しますと、

opcache.memory_consumption=128
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=4000
opcache.revalidate_freq=60
opcache.fast_shutdown=1
opcache.enable_cli=1

revalidate_freqが60秒となっています。
これが長いと、ファイルを上書きしてもなかなかキャッシュを再作成してくれないので、更新が頻繁にあるのであれば、デフォルトの2でもいいと思います。
特に開発環境などでは0にしてもいいくらいかと思います。
残りの項目は管理画面で使用量などチェックしながら調整します。

管理画面は3つほどあるみたいですが、
https://gist.github.com/ck-on/4959032
https://github.com/amnuts/opcache-gui
https://github.com/rlerdorf/opcache-status/blob/master/opcache.php
所感としてはどれもそんな変わりませんでした。

参考:PHP OPCache 確認ツール 3つまとめ | 丸ノ内テックブログ

メモ:OPcacheのgitのありか
https://github.com/zendtech/ZendOptimizerPlus

APCu:ユーザーキャッシュ

APCuも入れます。
PHP-5.6.24でpecl installしたところ
pecl/apcu requires PHP (version >= 7.0.0-dev), installed version is 5.6.24
と言われました。
どうやらAPCu5からはphp7にしか対応してないようなので、peclから4系を落としてきて、コンパイルして入れる事にします。

インストールが終わったらphp.iniに追記します。

現時点ではphp.netのAPCuが日本語訳になっていないので、英語がさっぱり分からない私は旧APCを参考にしてます。
とはいえ、APCuではオプションがかなりOPcacheに移動したので、shm_sizeくらいしか変更してません。
こちらも管理画面を見ながら値を適宜調整していきます。
管理画面はtarballに入っているapc.phpを使いますが、認証がうまく動いてくれないので、USE_AUTHENTICATION0にします。
認証なしでキャッシュの削除などができるようになってしまい危険ですので、制限ディレクトリに入れましょう。

メモ:PHP7以上であれば、後方互換用のapcu_bcも入れた方がいいと思われます。
メモ:gccの最適化オプション。今後コンパイルする時にテスト。

以上、そんなに特殊な事はやってないのですが、備忘録的にまとめてみました。

ContactForm7最新バージョン(4.4.2)での確認用メールアドレスの実装

2016-08-02 14:00

はじめまして。開発担当の萩原です。

今回の記事ではContactForm7の最新バージョン(この時点では4.4.2)で動作する
「確認用メールアドレス」のバリデート(入力チェック)のコードを紹介させていただきたいと思います。

弊社では自社のメディアサイトの運営以外にもウェブサイトの制作をさせていただいていたりもします。
その際、WordPressを使って制作しているのですが、よくあるのがお問い合わせフォームの実装時に、
エンドユーザの情報入力項目として「メールアドレス」と「確認用メールアドレス」を配置したいというご要望です。

お問い合わせフォーム自体は「ContactForm7」という
非常に有名で便利なプラグインがあるので比較的容易に実装できるのですが、
こちらのプラグインには「確認用メールアドレス」のバリデート機能がありません。
ですが、沢山の方が使っているプラグインですので、この機能の追加方法もたくさん紹介されております。

Contact Form 7で確認用メールアドレスの入力フォームを加える方法
contact form 7に確認用メールアドレスの項目を設置する方法
WordPressの問合せフォームプラグイン「Contact Form 7」にメールアドレス入力確認機能を追加する
など、他にもたくさんあります。
※どちらのサイトも最近のバージョンで動作するものを紹介されております

弊社でも独自に機能を拡張して確認用メールアドレスのバリデートを追加していたのですが、
ContactForm7のバージョンを上げたところ、上手く動かなくなってしまったということがありまして、
最新バージョンのContactForm7で動作するコードを改めて実装することとなりました。

実装方法ですが、functions.phpなどに以下のコードを追記してください。
※既に旧バージョンのコードが入っているという方は、既存のコードを以下のコードと差し替えてください

処理内容を説明させていただきますと、

2-3行目:もともと存在するContactForm7の「email」と「email*」のバリデーションのフックに、今回実装した関数(wpcf7_text_validation_filter_extend_email)を追加します。関数追加後の流れとしては、必須入力チェック(既存)->メールアドレスチェック(既存)->今回の追加する確認用メールアドレスチェックとなります。

4行目:確認用メールアドレスのバリデーション関数を定義します。パラメータの$resultはContactForm7の入力チェックのオブジェクトで、$tagはContactForm7の管理画面で設定した入力項目(例:[mail your-email])の情報を持った配列が入ります。

6行目:入力エラーが発生した際に必要となる、$tagのデータをもとにWPCF7_Shortcodeオブジェクトを生成します。

8行目:管理画面で設定した入力項目名が”xxxx_confirm”であるかをチェックします。”xxxx_confirm”でない場合、確認用メールアドレスの入力チェックは行わず、14行目まで進みます。

9行目:”xxxx_confirm”の文字列から、”xxxx”の部分を取得します。

10行目:フォームで入力された、”xxxx_confirm”と”xxxx”の値が一致しているかチェックします。一致していなかった場合11行目に進みます。

11行目:入力チェックのオブジェクトに6行目で生成したWPCF7_Shortcodeオブジェクトとエラー文言を追加します。

14行目:入力チェックのオブジェクトを返します。

となります。

 

管理画面では、

 

というように設定していただけば確認用メールアドレスのバリデーションが使えるようになります。
※”your-email”の部分は任意の名前を設定していただいて大丈夫です

また、

とように、”_confirm”のあり/なしの組み合わせで複数配置すれば、
確認用メールアドレスの項目が複数設置できます。

補足ですが、他サイト様で紹介されているコードでは、よく8行目の前に

というような条件分岐が入ってるものを見かけますが、
2行目と3行目のadd_filter()時に「email」と「email*」に限定しているので
今回のwpcf7_text_validation_filter_extend_email()の中で$typeのチェックは
必要ないのでないかと思います。

ご参考になりましたら幸いです。

2016年度の採用をスタートしました!

2016-07-29 16:21

ポケモンGOが日本でも配信されて1週間。

エデュ近くの新宿中央公園には、たくさんのポケモンマスターが時間を問わず集まっています。

私も小学校時代を思い出しながら楽しくプレイしています(*^-^*)

何歳になっても人の心を惹きつける、

そんなコンテンツを私たちも発信していきたいなと思いました。

さて、本日からそんな素敵なコンテンツを一緒に作ってもらうための採用を開始しました!!

正社員募集は、1年ぶりです☆彡

今回新しく募集するのは・・・

1.メディア事業部編集チーム配属のWebディレクター1名

2.メディア事業部制作チーム配属のWebデザイナー1名

3.メディア事業部制作チーム配属のエンジニア1名

4.ソリューション事業部配属の広告プランナー2名

社内の雰囲気は私のブログを読んで頂くと伝わりますでしょうか・・・?

業務中は音楽を聴いている人もいたりして、静かな雰囲気ですが、

イベントになると盛り上がる!!そんなメリハリある会社です^^

もちろん、業務中にお話もしているので、笑い声も聞こえてきます♪

平均年齢は32歳ですが、意外とパパさんママさんも多く、

急なお休みや お子さんの行事でのお休みも、とってもとりやすいです(^^♪

また、現在エデュでは、月間残業時間30時間以内を徹底管理しています。

プライベートもばっちり充実させられます。私も予定がある日は定時で帰ってます☆

デザインするだけじゃ物足りない!という、あなた!

様々な関係者を巻き込み、より良いコンテンツを増やしたい!という、あなた!

そして、なによりも・・・「未来の子どもたちへできること」という経営理念に共感して頂ける、あなた!

ぜひご応募ください。お待ちしております。

Webディレクターの詳細は、こちらをクリック

Webデザイナーの詳細は、こちらをクリック

エンジニア・広告プランナーの詳細は、後日お知らせいたします。

ご応募お待ちしています!ご応募お待ちしています!

単体テストとテスト駆動開発(PHPUnitの例)

2016-07-01 19:39

こんにちわ。開発担当の野澤です。
今日は弊社でも最近になってようやく導入した”PHPUnit”と、
システム開発におけるテストの役割や意義について簡単にまとめたいと思います。

今回はどちらかというと、プログラマー初級者向けの方や、
非技術者の方(ディレクターや経営者の方)でも
プログラムのテストの最近の潮流や概念がなんとなく掴めるように書いております。

まずはPHPUnitの概要をおさらいしたあとに、テスト駆動開発の考え方について見ていきたいと思います。

>>続きを読む