PHPプログラミングの覚え方 何かを作ること
PHPの覚え方というか、どんなことでも同じだと思うんですが、作ってみること。これにつきますよね。
最初のころは echo 'こんにちわ' から始まって、とりあえずの使い方を覚えるじゃないですか。
で、とりあえずのPHPの使い方の基礎の基礎を覚えたら、なんとなく想像できるけど、全ての作り方がわからないものを作ることをオススメします。
私が初めてそれっぽいものを作ったのは、性格診断という占いコンテンツだったんですが、これはもともとJavascriptで作ったことがあって、そのあとFlashにして、そのあとPHPで作りました。
これは焼き直ししただけなので、あまり良い事例ではないんですが、初めての制作物ということで。
THE PHPなコンテンツ BIツールを作った話
私が本格的にPHPらしいものを作ったのが、社内で使うBIツール。
BIツールというのはビジネス・インテリジェンスツールの略で、簡単に言うと売上集計ツールです。
私の仕事ECのWEB担だったので、自分が楽するためのツールを作りました。
作ったきっかけはめんどくさいから
私の仕事は単品通販と呼ばれる業種なんですが、通販って広告打たないと売り上げ上がらないので、広告のレスポンスがどれくらいあったかが超重要なんですね。
安くない広告費を支払う以上、どんな広告が良くて、広告費に対して受注件数が何件あったか、1件当たりの獲得単価はいくらになったか、など色々報告しなきゃいけないことが多いんです。
ただ、通販の売上なんて1日ごとに変わっていくから、いちいち報告すんのがめんどくさかったんですよ。
社内でしか見れないイントラネットサーバーがあったので、システム部の部長と仲良かったので、そのサーバーを使わせてもらって好き勝手作ってました。
社内ネットワークでしか見れないのをいいことにセキュリティなどをあまり考えなくてよかったので、気軽に使えました。
実際に作ってみて想定と違う点が多々あると気づく
PHPとデータベースを使って、ECのカートシステムから受注CSVをダウンロードして、データベースにインポートして、それをPHPで成形したものを作ったんですが、我ながらいいものができたと。
作ったことがないことを理由に、何もしなかったら何も作れないじゃないですか。
失敗しても誰にも迷惑かけない環境で、何かを作るということは非常に大事なことです。迷惑をかけるのはNG。
最初は日々の売り上げと、月間の売上をまとめるだけの簡単なものだったんですけど、そこから、商品カテゴリごとに区切ったり、広告媒体ごとに集計したりと、どんどん進化させていきました。
最初の壁 処理速度が遅い
いいものができたと調子に乗って、過去の売り上げデータをガンガンデータベースに突っ込んでいきました。
20~30万行くらいの量だったと思うんですが、表示速度がクソ遅くなったんですよ。
そのころの私はデータベースの情報を引っ張り出して、WEBブラウザで見れれば満足していたので、表示速度やプログラム、SQLの効率化などまったく気にしてなかったわけです。
データベースと連携させて数十万のデータがあると処理速度がこんなに遅くなるのか。と、データ多いからしょうがないかと半分あきらめていた時に、データーベースのインデックスという機能を初めて知りました。
PHPとSQLの処理を分けることを覚える
データベースはちゃんと設計してクエリーを工夫すれば、20万行程度の情報量だったら高速に処理ができる。そんなことも知らずに作ってんですよ。
よくわからないままインデックスを使ったら、今まで数秒またないと表示されなかった情報が、比べ物にならない速度で表示されるようになりました。まぁ、今考えるとそれでも遅かったと思います。
そもそもデータベースの設計なんて知らない素人が作っていたので、Varchar(データベースのフィールドの定義の1つ、文字列を意味する)の255文字でほぼ作っていた記憶があります。
日付データも、数字も全部これにしていたような。
そのうえ、集計処理もPHP側で行っていたので、今考えると恐ろしい作り方をしていたなぁと思います。共用のレンタルサーバーで同じことやってたら追い出されてもおかしくないレベル。
そこからバージョンアップを重ねる
データベースの設計方法や、MySQLのクエリーの奥深さを知り、データベースのデータ型の指定方法や、集計はSQLでやった方が高速だとか色々学びました。
仕事で使うとはいえ、私が勝手に作ったツール。
システム部といってもインフラ系の人たちなので、PHPのことを聞ける人がおらず自力で工夫を重ねて、今ではほぼストレスない速度で表示をさせることができる程度に腕をあげましたよ。
まだまだ改善の余地は多々ありますが。
会社で使うツールを、自力で作ったという経験がものすごく大きかったです。
やってみないとなにも生まれない
BIツールと勝手に呼んでますが、初めの一歩はただの売り上げ集計ツールだったんですよ。
こういうどこまでも拡張可能なツールを作ることは、自分の技術向上にものすごくつながりました。
できることが1つ増えると、そこからさらにやりたいことが生まれる。際限なく何かを作り続けることができる。
自分にできるかどうかはわからないけど、完成形のイメージがしやすかったので、色々な手段を用いて作り上げました。
作ってて、楽しかったのが大きいですね。あと、めんどくさい報告業務から逃れることができたので、仕事の生産性が上がりました。
数字報告をするために数字をまとめるなんて、バカみたいじゃないですか。明日になったら変わってんだから。
PHPを覚えるにはとりあえず何かを作ること
作りたいものがないと、PHPを覚えるための「作業」になりやすく、作業をしているときには喜びが生まれないので、どんなことでもいいから作りたいものを見つけて、それを作ることが一番の早道だと思います。
作れるかどうかの判断は、完成形をイメージできて、詳細はわからないけど、あれを使えればできそうだな、と想像がつけば何とかなります。
完璧じゃないけど最低限の機能は満たしている、最初のゴールはここに設定して、作ってからもっとブラッシュアップさせれば完成度は上がりますので。