2015年12月14日月曜日

あなたとPostgreSQL 9.5、今すぐダウンロード

これはPostgreSQL Advent Calendar 2015の14日目の記事です。

昨日はtksyさんの「普段SQLServerを触っている人がPostgreSQLに入門するかも」でした。
tksyさんの体調が心配です。

さて今日は僕がPostgreSQLの本当のポテンシャルをお見せしましょう。
…と思ってたのですがここまでPostgreSQL9.5の話は0。
下手だなぁカイジ君、本当に読者がほしいのはコレ、PostgreSQL9.5の最新情報まとめ。
ということでPostgreSQL9.5の話をします。
PostgreSQLのポテンシャルについては明日の海外さんに期待してください。

1. PostgreSQL 9.5はいつ出るの?

出る出る詐欺進行中のPostgreSQL 9.5はいつ出るのでしょうか。
現在のPostgreSQL 9.5はBeta2です。
当初は年内に出る予定でしたが今の感じでは年明けと見せかけて海外勢のロングバケーション後で2月くらいかなと僕は思ってます。
実際のgit logを見るからには毎日激しく最後の追い込みがかかってるので年内リリースに微かな期待を持っても良いかもしれません。

PostgreSQL本体のgitのSumally

2. PostgreSQL 9.5で何が変わるの?

毎年PostgreSQLの新機能の話でスピーカー業で飯を食うのが僕の生業だったのですが今年はなんと一回も新機能ネタで話してません。
なので自分のスライドが無いので他人の褌で相撲を取ろうと思います!! 
ということでPostgreSQL界のダルシムこと@sawada_masahikoくんの資料が素晴らしいのでご紹介します。



あとPostgreSQL界のラーメンテロリストことぬこさんのブログも細かい情報がまとまっています。
リリース前のPostgreSQLを積極的に検証している情報が貴重です。

日々の記録 別館


3. で結局なにがオススメ機能なのよ

PostgreSQL新機能は色々あるんですけどもうコレだと思うんですよね。

INSERT ON CONFLICT構文


PostgreSQL9.5からMERGE文相当としてINSERT ON CONFLICT構文という機能が追加になりました。
これはMySQLのINSERT ON DUPLICATE KEY UPDATE構文相当の機能になります。
構文も非常に似ており

INSERT INTO table名 (column1, column2, column3) values (value1, value2, value3) 
     ON CONFLICT 制約名
     DO UPDATE SET ( カラム名 = 値 )

と書くことで同様の処理を実行できます。
MySQLと違うところは制約を書くことです。
これは冗長とも言えますが「primary keyなのかUNIQUE制約なのかを選べる」ということです。
今までORMでsave()というメソッドを実装するときに一旦SELECTでDBを検索したりUPDATEの例外を拾って処理していたようなところは全てこれで解決できます。
ついに念願のMERGE(UPSERT)文相当の機能が実装されたということになります。
この機能だけでも新バージョンを使う価値があると思います。
もうちょっと詳しく知りたい人は上記のぬこさんの検証結果を見てみてください。

PostgreSQL 9.5 UPSERTを試してみた

その他にもRow Level Securitなど目玉機能が盛り沢山のPostgreSQL 9.5。
是非、皆さんも試してみてください!!!

2015年12月7日月曜日

FuelPHPを快適に開発するためのNetBeansで設定まとめ

このブログはFuelPHP Advent Calendar 2015の7日目です。

昨日は@wataさんの「DBUnit拡張を使ったFuelPHPのテストを考える」でした。
今日はみんな大好きNetBeansの話します。
それでは早速行きましょう。

まずはNetBeansのダウンロードリンクです。

あなたとNetBeans、今すぐダウンロード


普段IDEを使ってない!って人はこちらも合わせてどうぞ。

PHPerがNetBeansを使いたくなる7つの理由


インストールが済んだら本題です。

1. ルーク、FuelPHPプラグインを使え!!

兎にも角にもまず入れるのはこれです。
@junichi_11さんが作っているこのプラグインを使いましょう。
@junichi_11さんがまとめてるブログはこちらです。

NetBeansではじめる FuelPHP


