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プログラミング入門

8円(税込)

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

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

3,520円(税込)

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

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

2,505円(税込)

スッキリわかる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の配列ってイメージは付くけどちゃんと理解するのが難しい。 例題がわかりづらいせいだと思うんですよね。これはわかりやすい。

日付比較

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

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

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

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

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

PHPで作るカレンダー

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

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

WEB言語紹介

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

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

ランダム表示バナー

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

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

URLの疑似静的化

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

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

交差監視

Intersection Observer APIを図解で解説

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

スクロール監視

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

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

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

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

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

アンカーリンクナビ

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

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

bookblock

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

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

jquery-match-height.js

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

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

indexOf

JavaScriptのIndexOfの使い方の復習

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

CLS対策上級編

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

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

CLS対策初級編

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

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

CSSで作る横スライド

1行のCSSで作る横スライドの作り方

CSSのoverflow-x: scrollを使った横スライドの簡単な作り方と事例紹介です。 簡単便利はいいことだ。

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

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

車用スマホホルダー
1位

車用スマホホルダー

スマホをカーナビとして使うと熱さで充電ができなくなるので、熱対策と1年間使って外れることがなかったスマホホルダーの紹介。

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

MusicBeeのレイアウト変更方法

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

ノートPCスタンド
3位

ノートPCスタンド

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

URLの疑似静的化
4位

URLの疑似静的化

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

PHPを使って作るCMS
5位

PHPを使って作るCMS

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

鋸山 地獄覗き
6位

鋸山 地獄覗き

千葉県の観光名所「鋸山」へ行き地獄覗きと百尺観音、奥の院無漏窟など。車で行く場合は鋸山駐車場がオススメです。

MX MASTER3
7位

MX MASTER3

ロジクールのマウスは文句なしの出来栄えなんですよ。 だから高くても私は買いますよ。これ以外使う気ないですからね。

ランダム表示バナー
8位

ランダム表示バナー

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

Amazon Fire TV Stick
9位

Amazon Fire TV Stick

2017年4月6日発売 アマゾンFire TV Stick NEWモデルのレビュー!TVでAmazonプライム動画を楽しめる。

運動会
10位

運動会

子供の運動会にα7Ⅲで初参戦!望遠レンズを買おうか迷ったのですが、本体とセットのズームレンズ1本で運動会を撮影してきました。

カテゴリ一覧

オススメ商品レビュー

オススメ商品レビュー

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

WEB制作

WEB制作

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

カメラ

カメラ

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

美味しいもの

美味しいもの

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

Amazonプライム動画

Amazonプライム動画

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

旅LOG

旅LOG

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

プロフィール

プロフィール

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

日記

日記

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

thanks

thanks

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

マネーリテラシー

マネーリテラシー

お金や税金、資産形成に関する情報や体験談をブログでお伝え!

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

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

1,848
(税込)