2014年9月30日火曜日

Doorkeeperの参加者一覧.xlsxのDownloadを自動化する

今年だけで二回ほど表題のことをする必要があったんでメモとして残します。
実際の手順としては


  • さくらクラウドにubuntuサーバを建てる
  • 環境構築
  • cronで実行


です。
最初はwgetで余裕だと思ったらCSRF対策がログイン画面にされてた。
なので力技だけどSeleniumで対応しました。
SeleniumでFirefoxを立ち上げてダウンロードするだけなので実際のコードは大した事無いですが一応Githubに残しました。

getDoorkeeperExcel


環境構築の方法と設定はREADME.mdに書いてる通りです。
SeleniumはPythonで動かしてますが2.7以上であれば動くと思います。
(Linuxに標準でついてくるPythonで動きますので3系のinstallは不要です)

例外処理とかそういうのは面倒くさい入れてないのでちゃんとしたい方は修正してください。
他にもログインとか必要なWebサービスのダウンローダーとしては簡単に用意できます。
なので請求書落としたりなどご自由にカスタマイズしてお使いください。

ついでに落として来たExcelをWebのTableで表示するのも一緒に作ってます。
参加者アンケートを公開したいときなどにお使いください。

Doorkeeperの参加者一覧.xlsxをhtmlのTableにする

2014年9月24日水曜日

FuelPHPで始めるモダンPHP開発!!

9/20にサテライトキャンパスひろしまで開催されたオープンソースカンファレンス2014@広島に参加して来ました。

Twitter まとめ:オープンソースカンファレンス2014 Hiroshima


今年で4回目となり、毎年スタッフとして参加してますので今年も迷うこと無く参加しました。
その中で今年は

FuelPHPで始めるモダンPHP開発!!


とPostgreSQLでは無く、FuelPHPユーザ会として参加してきました。
(勿論、PostgreSQLユーザ会としてブースではベンチマークの発表とかしてましたよ)
で当日の資料はこちらです。



資料としては

今からFuelPHPを使う人が知るべき5つのこと+1


の下にあるスライドをリメイクしました。
このページが未だに僕のブログではそこそこアクセスがあります。
ですので需要があると思い、書き直しました。
またFuelPHPを始めたい人は下記のリンクも参考になると思います。




半分以上の時間はデモだったのですが参加して下さった方にインパクトは与えられたでしょうか?
一番反響というか会場がざわめいたのは



だったのが意外でしたw
Profilerは知ってると結構便利なのですが特に説明しているサイトも少なく知らない人も多いのかもしれません。
僕としてはIDEやvagrantの方が反響が大きいと思ったのですが


  • 使ってる人からすると普通
  • 使ってない(知らない人)からするとよくわからない


状態だったのかも知れません。
それに対してProfilerはわかりやすいし簡単に表示出来るのでインパクトがあったのかもしれませんね。
あと会場で「おぉ!」って言われると気持ちいい事がわかりました←
またセッションは強豪ひしめく最終枠だったのですが20人以上の方に来ていただきました。
やはりと言うかPHPを仕事にしてる人が多いのでまだまだPHPフレームワークや開発手法については需要がありますね。
なので機会があれば今後もこういった情報をシェアして行こうと思います。

といことで今年もとても楽しいOSCでした。
今年はスタッフに学生が多く、今後の広島のイベントも楽しみですね!!
来年も開催される事が決定されているので来年も楽しみにしたいと思います。

2014年9月9日火曜日

2014年版 WEB系の開発をするために必要な10の開発環境 ~Windows~

ずっと使ってたZenBookのマザーボードが亡くなられ、初期化されました。
なのでこれを機に開発環境を見直しました。
2年前のまとめはこちら

WEB系の開発をするために必要な10の開発環境 ~Windows~



この頃からはツールも変わったモノもありますしそのままのモノもあります。
ですが必要な項目は依然変わってないと思いますので項目は踏襲します。



1 IME

前回はGoogle日本語入力をオススメしました。
この二年で更に使いやすくなり、もうGoogle日本語入力無しでは生きていけませんw
便利な機能として

郵便番号を入れると住所に変わる
「きょう」→2014/09/06のように日付に変換できる(ことし、あさって等でも可)
「くりえいと」→Createのように英単語の読みで英語に変換してくれる

などです。
顔文字やZ+Hでの矢印なども便利ですね!
AndroidやMacOSなどでも同じ変換が出来るのでマルチプラットフォームでストレス無く使く入力出来るのは嬉しいですね!!
また、流行りの語句なども変換してくれるのが非常に助かります。


2 ブラウザ

ブラウザ事情もIE・Firefox・Google Chromeの3強状態は変わらず。
ただChromeの開発者ツールが一番使いやすいと思うので開発はChromeメインにしてます。
Chromeの開発者ツールの使い方はドットインストールがわかりやすいのでオススメです。

Chrome Developer Tools入門 (全10回)


FirefoxもIEも開発者ツールは付いてるのでブラウザ依存の不具合とぶつかった時などに使えると色んな時に役に立つので調べておいて損は無いですよ。

3 テキストエディタ

