Hatena::ブログ(Diary)

gusagiの日記 RSSフィード

2013-10-27

Github Pagesを開設しました

タイトルのとおり、Github Pagesを開設しました。

主な目的は二つで、一つは障害によりダウンしてから長らく放置状態となってしまっている自サイト(gusagi.com)の代替サイトとして、もう一つはこのあと書くCakePHPインストーラの置き場所としてです。

gusagi.comで配布していたXOOPS Cube Legacy用のモジュール・プリロードもそちらにアップしてありますので、必要な方はそちらからダウンロードしてください。

CakePHP Installer

こちら@yandoさんがCakePHPをComposerで導入する手順を書かれていたのですが、これを試している内に@koriymさんが開発しているBEAR.Sundayのインストーラのようにワンライナーでのインストールを実現したくなったのでスクリプトを書いてみました。

参考にしたのは前述の@yandoさんの記事と、公式のドキュメントです。

CakePHP Installer

使い方はシンプルで、

curl -s http://gusagi.github.io/cakephp/installer | sh

のように実行すれば、カレントディレクトリに対してComposerを利用してCakePHPインストールされるようになっています。*1

また、オプションとしてCakePHPインストールするパスの指定と、アプリケーションディレクトリ名(デフォルトは"app")を指定することも可能です。

curl -s http://gusagi.github.io/cakephp/installer | sh -s [CakePHP install path] [app dirname]

CentOS 5.8, CentOS 6.4で動作確認をしましたが、特別なコマンドは使っていないので(多分)Linux環境であれば動作するかと思います。

宜しければご利用ください。

*1データベースを始めとする各種設定の前段階、tarballなどをダウンロードしてきて展開した状態となります

2012-12-16

