PHPカンファレンス2015 スペシャルレポート

PHPカンファレンス2015 当日レポート[更新終了]

この記事を読むのに必要な時間:およそ 27.5 分

新原雅司さん「いまどきのPHP開発現場 -2015年秋-」⁠

新原雅司さんは,いまどきのPHPを取り巻くツールの紹介を,なぜそのツールが使われているのか?どういった考えで使うのか?といった観点で発表しました。

画像

画像

まずは,PhpStormを紹介しました。特徴は次のとおりです。

  • JetBrains社のIDE(有償)
  • 動作が軽快,静的解析,オールインワン
  • Vimmerも納得のIdeaVIM

vimと比較した時に,プラグインをインストールする必要がなく,最初から必要な機能がそろっていて統一したUIで操作できるというのは,大きい利点だそうです。実際に,PhpStormを使ったデモを行い,補完機能について紹介しました。PhpStormの前後のコンテキストを理解した補完や構文解析は,vimなどのエディッタにはできないリッチな機能であること。また,Gitクライアントが入っていて,コミット時にPSR-2といった規約にあわせて,自動で整形を行ったうえでコミットを行えることを話しました。

次にVagrantの紹介しました。特徴は次のとおりです。

  • プロジェクト毎に独立した環境
  • 自動構築
  • チームで同じ環境を利用
  • 運用環境と同じ環境

Vagrantの導入ポイントは次の点にあると指摘しました。

  • PHP コードと一緒に管理
  • とことん自動化(vagrant upで完了)
  • プロビジョニングはVMの中で実行
  • Shell Script -> Ansible が楽

また,プロビジョニングツールについては,Ansibleが比較的簡単なのでオススメだそうです。

次にフレームワークを紹介しました。

  • コンポーネント指向が主流
  • Symfony / Zend Framework / Aura? CakePHP 3 / Laravel / BEAR.Sunday
  • コンポーネントを分離して利用できる
  • 他のフレームワークのコンポーネントを利用

最近のフレームワークはコンポーネント単位で,切り出して別のフレームワークで使えるようになっているのが,今の主流だそうです。フレームワークのつきあい方として,フレームワークのためにアプリケーションがあるのではなく,アプリケーションを作りやすくするためにフレームワークを部品として使っていることを見誤らないことが大事だと述べていました。

次にTravis CIを紹介しました。特徴は次のとおりです。

  • GitHub と連携
  • git push/PRを検知して実行
  • .travis.ymlに実行内容を指定
  • sudoが実行できる(何でもできる)

GitHubとしか連携できないため,GitHubを使わない場合は他のCIツールを使うことになります。

次に,Scrutinizerを紹介しました。特徴は次のとおりで,コードレビューをしてくれるサービスと考えられるとのこと。

  • コードフォーマットや静的解析のSaaS
  • 指摘表示
  • 有償ならテスト実行も可
  • Travis CIなどと組み合わせる

次にHerokuを紹介しました。特徴は次のとおりで,無償枠があるため,すぐに使えるところがいいところだそうです。

  • PHP 5.5 / 5.6 / 7(RC4) / HHVM
  • PHP拡張やhttpdサーバ,設定が可能
  • 無料枠あり(検証環境にも便利)
  • アドオンが豊富

まとめとして,⁠ツールやサービスに任せる やるべきことに集中する」⁠ツールに導かれる」ことに言及し,ツールを使い続けることで,今まで知らなかったことをノウハウとして学ぶことができるという言葉で発表を締めました。

これから,ツールとの向き合い方を考えさせられる素晴らしい発表だったと思います。

arimoさん「DMMのハイパーメディアオタサーの姫arimoが語るPhalcon」

PhalconはPHPフレームワークの中で最速と呼ばれるフレームワークです。内部実装でC言語を採用し,処理速度の向上を図っています。arimoさんは,DMMの実案件でPhalconを使ってみた事例を発表しました。

画像

arimoさんの自己紹介に30分中の10分を費やすという時間の使い方に冒頭で会場がざわつきつつのスタートです(自らのスライドで"早く始めろよ"とツッコミをいれてましたが。笑)⁠

Phalconを使おうと思ったきかっけ

DMMの案件では仕様変更が頻繁に起こるらしく,それまでは急務ではなかった大量アクセス/速度が仕様変更によって求められた時があったとのことです。そこでFuelPHPで途中まで実装していたものを突然Phalconに全書き換えをすることになったそうです。