僕は今も昔もIDE派です。
でも時々ちょっとconf触ったり、メモ作ったり、直接HTML触ったりするときなどテキストエディタは必要です。
そこで僕が使ってるのはSakuraEditor
矩形選択も置換も使いやすいのでログを見たり集計するときにも役立ちます。
また常駐アプリとしてついてくる機能のgrepが非常に便利です。
Windowsだとソース内のキーワードでgrepしたい時とか困るんですよね。
それがバッチシ対応してくれるし、対応箇所も一覧で出してくれるので非常に使いやすいです。
また補完は辞書のパッケージを追加すれば対応してくれます。
PHPをちょっと書く程度なら十分ですよ!
そしてそんなSakuraEditorの対抗馬なのがSublime Text 3ですね。
UTF-8の環境で使うなら補完、拡張性、どれをとってもSakuraEditor以上のパワーです。
実際に僕はWinSCP(後述)のデフォルトエディタはSublime Text 3をデフォルトにしてます。
一括置換も便利ですしテキストエディタ界の中心的存在です。
長い間、秀丸エディタが築いてきた牙城を崩す存在ですね。
Sublime Textについてはいい本が出てます。



電子書籍版もあるのでSublime Textを始める人は一度読んだ方がいいですよ!!

4 IDE

昔はEclipseを使ってましたが今はすっかりNetBeans使いです。

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