このプラグインを使うとNetBeans上からスケルトンを作ったり、正しくFuelPHPの補完や関数ジャンプ出来るようになります。
Coreのコードを読んだり、知らないメソッドを知るきっかけにもなるので是非ご利用ください。
僕がPHPStormに完全に移行出来ない理由はこのプラグインがあるからと言っても過言ではありません。
Symfony2書く時とかはもう完全にPHPStormなんですけどね。
完全無料環境なのでお財布に優しいです!!

2. その他の設定


■Windowsの人は必須


  • Show and change line ending
  • Change Line Ending on Save


Show and change line endingは改行コードをLFにしたり今の改行コードを表示したりします。
Change Line Ending on Saveはデフォルトの改行コードを指定して保存するときに一括して改行コードを変更して保存してくれます。
私はLF固定にしてます。
あとはここからはお好みですが私はvagrantプラグインを入れてNetBeans上からを操作できるようにしてます。
vagrantを操作するためだけにターミナルを開かなくていいので便利です。
更にwindowsはsshクライアントがデフォルトで入っていませんがvagrantへのsshは出来るようになります。
gitからvagrantの使い方まで知りたい!って人は@kenji_sさんの本を読むと全部書いてあります。



PHPUnitなどの設定はお好みでどうぞ。
個人的にはPHPUnitのバージョンにテストコードが依存することがあるのでvagrant側で実行する事多いです。
プロジェクトが一つでチームで同じバージョンを共有できる場合などはインストールしてIDE上で実行する方が便利だと思います。

3. インデントの乱れは心の乱れ

PSR-2に準拠しないとプルリクエスト送った時に怒られます(自分は怒られた事がある)
なのでフォーマットを指定しましょう。


  1. ツール→オプション→エディタ→フォーマット
  2. 言語を「PHP」
  3. カテゴリを「中括弧」
  4. クラス宣言とメソッド宣言を「改行」に変更




ちなみにPSR-2準拠だとインデントはタブでは無くスペース4つです。
そしてPHPの予約語は小文字で使用しなければなりません。
つまりNULLはnullです。
デフォルトは大文字なので変更が必要です。
やり方はNetBeansの設定ファイルを直接編集します。
Windowsでエディタで編集する場合は管理者権限が必要ですのでご注意ください。

  \インストールフォルダ\php\phpstubs\phpruntime\Core.php

私はデフォルトの場所にインストールしたので

  C:\Program Files\NetBeans 8.0.1\php\phpstubs\phpruntime\Core.php

です。
それを次の通り編集します。

define ('TRUE', true);
define ('FALSE', false);
define ('ZEND_THREAD_SAFE', false);
define ('ZEND_DEBUG_BUILD', false);
define ('NULL', null);

↓↓↓

define ('true', true);
define ('false', false);
define ('ZEND_THREAD_SAFE', false);
define ('ZEND_DEBUG_BUILD', false);
define ('null', null);

これで補完もバッチシです。


以上を設定すればプロジェクト作成時からFuelPHPの対応が完璧になったはずです。
快適なプログラミングライフをお楽しみください。

明日のFuelPHP Advent Calendar 2015@tanaka8comさんです。
楽しみですね!!

2015年12月4日金曜日

忘年会議を楽しむための3つのTips

この記事は大都会岡山 Advent Calendar 2015 4日目です。
明日に控えた忘年会議をより良く楽しむために大切な事をまとめます。
なお、私の主観で全て書くので責任は負いません。


■忘年会議って何?
Tipsに行く前にまずは忘年会議の説明をしておきます。

忘年会議

忘年会議は瀬戸内界隈のITコミュニティが年に一度、集まって酒を交えながら会議する場所です。
決しておもしろLTを見せびらかす場所でも転職しましたと報告する場所でもありません。
会議と言っても瀬戸内界隈で行われているオープンセミナーの日取りと実行委員会を決めるだけなので誰でも参加できます。
しかし残念ながら既に満席です。
最近人気すぎて3ヶ月くらい前には埋まってしまいます。
みんな早すぎて今年は広島勢が誰も参加しておらず、実行委員会の代表が実は居ないという問題が発生したりしてます。
来年参加しようと思ってる人はお早めに登録をオススメします。


