1. たった3分で「Fuel PHP&CodeIgniter」の最新動向が理解できる。【CodeIQ提供】 #phptalk

たった3分で「Fuel PHP&CodeIgniter」の最新動向が理解できる。【CodeIQ提供】 #phptalk

 10月12日(土)コワーキングスペース茅場町Co-Edoにて、「FuelPHP勉強会 東京」と「CodeIgniter talk」の勉強会が初めて合同で開催された。


 土曜日の午後に開始ということも重なり、キャンセル待ちが出てしまうほどの人気となったイベントに今回お邪魔して、約5時間にわたって行われたイベントの内容を余すことなくお伝えする。仕事でCodeIgniterやFuelPHPを使っている人には、ぜひご覧いただきたい。


 また今回の記事は、株式会社リクルートキャリアが運営する、ITエンジニアのための実務スキル評価サービス「CodeIQ」の提供で公開されている。ぜひ、一度アクセスしてみてはいかがだろうか。

(※当日の会場の様子)

セッション1:CodeIgniter3のライセンス問題について

 最初のセッションでは、@NEKOGETさんよりCodeIgniter3のライセンス問題についての講演が行われた。

 講演者:@NEKOGET さん


 CodeIgniter1.x&2.xのライセンスは、MITライセンスのような感じはあるが、コピーレフトなライセンスではない。また、GPLと非互換であるということが最近表明された。


 CodeIgnaiter3のライセンスは2つの種類がある。


●OSL-3.0

 これはコピーレフトなライセンスでGPLとは非互換となっている。コードを改変して頒布するなら、そのコードもOSL-3.0にしておいた方が良いというルールのようなもの。


●AFL-3.0

 こちらのライセンスはGPLとは適合性があり、コピーレフトなライセンスではない。このライセンスが使われている箇所は主にapplication/以下のファイルとなっている。


 この2つのライセンスは、どちらともコンピュータ・スペシャリスト(専門家)であるローレンス・ローゼン氏が作ったもの。

 Codeignaiter3内のコードの仕組みは大まかに表すと、このようになっている。Application/以下に含まれるものは、2つある。1つめは、すでに配置されているファイルはAFL-3.0のファイル(※config以下のファイルはAFL-3.0になっている)。


 2つめは、これから作成するclass等のファイル。例えば、OSL-3.0を継承したファイル、OSL-3.0を継承しないファイル、独自に作成したファイルが挙げられる。


 Codeigniterのライセンス変更は、ライセンスの指していた「ユーザー」への誤解、派生物への頒布が指すものへの誤解、とても読みにくいライセンス本文、大丈夫だと思っていても読めば読むほど不安になる心理、ライセンスの中身を読まずに何だかヤバいらしいよという風潮などが問題なのではないかと個人的には感じた。


 「Index.phpにproduction設定をしたり、パスを書き換えたりするのは改変にあたるんじゃないの?」、「公開義務発生するんじゃないの?」という考えを持つ人もいるだろうが、その作業はインストール作業であり、改変ではないので公開義務は発生しない。


 普通に開発していたら、フレームワーク本体を改変するような開発をすることは無い。まず、本体に手を入れるというのは、フレームワークの使い方的に間違っている。本体のバグは、本体のclassを継承して置き換える仕組みを利用してapplication/以下で対応できるのであればそちらで対応してしまった方が良い。もし本体にバグがあった場合は、forkして修正して本家にpull requestしてもらいたい。上記を実行した時点で、すでにコードは公開義務果たしている。


 受託案件、自社サービスでの開発案件についてCodeigniter3を使ってもライセンスは問題ない。

セッション2:CodeIgniter2系から3へのアップデートについて

 セッション2では、株式会社サイバーエージェントの北浦氏よりCodeIgniter2系から3へのアップデートについての講演が行われた。

 講演者:株式会社サイバーエージェント 北浦 智大氏