「案件でやったことがある人いたのでまぁいけた」と語るarimoさんでしたが,Phalconは名前が台頭してから歴史が浅く,執筆者の感覚的にPhalconを実案件で使ったことがある人は中々いないイメージだったため地味に驚きました。

FuelPHPからPhalconに書き換えた感想は,ドキュメントが少なすぎるとのことで,やはりまだまだ人口の少なさが伺えます。

Phalconはどんなフレームワークか

公式サイトのベンチマーク見てみると,秒間に捌けるリクエスト数(rps)はZend Freamworkは354, Laravelで489, FuelPHPで568, Codeigniterで1059という並びに対して,Phalconは2,535という数字で,PHPフレームワークの中ではダントツの数字を誇っています。また,Laravelなどでも採用されているDIコンテナが便利という点がオススメポイントと述べていました。

バージョンはどうなっているのか

バージョンによって内部実装が変わっているので中々互換性などは厳しい部分もあるとし,1.x系はC言語で実装してあるのに対して2.x系はZephierという言語を採用していると説明しました。そのため,現行ではZephirでいろいろなカスタマイズができるようになっています。Zephirとはビルド時にC言語にコンパイルされるプリプロセッサ的な役割の言語で,CのPHPエクステンションをほぼPHPな記法で書くことができます。Zepherを使うと拡張は描きやすいですが,エラーが出ると追えなくて大変とのことでした。

Phalconの闇

Phalconの闇として次の事柄を挙げていました。

  • ドキュメント英語問題: 公式マニュアルも中途半端日本語化されているという罠。
  • ORMの使い勝手があまりよくない問題: いろいろと使えなく,結局素のSQLを書くことも。
  • メール機能事件: ここも使えなく,結局PHP側に依存。
  • Configのマージ事件: 設定項目がうまく反映されなく,環境変数を使う。
  • DIコンテナが一生変わらない問題: 書き方によってはそういうケースも。
  • テーブルの中身消える事件: id指定をしてdeleteしているハズなのに全てのデータが消える事件が。

まとめ

Phalconのいいところは速さです。ドキュメントがまだまだ整備されていないし,情報が少ないというところが大変だけど,新しいフレームワークや言語はみんなこういう状況なハズです。新しいチャレンジするのは良いことだと思うので,ぜひ皆さんもチャレンジしてみてください。

画像

前田雅央さん「営業・運用を支える 気付ける 管理画面」⁠

前田雅央さんは,スマホ向けの広告配信で,より効果の良い媒体に出すアドネットワークのためのアプリZucksの管理画面について発表しました。

画像

アドネットワークとは,広告主からお金を集めて様々な配信調整を行い,その結果を広告主に報告するというサービスです。

アドネットワークの管理画面を作る上で,次の工夫が必要だと言います。

  • コミュニケーションの工夫
  • 運用を楽にするため工夫
  • 機能開発のデプロイの工夫
  • データの変化に気づくための工夫

また,管理画面ではユーザー権限管理,データのCRUD処理,レポーティング機能,データ出力(CSV)があります。

このような管理画面を長期運用していくと,次のような事案が起こると話します。

  • 使われているかわからない機能画面がある。
  • 使いづらい画面でも利用者が使いこなしてしまう。
  • 何度か作り直したくなる病が発症するが,諦める。
  • 裏機能がいつの間にかできる。

本発表では,限定的な管理画面についての話をするとし,最初に,コミュニケーションの工夫について語りました。⁠なぜ必要なのですか?を聞く」とはいえ,⁠本当は……」という答えてくれない心の声はエンジニアに聞こえないため,観察力が必要だと言います。例えば「最初に絞り込むのは」何ですか?といった質問が必要になると述べていました。でも,その質問はどのように思いついたらいいのでしょうか。前田さんは,日々観察から思いつけるようにしようと言います。GoogleAnalyticsも「期間」は右上に表示されていますが,これは期間が表示要素として重要だからだと指摘しました。

このよう観察力があれば,例えば,ページャはいつもありますが,直接Xページに行くというのはほぼないため,必要なのは最初,前へ,次へ,最後でいいはず。また,Xページというのが表示されるときは何かあるときと気づくことができると話します。そうして,フォームは最低限の実装,⁠何も困ってない」を旗印に開発すると良いと述べていました。