というわけで忘年会議を楽しむためのTipsいきます。


1. 開幕を焦る者は渋滞を促す
忘年会議はバイキング形式なので各人で取ってくる必要があります。
60人を超える人が取りに行くと一気に大渋滞です。
そこでオススメは席が一緒になった人と担当を分けましょう。
食事を取る人と飲み物を取りに行く人を分けます。
これでまず並ぶ人が半分になります。
あとビールの冷蔵庫の前にいる人は積極的にビールのバケツリレーを行い、効率化しましょう。
料理を取りに行く人は一気に取り過ぎず最初の一回目はほどほどがオススメです。
どうせLT始まったら誰も見に行きません。
あとお腹すいたら二次会でラーメンを食べに行きましょう。
オススメのラーメンは山富士です。
僕は寺田さんと帰るつもりなのでほどほどで帰ります。

2. LTを制するものは座を制す
東京の懇親会のLTは技術9、ネタ1くらいの割合のLTですね。
岡山はネタ10、少なく見積もってもネタ7くらいです。
あっ僕は真面目な奴演る予定なので数に含めないでください。
TDD?知らない子ですね。
あと当たり前のようにマサカリ野次が飛び交います。
皆さんも空気読まずに野次を飛ばしてあげると登壇者が喜びます。
僕はガラスのハートなので勘弁して下さい。
多分マジ泣きします。
あと野次の相手をしてると5分あっという間です。
登壇者の精神力が問われる場となっています。
あと面白くなかったとしてもLTした人と話す機会が有るときは「面白かったです!」って言ってあげましょう。
「今回のはちょっと残念だったね」って言われるとマジ凹みします。
その後帰りの電車で真面目に反省会とか始まるので嘘でも面白かったと言ってあげましょう。


3. 知らない人に積極的に話しかけてみよう
忘年会議は色んな県のエンジニアと会える貴重な場所です。
どうしても知ってる人と話し込んでしまいがちですが勇気を出して声をかけてみましょう。
大抵みんなシャイなので声をかけられるのを待ってます。
隣の席に知らない人がいたらまずは名刺交換を起点に話しかけたりすると良いでしょう。
あと人気者が数名います。
そういう知ってる人気者に群がってる知らない人に話しかけると大抵同じカテゴリの人なのでオススメです。
Twitterのアカウントの交換をするとその後の繋がりもできるので名刺交換だけで終わらず次のステップとしてもオススメです。
ただエンジニアには時折「リアルでは紳士なのにTwitterだとド変態」みたいな人がいます。
そういう時はそっとリムーブしてください。
決して「ツイートが多いのでリムーブして今後はリストで見ますね」などの連絡は避けましょう。
そっと、そっとリムーブでよろしくお願いします。


さて今回は忘年会議を楽しむための3つのTipsを紹介しました。
明日はいよいよ合同勉強会&忘年会議です。
参加される方は楽しんで来てください!!

2015年12月2日水曜日

負けたことがあるというのがいつか大きな財産になるのは自分次第

このエントリーは、カープとメガフォンと私 Advent Calendar 2015 の2日目 です。
昨日は@tsuchimさんの「今年は今までで一番カープを応援したかもしれない」でした。
明日は予定が埋まってないので誰かカープが好きな人でも好きじゃない人でも是非ともお願いします。

さて今年、サンフレッチェはリーグを二年ぶりに制覇する反面、カープはCSに行くことすら出来ませんでした。
この違いは何かと考えたところ、やっぱ勝負所の勝てるかどうかだなと感じています。
実際にCSのかかったカープ最終戦。中日に0封されてしまったカープ。
そもそもその前に二日酔いのヤクルトに勝ち切れない時点でうーんって感じですがこれが今年のカープの勝負弱さを表していたと思います。
今年は優勝候補とすら言われたカープ。
1点差で負けた数はセパ合わせて1位。
また延長戦の末負けた数もセパ合わせて一位。
沢村賞を取ったマエケンに最優秀防御率のジョンソンが居てこの結果です。
これはもう貧打でしか応えは無いと思います。
緒方監督には来年はスクイズしてでも点を取る気概で打線を考えていただきたい所存ですね。

