Web Developer's Struggle Memories

日々の業務から思ったこと、学んだことを書き連ねていきます。

Webエンジニア5年の私のPHPとの歩み

https://connpass-tokyo.s3.amazonaws.com/thumbs/76/6c/766cc33bcd718244890d29caddd8bcdb.png

(画像は、connpass の YYPHP の勉強会ページより)

この記事は YYPHP Advent Calendar 2018 の8日目の記事になります!

※ 遅刻して申し訳ないです💦

はじめに

Web業界のエンジニアになって早くも5年が経ちました。 バックエンドも、フロントエンドも、ちょっとインフラも、デザインも、マーケティングもやってきました。

その中でPHP が一番長いので、今回は PHP との歩みについて振り返りたいと思いますー。(今回本当にただのポエムです)

PHP, EC-CUBE との出会い

思い返せば5年前。新卒で入社した某S社。

 「うちでは EC-CUBE を独自カスタマイズした XXX というフレームワークを使っている。それはLAMP 環境で動いてるよ。ローカル開発環境は、今は VMWare が主流だね。」



EC-CUBE?(ちなみに当時は version 2.4.3LAMPVMWare日本語でおk

というのが、当時私が一番最初に感じたことですw 私は大学院まで数学のある一分野に関する研究をしており、プログラミングは全力で逃げて単位を取っていました。 一応情報系の学科にいたので多少はプログラミング言語C言語Java)を勉強しましたが、プログラミングをやって生きていくなんて、当時は全く考えていなかったです。

このような背景があって、私は未経験枠 として新卒入社することになりました。未経験枠の人間には、入社前の半年間で研修がありました。 やったことは、以下の本を読んで、

オープンソースECサイト構築ソフトEC-CUBE【Ver2.11対応】公式ガイドブック応用編

オープンソースECサイト構築ソフトEC-CUBE【Ver2.11対応】公式ガイドブック応用編

会社のプロダクトの機能拡張をしてみろ、というものでした。こちらの本は「応用編」と記述があるように、「基本編」もあります。

しかしですね、会社から指定された本は 応用編。しかも 自分で買わないといけない。 さらに、こちらの本の対象バージョンは 2.11.x でしたが、 基本編の本は 2.11.x に対応していないため、記述してあるコードがほとんど参考にならない… また、当時の私はここで相談をを全然していなかったため、結局私は会社の課題が終わらなかったんですね💦

実は後から言われたのですが、会社としてはそれを認識していて、そういう相談をしてきたら 2.11.x で開発しても良いよという話でしたので、 ちゃんと相談をしなかった自分が悪かったのと、社会人としてちゃんと報連相はしようね、ということを学ばさせていただいたと思います。


話を戻すと、当時の会社の 開発環境は LAMP なんですが、PHP にいたっては yum のデフォルトインストールで入るバージョンですので、5.3.3 でした。

それから、会社のパッケージソフトのメジャーアップデートや自動ユニットテストもエンジニアメンバー内では進んでましたが、PM以上の役職の人内で潰され、結局無くなりました。

また、別のメンバーが「ちゃんとフレームワークを入れて行こうぜ」ということを発案・実行に移しましたて、そのとき採用されたのが Yii というフレームワークでした。いきなりガツンと入れることは難しく、リソースもないので、機能単位の段階導入になりました。(まぁ、これのせいで苦労するんだろうな、と思ったそこのあなた!正解ですw)

そんなこんなで、社内のオレオレフレームワークで仕事する中で約3年生きていき、このままではエンジニアとしても、人としても成長せずヤバいと思い、転職しました。

EC-CUBE についての余談

いつの間にか、EC-CUBE は現在 version4 がリリースされておりますね。 version3 で使われているフレームワークSilex でしたが、このフレームワークって確か開発終了してるので、 version4 からは Symfony になったようですね。こちらの記事 が参考になりました。

私がメインで触っていたのは version2 のものでしたが、そのときに一応コミュニティとしても活動したいと思っており、

xoops.ec-cube.net

こちらのサイトでちょこちょこ書き込みをしてました。 version3 が出た頃にはパッタリやめてしまいましたがw

さらに、version2 のソースコードを見たことある方はご存知かと思いますが、結構闇コード なんですよw 3, 4ではだいぶ改善されたのかは分かりませんが。(ソース読む気にはならない)また、テーブル設計が ~ヤバい~素晴らしいですね。ある意味で参考になると思います。(あるテーブルのカラム数が80とか行ってた希ガス)ご興味ある方はどうぞ!

github.com