●CodeIgniter3の現状

 EllisLabはCodeIgniterの新たな所有者を探している。これまでは、自社製品の開発の為にCodeIgniterをフレームワークとして育て続けてきたが、フレームワークを変更するに辺り、これ以上サポートを続けていくよりも新しい所有者にサポートを任せる形にしていきたいと考えているらしい。もし所有を考えている場合は、codeigniter@ellislab.comまでメールを送ってほしい。


 CodeIgniter3のリリースは、新しい所有者の最初の仕事になるだろうというコメントがあり、この問題が解決しない限りリリースされる事が無い。しばらくは、正式版になる事はなさそう。


●CodeIgniter3のバージョン内容

  PHPのサポートバージョンは、PHP5.1.6を非サポートにしてPHP5.2.4以降を利用した方が望ましい。


 変更があったポイントは、 ActiveReordからQueryBuilderへの名称変更、PDOのサポートの強化、UserAgent等デバイス追加によるモバイル端末の強化、mimesの種類を追加などが挙げられる。


 またUnitTestが実行により、FrameWork全体に対してUnitテストを行っている為、クオリティが向上した。

 

 個人的には、2から3にバージョンが上がった事で大きな仕様変更などが通常は考えられるが、実はそういった事はなく全体的にフレームワークの品質が上がったという印象をうけた。


 実際に仕上げてみると、ファイル名の先頭を大文字化する必要があった。対象となるディレクトリはapplication/・controllers・models・libraries。

 このようにファイル名を大文字化したが、ディレクトリは小文字のままでも構わない。

 Sessionの呼び出し方も2から3では、このように変化している。

 返却値も変更していて、2の場合は値が存在しない場合はFalseを返却していたが、3では値が存在しない場合はNULLを返却する。


 仕上げてみると、意外とすんなり動いた。何となく動き出すまで4時間くらいかかりその都度、出てくるエラーを潰していた。ただ、それも1日くらいで対応できると思う。


 公式に正式版として、リリースされている訳では無いが安定性については2系と比べても遜色無く、細かなバグを潰してくれている分、むしろ良いなと感じた。

セッション3:FuelPHP x Ratchet で WebSocket

 セッション3では、@madmamorさんよりFuelPHPとRatchetを使ったWebSocketについての講演が行われた。

 講演者:@madmamorさん


 WebSocketとは、双方向通信を可能にするネットワーク用の通信規格。XMLHttpRequest(Ajax)の欠点を解決する技術として開発されている。Ajaxで双方向通信のようなことをすると、一定間隔でサーバーにリクエストがきて通信毎にコネクションが確立され、若干のタイムラグが発生する。しかし、WebSocketであれば、同じコネクションで何度も通信することができるのでタイムラグが生じることもない。


 また、レスポンスをわざと遅らせて擬似的にプッシュするのでHTTPの接続が長引きサーバーの負担になるが、WebSocketであれば専用プロトコルでコネクションを維持してサーバーの負担を軽減できる。


●WebSocket開発のハードル

 PHPでの開発を主としている場合、Node.js+Socket.IOやPlayFrameworkで開発しようとするとWebSocket以外の学習コストがかかったり、使用言語変更のリスクがあったりする。


 逆にNode.js+Socket.IOやPlayFrameworkをPHPに組み合わせようとすると、双方の暗号化/復号化ルーチンを統一する必要が出てくるのでセッションの共有が困難になってしまう。


●Ratchetについて

 Ratchetとは、MITライセンスのことでPHP製のWebSocketライブラリ。WAMPに対応していて、単体で使用可能なのでフレームワークに組み込むこともできる。


 実際に組み込んでみると、クラスやメソッドといったフレームワークの機能を使うことができるし、セッションの共有も比較的容易に行うことができる。


●FuelPHPでRatchetを使う方法

 ZeroMQのインストールが必要。これはメッセージングライブラリで、Ratchetを動かすだけなら必須ではないが、Ratchetパッケージでは必要になる。主にFuelPHPのTask等からメッセージを送信する際に使用する。

