PHPを使ってBIツールを作って仕事の生産性をあげた話

PHPを使ってBIツールを作って仕事の生産性をあげた話

PHPを手っ取り早く覚えるには作りたいものを作ること

#94 PHP覚え方

WEB制作

PHPとデータベースを組み合わせて自分の作りたいものを作れた時は、もしかして天才なのかなと思えるくらい充実感がありました。 作ったものを見返すと全然足りてないものが多いんだけど、作り終えたときの満足感は最高に気持ちいいですよね。それが大事。

公開日:
最終更新日:

商品リンクにアフィリエイト広告を利用しています

サイトマップサイトマップ

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を覚えるための「作業」になりやすく、作業をしているときには喜びが生まれないので、どんなことでもいいから作りたいものを見つけて、それを作ることが一番の早道だと思います。

作れるかどうかの判断は、完成形をイメージできて、詳細はわからないけど、あれを使えればできそうだな、と想像がつけば何とかなります。

完璧じゃないけど最低限の機能は満たしている、最初のゴールはここに設定して、作ってからもっとブラッシュアップさせれば完成度は上がりますので。

記事内で紹介している商品リスト
(価格はAmazon参考価格)

誰もがあきらめずにすむPHP超入門

1,848円(税込)

誰もがあきらめずにすむPHP超入門

初心者からちゃんとしたプロになる PHP基礎入門〈PHP8対応〉

2,750円(税込)

初心者からちゃんとしたプロになる PHP基礎入門〈PHP8対応〉

イラストでよくわかるPHP はじめてのWebプログラミング入門

1,980円(税込)

イラストでよくわかるPHP はじめてのWebプログラミング入門

詳細! PHP 8 + MySQL入門ノート XAMPP + MAMP 対応

3,520円(税込)

詳細! PHP 8 + MySQL入門ノート XAMPP + MAMP 対応

スッキリわかるSQL入門 第2版 ドリル222問付き! (スッキリわかる入門シリーズ)

3,030円(税込)

スッキリわかるSQL入門 第2版 ドリル222問付き! (スッキリわかる入門シリーズ)

よくわかるPHPの教科書 【PHP7対応版】

2,728円(税込)

よくわかるPHPの教科書 【PHP7対応版】

スラスラ読める PHPふりがなプログラミング (ふりがなプログラミングシリーズ)

2,200円(税込)

スラスラ読める PHPふりがなプログラミング (ふりがなプログラミングシリーズ)

Bootstrap 4 フロントエンド開発の教科書

3,608円(税込)

Bootstrap 4 フロントエンド開発の教科書

PHP覚え方の関連ページ

PHPを使って作るCMS

PHPを覚えたらSQLも覚えて自作のCMSを作ってみよう

PHPを覚えたらデータベース回りも一緒に覚えるのがオススメです、 制作できるものの幅が広がって色々な仕組みを理解できます

PHPの覚え方

PHPの良いところは難しいと思われていること

PHPって人が思っているほど難しくなく、便利でいろいろな面白いものを作れるプログラミング言語です。

POST送信

PHPを使った漢字クイズの作り方解説 その1 POST送信

【初心者向け】PHPを使った漢字クイズの作り方を解説します。1回目はGETとPOSTの簡単な解説から実際に使うPHPの紹介です。

配列の解説

PHPの連想配列の多次元配列を使ったクイズの作り方

PHPの配列ってイメージは付くけどちゃんと理解するのが難しい。 例題がわかりづらいせいだと思うんですよね。これはわかりやすい。

URLの疑似静的化

URLの疑似静的化 動的URLを静的URLにする方法

htacessを使いhtmlファイルが存在しない静的URLを生成する方法と、仕事で使った疑似URLの活用方法の紹介です。

ランダム表示バナー

PHPで作るランダムバナー表示プログラム

PHPでランダム表示させるバナープログラムです。 バナーと言っていますが、別にバナーじゃなくてもランダムで表示できます。

日付比較

キャンペーン期間中だけ表示させるPHPプログラム

期間限定の表示は訴求が強いけど、取り忘れるとユーザーに損した気分を与えてしまうので、忘れずにしっかり対応したいですね。

PHPで作るカレンダーの作り方2

PHP+jQueryで作る土日祝日が選べないカレンダーの作り方

PHPで作るカレンダーの作り方の第二弾です。 今回はクリックした日付を取得してformに代入するところも解説してます。

PHPで作るカレンダー

PHP+HTMLで作る 祝日対応のカレンダーの作り方

forとifとforeachがメインのPHPによるカレンダーの作り方です。 祝日設定がちょっとめんどくさいんですよね。

WEB言語紹介

WEB制作をささえるHTML・CSS・Javascript・PHP

いつもWEB制作をささえてくれるいろいろな言語を紹介しています。 他にもMySQLがあるんですが長くなるので割愛しました

jquery-match-height.js

高さを簡単に揃えるjquery-match-height.js

簡単に要素の高さを揃える「jquery-match-height.js実際の使用例をわかりやすく画像付きで解説しています。

indexOf

JavaScriptのIndexOfの使い方の復習

indexOfを使ってindex番号を取得する方法の解説記事を書いていたら、indexOfを使わなくても取得できました。

アンカーリンクナビ

交差監視を利用したアンカーリンクナビゲーション