例として、このパッケージソフトの根幹となるスーパークラスのファイルの中の2つ、SC_Query.php, SC_Product.php のリンクを貼っておきます。

github.com github.com

CodeIgniter との出会い

レプラホーン株式会社 に転職し、初めてPHPフレームワークにちゃんと向き合うことになりました。こちらの会社では、CodeIgniter というフレームワークを主に採用されていました。

CodeIgniterは PHP の中でもちょっと特殊なもの(と私は思ってます)が、この子は初心者にはうってつけのフレームワークだと思ってます。

シンタックスも難しくなく、ドキュメントの日本語翻訳も進んでおり、初めてちゃんと触ったフレームワークとしてはとても良かったと思います。 特に初心者が触るフレームワークとして良いなーと今でも思っていますし、API だけの実装ならまさにこの子は選択肢として良いと思います。(パフォーマンスも良いので)

この会社にいるころから、いろんな勉強会に積極的に参加するようになったのと、初めて登壇(もちろんLT)をしたのも PHP(CodeIgniter) についてでした。第110回 PHP勉強会@東京 という勉強会ですね。今でもハッキリと覚えています。緊張しまくってましたからw スライドはこちらです。

speakerdeck.com

当時は CodeIgniter の version4 の開発が進んでおり、develop ブランチでなら簡単なものであればすでにアプリケーションが作れるところまで実装されていたので、 先取りして話したんですが、結局未だにメジャーアップデートは来ていないですw

こちらの会社にいる頃から、PHP のバージョンアップの対応もするようになりましたね。5.4〜5.6 のマイナーバージョンアップでも、破壊的変更は何度かありましたし、セキュリティパッチは結構あったような気がします。

仕事でPHPについて色々ググるとよく見る記事が、suin さんの記事 ですね。本当にお世話になっております、ありがとうございます! 困ったら Qiita 開いて suin さんの過去記事を漁る…ということを何度やったことかw (公式サイト よりも見ましたねー)

FuelPHP との出会い

こちらの会社にいる頃にもう一つガッツリ触ったフレームワークが、FuelPHP でした。 この子は、CodeIgniter の中の人が新しく開発したフレームワークとして有名です(…よね?)確か version 1.8 が出たばっかりのときに導入したと思います。

これもハッキリと記憶に残っているのですが、まぁ案件が燃えまくったんですよねw FuelPHP が悪かったのか、PHP にバグがあったのか、使っていた Redis との相性が悪かったのか、結局わからなかったのですが、 シングルスレッドが崩壊するバグが発生したのです。詳しくは覚えてないのですが(エンジニアならそれは覚えておけよと👊)、

SESSION を複数保持する必要があり、イベント発生時に処理するタスクを内部でタスクキューとして持って、それをひたすら下から処理したかったがその順番が狂った

という事例だったと思います。 オークションサイトだったこともあり、降ってくるイベント(画面上のイベントのことです)が結構多く、もちろんバックエンドのみが原因とは思ってもなかったのですが、 これは難儀しましたね…

Phalcon, Laravel との出会い

最後に、私が現在所属する 株式会社ゆめみ で使われている PHP フレームワークとして、Phalcon, Laravel があります。 私は Node.js エンジニアとしてお仕事をスタートし、現在はフロントエンドエンジニアとしてお仕事をしておりますので、どちらも触ってはいないですが、 API の実装部分はなんだかんだ気になるし読むことがあるため、一応フレームワークに触れてはいます。

phalconphp.com

laravel.com

API の実装ですので、どちらもそれほど見た目には大差はないかなーと言うのが個人的な印象です。が、パフォーマンスでは Phalcon の方が速いらしいので、 画面まで作らないのであれば速いものを使うのもありかと思います。それほど書きにくいとかもなさそうですので。

ただ、ドキュメントは Laravel の方が現在はしっかりしている印象ですし、日本でも活発に使われておりますので、Laravel 使うほうが無難かもしれません。

以上で、私の PHP との歩みは終わりです。

環境構築の余談

私が PHP を動かしていた環境を列挙します。ただの歴史です。

おわりに

プログラマーとしては PHP からスタートし、この5年間色々ありましたが、なんだかんだ PHP とともにお仕事をしてきたのもあって、 結構感情移入と言いますか、PHP には感謝しています。頭が良くない私でも書けるし、(環境構築を除いて)入門の敷居も低いですので、 PHP からプログラミングを勉強するのは悪くないと思います。(なんだかんだ言語以外のいろんな知識もセットで勉強することにもなりますので)

明日は たべたつ さんです!

ではでは(=゚ω゚)ノ