特にFuelPHP使ってる人にはNetBeansが超絶オススメですね。
使い方は上のリンクでも紹介してますが補完もバリバリ聞くしHTMLやJSもバッチシ対応です。
ユニットテストも宣言元にジャンプもデバッカもバッチシです。
var_dump開発しなくて済むとすごい効率が上がりますよ!
ただ最近、Symfony2の時にNetBeansの非力さを感じる時があります。
Symfony2使うとすっごい最初のロードが長いんですよね(´・ω・`)
そんな人には有料ですがPHPStormがオススメです!!
Web系の補完も抜群でNetBeansより軽快です。
Symfony2やCakePHPなどのフレームワークで開発する人やJSもバリバリ書くようなフロント寄りの人は買ったことによるメリットが間違いなく大きいです。
お試し無料期間もあるのでまずは触ってみるのがいいのではないでしょうか。
あと何かと面白いイベントしてることがあるので@samuraismウォッチするのがオススメです。
それと




らしいのでセール待ちせずにサクッと買ったほうが良いと思います。
ツイッターのレスポンスとかメール対応がすごく優しく日本人にも安心対応なのも良いところですね。

5 ローカル実行環境

PHPer御用達はやっぱりXAMPPが主流だと思います。
ですが開発プロジェクトが増えるたびに度重なるバーチャルホスト。
そしてPHPやその他のライブラリのバージョンがプロジェクトごとに違って繰り出されるエラー。
そんな経験皆さんありませんか?
それを解決するにはVMです。
僕は以前からVirtualBoxを使っています。
VirtualBoxはお手軽にWindows上にVMを建てれるので簡単です。
ですがOSのインストールからやらねばならず、ネットワークの設定等のインフラ系の知識も必要とします。
たまになら良いのですが頻繁に、しかも「今すぐ開発を始めたい!」という時には高いハードルになってしまいます。
そこで活躍するのがvagrantです。
vagrantはVMのラッパーとパッケージ化を同時に提供してくれます。
ViretualBox, VMWare, AWSなどのVMに対応しており、高速にかつシンプルにVMを作成できます。
そしてVMへのアクセス、管理、設定も簡略化してくれます。
これにより、開発環境の依存関係に悩まされることなく、そして多くのインフラ系知識のブラッシュアップも必要なく開発に集中できます。
しかもNetBeansにプラグインを入れるとvagrantをNetBeansのGUIで操作できます。
SSHもCygwinのような黒魔術を使うこと無くNetBeansからアクセスできます。
すべてがNetBeansで解決できるので作業が捗ること間違いなしです!!

6 RDB

vagrantの出現によりlocalにDBを入れることがなくなりました。
これによりlocalにアパッチやDBを入れないので開発しない時に無駄なプロセスが起動しなくなりました。
こういうところにもVMを使うと良い点がありますね。

7 DB管理ツール&SQLエディタ

SQLエディタは自分の中ではA5:SQL Mk-2が一強です。
前回ご紹介した時はまだSSHトンネルも無く、PostgreSQLにアクセスするにはドライバーが必要でした。
現状ではSSHトンネルが可能なのでセキュアに接続できますしvagrantへのアクセスも簡単です。
またドライバーが必要ないのでダウンロードして解凍したらすぐに使うことができます。
このお手軽さにプラスして各種機能が非常に強力です。
特にテーブル定義書の出力とER図のリバース自動生成はいつも助けられています。
DBにもマルチ対応なのでMySQLとPostgreSQLでツールを変える必要がないのも非常に助かります。
ただしDB管理ツールではないのでDDLの必要な作業はGUI上ではできません。
(SQLを発行すれば当然出来る)
そこで外部制約やテーブル設計時に強力なのがMySQLならMySQL Workbench、PostgreSQLならpgadmin3です。
DBAツールなので簡単にテーブルの作成や編集もできますし外部制約やDB固有の機能にもバッチリサポートしてます。
それぞれグラフィカルな実行計画の結果やレプリケーションの設定、confの変更なども可能です。
phpMyAdminやphpPgAdminを覚えるよりセキュアで断然便利なので是非活用してみてください。

8 ファイル転送ツール

今はもうWinSCP一強です。
SCPの管理の使いやすさもですが自動同期の機能や開くファイルのエディタの指定など細かく手が届いて便利です。
地味にシンボリックリンクを作れたりパーミッションを変更できたりするのでCGIが苦手な人でも大丈夫です。
更にノートン コマンダー インターフェイスを使うとキーボードでの操作に特化するそうです。
僕もこれから効率向上のために試してみようと思ってます。

9 バージョン管理ツール

こちらもSVNから完全にGitに移行しました。
NetBeansからGitは直接管理できるので基本的にはNetBeansのGUIで触ってます。
しかもNetBeansは自分自身の保存ログとGitのコミットログを使ってソースのDiff出せたりするので超絶便利です。
マジこれだけでもNetBeans使う価値あります。
でもなんでもかんでもNetBeansのプロジェクトに出来るわけではないと思います。
そんな時はSourceTreeがイケてます。
GUIで操作でき、Githubへの連携も最初から念頭に置かれています。
ちなみにプライベートな開発をするときは僕はbitbucketを使ってます。
プライベートリポジトリでも無料なのでちょっとした開発の時は便利ですよ。
また社内で「クラウドにデータを置くのはちょっと…」って時にサーバーを社内に建てることになったらgitbucketがgithubのクローンの中でもダントツオススメです。
Scalaで作られてますが日本人が作者なので情報も多く、環境構築、アップデートともにすごく簡単です。
実際に僕も社内で使ってますがGUIでリポジトリが管理できることはもちろん、プルリクエストとissuesによるチケット管理はすごく便利です。
またWikiやREAD.MEなども対応しており、プロジェクトの暗黙知を無くすプラットフォームが成熟している感じです。
個人的には開発者だけで回すならredmine無しでgitbucketでやりとりしたほうがうまく回る気がしてます。

10 SSHクライアント

最近はTeraTerm proを使ってます。
Tera Term Menuを使うとTera Termのアクセスするサーバの管理もできます。
実際にはvagrantを使い出すとSSHを使うことも減ってきました。
昔はサーバに入ってvimでゴリゴリすることもあったのですがそういう時はWinSCPでは入ります。
なのでほとんどのことは別のツールでことが足りるのですがやはりコマンドラインが必要なこともあります。
昔はPuTTYを使ってたのですがPuTTYもかなり良いので好みの問題かなと思います。


と言うことでVMが出てきたことで環境依存の悩みも無くまりました。
またここでは説明しませんでしたがPHPUnitやBehatなどでテストが充実し、デバッカを使う機会も減りました。
この様に環境がどんどん進化してますのでぜひ一度調べてみると良いと思います。
また今回の内容でPHPerの最新環境に興味が出た人は次の本が参考になります。


また2014/9/20に広島市でオープンソースカンファレンス広島が開催されます。
ここにFuelPHPユーザ会として参加します。
ブースも出しますし登壇もしますので興味がある方は是非遊びに来てください!!

FuelPHPで始めるモダンPHP開発!!


ということでWeb系の方はこれを機に環境を見なおしてみると良いかもしれません。

2014年8月12日火曜日

PHPerの書くコードの保守性・管理性が劇的に上がるのスマートな方法

みなさんお仕事の進捗どうですか?
今日は



こんな軽はずみな発言をしてしまったが故にネットで触れては行けない3大炎上案件について触れる。

※ネットで触れては行けない3大炎上案件とは?
  • Excel関連(スクショとか)
  • 宗教(エディタとか)
  • PHP
のこと。

で今話題の元ネタを既に@sue445さんが魚拓してくれてる。

(炎上したら即魚拓とれるとか世の中ホントに怖い便利になったもんだ。)
なのでもしかしたら炎上して灰になるかもしれないけど勇気出して対抗記事を書く。

■はじめに

まず最初に言っとくけどPHP特有のずっと変わらないスマートな書き方ってあんまり無い。
ずっと変わらないのはPHPとか関係なく世間一般的に読みやすいコードの共通事項。
そういうのは世の中にいっぱいあるのでそう言うところで学ぶと良い。
例えばまずリーダブルコード読む。



これを読んだら
  • 変数のスコープは小さくしよう
  • わかりやすい名前を付けよう
  • ロジックはシンプルにしよう
とか自然と考える。
そしたら使いまわされるたった一つの変数に全部配列で突っ込んで管理とか数千行あるメソッドとか無くなるはず。
これだけで保守性とか管理性が劇的に上がると思う。
こういうのは言語関係ないのでみんなが学んでいくべき。
そして先人が知の高速道路を用意してくれてるのでありがたく活用するといい。

結論これで8割くらいの問題が解決すると思う。
けどそれ言うと終わっちゃうので読みやすいコードを書くことを踏まえた上でPHP特有の事を書いていこうと思う。

1. PHPの今を知る

まずPHPの最近の事情を知るべき
当たり前だと思うかもしれないけどまずホントこれ。
例えば非推奨の関数のereg()使ってる人とかまだ見かける。
そういうのを知りたかったら

PHP:The Right Way

を見ると良い。
原文はGithubで最新情報に常に更新されてる

Githubのリポジトリ

基本の項目を読むだけでもヒアドキュメント構文や三項演算子にも触れているので初級者PHPerにはとても有効だ。

PHP:The Right Way 基本の項目

ただ個人的には変数の宣言については一概に宣言を省略すれば良いとも言えないと思ってる。
たとえば
$fuga = hoge();
みたいな既存のコードで変数もメソッドも一見して意味がぜんぜんわかんないコードと出会った時。
ホントはちゃんとテストコードがあってリファクタリング出来ればベスト。
だけどこんなコードがあるようなプロダクトはテストコードも無い。
しかも$fugaのスコープが長すぎて消すことすら不安。
そんなときに
$users = $fuga;
として$usersを使うのは良いと思う。
これはコメントでもいいけどこういうちゃんと自分なりに意図があってすることには意味がある。

と話が脱線したね。
PHP:The Right Wayを全部読んだら大抵のことは出て来る。
コーディング規約のPSRなんかは新規案件なんかは積極的に取り入れた方が良い。
でも
  • PHP のオブジェクト指向
  • クロージャなどの関数型指向
  • PDO
  • Composer
なんかは読んだだけじゃすぐにはわからないかもしれない。
そういう時はわからない箇所にフォーカスした本を呼んだり実践で試したりを繰り返しやると良い。
オブジェクト指向とかデザインパターンとかいきなり全部スーッと入って来ない。
PHPの良い所はそういうことに対しての正しい情報(ドキュメント)がちゃんと用意されてる。
そして同じくらいダメな情報も用意されてる…
ここで大事なのは情報の選択。
なのでPHP:The Right Wayを更新してるエンジニアのTwitterをフォローしたりすると良い。
(正直自分も完璧である自信はないから今繰り返してる途中)

2. フレームワークを使う

もし今から新規開発をするとしてプレーンなPHPだけで開発をするのはやめた方がいい。
工数もかかるけどそれ以上にオレオレで実装した箇所を保守するのが大変になる。
だからオープンなフレームワークを使うこと。
ただ残念なことにPHPにはRuby On Railsみたいな標準となるフレームワークは無い。
しかしPHPにはオープンなフレームワークが沢山ある。
そんな中でちょっと前までは4大フレームワークは
  • CodeIgniter
  • CakePHP
  • Symfony
  • Zend Framework
と言われていた。
でも最近は
が勢いのある。
ただCakePHPも3系に上がったりSymfony2も2.5が出たりとしてる。
既にそっちを使ってる人が無理に乗り換える必要はない。
でも僕はFuelPHPが好きだからここを読んだ人にはFuelPHPを薦めておく。
LaravelとかPhalconとかYiiがすごくいいよ!って人が居たら是非とも良さをエントリーを書いて伝えて欲しい。
(それを見て僕も、もしかしたら乗り換えるかもしれないw)
でここから先は便宜上FuelPHPを選んでくれたとして話する。
まず知っておくことは
これらが必ず助けてくれるはず。
これらを見てまずはインストールして試してみるとFuelPHPの良さにすぐ気づくはずだ。
え、もっと親切なHow Toが欲しい?
そういう人はこれを読むといい。
FuelPHPの使い方だけじゃなくてIDEやPHPUnitを使ったユニットテストとか開発環境の使い方まで網羅してる。
「最近のモダンなPHP開発を知りたい!」って人も読んでみるといいと思う。
なんかFuelPHPの宣伝になってしまったけど開発をするならなんらかのフレームワークは使った方がいい。
その中でも人気のモノは人気の理由があるからそこに乗っかった方がいい。

3. なんでもかんでもCMSを辞める

さっきのフレームワークの延長上にCMS(コンテンツマネジメントシステム)がある。
これは完成されたアプリケーションを利用するというものだ。
もし、今必要とされてるプロダクトが完全にマッチしてるならCMSを使うといい。
けどPHP界隈では

  • ECサイトはとりあえずECCUBEのカスタマイズ
  • フレームワークのようになんでもWordPressを使って制作

みたいなことを見かける。
それぞれ優れたCMSだけど得意不得意はある。
これはフレームワーク以上に明確にある。
たとえばECCUBEは確かにECサイト向けのCMSだけど注文カートをカスタマイズは大変。
WordPressは本来ブログを作るものだ。
それを無理矢理カスタマイズしてECサイトや複雑なWebサイトにするのはイケてない。
例えばポータルサイトならMagic3が適してるしECサイトはZen Cartだってある。
もちろんブログ付きのホームページを作ったりするのにWordPressは抜群の効果を発揮する。
つまり適材適所が大切。
そしてどれもマッチしないならどれかを無理矢理カスタマイズするよりはフルスクラッチで作ったほうが良い事が多い。

まとめ

結局のところ



これ。
そうすると自然と自力も上がるし保守性・管理性も上がる。
自力が上がれば他の言語に手を出したり(そしてPHPを卒業したり)PHPの良し悪しを汲んであげれるはず。
ということで


コレ最強。
以上がそーだい的な保守性・管理性を劇的に上げる方法。





おまけ

PHPの保守性・管理性とは関係ないけどおまけ。


1. PHPの苦手なことは他に任せる


もう身も蓋も無いけどPHPはみんなの知ってる通り万能な言語ではない。
CMSと一緒で得意不得意があるし特に不得意なところに関しては滅法弱い。
これは変数の扱いが曖昧とか関数の命名規則が統一されて無くてイケてないとかじゃない。
こういう言語としてイケてないところが致命的と感じる場合はPHP以外の言語を書くしかないかな
(「他の言語を書く」の選択肢には転職とかも含めてね)

ここでの苦手なことは「実際にPHPでこれをやろうとしたら苦行」みたいな事。
例えば
  • 並列処理
  • 複数プロセス間(複数アクセスに対してとか)のリアルタイムなデータ共有
とかはもう言語仕様としてそうなってるのでそこを超えるのは大変なのは当たり前なんだけど大変。
プロセス間通信が必要な処理とか書いてもCと変わらない。
(Cが簡単と言う人には簡単かもしれないけど僕は違った)
マルチスレッドとかもそうだけどこういうのはC#とかJavaで書いた方が幸せになれると思う。
(最近だとErlangなのかな?)
他にもinputとoutputがハッキリしててアクセスが多くて速度が重視するような場合(RESTAPIとか)はPHPで書くよりScalaで書いたが絶対幸せになれる。
WebSocket使うような非同期処理ならNode.jsとか使ったほうがいいと思う。
型安全とかもそうだけどプロダクトとしてそちらが適してるならそっちを使ったほうがいい。

ただPHPも得意なことはある。
シンプルなWebサービスを作るときは簡単だし高速。
開発環境はライセンス費を掛けずにIDEもあるしvagrantなどツールも充実してる。
TDDやBDDもできるしテストの自動化みたいなひと通りの流行りの事は出来る。
それとPHPは別にセキュリティが苦手なわけじゃない。
セキュアなWebアプリって観点だと最近のモダンなフレームワークでちゃんと作れば問題ない。
セキュリティに関しては言語関係なくセキュリティに対する知識とフレームワークやミドルウェア含めバージョンアップ出来る状態の維持が一番大事だと思う。

2. 保守性はコードも大事だけどデータも大事


コードの保守性も確かにとても大事なんだけどそれと同じかそれ以上にデータも大事。
具体的にはクソなDB設計の上には何を作ってもクソ。
例えばどんなに綺麗に設計してもtext型で巨大な文字列とか入ってると*を使うORMが死ぬ(速度的に)
他にも1テーブルに100カラム以上みたいなSQLアンチパターンがあるとクエリビルダでも死ぬ(つかSQLが死ぬ)
でアプリケーションの寿命よりデータの寿命の方が長いからデータの闇は深い。
あるあるネタだけど5年前くらいのアプリケーションのリプレース案件。
コードは綺麗に出来るけどデータは既存から持って来ないといけない。
そこで立ちはだかる数百のテーブルと複雑に絡み合うViewとトリガー…みたいなとき(この場合は担当者が死ぬ


ということでコードに対する向上心と同じようにデータ設計に対する向上心も持ってほしい。

2014年8月4日月曜日

IT勉強会について本気出して考えてみた

なんか広島が誇るスーパーハッカーひむらさん(以下:ひむひむ)が広島の未来に憂いてるみたい。

地方のIT勉強会ってこのままで大丈夫なのかな


僕から見たひむひむはこの一年で中国地方を代表するエンジニアのポジションを築き上げたのは間違いない。
元々彼自身に色んな魅力があった上に彼の行動力で為した結果だと思う。
そこに大きな影響を与えたのはオープンセミナー広島やすごい広島を始めとする勉強会の存在。
そんな彼だからこそ勉強会の良さとか大切さとか、そしてこのままでは無くなっていく危機感みたいなモノを感じてるのかなと思う。
実際にそれは勉強会ブームの終息と共に僕も強く感じてる。
例えば去年、こんな話題でJJUG CCCに登壇させていただいた。


■当日のTwitterまとめ
JJUG CCC 2013 Spring R2-6 [BOF] 地方における勉強会事情

■当日のふりかえりブログ
JJUG CCCに参加&セッションしてきた

■当日の資料



僕はこの資料のとおり、勉強会はコミュニティに育ててもらってるしすごく楽しいものだと思ってる。
だけどこの前後くらいからゲーセンの格ゲーと同じ「緩やかな死の足音」みたいなモノを感じてた。
実際に今まで主力で勉強会に来てた人が少しづつ勉強会から離れてる。
例えば


  • 結婚したり子供が出来た
  • 転職等で遠方に転居した
  • コミュニティの取捨選択の判断が厳しくなった
  • 交友関係が成熟していて発展がなく、勉強会として集まる必要があまりない
  • そもそも勉強会に対するリソースやコストが割に合わない


などなど。
他にもいっぱい理由があると思うけど何らかの理由で人は減ってる。
で更にこの後、Twitterでこんなことがあった。

Twitterまとめ - 勉強会について本気出して考えてみた

この時、第二回 中国地方DB勉強会は正直コンテンツとかタイミングとしては自信があった。
(どれくらい自信があったかと言うと100人入る部屋借りたくらい)
だけど結果としては思ったよりも集客は少なかった。
これは

・ターゲットに対するアプローチが下手だった
・コンテンツの魅力を自分が伝えきれなかった
・そもそもDBというコンテンツ自体がみんなの興味を獲得できてないのかもしれない

などなど他にも沢山色んな理由があるんだろうけど僕は

とりあえずで勉強会に参加してくれる時代は終わった


つまり勉強会ブームは完全に終わったって思った。
これは格ゲー時に既に通った道だったのですごくハッキリと感じた。
なのでこのまま放っておくと参加者の新陳代謝は無くなってどんどん人が減っていくと思う。
そこでこの時も言ったけど


と思ってる。
実際にゆるふわ系というか身内にまったりやる集まりはそれなり見かける。
だけどそれだけじゃあ勿体無いと言うか緩やかな死は止めれないと思ってる。
そこで自分が考えた一つが次のとおり。

1. 参加者の新陳代謝を上げる

そもそもなぜ僕がお金が使える勉強会も必要だと思ってるか。
まず色んなスタイルで色んな人が楽しめれば良いんだけど本当に聞きたいこと(日頃経験してない知識)って一日じゃあなかなか手に入らない。
だからやっぱすごい人に教えてもらうのが手っ取り早いしそういう情報を仕入れるアンテナを作る必要がある。
それに一番効果的なのは勉強会にその手の達人を呼んでコネクションを作ること。
(インプットを育てる)
その次に大切なのが自分のアウトプットを増やして知識の定着をすること。
だからまずビックスピーカを呼ぼう!!
ってのが建前。
実際のところ、兎にも角にも参加者の新陳代謝の活性化には新しい参加者が必要。
そこで勉強会に来たことが無いような人が来るきっかけになるような強い動機にはやっぱ

  • 即実践投入できる知識や経験の取得(ハンズオンとか)
  • 名前や概要を見ただけで聞きたくなるようなスピーカー

みたいなわかりやすい魅力だと思ってる。
(当然他にも 勉強会の色気 を出すような工夫も日々必要だけど)
そこで遠方の講師を呼ぶってなると最低限、交通費と宿泊費はかかる。

# いつもノーギャラで来て頂いてる皆様。
# そしてボランティアでやってくれてるスタッフの皆様
# 本当にありがとうございます。

で実際にそういう人たちに来てもらうセミナーとかは3000円~5000円とかする。
例えば第1回 中国地方DB勉強会の例を取ってみるけど

■第1回 中国地方DB勉強会
※当日の内容は動画も資料もあります

■関東の講師(この時は奥野さん)を呼ぶ
・交通費 約4万円
この時、奥野さんは宿泊費しなかったけど宿泊費する場合はいつも上限1万円で宿泊費も出す

■設備費
・会場費 4,280円+ 通信費 600円
大学の施設や県の施設を借りると安く済むので助かる
(この時は県の図書館を借りた)
広島市内で100人近く入る会場(例えばRCC文化センター)を一日借りると5万とか超えちゃう。

これは大垣さんには大変申し訳無かったけど交通費自費で来てもらった上でこの状態。
スタッフのみんなも交通費とかボランティア。
で参加者はスタッフ抜くと13人くらい。
単純に人数で割ったらこれでも参加費3000円超えちゃう。
こうやって考えると有料セミナーの参加費が3000円~5000円かかるのは適正価格だ。
しかも実際に地方から東京に行ってセミナーを聞く交通費を考えると格安だ。
と考えてくれるのは訓練された勉強会参加者だけ。
ちょっと興味があるくらいの人に3000円なんてハードル高い。
中国地方DB勉強会だって地元の人が参加費3000円だと参加しただろうか?
だから参加費はできるだけ低価格に抑えたいのが運営側の本音。
そうなると自腹を切るリスクとか大量の人数動員が必要になったりとかで本当にハードル上がる。
そこでお金を使える勉強会の存在が大事になってくる。
例えば中国地方DB勉強会はJPUGが予算出してくれるからコミュニティの援助のお陰で参加費を0円に抑えれてる。
オープンセミナー広島オープンセミナー岡山は地元企業の協賛のお陰で参加費を0円。
こういう勉強会の実績をどんどん積み上げて勉強会を支援する動きがもっと活発になってくれば色んな取り組みが出来るようになるはず。
例えばTDDBCなんて超素晴らしいイベント。
だけど今年は開催されない…
(スタッフではないので詳しい理由は知らないので下記はあくまで推測)
例えばハンズオンは講師(TA)の数が必要になるし準備も大変だ。
さらに参加費で予算を賄うのであれば運営のリスクも大きい。
だから毎年大体的にやるのは大変だと思うので仕方ないと思う。
(TDDBCなんかは何回も参加するイベントでも無いので母数が少ないと需要がなくなるの早いし)
でもこれを支援する仕組みがあったら来年は開催されるかもしれない。
そしてそういう仕組を作るための基盤作りを今自分は頑張ってるつもり。
そしての基盤作りの中で新規の人が来るきっかけ作りをしてる。

2. 勉強会に来てもらった人を育てる

お金のかかった勉強会に来てもらった。
そしたら次はもっと勉強会を好きになってもらう必要がある。
そういう時にゆるふわ系の勉強会はすごく重要なポジションになってくる。
あの身内で同じ趣味の話をしてる時間は至高の時間と言っても過言じゃない。
だからそういう勉強会もすごく大切だと思うしそんなイベントの方が楽しいとさえ思う時がある。
そしてそういうのはひむひむがすごい頑張ってる。
だから僕は人を集めたら今度はひむひむのようなコミュニティに上手く誘導する必要がある。
なので僕は中国地方DB勉強会はPostgreSQLに限らないしエンタープライズもWeb系も題材に取り上げて色んな人に来てもらうし色んなコミュニティへの橋渡しをしてる。
中国地方DB勉強会やオープンセミナー以外の他にもWeb Touch Meetingとかオープンソースカンファレンス@広島とかそういう集客の要素と橋渡しの要素がすごくあると思う。
そういう橋渡しを行いながらもっと勉強会を楽しむ人を増やして参加者の滞在率を伸ばしたりする必要がある。
そういう場所に来るのは100人集めて1人かもしれない。
だけどその1人が居なくなったらそれこそ緩やかな死から末期の状態になっちゃう。
だから懇親会だったり、日頃のコミュニケーションだったり、色んなところで何らかの楽しさが芽生えてほしいしそういうきっかけ作りは大事だと思う。
そういうところは岡山のコミュニティは上手だなって思う。

3. コミュニティ(勉強会)の一部になってもらう

一番わかりやすいのはスタッフ。
でもスタッフだけがコミュニティの一部じゃない。
ブログを書くまでが勉強会とか言ったりするけど「○○勉強会に参加しました!めっちゃ面白かった!!」ってブログ書くだけでもコミュニティの一部。
それを見た他の人は興味を持つし、それを見つけたスタッフは嬉しくてその日のビールは旨さ10倍。
そしてそんなコミュニティへの関わり方で一番簡単なのはひむひむ言う通り、イベント情報の拡散だと思う。
ひむひむも言ってるけどSNSでは今は色んなシェアの仕方もある。
僕はもっとレイヤー低くていいと思ってて職場の昼休憩の話題にしてくれるだけでもいい。
他のイベントとか飲み会でちょっと話のネタとして話題に出してもいいかもしれない。
他にもTwitterで話題が出た時にちょっとリプを飛ばし合うのも良いと思う。
そういう積み重ねが1をやってる自分や2をやってる人達の助けにすっごいなる。
だからひむひむはもっとみんなにコミュニティの一部になって貰いたいんだって伝えたかったんだと思う。




ということで感情に任せて一気に書いたからまとまってないけど無理矢理まとめる。
僕にはひむひむのような求心力はないけどコレを見てた人が少しでも自分たちの楽しい居場所とか好きな事について考えてくれたらなって思う。
今回はIT勉強会が軸だったけど実はこれは結構色々当てはまる。
例えば僕の所属する日本PostgreSQLユーザ会だってそう。
先輩方のすごい努力で日本のコミュニティとしてすごく大きいコミュニティになってる。
でもデータベースエンジニアって若い人が全然足りないからコミュニティの平均年齢がどんどん上がってる。
10年後、コミュニティが今と同じ状態になってるか正直わかんない。
だから僕は育ててもらってるコミュニティの恩返しの一つとして勉強会を通してJPUGの新陳代謝の活性化を目指してる。
他にも冒頭で触れた昔ながらのゲーセンとかもうほんとヤバイ。
どんどん潰れて無くなっていて地方だと絶滅危機種。
雀荘とかも今は随分見なくなったよね。
こういった事に流行り廃りは絶対あるんだけどその中で自分が好きな場所とかこれは大切だって思う事に対してはみんなもっと積極的になったほうがいいと思う。

と全然まとまって無いけどまとめとしてはこんな感じ。

2014年7月24日木曜日

第四回 中国地方DB勉強会を開いてきた

第四回やって来ました。
そして中国地方DB勉強会は皆様のおかげで1年が経ちました。
今回もJPUG主催で行いましたが今回はクレオフーガハーレムさんの希望でチューニングをテーマに行いました。
またクレオフーガはMySQLをメインに使っているので今回はMySQLとPostgreSQLにフォーカスしました。
それと前回好評だったハンズオンも行いました。
個人的には非常に充実した一日で大満足です。
ただハンズオンの準備や細かいコンテンツの調整は大変でした。
無事成功したのは講師の喜田さんと山﨑さんのおかけです。
本当に色々とご協力してくださりありがとうございました。

そしてそんな第四回の詳細は次のとおりです。

■登壇資料など

中国地方DB勉強会のポータルサイトにまとめました。
http://dbstudychugoku.github.io/events/event-004.html

また当日のハンズオンの資料の中に
  • MySQLパフォーマンスチューニング概要.txt
  • サブクエリ最適化の検証.txt
という資料で講師の山崎さんが纏めてくださっています。
MySQLのチューニングに関するTIPSが載っています。
また喜田さんのPostgreSQLの資料は非常に良くまとまってます。
PDFなのでダウンロード必須です!!


■メーリングリスト

次回の告知についてはMLやDoorKeeperを使います。
興味がある方はチェックしてみてください。

中国地方DB勉強会ML Google Group
dbstudychugoku@googlegroups.com

DoorKeeper


■動画とtwitterのまとめ

今回はUstream配信はありませんでした。
Twitterについては@razonさんがまとめてくれています。

第4回 中国地方DB勉強会 in 岡山 まとめ #ChugokuDB



■第四回のアンケート募集中

当日に参加やUst拝見された方は下記のアンケートに答えてくださると嬉しいです。
次回のコンテンツや今後の運営に活用させて頂きます。

アンケートはこちら
※匿名アンケートです


■MySQL Workbench 6.1.7(最新版)のバグについて

勉強会でご紹介したビジュアルEXPLAINに関してバグが見つかりました。
MySQL Workbench 6.1.7(最新版)で、

・ビジュアルEXPLAINが取得できない

というバグが存在しました。
現時点で、ビジュアルEXPLAINを使用するためには、古いバージョンの(MySQL Workbench 6.1.6以前)を使用頂ければと思います。
また、本バグは既にバグ登録されており、開発者が対応中です。
以下のバグ報告サイトにアクセスして右側にある「Affects me」をクリックして頂ければ、開発者にバグで困っている人が多くいることを伝えることができますので、よろしければ
クリックして頂ければ幸いです。

http://bugs.mysql.com/bug.php?id=73256


■第5回 中国地方DB勉強会

日時:2014年9月21日(日曜日)
会場:広島県広島市中区大手町1-5-3 サテライトキャンパスひろしま 501号室
内容:各データベースのトラブルシューティングについて

  • ※セッション対象予定
  • PostgreSQL(確定)
  • MySQL(講師交渉中)
  • OracleDB(確定)
  • SQLServer(確定)
  • MongoDB(オライリージャパンのMongoDBインアクションの翻訳者の玉川竜司さん!)

以上のように考えています。
既に各DBの講師に依頼をかけており、豪華講師陣になりました。
今回はハンズオンはありませんが実際のDBAや開発者にとってかなり充実した内容になると思います。
また始めて有償DBのエンジニアやNoSQLのエンジニアの講師をお呼びしております。
交流含めて是非参加をご検討していただけたらと思います。

申し込みサイトが出来ましたらMLやDoorKeeperで告知します。
ご興味がある方は上記のMLとDoorKeeperにご登録してみてください!!


■オープンソースカンファレンス2014@広島

第5回 中国地方DB勉強会の前日に同会場で次のとおり行われます。

日時:2014年9月20日(土曜日)
会場:広島県広島市中区大手町1-5-3 サテライトキャンパスひろしま

http://www.ospn.jp/osc2014-hiroshima/

こちらにJPUGも出展致します。
また多くのエンジニアが一同に集まる大きなイベントです。
こちらも合わせてご参加をご検討していただきますようお願い致します。

と以上のとおりです。
そして今回のハンズオンは喜田さんの書かれた次の本を使いました。



この本、中を拝見しましたがかなりいいです!!
僕はこの勉強の後に買いました。
何が良いって
  • SQLの書き方のHow Toが書かれてる
  • しかもDB別でOKとNGの両方が書かれてる
  • 要所でDB間の違いやオプティマイザ等の動きの説明がある
点です。
やはりただ一つのやり方を知るよりも複数のアプローチを知っている方が応用が効きます。
更に他のDBとの差を知ることでより深く知識の研鑽になると共に記憶に深く根付きます。
特にMySQLとOracleとPostgreSQLと言う3大DBですから実務で出会うことは多々あるでしょう。
なので自分の得意なDBでは○○って書くけどOracleの時はどうすんの?みたいなときも非常に助かります。
ということでコレ本オススメです。


ということで第四回は非常に充実した内容でした。
次回はセミナー中心でハンズオンはありませんが超豪華講師陣です。
すでに今から楽しみで仕方ないです!!
次回も皆様と勉強会でお会いできるのを楽しみにしております。

2014年7月6日日曜日

PHPライブラリ&サンプル実践活用[厳選100]はすごく良い

タイトルの本読みました。




WINGSプロジェクト←こちらで本の概要がわかります

正直こういう本は一周遅れとか二周遅れの事が多いです。
それが呼んでびっくり バリバリ現役の内容 です。
で具体的に何処がいいかですけど

1 環境構築→インストール→利用までがしっかり流れでまとまってる。

実際にライブラリを調べる時はPHPerだとWebの情報を元にすることが多いと思います。
その際に


  • 環境構築のサイト
  • インストールのサイト
  • 使い方のサイト


をそれぞれ探して来て順にブラウザのタブを行き来しながらやる煩雑さ。
あれがありません。
ヘタすると使い方もバージョン依存だったりでハマり、それだけで何サイトも巡る...
そういうコストが全くないというのはストレスフリーですよね。
更に言うとGithubだったりComposerに対応してるものはそちらで紹介されています。
こういモダンなやり方を始めるきっかけとしてもいいと思います。

つかGithubは言わずもがな、ホントComposerはマジ便利なんでオススメです。
さらにさらにさらに!!
公式サイトからサンプルコード落とせます!!

サンプルコード

これは非常に助かる。
写経も勉強になるんだけど実際に使うときに書き直すのは億劫です。
でもサンプルコードがあるので

2 即実戦投入出来るサンプル

これはPHPに限らずライブラリあるあるなんですけど

Hello Worldが出来たらOK!

みたいな紹介サイトよく見かけます(ブーメラン)
この本はもう一歩踏み込んだところまでサンプルになってます。
グラフだと一つだけじゃなくて棒グラフだったりレーダーだったり。
しかも一つじゃなくて複数のライブラリを紹介することで

利用用途によって最適なライブラリを選定できる

ってのが強いです。
PHPの良い所でもあり難しいところに「どれを使えばいいのかわからない」ことあると思います。
そんなときHello Worldレベルだと違いがわかりません。
ですが一歩踏み込んだ紹介を複数個用意してくれてるので選定が非常に捗ります。
さらに試すときもインストールから実践までがまとまってるので動かすことがすぐ出来ます。
これで実際に「こんな事がしたいんだけど出来る?」っていう質問に「あーそれならあのライブラリ使えるんで○○時間くらいで出来ますよ。」と即答出来るようになるはずです。
「あーちょっとやってみないとわかんないです...」とか「やってみたら思った以上にハマっちゃって時間がかかりそうです...」って言うのとは全然違いますよね。

3 紹介されてる内容がイケてる

どんなに丁寧に紹介されてても実際に使うシーンが無ければ無駄知識です。
でもこの本は安心していいです。
WINGSプロジェクトの目次を見ても分かる通り、求められたシーンがあると思います。
さらにGoogleやAWSのAPIのように知ってると引き出しが広がるAPIも沢山紹介されてます。
実際に僕が使ったことがあるAPIやライブラリが多数紹介されてました。
逆に僕がこの本を読んで使い始めたライブラリも沢山あります。
列挙だけ紹介しますと

  • Faker(テストで使うようないい感じのダミーデータを作ってくれます)
  • PHP GitHub API(GitHubのリポジトリを参照したりできるので自動化が捗る!)
  • PHP Markdown(Marcdown形式をhtmlにしてくれる)

なんかがあります。
WebAPI系なんかは「おっコレ今度使ってみよ!」みたいなのが結構ありますね♪
またPHPUnitみたいな日頃から使ってるツールでも知らないことがあったり発見がありました。
家に置いてもよし、会社に置いても良しの一冊だと思います。





だたちょっと残念だなって思うところもあります。
例えばフレームワークについて。
これはそれぞれで1冊の本になるレベルですので仕方ないとは思いますがやっぱ紹介程度です。
なのでフレームワークは最近の流行りを知れる程度だと思います。
ただこの中で出てくるFuelPHPに興味がある方は以下の本がオススメですよ。

はじめてのフレームワークとしてのFuelPHP第2版

FuelPHPに関しては今一番まとまったシリーズです。
モダンなPHPの開発手法も網羅されてるのでフレームワークの外の部分でも勉強になります。

ということでこの本を見て開発意欲が刺激されたので何か作ってみようと思いました。
またこの本は会社に置いて都度参考にしようと思います。