Author Archives: Y.N

2017-04-19

トレジャーデータを使うときに気を付ける点。

こんにちは、Y.Nです。

弊社で昨年導入したトレジャーデータ、社内でみんな使っている状況になりました。

そこでよく見る間違い・・・。

TD_TIME_RANGEの第三引数の扱いが間違っているのが多いので指摘しておこうと思います。

たとえば、2017年3月30日のログを集計しようとしたとき、

SELECT count(1) FROM logs WHERE TD_TIME_RANGE(time, ‘2017-03-30 00:00:00 JST’, ‘2017-03-30 23:59:59 JST‘)

こんなSQLを書いちゃう人がいますが、これだと、

2017-03-30 23:59:59

この秒は含ませません。

公式のドキュメントを見ると・・・。
https://docs.treasuredata.com/articles/udfs#tdtimerange

start_time <= time && time < end_time

とんな数式が載っていまして、end_time の前は「<」となっておりend_timeそのものは含まれません。

このおかげでSQLの時刻はもっと直感的に記載できるようになっています。

SELECT count(1) FROM logs WHERE TD_TIME_RANGE(time, ‘2017-03-30 JST’, ‘2017-03-31 JST’)

あとは時刻を記述するときに時間の記述の中に「JST」を記述することをお忘れなく。

TD_TIME_PARSEを使ってJSTに合わせるということをしていましたが、JSTとつけるだけでしっかりと日本時間に合わせてくれます。

あとはTD_TIME_PARSEもJSTも付け忘れてUTCになって計算結果を出してしまう方も多いのでこのあたりもお忘れなく!

以上、トレジャーデータを使うときに気を付ける点でした。

よろしくお願いいたします。

2016-02-01

Codeigniter3を大幅に機能向上させるSprintPHPの紹介

こんにちは、JWordのY.Nです。

PHPのフレームワークについて

PHPのフレームワーク、日本中では一般的にCakePHPがよく使われていて、最近はlaravelがよく使われてきているみたいですね。

詳細は以下の記事がわかりやすいと思います。

【2015年版】PHPフレームワーク人気比較してみました!

重いフレームワークほど流行っている?

この記事の中でも言及されていますが先に挙げた2つのフレームワークは重めとなっています。

各フレームワークのベンチマークについては結構最新の情報だと以下の情報がわかりやすいです。

Hello World Benchmark

重いフレームワークがそれでも人気なのは各フレームワークに用意されたコマンドラインを用いて必要なファイルを自動的に生成し元となるデータに対してCRUDな環境を構築するのが容易だからだと考えています。
個人的にね!ソースはない!

そんな思い込みからこんな風に考えています。
動作の速度が遅いのは悪ではあるけど、開発のスピードが遅いものはより悪であるのではないかと。

そして僕は個人的にCodeigniterを使っています。
このフレームワークは非常にわかりやすく且つ軽快に動作していてとても好きなんです。

Codeigniterのまま高機能なCRUDな機能を導入したい

でも昨今のCLIよる自動生成の波には打ち勝てず他のフレームワークも活用することを検討していました。

それと同時にCodeigniterの良さを残したままCRUDなものを導入できないかを検討していました。

それにより見つけたのが以下の2つ。

Grocerycrud

Sparksによりインストールできます。
Codeigniter3に導入するときはディレクトリやファイルの大文字小文字を調整する必要があるので気を付けてください。

非常にたくさんの機能があって使いやすいです。
社内システム開発の業務もこのアドオンを使うことで非常にすばやく構築できました。

基本的なCRUDはもちろんのことテーブル同士をJOINしての制御が可能でした。
ログインしたユーザーの権限などで項目を出す出さない特別な項目にするといったこともサクサクっと構築できました。コーディング必要ですけどね。

大きな問題点としてXSSに弱い部分があったこと。
これはいただけない。

一般的に公開するシステムではないのでGroceryCrudのソースを直接いじったりして問題を無くしましたがこのライブラリ自体が修正されたわけではないのでなんとも言えない感じです。

Bonfire

Codeigniterをベースにしているみたいです。
実は触ってないですw

というのもこの開発している人たちがSprintPHPというもっと軽量でありながら同じ方向性をもったフレームワークを開発していたからです。
名前的にもSprintPHPの方がいいなーっと思いました。

なのでBonfireを試すよりもSprintPHPを試す方が先になったわけです。

SprintPHP

SprintPHPの特徴としてはCodeigniter3をベースとしていることと以下の通り。

https://github.com/ci-bonfire/Sprint#whats-in-the-box

  • Powerful MY_Model with standard CRUD, db wrappers, observer methods and in-model validation

  • MY_Controller with simple theming, rendering methods for other data types (like json) and more

  • Extended Router to include module support, named routes, HTTP verb-based routing, Restful resources and scoped routes/areas.

  • Simple, but flexible, Template system

  • Module Support, without being able to call other controllers. That simply gets too complex and causes too many problems. Instead, it’s simply the ability to keep MVC triads in modules that can still be called from the URI.

  • Better Database Migrations, with CLI tool for building and running

  • Database Seeding with CLI tool

  • Markdown-based documentation system.

  • Flexible Events system with priotized publish/subscribe methodology.

  • Simple, GUI-less cron controller that can be used through standard crontab or scheduled tasks.

  • Settings library for maintaining system-wide settings, either in the database, config files, or a combination.

  • Simple, but expandable, Authentication and Authorization system with flexible Password strength checking

  • Email Queue system allows for very flexible email generations and sending.

  • The Forge – a code builder with simple generators in place, but fully customizable and easy to add your own.

気になった点を抜き出すと、

  • MY_modelがすごいよー。CRUD付だよー。
  • Router機能が拡張されているよー。(なんとサブドメインにも対応しているんだ!)
  • これまでのMVCは保ったままモジュール機能に対応しているよー。
  • CLIからデータベースのマイグレーションができるよー
  • マークダウンによるドキュメントシステムもあるよー
  • イベントシステムもあるよー(たぶんWordpressのイベント処理みたいなやつじゃないかな?)
  • 認証システムもシンプルだけど拡張可能になっているよー
  • The Forgeだよ

という感じです。

実際に導入してみましたので別記事でお楽しみください。

SprintPHPをCloud9で使ってみた。

Codeigniterの今後について思うこと

紹介したSprintPHPはCodeigniterの現在のリード開発者が担当していているみたいで、そこから思うのはCRUDなことはSprintPHPやBonfireになってもらってCodeigniter自身はさらに軽快さを求めていくのかなと思います。

開発者自身のブログに次期バージョンのCodeigniter4に対する感想が年末に載っています。

http://blog.newmythmedia.com/blog/show/2015-12-30_Initial_Thoughts_on_CodeIgniter_4

It’s Fast
CI4 gave around 2500 requests per second, while CI3 clocked about 2250 requests per second. That’s about a 10% improvement.

これまで通りのシンプルさと拡張性、さらに追加機能で他のフレームワークに負けないぐらいの便利さを手に入れつつも速度の向上が実現するのかなと。

悪の部分がなくなりそうですね!

それではまた。