さてそんなカープですが僕は来年は大瀬良に期待してます。
野村や中田廉など去年の活躍に対して今年は今ひとつだった選手の一人です。
本来なら先発でローテーションを投げる選手が急にセットアッパーを任せられたのだから難しいのもわかります。
そして最終戦のあの涙。
私はあの涙を今年は糧に大ブレイクして欲しいと思ってます。
打たれた事も負けた事も勝負事なので仕方ない。
来年、マエケンが抜けたあとのエースを担うのは私は大瀬良だと思ってます。
そんな大瀬良に私が大好きな名言の画像を貼ってこの言葉を送りたいと思います。

2015年12月1日火曜日

PHPerでDBな自分がJJUG CCCで遊びに行ってきた!(ついでに登壇してきた

国内最大のJavaの祭典、JJUG CCCに遊びに行ってきました。
JJUG CCCは1000人を超える参加者申し込みがあります。
これを無料のカンファレンスとして回してるJJUGは素直にすごいと思います。

ということで個人的な感想を書くのですが個別のセッションについては書きません。
どれも面白かったし色んな人がまとめてるので部外者から見たJJUG CCCについて書こうと思います。

私の登壇資料が気になる方はこちらです。

PostgreSQLアンチパターンの話をいっぱいしてきた。


■所感

会場がまず新宿!お洒落!!
スピーカーが豪華!PHPerの自分でも知ってる人ばかり!!!
そして会場に行くと人!人!!人!!!
何から何まで凄くて圧巻でした。
実は2年前にも一度JJUG CCCに遊びに行ったことがあるのですがあの頃より遥かにスケールが大きくなってました。
これはJavaの影響力というかコミュニティが大きくなっていること、重要なポジションに居ることを表していると思います。
また同じように変わったところとして感じたのは女性の参加が凄く増えてました。
Java女子部が出来たり女性スピーカーがLTも含めると数名居たりといった変化もJavaの窓口の広さを感じます。
前日にPostgreSQLカンファレンスがあり、そちらは女性が少なめだったので尚更そう感じたのかもしれません。
2年前にお邪魔してた時は「地方における勉強会事情」と言うテーマでパネルディスカッションさせていただきました。

JJUG CCC 2013 Spring R2-6 [BOF] 地方における勉強会事情

この時から僕が中国地方をの勉強会にどれだけ影響を与えて変えていけたかは怪しいですがJJUGは明らかに進化してるなと思いました。


  • 若手不足とコミュニティの高齢化
  • 女子参加のハードルの高さ
  • ハンズオンなどの参加型セッションの運用コストの高さ
  • てらだよしおリソース問題


どれも僕が居た時にパネルディスカッションの内容として話題にあがりました。
でも現在のJJUGを見てると


  • 若手のスピーカー・幹事雇用と参加者層の拡大
  • 女子部の発足
  • 企業を巻き込んだハンズオンの開催


てらだよしおリソース問題以外は解決してるように思えます。
てらだよしおリソース問題は寺田さんがMSに転職されたりでまた色々と状況が変わってます。
ですが人手不足は変わらないので寺田さんを超える愛されるエバンジェリストの登場が待たれます。
寺田さんの話は良いとしてそれ以外の問題をたった2年で解決しているのは本当にすごいと思います。
例えば若手の多いLL系の言語ならまだしもJavaという流行りとは言い難いコミュニティで行えた事がすごいです。
同じように若手不足に悩む日本PostgreSQLユーザ会ではまだまだ解決出来たとは言えていません。
これは若手が本当に必要か?という前提あるのですが世代交代は大きなコミュニティの転機の一つだと思います。
この世代交代を上手く超えていける基盤がJJUGにはある=10年も20年も続くコミュニティだと確信しています。
その他の女子部やハンズオンについて鈴木会長は

「勝手に他の人達がやりたいとすすんで行なってくれてる、だから特に何もしてないんですよ。」

と仰っていましたが個々にセルフマネージメント力があることが今のJJUGの強みなんだろうなと感じました
また来年以降もどんなJJUGが見れるのか楽しみになってきました。

■Javaコミュニティ





ホントみんなJava好きなんだなぁと思いました。
いや僕もPHP好きですよ。
大きな声で言いますけどデータベース好きですよ。
それを好きでもない人が見て「あぁ好きなんだなぁ、良いな。」と思ってもらえるかは自信がありません。
でもJavaコミュニティの人たちを見てると「あぁ好きなんだなぁ、良いな。」と純粋に嬉しく感じました。
これはJavaって言う一つの言語に拘らず幅広く受け入れてくれる懐の深さがそう感じさせてくれるのだと思います。
実際に僕はCCCで登壇した2回ともJavaの話は1Byteもありませんでしたし、普段からJavaのアウトプットはありません。
それでも暖かく受け入れてもらえるところがJavaコミュニティだと思います。
僕はそういうJavaコミュニティが大好きなんだなと再確認しました。

■そーだいに対する皆さんの反響について




















自分の思っているキャラコンセプトと世の中へ伝わるキャラコンセプトは必ずしも一致しないという例を体験しました。



ただの真面目なおっさんですみません。


ということで色んな方に会えて色んな刺激を貰えたイベントでした。
やっぱJavaコミュニティは最高だぜ!!

PostgreSQLカンファレンスに行ってきた

年に一度のお祭、PostgreSQLカンファレンスに行ってきました。
先週の金曜日なのでもう随分時間が立ってしまいましたがまとめです。
まず、セッションはなんと!全然!!!聞いてません!!!!!
でも一応朝一から行ってお手伝いはしました。



あとPostgreSQLカンファレンスは支部長は地元のお土産を持っていくというタスクがあります。
見事に7000円分相当を東京駅に忘れるというアクシデントがありました。
無事帰ってきたのですが本当に日本で良かったと思います!日本人最高!!
というわけで、全然セッション聞けてないのに忘れ物取りに行ったり仕事したりで忙しい時間でした。
本当は国府田さんとか海外さんとか須藤さんとか聞きたいセッションいっぱいあったのですが聞けなかったものは仕方が無いので下のまとめ読んどきます。

PostgreSQL Conference 2015 #pgcon15j のまとめ


ちなみに僕は最終時間のセッションだったのですがマサカリ尖そうな人は海外さんのセッションに丸っと行ったため誰もツイートしてませんw
資料が気になる方はこちらを見てください。

PostgreSQLアンチパターンの話をいっぱいしてきた。


PostgreSQLカンファレンス、何度行っても良いカンファレンスですし色んな人と話せて楽しかったです!!
次は3月にシンガポールで大きなPostgreSQLのカンファレンスがあるそうです。
CfPをちょうど募集中なので勉強会駆動海外旅行とか皆さんオススメです。

http://2016.pgday.asia/#callforpresentation

ということで今年も残り一ヶ月となりました。
ミカエルさんが言うとおりに今月中に本当にPostgreSQL 9.5が出るか楽しみにしたいですね!!

PostgreSQLアンチパターンの話をいっぱいしてきた。

見せてあげますよ、本当のPostgreSQLアンチパターンを。
とか言ってたわりに半分以上は削除フラグの話でした。
逆にそれが万人受けしたみたいでちょっとはてブいっぱい付いて承認欲求満たされました。
ということでスライドです。


190枚を超える超大作!!とか思ってたけど時間配分バッチシでした。
3回も実践すると3回目はアドリブ効かせたり出来て余裕がありました。
リハ大事w

で本題の伝えたいことですがあとがきツイートしてるのでまずそちらを。











特に最後のツイートが全てだと思ってます。
個人的な経験談を交えて紹介しましたがベースの話は全てこの3つの本を読めば理解できると思います。
あとはホントもっとみんなも経験の共有を積極的にしてほしいですね。
なのでslackやMLで是非「こんな事困ってるんだけど?」とか「これってどうなん?」ってのを投稿してください。
みなさんのお言葉お待ちしております。
あと、みんなに「そーだいさん、苦労されてるんですね」とか「グレて金髪になったんですか?」とか言われました。
大丈夫です、僕は今はMySQL使いです。