PHPerのためのスマートフォン対応( #phpadvent2012 )

はじめに

この記事は「PHP Advent Calendar 2012」の16日目です。

昨日はSotaro OMURAさんの「はじめて書いたプログラムを覚えていますか? 〜30年越しのリファクタリング〜( #phpadvent2012 Day 15 )」でした。


リファクタリング、重要ですよね(’’)

というわけで(?)、タイトルを見てピンと来た方もいるかも知れませんが、#phpadvent2010 で書いた記事リファクタリングというか、今度はスマートフォン対応について書いてみようと思います。


基本はPCサイト + α

スマートフォンの場合はCSSJavaScriptが普通に使えるので、サーバサイドについてはPCサイトのつもりで開発するのが基本となります。

フィーチャーフォン(いわゆるガラケー)の場合は、キャリアごとに文字コード変換を行ったり、ページ容量を調整したり、色々と独自処理が必要でしたが、スマートフォンの場合は大部分は不要となります。

ただし、フィーチャーフォンに比べて出来ることが増えている = ユーザにとって使いやすいサイトにするための工夫が必要となるため、UI/UXの必要性が高くなります。Ajaxによる非同期処理や遅延処理など、クライアントサイドと連携した実装が必要となるケースも増えると思われます。特に、JSON形式でのデータのやり取りは利用する可能性が高いと思われますので、JSON拡張については目を通しておいた方が良いでしょう。


キャリア・機種判定

フィーチャーフォンの場合は、IPアドレス or HTTPリクエストヘッダなどでキャリア判別を行うのが一般的ですが、スマートフォンの場合はそもそも「キャリア判別」を行う必要はないと個人的には思います。

理由は大きく二つあって、一つは確実な判別手段がないこと。もう一つは端末仕様などにおいてキャリア独自の実装があまりない(ように見える)ためです。

前者は、WiFiテザリングの活用により、端末が必ずしもキャリアの通信網経由でアクセスしてくるとは限らないためで、これによりPCでユーザエージェントを偽装されても見分けがつかなくなります。

後者は、正直なところ自分も詳しくは知りませんが、iPhoneなどを始めとするグローバル仕様のスマートフォンが今後も増えて行くであろうことを考えると、フィーチャーフォンほど独自仕様が増える可能性は少なそうです。

以上の理由から、キャリアや機種判定を行うにしてもあくまで参考程度と考えて実装するのが良いでしょう。


デザイン

スマートフォン対応をするにあたり、フィーチャーフォンから一番大きく変わった部分だと個人的には思います。

HTML5, CSS3, JavaScriptなどを利用して、いかにしてユーザが使いやすくリッチなインターフェースを提供できるか。Webサービススマートフォン対応を行う上で避けることは出来ません。

理想を言えば、UI/UXを考慮できるデザイナーと、クライアントサイドの処理を書けるフロントエンドエンジニア、そしてサーバサイドエンジニアPHPエンジニアはここ)がチームを組んで取り組んでいくのが一番だと思います。しかし、現実はそう簡単にはいきませんので、サーバサイドエンジニアもフロントエンドの実装について知っておくべきでしょう。

また、jQueryなどのライブラリを利用する場合、多数の.jsファイルや.cssファイルを読み込むケースも出てくるかと思いますが、その際にリクエスト数を軽減するために複数のファイルに対するリクエストを一つにまとめるための工夫をしたり、静的ファイルのキャッシュや圧縮などを行うことで、サービス全体の質を上げることが出来ます。

たとえば、Zlib拡張を利用して.jsや.cssファイルをgzip圧縮してから転送するようにすれば、転送量を大幅に減らすことができ、ページ表示までの時間短縮になります。

以前のPHP勉強会こんなスクリプトを発表していたりもしますので、何かの参考にでもなればと思います。


セキュリティ

セキュリティについても、PCと同様にしっかりと意識する必要があります。

特に、フィーチャーフォンでサービスを行っていた場合などは、「かんたんログイン」に代表されるような、「ユーザにとっては便利かも知れないがセキュリティ的には望ましくない機能」が要件として上がる可能性があります。前述のように、スマートフォンの場合は信頼できる機種判別の手段がありませんので、リスクのあるモノについては要求者に対してしっかりと説明し、実装しない方向に持って行く必要があるでしょう。

また、Ajaxやその他クライアントサイドの処理により外部からの値を取得する場合には、スクリプト挿入やXSSについても注意が必要です。

JavaScript内でもテキスト要素として挿入 & 要素をテキストとして抽出を行うことでエスケープが出来ます。ググると参考になるコードも多数見つかりますので、サーバサイドに限らずしっかりと意識して取り組むべきでしょう。


終わりに

PHPアドベントカレンダーのはずなのに、PHPについては殆ど書かずに終わってしまいました^^;

ただ、PHPを利用しているのであれば大体はWebサービス関連だと思いますので、今後スマートフォン対応を求められることも増えるかと思います。

その際に、この記事が少しでも参考になればと思います。


明日の担当は、kiou oubaさんです。

よろしくお願いします!

2012-03-30

第58回PHP勉強会@東京を開催しました

3/27(火)に第58回PHP勉強会@東京を開催しました。

会場は第57回と同じく株式会社VOYAGE GROUPさんのセミナールーム

本当にありがとうございますm(_ _)m


勉強会ではyuya_takeyamaさん・fivestarさん・sotarokさんが発表してくださいました。

今回はメジャーなPHPフレームワークの話ではなかったこともあり、色々と応用が効きそうな発表が揃っていました。

発表内容については、資料が公開されているのでそちらをご覧ください。


yuya_takeyamaさんの発表は、タイトルどおりMapReduceを手軽に体験できるフレームワーク「MyMR」の紹介でした。

MapReduceについては、知っている人はそれなりにいても実際に試してみた人はやはり多いとは言えないようで、そう言った人が「とりあえず試してみる」な時にはMyMRが選択肢になりそうだと思いました。

カジュアルMapReduceすることが目的と言うこともあり、現時点ではパフォーマンスやスケーリングは考慮していないとのことでしたが、パフォーマンス改善やHadoopへの移行方法なども検討されているとのことですので、勉強だったりスモールスタートとして導入したりということであれば、一度触ってみると良いかと思います。


fivestarさんの発表は、「Phake」というモックオブジェクトフレームワークの紹介でした。

最初にスタブ・モックの説明をサンプルコードを交えて説明した上で、PhakeをPHPUnit_MockObjectと比較しながら紹介してくれました。

自分自身、テストは重要だと思いつつもテストを書くことを習慣にできていないのですが、fivestarさんの発表は「このあたりってどうやってテストするんだろ?」と思っていたうちの一部分が分かりやすく説明されており、色々と弄ってみながら自分なりにかみ砕いて理解したいと思いました。


sotarokさんの発表は、先日リリースされたPHP 5.4 の新機能などについて、入門と銘打っているとおり分かりやすく解説されていました。

配列関連の機能追加やTraits・インスタンス生成から直接メンバ変数メソッドへのアクセスなどの新機能についての説明だけでなく、PHP 5.4 に移行した方が良い理由など、幅広く分かりやすい説明となっていました。

また、ライブラリフレームワークの対応状況なども簡単にではありますが説明されており、「5.4、使ってみようか!」と思わせてくれる内容でした。


懇親会は、VOYAGE GROUPさんの社内バー「AJITO」を提供して頂いてのピザパーティでした。

懇親会LTでは、yuya_takeyamaさんによる「TestSpyパターンの紹介」と、sasezakiさんによる「静的ページジェネレータ phroznの紹介」が発表されました。

食事とお酒をしながら、LTを聞いたり色々な談義をしたりして、気がつけば23時近くまで会場をお借りしてしまいました。


今回は約4ヶ月ぶりのPHP勉強会@東京でしたが、会場を提供してくださった株式会社VOYAGE GROUPのmugesoさんとbrtriverさん、発表してくださったyuya_takeyamaさん・fivestarさん・sotarokさん、そして参加してくださったみなさんのおかげで楽しんで開催することが出来ました。

本当にありがとうございました!

ただ、一点気になった点がありまして、今回の勉強会では開催までキャンセルの連絡もないまま、当日会場に来られなかった参加者が結構いました。*1

満席で参加登録できずに問い合わせをしてくださった方もいますし、懇親会の場合は土壇場だとキャンセルすることも出来なかったりします。

仕事が忙しかったり別件と予定が被ってしまったりとそれぞれ事情はあると思いますが、できれば前もってキャンセルだけでもして頂けると良かったなぁと思います。

また、今回は告知から開催まで若干期間があったにも関わらず、リマインドなど行っていなかった点、私の方も改善できる部分もあると思うので、このあたりは主催者・参加者ともに今後良くして行ければと思いますので、ご協力頂けると助かりますm(_ _)m


最後に、次回の開催時期と会場についても大まかではありますが決めることができましたので、こちらについては詳細が決まったら改めて告知しようと思います。

*1:一部の方からは後で連絡を頂きました

2011-10-08

第2回CakePHP2.0勉強会@TokyoでLTしてきました

タイトルの通り、10/6(木)に開催された第2回CakePHP2.0勉強会@Tokyoに参加して、懇親会LTで発表してきました。

会場は株式会社VOYAGE GROUPさんのセミナールーム。懇親会も同社内のバー「AJITO」でした。ありがとうございます! フロア内の装飾など含め、社員が仕事を楽しめそうな工夫が色々となされていました。ああいう遊び心があるオフィス、ちょっとうらやましかったです^^;

実は仕事が修羅場の真っ最中だったりして参加できるか微妙だったのですが、幸いにして上司から許可をもらって参加できました。

勉強会の内容はどれも興味深かったのですが、その中でも@basukeさんのCakeEntityセッション@mon_satさんのtipshare.infoセッションは、最近作ろうとしている仕組みで参考になりそうだったこともあり、特に印象に残りました。

懇親会は、前述のように社内バー「AJITO」にて。

洒落た雰囲気の中で、お酒と食べ物を手にしつつ懇親会LTを楽しませて頂きました。

phpmatsuriの紹介が入っているセッションが複数あったり、@yandoさんが最後に飛び入りで2回目のLTをしたり、懇親会らしい勉強会よりライトなノリのLTが多く、自分も発表を楽しませて頂きました。

今回、募集開始から短時間で枠が埋まってしまいましたが、会場側で調整が行われたのか、最終的に勉強会の部についてはキャンセル待ちの人も全員参加することが出来たようです。

次回に募集が掛かった際には、仮に満席になったとしても諦めずにキャンセル待ち登録しておくと良いかも知れません。

また、久しぶりにスタッフ側ではなく参加者として勉強会に参加したのですが、とても楽しい勉強会でした。

自分自身がスタッフにまわる際には、「勉強になった + 楽しめた」な勉強会を開催できるように準備していきたいと思います。

2011-10-03

10/15〜10/16はPHPMatsuri2011です!

先日のPHP勉強会@sizuhikoさんや@yandoさんの発表内にも出てきましたが、10/15(土)〜10/16(日)にPHPMatsuri2011が開催されます。

上記のリンク先にも書かれていますが、PHPMatsuriは泊まりがけの開発合宿イベントです。

公式サイトにも

日本で一番濃いPHP開発者の祭典、PHPMatsuriが今年もやってきます。そして会場はPHPカンファレンス関西でも盛り上がった大阪です!大阪にお住まいの方もそうでない方もこの機会の参加に備えてまずは日程を覚えておいてください。日程は10月15日〜10月16日です!

今年も各種フレームワークの開発者を招いたセッションや最新の技術を濃い空気の中で体験できるハッカソンを開催します。今からラップトップと英語の準備もしつつお待ちください!

と記載されているように、海外からもゲストを招きつつ非常に濃い時間が過ごせるイベントです。

まだ若干チケットがあるようなので、興味のある方はまずは公式サイトを覗いてみてはいかがでしょうか?*1

第56回PHP勉強会@関東に参加してきました

タイトルのとおり、第56回PHP勉強会@関東に参加してきました。

今回は、株式会社永和システムマネジメントさんに会場をお借りしました。

土曜日にも関わらず会議室をお貸し頂きありがとうございました!

発表内容については、@NEKOGETさんがこちらでとりまとめをされているので、そちらを参考にして頂くと良いかと思います。*2

今回の勉強会は8ヶ月ぶりの開催・初のサテライト参加といったこともあり、色々と不手際がありました。

北海道サテライト参加者、都度で発表を止めて頂いた発表者・参加者の皆さんには色々と不満も出てしまったかと思いますので、次回以降は勘を取り戻しながら関係者が動きやすい勉強会にしていきたいと思います。

また、勉強会の後の座談会(?)で上がっていた意見・要望として、

などがありました。

また、発表者と参加者を同時に募集していることもあり、発表内容は分からないけど満席になる前に申し込みをしている、という人が多くいました。

このあたりについては、募集・告知方法を変えてみたり、手をつけることができる部分から手をつけてみたいと思います*3

色々と反省する部分も多かったですが、いろいろな方に助けて頂きつつ無事に勉強会を開催することが出来ました。

発表者・参加者のみなさん、お疲れ様でした&ありがとうございました。

*1:私は仕事の関係で見送りです。。。行きたかった...orz

*2:発表者の方がブログなどで資料公開をされる都度更新しているようです

*3:events.php.gr.jpソースコードgithubで公開されています