運用を楽にするための工夫については,共有できるURLが大事だと説明しました。

更新履歴をシンプルに表示することについては,

  • 営業:案件の単価がいつの間にか30円になってるんだけど?
  • 開発者:え?いつのまにか?
  • 営業:変更してないはず。
  • 開発者:調べてみますね。

と言ったやり取りを防ぐためにも,履歴を保存して見られるようにしようと話します(なお,この場合は営業さんは悪くなく,人間は忘れるものだとも言及していました)⁠そのためには,Entityを配列に変換したものをひたすら保存することだと言います。価格の表示やユーザーIDなど,調整しなくてもarray_diffを使えば分かると述べていました。

また,タイムアウトで500エラーなど,嫌な情報を事前に把握したいとし,問題が置きてから気づくのは当たり前なので,その前に気がつきたいと話しました。Symfonyだとルーティング定義名で何がどう遅くなってるかが表示されますが,ロジックとしてはなんらかのしきい値を超えたらWarningのログを残すようにしたいと述べました。

Slackで通知するとまた見やすく便利です。そのために使うmonologが便利だとし,fingers_crossedで詳細なログを残すようにしているそうです。そういうことが分かれば,⁠Aさん,レポートの取得期間が長すぎて時間がかかりすぎているようなので,期間を短くして試してもらえますか?」と聞くことができるようになると指摘し,エンジニアからコミュニケーションを取れるようになると述べました。

機能開発のデプロイの工夫については,導線を用意せずページを増やして確認することを挙げました。例えば,ある程度大きいものを「/report」⁠/report2」という形で本番のデータでテストすることで,既存のコードを修正せずに対応できるようになると話しました。

管理画面からの通知をメールとSlackに連絡すると,そこでやり取りが発生するようになると言います。そして,気づける管理画面はサービスの質を向上させるとのことです。しかし,Slackが時々失敗するため,クリティカルな通知はダメだと注意しました。クリティカルな通知なのに,⁠Slackへの通知が失敗しました」という通知が届いたら困ってしまうと述べていました。

画像

著者プロフィール

大橋勇希(おおはしゆうき)

東京都渋谷区在住。Webアプリケーションエンジニアで,主な使用言語はPHP。最近は,TDD(テスト駆動開発)やDDD(ドメイン駆動設計)に取り組みエッセンスを吸収している。

Twitter:@secret_hamuhamu URLhttp://hamuhamu.hatenablog.jp/


柏原幸治(かしわばらこうじ)

東京都豊島区在住。仕事はブラウザーゲームのバックエンドをPHPで開発している。他の言語もいろいろいじるが,一番長く使ってるPHPが一番使いやすい。

Twitter:@noah0x00
Facebook:https://www.facebook.com/koji.kashiwabara


菅原のびすけ(すがわらのびすけ)

株式会社LIG エンジニア。1989年生まれ。岩手県立大学在籍時にITベンチャー企業の役員を務める。同大学院を卒業後,株式会社LIGにWebエンジニアとして入社し,Web制作に携わる。最近は特にIoT領域,インタラクティブな企画実装などに従事している。

マッシュアップアワードを始めとしたハッカソン等で入賞歴あり。家賃0円クリエイターズシェアハウス第1期生。ジーズアカデミー第1期メンター。LIGinc,HTML5Experts.jp,さくらのナレッジ,gihyo.jpなどでも執筆・寄稿をしている。Milkcocoaエバンジェリスト,特技はわんこそば,趣味は雪合戦。

Twitter:@n0bisuke

LIGincプロフィール:http://liginc.co.jp/member/member_detail?user=nobisuke


中村慎吾(なかむらしんご)

仕事でPHPを使うようになって10数年。楽しい事には何でもやってみるスタイル。趣味が講じて(拗らせて?)会社も作りました。Web開発となるとPHPは手放せません。

Twitter:@n416
URLhttp://kisaragi-system.co.jp


仁多見遼(にたみりょう)

岩手県立大学大学院 ソフトウェア情報学研究科 2年。主にAndroidアプリ開発をしているが,2016年4月から東京でWebエンジニアとして働くことになり,PHPやJavaScriptを書き始めた。いろんなイベントに参加したり,自身でハッカソンを主催するなどイベントが大好きな人。

Twitter:@bird_nitryn
URLhttp://rnita.me

バックナンバー

PHPカンファレンス2015 スペシャルレポート