MORE実際にKPI集計時に発生した問題と解決方法のご紹介2015.09.14皆様お久しぶりです。CCSプログラマの吉村と申します。(じゅうようぎょうせきひょうかしひょう)”企業などの組織において、個人や部門の業績評価を定量的に評価するための指標。達成すべき目標に対し、どれだけの進捗がみられたかを明確にできる指標が選択される。これをもとに、日々の進捗把握や業務の改善などが行われる。”上記説明にあるように、ソーシャルゲームを運営していく上でもKPIは、そのアプリの方向性を決めるほど重要なものになります。実際に発生した問題点と解決策をいくつか紹介したいと思います。1.GROUP_CONCATで取得した値が欠落まず初めに、ユーザの集計を行う際に、ある条件に合致したユーザIDの一覧を取得する必要がありました。そこで使用したのが、mysqlのGROUP_CONCATになります。GROUP_CONCATを使用すると複数レコードを1行にまとめて、取得出来るようになり、その取得した値をIN句などで使用すれば、指定したユーザから情報を取得出来るようになります。それにより、条件に一致したユーザIDを取得し、そのユーザIDを対象にした情報を集計する処理を作成しました。ここで、一点問題が発生しました。それは、集計された値が明らかに少ないというものでした。原因を調査した所、GROUP_CONCATには、文字数制限があり、デフォルトでは1024に設定されている為、上限を超えた場合、途中で文字が切り捨てられてしまいます。情報が欠落してしまっていました。group_max_lenの設定を変更GROUP_CONCATの文字数制限は、group_max_lenの設定を変更する事で変更する事が出来ます。取得するデータの文字数がオーバーしてしまいそうな場合は、あらかじめ上限を変更しておくようにしましょう。集計をバッチにより、毎朝一定の時間に集計されるよう、設定していたのですが、ある日、一部集計のみ行われていないという問題が発生しました。原因を調査した所、phpのメモリ不足により、集計処理が途中で失敗しているという事が判明しました。メモリの上限を変更phpでは、ini_setを使用する事により、メモリの上限値を変更する事が出来ます。メモリオーバーが発生しそうな場合は、メモリの上限を変更しておきましょう。無駄な変数などは、unsetを使用し、メモリの節約を行いましょう。3.まとめいかがでしたでしょうか?今回紹介した2つの問題は、どちらも基本的な設定が原因でした。基本的な事だからこそ、重要な箇所でもあります。皆様も設定については、同じ失敗が起きないよう、十分に注意して行いましょう。採用情報クラウドクリエイティブスタジオではプログラマを募集しております。