JavaScriptの「Intersection Observer」を使い、ナビゲーションが変化するアンカーリンクを作りました。

bookblock

本をめくるJqueryライブラリ bookblock

本をめくるようなモーションを実現するbookblock.jsを改造してレスポンシブ対応にしてみました。

交差監視

Intersection Observer APIを図解で解説

Intersection Observerを仕事で使ったときに理解度が足りないと感じわかりやすい解説記事を書きました。

つまづきやすい5つのポイント

【初心者むけ】Jqueryのつまづきやすい5つのポイント解説

Jqueryの構文がわかってなかったとき、とりあえずコピペして使ってました。 ちゃんと理解して使うとできることが増えます

スクロール監視

スクロール監視の新定番 intersecton observer API

スクロールに応じて何を変更させたりするときに便利なintersecton Observer APIの解説記事です。

tableデザイン

tableで作る表をシンプルでキレイに作るHTMLとCSS

tableで表を作るときに気を付けたいのが、どこまでシンプルでわかりやすく作れるかという点ではないかと個人的には思ってます

CLS対策上級編

CLS対策上級編 CSSのインライン化とAdcence遅延読み込み

CSSのインライン化とGoogle Adcence遅延読み込みでGoogleのスコアを大幅に改善しCLSもほぼ0にしました

CLS対策初級編

CLS改善をしてPageSpeed Insightsを大幅改善

CLS(Cumulative Layout Shift)を改善する方法とCLSを確認する方法などをまとめました。

SNSでこの記事をシェアできます

ブログ デイリーアクセスランキング

PHPで作るカレンダー
1位

PHPで作るカレンダー

forとifとforeachがメインのPHPによるカレンダーの作り方です。 祝日設定がちょっとめんどくさいんですよね。

ノートPCスタンド
2位

ノートPCスタンド

ノートパソコンを横にしまうと結構な専有面積があるのですが、立てて収納できればわずか数cmで使えるので本当に快適です!

α7Ⅲで夜景
3位

α7Ⅲで夜景

去年はPENTAX Q7で撮影してきた東京タワーと浅草に今年も夜桜撮影に行ってきました。買ったばかりのソニー α7Ⅲを片手に。

自転車に取り付けるドリンクホルダー
4位

自転車に取り付けるドリンクホルダー

自転車でコンビニのホットコーヒーをこぼさずに持ち帰るためにドリンクホルダーを購入したので、写真を交えてレビューします!

jquery-match-height.js
5位

jquery-match-height.js

簡単に要素の高さを揃える「jquery-match-height.js実際の使用例をわかりやすく画像付きで解説しています。

MusicBeeのレイアウト変更方法
6位

MusicBeeのレイアウト変更方法

MusicBee 3.1のレイアウトをデフォルトの状態から、自分好みのレイアウト設定に変更する方法を写真付きで紹介しています。

α7Ⅲ 夜桜撮影
7位

α7Ⅲ 夜桜撮影

α7Ⅲを片手に東京の夜桜スポットに行ってきました。中目黒と千鳥ヶ淵の夜桜を紹介しながらα7Ⅲのレビューです。

SEL50F18F
8位

SEL50F18F

ソニーの単焦点レンズSEL50F18Fを愛用しています。コスパに優れた単焦点レンズで、F値の開放が1.8と明るく撮れるレンズです。

bookblock
9位

bookblock

本をめくるようなモーションを実現するbookblock.jsを改造してレスポンシブ対応にしてみました。

Kazakiri 1枚刃のカミソリ
10位

Kazakiri 1枚刃のカミソリ

カミソリの替刃の価格が高すぎるので1枚当たり11円で使える片刃のカミソリを購入しました! 切れ味抜群でヒゲソリが楽しい!

カテゴリ一覧

オススメ商品レビュー

オススメ商品レビュー

世の中にある比較サイトや、いかがでしたか系サイトが嫌いなんです。使ってないのにえらそうなこと言うなと。なので体験談です。

WEB制作

WEB制作

WEBサイトを作れますと一言に言っても色々な技術があるわけですよ。アウトプットの形は一緒でもいろいろこだわりがあるんです。

カメラ

カメラ

2018年4月に購入したソニーのミラーレス一眼「α7Ⅲ」に関連する記事一覧ページです。 作例集やカメラグッズレビューなど。

美味しいもの

美味しいもの

食に関してはあまりこだわりがないんですけどね、こだわりがない分美味しいと思ったものは本当においしいと思ったものなんですよ

Amazonプライム動画

Amazonプライム動画

Amazonプライム会員なら無料で利用できるAmazonプライム動画から、いろいろな動画をみたレビュー記事のまとめページ

旅LOG

旅LOG

家族旅行やおでかけした際の旅ブログです。夏休みの家族旅行(4人家族)で訪れた観光名所の感想などを記しています。

プロフィール

プロフィール

Start-Point.netの管理人のプロフィール紹介を兼ねた、自分の中のルールや決め事やエピソードなでお書いていきます

日記

日記

日記と言っても色々な日記があるわけで、記録的な日記や心理描写を色濃く描いた日記などをまとめたページです。

thanks

thanks

自分を表現することって意外と難しいんですよね。照れがあったり、間違ったこといってないかとよくわからない何かと戦ったりして。

記事内で紹介している商品

誰もがあきらめずにすむPHP超入門

1,848
(税込)