Archive for the ‘php’ Category

    はてなブックマーク - PHPMatsuri参加レポート(2/4):CakePHP2.0でAndroidアプリ
    このエントリーをはてなブックマークに追加

    おひさしぶりです。
    今はWindowsPhoneがほしいFusic)櫻川です。

    さて、今回はPHP開発合宿イベントPHPMatsuriに参加してきました。

    まずはじめに

    他の方もブログに書かれていますがPHPMatsuriを表すなら
    ↓このかっこいい忍者と

    koyhogeさんの写真を使わせていただいてます。

    ↓この音楽です。
    Epic sax guy 10 hours
    忍者がバックミュージックとしてこの曲をかけ続ける中でみんな徹夜でコーディングをするカオスな空間でしたw

    ハッカソンの成果

    今回ハッカソンでやらせていただいたのは「CakePHP2.0Androidアプリ」という内容でやらせていただきました。

    CakePHP2.0bakeするとAndroidアプリ用のCRUDソースを出力する謎なPluginを作りましたw
    ※社内ではキモイといわれています。。。

    使い方

    1.どちらかでbakeをします。

    php cake.php Android.bake

    ↑実行することでネイティブなAndroid用のソース(Java)を出力します。

    php cake.php Titanium.bake

    ↑実行することでTitaniumのAndroid用ソース(Javascript)を出力します。

    2.ビルドします。

    Javaの場合はeclipseで、Titaniumの場合はTitanium Studioでビルドします。

    3.実行します。
    AndroidアプリのCRUD完成!

    結果

    結果「全ての作品の中で最も支持された作品を選出し表彰する。ハッカー賞(大賞)を頂きました!!!
    しかもiPad2まで頂いてしまいました!!!
    今自分は人生の中で一番輝いています。゚(゚≧□≦゚)゚。
    自分に投票して頂いた皆様本当にありがとうございます!!

    ソースコードなのですが現在リファクタリング中ですので完了次第githubで公開させていただきます。

    最後に

    このような楽しい祭りを開いて頂いた運営のみなさま本当にありがとうございました。
    そしてお疲れ様でした!

    来年も絶対参加します!

    それでは明日の3番手杉本にバトンタッチです。

      はてなブックマーク - PHPmatsriにてCsvCombinePluginを紹介してきました。
      このエントリーをはてなブックマークに追加

      ブログはお久しぶりです。萩原です。

      今回は、PHPmatsuriに弊社、小山、櫻川、杉本と、私の4人で行ってきました。

      PHPmatsuriの感想

      私は、ハッカソンという形式のイベントは初めてで、LTも初めてでしたので非常に緊張しましたが、何とか無事に発表まで終える事が出来て良かったです。

      発表でおーと声が上がった時は非常にうれしかったです。
      後、下記にも載せているホークスのスタメンを出したときに、「何でそんなマニアックな」と言って下さった方、ありがとうございます。
      あれが一番うれしかったりします(笑)。

      普段、私はCakePHPを扱っていますが、SymfonyやLithiumなどの他のフレームワークについてはまったくといっていいほど知りませんでしたので、その二つのセッションを両フレームワークの開発者から聞けたことも非常に貴重な機会でした。

      また、開発風景やLTの発表を見まして、皆さんすごい、もっと自分も頑張らないとと改めて感じました。

      CsvCombinePlugin

      さて、今回私がPHPmatsuriで紹介しました、CsvCombinePluginについてご紹介したいと思います。

      このプラグインはCSVの入出力の処理を簡単に行うことが出来るプラグインです。
      CakePHP1.3と2.0の両方のブランチをGithubで用意しています。

      せっかくですのでCakePHP2の方式で紹介したいと思います。

      まずはこちらのGithubの”cake2″というブランチよりダウンロードしてきて、Pluginディレクトリ内に”CsvCombine”とrenameして下さい。

      CSVの入力

      まずはCSVを添付して配列で返すメソッドを紹介します。

      モデルにBehaviorを宣言します。

      <?php
      App::uses(&#039;AppModel&#039;,&#039;Model&#039;);
      CakePlugin::load(&#039;CsvCombine&#039;);
      class CsvTest extends AppModel{
          var $actsAs = array(&#039;CsvCombine.CsvImport&#039;);
      }

      後は、コントローラで列ごとの配列のキー値を指定したらアクションをたたいて完了です。

      <?php
      App::uses(&#039;AppController&#039;,&#039;Controller&#039;);
          class CsvTestsController extends AppController{
          var $name = &#039;CsvTests&#039;;
      
          function index(){
              if ($this->request->is(&#039;post&#039;)) {
                 /***基本必要な個所***/
                 //配列のキー値を左から指定
                  $list = array(&#039;打順&#039;, &#039;守備&#039;,&#039;名前&#039;,&#039;打率&#039;,&#039;HR&#039;,&#039;打点&#039;);
                  //このアクションで配列が返ってくる
                  $data = $this->CsvTest->csvData($list);
                   /***!基本必要な個所***/
                  if ($data === false) {
                      print_r(&#039;MISS&#039;);
                      exit;
                  }
                  print_r($data);
                  exit;
              }
       
          }

      これで下記の様なCSVを添付すると・・・(PHPmatsuri1日目夜の日のホークスのスタメンです・・・)

      1,遊,川﨑,.271,1,37
      2,二,本多,303,0,43
      3,左,内川,.341,12,73
      4,三,松田,.283,25,83
      5,中,長谷川,.293,4,34
      6,右,福田,.256,1,20
      7,DH,柴原,.077,0,0
      8,一,明石,.277,1,12
      9,捕,山崎,.191,0,11
      P,投,杉内,.200,0,3
      

      以下のような配列が返ってきます。(preで整形しています。

      Array
      (
          [0] => Array
              (
                  [打順] => 1
                  [守備] => 遊
                  [名前] => 川﨑
                  [打率] => .271
                  [HR] => 1
                  [打点] => 37
              )
      
          [1] => Array
              (
                  [打順] => 2
                  [守備] => 二
                  [名前] => 本多
                  [打率] => 303
                  [HR] => 0
                  [打点] => 43
              )
      
          [2] => Array
              (
                  [打順] => 3
                  [守備] => 左
                  [名前] => 内川
                  [打率] => .341
                  [HR] => 12
                  [打点] => 73
              )
      
          [3] => Array
              (
                  [打順] => 4
                  [守備] => 三
                  [名前] => 松田
                  [打率] => .283
                  [HR] => 25
                  [打点] => 83
              )
      
          [4] => Array
              (
                  [打順] => 5
                  [守備] => 中
                  [名前] => 長谷川
                  [打率] => .293
                  [HR] => 4
                  [打点] => 34
              )
      
          [5] => Array
              (
                  [打順] => 6
                  [守備] => 右
                  [名前] => 福田
                  [打率] => .256
                  [HR] => 1
                  [打点] => 20
              )
      
          [6] => Array
              (
                  [打順] => 7
                  [守備] => DH
                  [名前] => 柴原
                  [打率] => .077
                  [HR] => 0
                  [打点] => 0
              )
      
          [7] => Array
              (
                  [打順] => 8
                  [守備] => 一
                  [名前] => 明石
                  [打率] => .277
                  [HR] => 1
                  [打点] => 12
              )
      
          [8] => Array
              (
                  [打順] => 9
                  [守備] => 捕
                  [名前] => 山崎
                  [打率] => .191
                  [HR] => 0
                  [打点] => 11
              )
      
          [9] => Array
              (
                  [打順] => P
                  [守備] => 投
                  [名前] => 杉内
                  [打率] => .200
                  [HR] => 0
                  [打点] => 3
              )
      
      )
      

      CSVの出力

      CSVの出力はコントローラでComponentを宣言して、出力したい配列を準備してアクションをたたいて完了です。(今度は同日の阪神のスタメンです・・・大阪でしたし。)

      <?php
      App::uses(&#039;AppController&#039;, &#039;Controller&#039;);
      CakePlugin::load(&#039;CsvCombine&#039;);
      
      /**
       * ParentEnquetes Controller
       *
       * @property ParentEnquete $ParentEnquete
       */
      class CsvTestsController extends AppController {
       
          var $components = array(&#039;CsvCombine.CsvExport&#039;);
      
          function export(){
              $list[] = array(&#039;1&#039;,&#039;二&#039;,&#039;平野&#039;,&#039;.297&#039;,&#039;1&#039;,&#039;28&#039;);
              $list[] = array(&#039;2&#039;,&#039;中&#039;,&#039;柴田&#039;,&#039;.280&#039;,&#039;0&#039;,&#039;8&#039;);
              $list[] = array(&#039;3&#039;,&#039;遊&#039;,&#039;鳥谷&#039;,&#039;.300&#039;,&#039;5&#039;,&#039;49&#039;);
              $list[] = array(&#039;4&#039;,&#039;三&#039;,&#039;新井&#039;,&#039;.274&#039;,&#039;17&#039;,&#039;89&#039;);
              $list[] = array(&#039;5&#039;,&#039;一&#039;,&#039;ブラゼル&#039;,&#039;.282&#039;,&#039;15&#039;,&#039;66&#039;);
              $list[] = array(&#039;6&#039;,&#039;右&#039;,&#039;マートン&#039;,&#039;.316&#039;,&#039;13&#039;,&#039;57&#039;);
              $list[] = array(&#039;7&#039;,&#039;左&#039;,&#039;金本&#039;,&#039;.218&#039;,&#039;12&#039;,&#039;37&#039;);
              $list[] = array(&#039;8&#039;,&#039;捕&#039;,&#039;藤井&#039;,&#039;.218&#039;,&#039;2&#039;,&#039;15&#039;);
              $list[] = array(&#039;9&#039;,&#039;投&#039;,&#039;スタンリッジ&#039;,&#039;.095&#039;,&#039;0&#039;,&#039;0&#039;);
      
              $this->CsvExport->export($list);
          }
      }

      以下のCSVが出力されます。

      1,二,平野,.297,1,28
      2,中,柴田,.280,0,8
      3,遊,鳥谷,.300,5,49
      4,三,新井,.274,17,89
      5,一,ブラゼル,.282,15,66
      6,右,マートン,.316,13,57
      7,左,金本,.218,12,37
      8,捕,藤井,.218,2,15
      9,投,スタンリッジ,.095,0,0
      

      以上が、PHPmatsuriで発表してきました、CsvCombinePluginの紹介でした。
      このプラグインは実際にはオプションで区切り文字など指定が出来ますので、TSVなどにも対応が可能です。
      GithubのREADMEに詳しく書いているのでそちらもご覧頂けたらと思います。
      よろしければお使いください!

      最後に

      このような、有意義で楽しいイベントを準備、運営していただいた皆さん。ありがとうございました。
      次も参加したいと思えるイベントでした!

      それでは、弊社二人目が明日、また書きますのでよろしくお願いします!

        はてなブックマーク - FusicがPHPMatsuriに参加する意義
        このエントリーをはてなブックマークに追加

        最近10月14日が楽しみな小山です。

        @kunitさんのエントリー「受け身ではなく手を動かすイベントの楽しさ」からバトンを受けて、エントリーを書きたいと思います。

        PHPMatsuri2011が開催されます

        今年も10月14日15日にPHPMatsuriが開催されます。

        Fusicも去年に引き続きスポンサーとして参加させていただきます。
        また、今年は社内より私を含めて合計で、なんと4人が参加します。

        なぜFusicはPHPMatsuriに参加するのか

        Fusicは総勢20人弱の会社です。さらにその中で開発者はさらに少ないです。さらにPHPでの開発をメインとするメンバーはさらに少なくなります。FusicのPHP開発者の半分以上が10月14日には大阪にいると思います。

        去年のPHPMatsuri2010への参加は2人でした。
        それがなぜ今年4人に増えたのか。それは、それだけPHPMatsuriが有意義なものだと感じたからだと思っています。

        たった2日を通して得られる大きなもの

        私は主にCakePHPを使用して開発をしていますが、今の開発手法が正しいのか、もっと良いプラクティスがあるのではないか、他のフレームワークも本当の意味で使ってみたい、その思いは常に感じています。
        「もっと楽して開発したい」という怠惰の精神です。

        ただ、普段他の開発者の開発の様子を見ることができるのは社内の人ののみです。
        社外の勉強会にも参加しますが、その場では技術の発表までで、開発の様子をみることはできません。

        「他の人の開発の様子を直に見たい。開発の考え方を直に聞きたい。」それを実現できるのがPHPMatsuriの2日間です。

        「CakePHP2.0はどんな感じなのか?」
        実際にCakePHP2.0で開発している人、ドキュメント翻訳を手がけている人だけでなく、実際にCakePHP2.0『を』開発しているコアメンバーの人がいます。

        「他のフレームワークは使いやすいのだろうか?」あれだけ開発者が一同に会するのです。おそらく、あらゆるフレームワークを使っている人が1人、いや3人くらいはいるでしょう。

        「自分の開発スピードはどんなものだろうか?」実際の他の人のノートPCを覗き込めます(これ、結構おすすめです)。また15日の成果発表LTを見ればその成果をみることができます。

        私は、去年のPHPMatsuriでは他の開発者に圧倒されました。そしてものすごく刺激になりました。それは今年1年の日々の業務の成果や意識においてプラスになったと思っています。

        FusicがPHPMatsuriに期待すること

        Fusicの経営理念に
        「人が成長できる環境を創造します」
        「新しい価値を創造します」
        「人・社会・文化とのつながりを大切にします」

        の3箇条があります。
        PHPMatsuriはこの3箇条にマッチすると思いませんか?

        Fusicは社員の環境と成長を大切にします。それが最終的に会社の利益につながることを知っているからです。

        今年のPHPMatsuriを終えた後に、参加メンバーにプラスに、そしてFusicにプラスになることを期待しています。

        明日の@kaz_29さんにバトンを渡します!