※各OS(MacLinuxWindows)へのインストール方法


 Ratchetパッケージのインストールは、こちらから可能だ。

セッション4:FuelPHPでDynamoDB

 最後のセッションでは、@koyhogeさんよるDynamoDBについての講演が行われた。

 講演者:@koyhogeさん


●Amazon DynamoDBとは?

 Amazon DynamoDBは、「フルマネージドNoSQLデータベースサービス」を意味する。いわゆるKVS(Key Value Store)というもの。SSDに保存され、自動でリプリケーションされるのでプロビジョニングされたIOといえる。


 プロビジョニングIOとは、テーブルを作成するときに必要なスループットを指定するというもの。もちろん、後からでも変更することは可能である。


●dynamoutil

 これはドキュメントが全然関係ないが、composer installなどのaws-sdk for phpが必要になる。

 composer.jsonはこのようなコードになる。


 ファイルに関して、configはdynamo_until.phpという設定の雛型になる。classesは、dynamo_until.phpというもろもろのutilやtable_base.phpというテーブル親クラスやsequence.phpというシーケンスエミュレーションなどがある。詳しい内容は、下記のコードを見てもらいたい。


<config>

<使い方>

<テーブル作成>

<書き込み>

<読み込み>

<更新>

<query>

<scan>

 queryは、プライマリーキーによる検索で、scanは全部のデータを参照して抽出する。


 シーケンスエミュレーションは、SQLのSEQUENCEでMySQLでいうところのSerialで、アトミックな数値カウンターである。'seq_'+シーケンス名というテーブル名を作って、そこに格納する。

 コードは、このようになる。


 DynamoDBは、RDBほど柔軟ではないが用途によってバッチリ使うことができる。またスケーリングはAmazonにお任せできるので簡単であるし、アクセスが少なければそんなに高くはない。

LT(ライトニングトーク)

 最後にイベントに参加していた6名から、一人5分のライトニングトークが行われた。そこでは、「FuelPHPを本気でcomposerに対応させた時の話」や「CodeIgniterを初めて使うときにハマった4つのポイント」、「FuelPHP+Ratchet+WebRTC」など、実際に使ってみて感じたことや思ったことが共有されるなど、多くの参加者にとって有益な情報が得られたのではないかと思う。


「CI用の自作CRUD Isoldeについて」の資料は、こちら

「ブリッジドット株式会社のFuelPHPの事例」の資料は、こちら

「FuelPHPを本気でcomposerに対応させた時の話」の資料は、こちら

「omoon.org の裏側(FuelPHP の task 活用例)」の資料は、こちら

「CodeIgniterを初めて使うときにハマった4つのポイント」の資料は、こちら

「FuelPHP+Ratchet+WebRTC」の資料は、こちら



 今回、「FuelPHP東京勉強会」と「CodeIgniter talk」の合同勉強会が初めて開催されたが、早くも第2回が12月7日(土)に開催されることが決まったため、興味のある人はぜひ参加してほしい。

問題を解くだけで、あなたのエンジニアスキルが分かる


 今回の記事の提供元である「CodeIQ(コードアイキュー)」は、第一線で活躍するITエンジニアが出題した問題に一般ユーザーが無料で“挑戦”し、そのアンサーに対して出題エンジニアから評価フィードバックをもらえるサービスだ。


 これまでに「2.1万人」以上が問題に挑戦済みである。


 社会一般から見たITスキルではなく、その出題エンジニアに自分のスキルがどのように評価されるのかを知ることができるが特徴だ。

CodeIQ運営事務局より

 サイト上で出題希望者受付も行っています。また、IT勉強会のスポンサー受付も行っています。IT勉強会の主催者の方は、お問い合わせページからご連絡ください。 


※ご希望に添えない場合もございます。あらかじめご了承ください。



U-NOTEをフォローしておすすめ記事を購読しよう
この記事を報告する